以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。本実施形態は、多数のノードを複数の情報処理装置で実行することで、全体の処理時間を短縮する場合に開示の技術を適用するものである。
図1に、本実施形態に係るワークフローシステム10の一例を示す。ワークフローシステム10は、ワークフロー制御装置11を備えており、ワークフロー制御装置11は各種の指示を出力する操作装置26に接続される。ワークフロー制御装置11はCPU12及びメモリ14を含んでおり、メモリ14にはワークフロー制御プログラム16が記憶される。CPU12は、メモリ14に記憶されるワークフロー制御プログラム16を実行することによって、判定部18、退避部20、及び復元部22として動作する。CPU12には、記憶部24が接続される。記憶部24には、所定順序に従って複数のノードの処理を進めるワークフローの管理情報29が記憶される。管理情報29は、ノード毎に、ノードを示す情報を、ノードで用いるデータ項目を示す情報に対応付けたバージョン情報と、ノードで少なくとも一部のデータが更新されたことを示すフラグ情報とを含む。また、記憶部24には、ノードにおけるデータ項目のデータ27、及びデータ項目のデータ27を退避した退避データ28が記憶される。
ワークフローシステム10は、業務に対応するワークフローに含まれる複数のノードの処理を進める。複数のノードの処理を進める場合、次のノードへ処理を進めるための現在のノードを対象ノードとする。また、対象ノードより前のノードのうち該対象ノードのデータ項目を示す情報に対応づけられたバージョン情報に値を有するノードを参照ノードとする。ワークフローシステム10では、CPU12がワークフロー制御プログラム16を実行することにより、判定部18、退避部20、及び復元部22による処理が実行される。判定部18は、記憶部24に記憶された管理情報29のうち、参照ノードのデータ項目を示す情報に対応付けられたバージョン情報と、参照ノードのフラグ情報とに基づいて、対象ノードにおけるデータ項目のデータ27を退避するか否かを判定する。また、退避部20は、判定部18の判定結果に基づいて、対象ノードにおけるデータ項目のデータ27を退避データ28として退避する。復元部は、ワークフロー上で復元するノードとして入力された復元ポイントで、退避データ28をデータ27として復元する。
なお、ワークフローシステム10は開示の技術におけるワークフローシステムの一例であり、判定部18、退避部20、及び復元部22は開示の技術における判定部、退避部、及び復元部の一例である。また、ワークフロー制御プログラム16は開示の技術におけるワークフロー制御プログラムの一例である。
図2に、ワークフローシステム10に含まれるワークフロー制御装置11及び操作装置26をコンピュータで実現可能なシステムの一例としてコンピュータシステム30の一例を示す。また、図3に、図2に示すコンピュータシステム30を機能的なブロックにより表現した一例を示す。図2及び図3に示すワークフローシステム10としてのコンピュータシステム30は、ワークフロー制御装置11としてのサーバ装置32、及び操作装置26としての複数(図2及び図3では3台)の端末装置70を備える。
サーバ装置32はCPU34、メモリ36、及び不揮発性の格納部42を備える。CPU34、メモリ36、及び格納部42は、バス64を介して互いに接続される。また、サーバ装置32では、記録媒体39に対して読み書きするための装置(IO装置)38がバス64に接続される。さらに、サーバ装置32はコンピュータネットワーク69に接続するためのインタフェースを含む通信制御部40を備える。なお、格納部42はHDD(Hard Disk Drive)やフラッシュメモリ等によって実現できる。
格納部42には、OS(Operating System)44、サーバ装置32をワークフロー制御装置11として機能させるための制御プログラム46、及びデータベース(以下、DBと略記する。)52が記憶される。格納部42に格納された制御プログラム46は、ワークフロー制御プロセス48、及びデータ退避復元管理プロセス50を含む。CPU34は、制御プログラム46を格納部42から読み出してメモリ36に展開し、制御プログラム46が有する各プロセスを実行する。
サーバ装置32のCPU34が制御プログラム46を格納部42から読み出してメモリ36に展開し、制御プログラム46を実行することで、サーバ装置32が図1に示すワークフロー制御装置11として動作する。また、CPU34が制御プログラム46を格納部42から読み出してメモリ36に展開し、制御プログラム46に含まれるワークフロー制御プロセス48を実行することで、サーバ装置32は図3に示すワークフロー制御部68として動作する。さらに、CPU34が制御プログラム46のデータ退避復元管理プロセス50を実行することで、サーバ装置32は図3に示すデータ退避復元管理部66として動作する。
サーバ装置32で動作するワークフロー制御部68(図3)は、ワークフローに含まれるノードの処理を進める制御、つまりノードの移動制御、及びノードで用いるデータの更新等の時期の制御、つまりワークフローにおける処理のタイミング制御を行う。また、サーバ装置32で動作するデータ退避復元管理部66(図3)は、ワークフロー制御部68からの要請に応じて、ノードにおけるデータを退避したり、指示されたノードまでデータを復元(リカバリ)したりする制御を行う。
なお、CPU34がデータ退避復元管理プロセス50を実行することで、サーバ装置32は図1に示す判定部18、退避部20、及び復元部22として動作する。つまり、制御プログラム46に含まれるデータ退避復元管理プロセス50は、図1に示すワークフロー制御プログラム16の一例である。
図2及び図3では、コンピュータシステム30に、単体のサーバ装置32を含む一例を示すが、サーバ装置32は複数のサーバ装置を含んでもよい。例えば、サーバ装置32として、詳細を後述するデータ退避復元管理部66及びワークフロー制御部68の各々のを独立したサーバ装置で提供してもよい。
また、サーバ装置32はコンピュータネットワーク69に接続することに限定されない。例えば、サーバ装置32は、端末装置70に有線接続または無線接続により直接接続してもよい。
図2に示すように、サーバ装置32の格納部42に記憶されるDB52は、ワークフロー制御情報DB54、実行履歴情報DB56、データ項目情報DB58、退避データ情報DB60、及び退避データ管理情報DB62を含む。
図4〜図10に、DB70に格納される各種DBの一例を示す。図4に、ワークフロー制御情報DB54の一例を示す。ワークフロー制御情報DB54は、ワークフローを示す情報80と、ワークフローのノードの各々で用いるデータ項目を示す情報82とを含む。本実施形態は、ワークフローを示す情報80の一例として、ワークフローが第1ノード〜第4ノードの4個のノードを含み、第1ノード〜第4ノードの順に処理が進められる場合を説明する。図4に示す一例は、ワークフローとして申請から承認までの一連の処理を示す。第1ノード80−1は、「申請」のノードであり、ワークフロー制御情報は、第1ノード80−1に、第1ノード80−1のデータ項目82−1が対応づけられて登録される。第2ノード80−2は、「チェック」のノードであり、ワークフロー制御情報は、第2ノード80−2に、第2ノード80−2のデータ項目82−2が対応づけられて登録される。同様に、第3ノード80−3は、「承認」のノードであり、ワークフロー制御情報は、第3ノード80−3に、第3ノード80−3のデータ項目82−3が対応づけられて登録される。また、第4ノードは、「確定」のノードであり、ワークフロー制御情報は、第4ノード80−4に、第4ノード80−4のデータ項目82−4が対応づけられて登録される。
図5に、実行履歴情報DB56の一例を示す。実行履歴情報DB56には、ワークフロー制御部68が実行するワークフローの実行履歴を示す情報が蓄積される。図5では実行履歴情報DB56に、「実行順序」、「ノード名」、「実行日時」、及び「処理ID」の情報の各々が対応付けて登録されるワークフローの実行履歴を示す情報の一例を示す。「実行順序」を示す情報は、ワークフローにおいて実行されるノードの順序を示す情報であり、「ノード名」を示す情報は、ノードを識別するためのノードの名称を示す情報である。また、「実行日時」を示す情報はノードの実行開始時刻を示す情報であり、「処理ID」を示す情報はノードの実行を識別するための識別情報である。
図6に、データ項目の定義情報57の一例を示す。データ項目の定義情報57は、ワークフローのノードで用いるデータ項目の定義を示す情報が登録される。図6ではデータ項目の定義情報57に、「データ項目」、「名称」、及び「データ型」の情報の各々が対応付けて登録される一例を示す。「データ項目」に示す情報は、ノードのデータ項目を識別するための識別情報であり、「名称」に示す情報は、ノードの内容等を示すノードの名称を示す情報である。「データ型」に示す情報は、「名称」に示す情報を登録するときのデータの型を示す情報である。
図7に、データ項目情報DB58の一例を示す。データ項目情報DB58には、ノードで用いるデータ項目の具体的内容を示す情報が登録される。図7ではデータ項目情報DB58に、「データ項目」、「名称」、及び、「値」の情報の各々が対応付けて登録されるデータ項目情報の一例を示す。「データ項目」を示す情報は、データ項目の定義情報57で定義されるノードのデータ項目を識別するための識別情報であり、「名称」に示す情報は、ノードの内容等を示すノードの名称を示す情報である。また、「値」を示す情報は、「名称」に示す情報の内容を示す情報である。なお、「名称」の情報は、「データ項目」の情報を兼ねてもよい。
図8及び図9に、退避データ情報DB60の一例を示す。退避データ情報DB60には、ノードで退避するデータを示す情報が蓄積される。ここで、ノードにおいて退避するデータは、ノードで用いるデータから退避用のデータを再作成して、退避データとすることが一般的である。本実施形態では、退避データを再作成する処理の負荷を軽減するために、各ノードのデータ項目の定義情報から、各ノードの変更対象のデータ項目に対応するデータ保持オブジェクトを生成して、退避データとする。つまり、ノードのデータ項目の定義情報から生成したデータ保持オブジェクトを退避データの形式に転用する。具体的には、ノードのデータ項目の定義情報によるデータ保持オブジェクトを直列化した情報をノードで退避するデータを示す情報(退避データ)として退避データ情報DB60に登録する(詳細は後述)。
図8に、ノードのデータ項目に対応する退避用データの一例として、「データ項目」及び「値」の各情報が対応付けて登録される退避用データDB60Aを示す。「データ項目」を示す情報は、データ項目の定義情報57で定義されるノードのデータ項目を識別するための識別情報であり、「値」を示す情報は、データ項目の内容を示す情報である。図9には、退避データの一例として、「処理ID」及び「退避データ」の各情報が対応付けて登録されるデータ保持オブジェクトDB60Bを示す。「処理ID」を示す情報はノードの実行を識別するための識別情報であり、「退避データ」を示す情報は、データ保持オブジェクトを示す情報である。データ保持オブジェクトを示す情報は、ノードのデータ項目の名称と値とを、ノードで用いるデータ項目について、直列化したデータである。図8に示す退避用データから生成されるデータ保持オブジェクトは、「D1」、「Value−1−1」、「D2」、「Value−2−1」、・・・、となる。なお、図8に退避用データDB60Aを示し、図9にデータ保持オブジェクトDB60Bを示したが、両方のDBを退避データ情報DB60として登録することに限定されない。つまり、データ項目の定義情報57で定義されるノードのデータ項目と値からデータ保持オブジェクトを生成することができる。従って、本実施形態では、各ノードの変更対象のデータ項目に対応するデータ保持オブジェクトをノードのデータ項目定義情報から生成されるデータ保持オブジェクトを用いて、データを操作することができる。
図10に、退避データ管理情報DB62の一例を示す。退避データ管理情報DB62には、データを退避するための判定に用いる情報が登録される。図10では退避データ管理情報DB62に、「処理ID」、「データ項目バージョン」及び「更新フラグ」の情報の各々が対応付けて登録される退避データ管理情報の一例を示す。「処理ID」を示す情報はノードの実行を識別するための識別情報である。「データ項目バージョン」を示す情報には対象ノードで利用するデータ項目に、データのバージョンを示す情報が格納される。「更新フラグ」には、対象ノードでデータが更新されるときにONの文字情報が格納される(セットされる)。なお、「データ項目バージョン」の情報は、ワークフローで用いるデータ項目の各々(図10では、D1,D2,D3,D4)に対応して情報が登録される。
図2に示すように、サーバ装置32は、複数の端末装置70の各々に、コンピュータネットワーク69を介して接続される。なお、図2では、コンピュータシステム30に、3台の端末装置70を含む一例を示すが、端末装置70は3台に限定されるものではなく、詳細を後述するクライアント機能を実行できればよく、1台以上の端末装置70を含めばよい。
端末装置70の各々はCPU71、メモリ72、及び操作プログラム74が記録された不揮発性の記録部73を備える。CPU71、メモリ72、及び記録部73は、バス79を介して互いに接続される。また、端末装置70は、ディスプレイ等の表示部75、キーボード及びマウス等の入力部76を備え、表示部75及び入力部76はバス79に接続される。また、端末装置70は、記録媒体39に対して読み書きするためのIO装置77がバス79に接続される。さらに、端末装置70はコンピュータネットワーク69に接続するためのインタフェースを含む通信制御部78を備える。なお、記録部73はHDDやフラッシュメモリ等によって実現できる。
以下の説明で、複数の端末装置70又は端末装置70に含まれる要素について個別に対象とする場合は、端末装置70A,70B,70Cで示すように、符号に記号を付与して表記し、端末装置70同士又は計算機に含まれる要素同士を区別して扱う。本実施形態では、ワークフローを操作する操作者が利用する端末装置70を、ワークフロークライアント側の端末装置70Aとして説明する。また、ワークフロー制御部68に対して入出力を実行するユーザシステムを、ユーザシステム側の端末装置70Bとして説明する。さらに、ワークフローの運用管理を実行する操作者が利用する端末装置70を、運用管理クライアント側の端末装置70Cとして説明する。
次に、本実施形態の作用を説明する。以下の説明では、申請から承認までのノードを含むワークフローの一例を説明する。図11に、ワークフローのノードとして申請から承認までの一連の流れ一例を示す。図11に示す一例では、「申請」の第1ノード80−1で、データ項目82−1のデータが更新される更新処理80−1A、及び「確定」の第4ノードで、データ項目82−4が更新される更新処理80−4Aを含む。
図12に、ワークフローシステム10をコンピュータシステム30で実現する場合におけるサーバ装置32で動作するワークフロー制御部68の処理の流れの一例を示す。ワークフロー制御部68では、図12に示す処理ルーチンが所定時間ごとに実行される。つまり、サーバ装置32のCPU34は、制御プログラム46に含まれるワークフロー制御プロセス48を実行することで、ワークフロー制御部68として動作し、図12に示す処理ルーチンを所定時間ごとに実行する。
ワークフロー制御部68は、ステップ100で、端末装置70から送信される情報を受信したか否かを判断する。端末装置70から送信される情報は、ワークフローを示す情報80における処理を、現在のノードから次のノードへ移動する指示を示す情報、及びリカバリポイントへデータを復元する指示を示す情報を含む。ワークフロー制御部68は、ステップ100で、否定判断した場合にはそのまま本処理ルーチンを終了する。一方、ステップ100で肯定判断されると、ワークフロー制御部68は、ステップ102で、受信した情報がノード移動指示を示す情報か否かを判断する。ワークフロー制御部68は、ノード移動指示を示す情報を受信した場合、ステップ102で肯定判断し、現在のノードから次のノードへ移動する場合におけるノード移動処理(詳細は後述)を実行した後に、本処理ルーチンを終了する。
また、リカバリポイントへデータを復元する指示を示す情報を受信した場合、ワークフロー制御部68は、ステップ102で否定判断した後に、ステップ106で、肯定判断する。ワークフロー制御部68は、ステップ106で、肯定判断した場合、ステップ108で、指示されたリカバリポイントへ復元する復元処理(詳細は後述)を実行した後に、本処理ルーチンを終了する。なお、ステップ100で受信した情報がノード移動指示を示す情報及びリカバリ指示を示す情報の何れでもない場合、ワークフロー制御部68は、ステップ102及びステップ106の両方で否定判断し、本処理ルーチンを終了する。
次に、図12に示すステップ104のノード移動処理をさらに説明する。図12に示すステップ104のノード移動処理では、図13に示す処理ルーチンが実行される。
ワークフロー制御部68は、ステップ110で、端末装置70から送信される情報を受け取る。端末装置70から送信される情報の一例には、ワークフロークライアント側の端末装置70Aから送信されるデータ項目のデータを変更する内容を含む変更の指示、及びワークフローにおける処理を、現在のノードから次のノードへ移動する指示を示す情報がある。変更の指示、及びノード移動の指示を示す情報は、ユーザシステム側の端末装置70Bから送信される場合もある。また、ワークフロー制御部68は、ステップ110で、端末装置70、つまり、ワークフロークライアント側の端末装置70Aまたはユーザシステム側の端末装置70Bが応答を要求することを示す情報も受け取る。
また、ワークフロー制御部68は、ステップ112で、既存の処理IDより大小比較で大きい値の新規のIDを割り当てる。つまり、ノード移動指示がなされた現在のノードから移動する次のノードの処理IDとして、新規の処理IDを割り当てる。処理IDの一例には、1から1づつインクリメントする数値を示す情報がある。次に、ワークフロー制御部68は、ステップ114で、データ退避復元管理部66へデータ退避処理の実行を要求する。データ退避復元管理部66は、データ退避処理を実行し、完了すると完了を示す情報を返信する(詳細は後述)。ワークフロー制御部68は、データ退避復元管理部66から完了を示す情報を受信するまで、ステップ116で否定判断を繰り返し、受信するとステップ118へ処理を移行する。ステップ118では、ワークフロー制御部68は、ステップ110で受け取った指示内容に従って、ワークフロー制御情報、実行履歴情報及びデータ項目情報を変更する。次に、ワークフロー制御部68は、ステップ120において、端末装置70から応答を要求することを示す情報を受け取ったか否かを判別することにより、処理結果の応答が要求されたか否かを判断する。ワークフロー制御部68は、ステップ120で否定判断した場合、そのまま本処理ルーチンを終了し、肯定判断した場合、ステップ122で端末装置70へ処理結果を返信する応答を行った後に本処理ルーチンを終了する。
次に、データ退避復元管理部66の動作を説明する。
図14に、ワークフローシステム10をコンピュータシステム30で実現する場合におけるサーバ装置32で動作するデータ退避復元管理部66の処理の流れの一例を示す。データ退避復元管理部66では、図14に示す処理ルーチンが所定時間ごとに実行される。つまり、サーバ装置32のCPU34は、制御プログラム46に含まれるデータ退避復元管理プロセス50を実行することで、データ退避復元管理部66として動作し、図14に示す処理ルーチンを所定時間ごとに実行する。
データ退避復元管理部66は、ステップ200で、ワークフロー制御部68から送信される要求を示す情報を受信したか否かを判断する。ワークフロー制御部68から送信される情報は、ノードのデータを退避するデータ退避処理の実行を要求する情報、及びリカバリポイントへデータを復元するリカバリ処理の実行を要求する情報を含む。データ退避復元管理部66は、ステップ200で、否定判断した場合にはそのまま本処理ルーチンを終了する。一方、ステップ200で肯定判断されると、データ退避復元管理部66は、ステップ202で、受信した要求情報がデータ退避処理の実行を要求する情報か否かを判断する。データ退避復元管理部66は、データ退避処理の実行を要求する情報を受信した場合、ステップ202で肯定判断し、ノードを移動する場合における現在のノードのデータを退避するデータ退避処理(詳細は後述)を実行した後に、本処理ルーチンを終了する。
また、リカバリポイントへデータを復元するリカバリ処理の実行を要求する情報を受信した場合、データ退避復元管理部66は、ステップ202で否定判断した後に、ステップ206で、肯定判断する。データ退避復元管理部66は、ステップ206で、肯定判断した場合、ステップ208で、指示されたリカバリポイントへ復元するリカバリ処理(詳細は後述)を実行した後に、本処理ルーチンを終了する。なお、ステップ200で受信した情報がデータ退避処理の実行要求を示す情報及びリカバリ処理の実行要求を示す情報の何れでもない場合、データ退避復元管理部66は、ステップ202及びステップ206の両方で否定判断し、本処理ルーチンを終了する。
次に、図14に示すステップ204のデータ退避処理をさらに説明する。ステップ204のデータ退避処理では、退避データ管理情報は、ノードの処理毎にデータ項目バージョンと更新フラグを保持する。つまり、退避データ管理情報は、ワークフローの処理毎に1個を保持する。また、データ退避処理では、データ項目バージョンは、データが退避されたタイミングで格納される。そして、データ退避処理では、更新フラグは、現ノードから次ノードへ移動するタイミングでノードのデータ項目が更新された場合に値「ON」が設定される。なお、更新フラグは、ノードでデータが非更新の場合は、データが更新されていないことを示す情報、例えば値「OFF」を設定することができる。なお、ノードでデータが非更新の場合、更新フラグをリセット(値をセットしない)してもよい。さらに、データ退避処理では、現ノードから次ノードに移動するタイミングにおいて、現ノードのデータ項目に対応するデータ項目バージョンについて、退避データ管理情報を参照して求める。データ項目バージョンの一例には、処理IDと同じ値を持つ情報がある。また、データ退避処理では、ノード毎にノードのデータ項目を退避データ管理情報が持つバージョン情報と更新フラグに基づいて、データを退避するか否かを判断し、判断結果に基づいてデータを退避する処理、またはデータを退避しない処理を行う。なお、データを退避しない処理とは、データを退避する処理を行うことなく次処理へ移行する、何もしない処理である。
ノードにおけるデータを退避するか否かの判定条件の一例を示す。第1判定条件は、データ項目バージョンが存在しない初期状態であれば、データ退避を実行すると判定する条件である。第2判定条件は、現ノードのデータ項目の各々に対応する最新のデータ項目バージョンが、データ項目間で異なるバージョンである場合、データ退避を実行すると判定する条件である。第3判定条件は、最新のデータ項目バージョンの更新フラグが設定されている場合、データ退避を実行すると判定する条件である。第4判定条件は、第1判定条件、第2判定条件、および第3判定条件に該当しない場合、データ退避は不要とし、データ退避を実行しないと判定する条件である。
詳細には、図14に示すステップ204のデータ退避処理では、図15に示す処理ルーチンが実行される。
データ退避復元管理部66は、ステップ210で、退避データ管理情報を参照し、現ノードのデータ項目に対応する最新のデータ項目バージョンをデータ項目毎に求める。つまり、データ退避復元管理部66は、現ノードのデータ項目に対応する現ノードよりより前でかつ最新のデータ項目のデータ項目バージョンを、現ノードのデータ項目の各々について求める。
次に、データ退避復元管理部66は、ステップ212で、求めたデータ項目バージョンは全て存在するか否かを判断する。つまり、データ退避復元管理部66は、現ノードのデータ項目の各々に対応する最新のデータ項目バージョンが全て存在するか否かを判断する。データ退避復元管理部66は、ステップ212で肯定判断すると、ステップ214へ処理を移行し、否定判断すると、ステップ224へ処理を移行する。
ステップ212で肯定判断すると、データ退避復元管理部66は、ステップ214で、求めたデータ項目バージョンが全て同じデータ項目バージョンの値であるか否かを判断する。データ退避復元管理部66は、ステップ214で肯定判断すると、ステップ216へ処理を移行し、否定判断すると、ステップ224へ処理を移行する。
ステップ214で肯定判断すると、データ退避復元管理部66は、ステップ216で、退避データ管理情報を参照し、データ項目毎のデータ項目バージョンに対応する更新フラグを求める。つまり、データ退避復元管理部66は、ステップ210で求めた現ノードのデータ項目毎の最新のデータ項目バージョンに対応する更新フラグを求める。
次に、データ退避復元管理部66は、ステップ218において、ステップ216で求めた更新フラグが全てオフか否かを判断する。データ退避復元管理部66は、ステップ218で肯定判断すると、ステップ220へ処理を移行し、否定判断すると、ステップ224へ処理を移行する。
ステップ218で肯定判断すると、データ退避復元管理部66は、ステップ220で、データ項目のデータの変更が指示されているか否かを判断する。データ退避復元管理部66は、ステップ220で肯定判断すると、ステップ222で、ステップ216で求めた更新フラグをオン(「ON])に設定した後に、本処理ルーチンを終了し、否定判断すると、そのまま本処理ルーチンを終了する。なお、ステップ222では、データ退避処理の完了を示す情報を、ワークフロー制御部68へ返信する。
また、データ退避復元管理部66は、ステップ224で、退避データ管理情報に、新しい処理IDの値をキーとする現ノードの情報として、データ項目バージョンと更新フラグとを含むデータを追加する。つまり、退避データ管理情報に、新しい処理IDの値をキーとする情報を含むデータを追加する。新しい処理IDの値をキーとする情報は、現ノードのデータ項目に対応するデータ項目バージョンに、新しい処理IDの値または一意の値を有する情報を含む。また、新しい処理IDの値をキーとする情報は、データ項目のデータが更新される場合、更新フラグの値がオンである情報も含む。
さらに、データ退避復元管理部66は、ステップ226で、退避データ情報に、新しい処理IDの値をキーとする現ノードのデータ項目の値を有するデータを追加する。本実施形態では、退避データ情報は、ノードのデータ項目定義情報から、各ノードの変更対象のデータ項目に対応するデータ保持オブジェクトを生成したデータである。なお、ステップ226では、データ退避処理の完了を示す情報を、ワークフロー制御部68へ返信する。
次に、データ退避復元管理部66で実行されるデータ退避処理について具体的に説明する。図16及び図17に、第1ノード80−1〜第4ノード80−4における各種データの関係を示す。
まず、第1ノード80−1では、退避データ管理情報が参照され、現ノードのデータ項目に対応する最新のデータ項目バージョンがデータ項目毎に求められ(工程L01)、第1ノード80−1におけるデータを退避するか否かが判定される(工程L02)。第1ノード80−1は、ワークフローの最初のノードであるため、第1ノード80−1より最新のデータ項目バージョンは存在しない。従って、第1判定条件によりデータを退避すると判定され、退避データ管理情報に、新しい処理IDの値をキーとする情報を含むデータが追加される(工程L03)。第1ノード80−1では、データ項目のデータが更新されるので、更新フラグの値がオンである情報も追加される。また、第1ノード80−1では、退避するデータとして、第1ノード80−1のデータ項目定義情報から定まるデータ保持オブジェクトである退避データ情報が生成され、記憶される(工程L04)。
第2ノード80−2でも同様に、退避データ管理情報が参照され、最新のデータ項目バージョンが求められ(工程L01)、第2ノード80−2におけるデータを退避するか否かが判定される(工程L02)。第2ノード80−2では、最新のデータ項目バージョンが同一であるが、更新フラグの値がオンであるため、第3判定条件によりデータを退避すると判定され、退避データ管理情報に、新しい処理IDの値をキーとする情報を含むデータが追加される(工程L03)。第2ノード80−2では、データ項目のデータが更新されないので、更新フラグは設定されない。また、第2ノード80−2でも、退避するデータとして、第2ノード80−2のデータ項目定義情報から定まるデータ保持オブジェクトである退避データ情報が生成され、記憶される(工程L04)。
また、第3ノード80−3でも、退避データ管理情報が参照され、最新のデータ項目バージョンが求められ(工程L01)、第3ノード80−3におけるデータを退避するか否かが判定される(工程L02)。第3ノード80−3では、最新のデータ項目バージョンが同一であるため、第4判定条件によりデータを退避しないと判定され、退避データ管理情報に、データは追加されない(工程L03)。また、第3ノード80−3では、データ保持オブジェクトである退避データ情報も生成されない(工程L04)。
さらに、第4ノード80−4でも同様に、退避データ管理情報が参照され、最新のデータ項目バージョンが求められ(工程L01)、第4ノード80−4におけるデータを退避するか否かが判定される(工程L02)。第4ノード80−4では、最新のデータ項目バージョンが相違するため、第2判定条件によりデータを退避すると判定され、退避データ管理情報に、新しい処理IDの値をキーとする情報を含むデータが追加される(工程L03)。第4ノード80−4では、データ項目のデータが更新されるので、更新フラグの値がオンである情報も追加される。また、第4ノード80−4でも、退避するデータとして、第4ノード80−4のデータ項目定義情報から定まるデータ保持オブジェクトである退避データ情報が生成され、記憶される(工程L04)。
次に、ワークフローシステム10をコンピュータシステム30で実現する場合における情報の流れについて具体的に説明する。図18及び図19に、ワークフロークライアント側の端末装置70A、データ退避復元管理部66、及びワークフロー制御部68の間における情報の流れの一例を示す。なお、図18及び図19では、第2ノード80−2においてデータ項目のデータの変更を指示する場合における情報の流れの一例を示す。
申請者は、ワークフロークライアント側の端末装置70Aを操作して、ワークフロー制御部68へ変更を指示する(工程L10)。図18に示す例では、データ項目「D2」である「宿泊場所」を「XYZホテル」に変更する指示、データ項目「D3」である「宿泊費」を「\18,500-」に変更する指示、データ項目「D4」である「払出日」を「2013/12/19」に変更する指示が含まれる。また、工程L10における指示には、次のノードへ進める指示も含まれる。ワークフロー制御部68は、端末装置70Aからの指示に応じて、ワークフロー制御情報とデータ項目情報とに基づく、データ退避復元管理部66へデータ退避処理の実行を要求する(工程L11)。データ退避復元管理部66は、ワークフロー制御部68からの要求に応じて、退避データ管理情報のデータに基づき、データ退避が必要か否かを判定し、データを退避すると判定した場合、退避データ情報にデータ項目の値を格納する(工程L12)。
次に、データ退避復元管理部66は、退避データ管理情報を追加または変更する(工程L13)。ワークフロー制御部68は、ワークフロー制御情報およびデータ項目情報を変更し、またワークフロー処理の実行を、実行履歴情報に追加する(工程L14)。さらに、ワークフロー制御部68は、ワークフロークライアント側の端末装置70Aから応答要求がなされている場合、ワークフロークライアント側の端末装置70Aへ処理結果を通知する(工程L15)。
次に、ワークフロー制御部68で実行される図12に示すステップ108の復元処理をさらに説明する。図12に示すステップ108の復元処理では、図20に示す処理ルーチンが実行される。
ワークフロー制御部68は、ステップ130で、端末装置70から送信される情報を受け取る。リカバリ指示を示す情報の一例には、運用管理クライアント側の端末装置70Cから送信されるリカバリポイントへデータを復元する指示を示す情報がある。また、ワークフロー制御部68は、ステップ130で、端末装置70、つまり、運用管理クライアント側の端末装置70Cが応答を要求することを示す情報も受け取る。
また、ワークフロー制御部68は、ステップ132で、実行履歴情報を参照し、リカバリ指示に対応する処理IDを復元処理IDとして求める。次に、ワークフロー制御部68は、ステップ134で、データ退避復元管理部66へリカバリ処理の実行を要求する。データ退避復元管理部66は、リカバリ処理を実行し、完了すると完了を示す情報を返信する(詳細は後述)。ワークフロー制御部68は、データ退避復元管理部66から完了を示す情報を受信するまで、ステップ136で否定判断を繰り返し、受信するとステップ138へ処理を移行する。ステップ138では、ワークフロー制御部68は、リカバリ処理から返されたリカバリ用退避データと、リカバリ指示とを基にして、ワークフロー制御情報、実行履歴情報及びデータ項目情報を変更する。次に、ワークフロー制御部68は、ステップ140において、端末装置70から応答を要求することを示す情報を受け取ったか否かを判別することにより、処理結果の応答が要求されたか否かを判断する。ワークフロー制御部68は、ステップ140で否定判断した場合、そのまま本処理ルーチンを終了し、肯定判断した場合、ステップ142で端末装置70へ処理結果を返信する応答を行った後に本処理ルーチンを終了する。
次に、データ退避復元管理部66で実行される図14に示すステップ208のリカバリ処理をさらに説明する。図14に示すステップ208のリカバリ処理では、図21に示す処理ルーチンが実行される。
データ退避復元管理部66は、ステップ230で、リカバリ用退避データがそろったことを判断するための、データ項目の各々に対応する判定フラグの値をOFFする。つまり、ステップ230では、データ項目の各々に判定フラグを対応付けて、判定フラグの値がOFFに設定される。
次に、データ退避復元管理部66は、ステップ232で、退避データ管理情報から、処理IDが復元処理IDの値以上のデータを順番に探索する。次に、データ退避復元管理部66は、ステップ234で、探索結果のデータから、1つのデータを抽出し、次のステップ236で、データの内容が有るか否かを判断する。データ退避復元管理部66は、ステップ236で否定判断すると、ステップ248へ処理を移行する。
ステップ236で肯定判断すると、データ退避復元管理部66は、ステップ238で、抽出したデータのデータ項目バージョンのうち、値が設定されている全てのデータ項目について、判定フラグの状態を確認する。次に、データ退避復元管理部66は、ステップ240で、状態がオフである判定フラグが有るか否かを判断し、肯定判断すると、ステップ242へ処理を移行し、否定判断すると、ステップ234へ処理を戻す。
ステップ240で肯定判断すると、データ退避復元管理部66は、ステップ242で、退避データ情報を参照し、抽出したデータの処理IDに対応するデータを取り出し、リカバリ用退避データとして保持する。次に、データ退避復元管理部66は、抽出したデータのデータ項目バージョンのうち、値が設定されているデータ項目について、判定フラグの値をONに設定する。また、データ退避復元管理部66は、ステップ246で、全てのデータ項目の判定フラグがONであるか否かを判断し、否定判断した場合にはステップ234へ処理を戻し、肯定判断した場合には、ステップ248へ処理を移行する。
データ退避復元管理部66は、ステップ248で、退避データ管理情報と、退避データ情報とに基づき、処理IDの値が復元処理IDの値以上のデータを削除する。また、データ退避復元管理部66は、ステップ250で、保持したリカバリ用退避データを、ワークフロー制御部68へ返信する。
次に、ワークフローシステム10をコンピュータシステム30で実現する場合における情報の流れについて具体的に説明する。図22及び図23に、運用管理クライアント側の端末装置70C、データ退避復元管理部66、及びワークフロー制御部68の間における情報の流れの一例を示す。なお、図22及び図23では、運用管理者が、故障が発生したワークフロー処理に対して実行順序が第2ノード80−2の状態に戻すリカバリ処理を指示する場合における情報の流れの一例を示す。
運用管理者は、運用管理クライアント側の端末装置70Cを操作して、故障が発生したワークフロー処理に対して実行順序が第2ノード80−2の状態に戻すリカバリ処理を指示する(工程L20)。ワークフロー制御部68は、実行履歴情報から実行順序2に対応する処理IDを求めて、データ退避復元管理部66へリカバリに必要な退避データの抽出を依頼する(工程L21)。データ退避復元管理部66は、退避データ管理情報からリカバリに必要な退避データを判断し、退避データ情報に格納されている退避データを取り出してワークフロー制御部68に渡す(工程L22)。なお、工程L22では、退避データ管理情報と退避データ情報とに基づいて、リカバリ対象の処理ID以降のデータを削除する。
次に、ワークフロー制御部68は、リカバリに必要な退避データを使ってワークフロー制御情報およびデータ項目情報を変更する(工程L23)。また、工程L23では、ワークフロー制御部68は、リカバリ処理の実行を、実行履歴情報に追加する。さらに、ワークフロー制御部68は、運用管理クライアント側の端末装置70Cから応答要求がなされている場合、運用管理クライアント側の端末装置70Cへ処理結果を通知する(工程L24)。
なお、CPU34により実行されるステップ212〜ステップ220の処理は、サーバ装置32がワークフローシステムとして動作する場合における判定部の処理に対応する一例である。また、CPU34により実行されるステップ224及びステップ226の処理は、サーバ装置32がワークフローシステムとして動作する場合における退避部の処理に対応する一例である。さらに、CPU34により実行されるステップ248及びステップ250の処理は、サーバ装置32がワークフローシステムとして動作する場合における復元部の処理に対応する一例である。
以上説明したように、本実施形態は、ノード毎にノードのデータ項目のデータを、退避データ管理情報に含まれるバージョン情報と更新フラグとに基づいて、退避するか否かを判断するので、最小限のデータを退避すればよく、退避データ量を削減できる。また、データを退避しない場合に、データを退避する処理を削減でき、処理コストを抑制できる。
また、本実施形態では、バージョン情報と更新フラグとに基づいて、データを退避することを判定するので、ノード毎にデータを退避することに比べて、退避データ量を削減できる。
また、本実施形態では、ワークフローに含まれる最初のノードについて、データ項目のデータを退避するので、最初のノードから確実にデータを退避できる。
また、本実施形態では、現在のノードより前のノードのデータ項目に対応付けられたバージョン情報が同じでかつ、データが更新されていない場合、データを退避しないので、重複したデータを退避することを抑制できる。
また、本実施形態では、ノード毎に、ノードで用いるデータ項目を示す情報に対応付けたバージョン情報と、ノードで少なくとも一部のデータが更新されたことを示すフラグ情報とを含む情報を、退避データ管理情報に追加して記憶する。従って、退避データ管理情報を参照することにより、ノードにおけるデータ項目のバージョンとノードでデータが更新されたこととを確認できる。
また、本実施形態では、ノードで退避するデータ項目のデータは、ノードで用いるデータ項目のデータを組み合わせて生成したデータであるので、退避データを再作成する処理を抑制できる。
さらに、本実施形態では、入力されたノードの位置を示す情報と、退避データ管理情報と、退避したデータとに基づいて、入力されたノードのデータを復元する。退避データ管理情報によって、入力されたノードの位置に対応するノードのデータを復元するためのデータ項目を含むノードを迅速に特定できる。また、退避データ管理情報によって、退避されるデータも迅速に特定できる。
さらに、本実施形態では、ノード毎に、退避する個々のデータをつなげて保持するので、退避したデータからデータ項目のデータを抽出することで、容易にデータを復元できる。
なお、上記ではワークフローシステム10をサーバ装置32により実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
また、上記ではプログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されるものではない。例えば、開示の技術におけるプログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
ワークフローにより所定順序に従って複数のノードの処理を進める場合に、複数のノード毎に、前記ノードを示す情報を、前記ノードで用いるデータ項目を示す情報に対応付けたバージョン情報と、前記ノードで少なくとも一部のデータが更新されたことを示すフラグ情報とを含む管理情報が記憶部に記憶され、前記記憶部に記憶された前記管理情報のうち、次のノードへ処理を進める場合の現在のノードを対象ノードとし、かつ該対象ノードより前のノードのうち該対象ノードのデータ項目を示す情報に対応づけられたバージョン情報に値を有するノードを参照ノードとし、該参照ノードのデータ項目を示す情報に対応付けられたバージョン情報と、前記参照ノードのフラグ情報とに基づいて、前記対象ノードにおけるデータ項目のデータを退避するか否かを判定し、
判定結果に基づいて、前記対象ノードにおけるデータ項目のデータを退避する
ことを含む処理をコンピュータに実行させるためのワークフロー制御プログラム。
(付記2)
前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報が設定されていない場合、または、前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報の間で相違するバージョン情報の値が設定されている場合、または、前記参照ノードで少なくとも一部のデータが更新されたことを示すフラグ情報が設定されている場合、前記対象ノードにおけるデータ項目のデータを退避することを判定する
付記1に記載のワークフロー制御プログラム。
(付記3)
対象ノードがワークフローに含まれる最初のノードである場合に、前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報が設定されていない場合として、前記対象ノードにおけるデータ項目のデータを退避することを判定する
付記2に記載のワークフロー制御プログラム。
(付記4)
前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報の間でバージョン情報の値が同じでかつ、前記参照ノードでデータが更新されていないことを示すフラグ情報が設定されている場合、前記対象ノードにおけるデータ項目のデータを退避しないことを判定する
付記1〜付記3の何れか1項に記載のワークフロー制御プログラム。
(付記5)
前記対象ノードを示す情報を、前記対象ノードで用いるデータ項目を示す情報に対応付けたバージョン情報と、前記対象ノードで少なくとも一部のデータが更新されたことを示すフラグ情報とを含む前記対象ノードの情報を、前記管理情報に含めて前記記憶部に記憶する
付記1〜付記4の何れか1項に記載のワークフロー制御プログラム。
(付記6)
対象ノードで退避するデータ項目のデータは、対象ノードで退避するデータ項目のデータを組み合わせて生成したデータである
付記1〜付記5の何れか1項に記載のワークフロー制御プログラム。
(付記7)
前記ワークフローにおいてデータを復元する場合に入力されたノードの位置を示す情報と、前記管理情報と、前記退避したデータとに基づいて、入力されたノードのデータを復元する
付記1〜付記6の何れか1項に記載のワークフロー制御プログラム。
(付記8)
前記退避したデータの一部を抽出して前記データを復元する
付記7に記載のワークフロー制御プログラム。
(付記9)
コンピュータが、
ワークフローにより所定順序に従って複数のノードの処理を進める場合に、複数のノード毎に、前記ノードを示す情報を、前記ノードで用いるデータ項目を示す情報に対応付けたバージョン情報と、前記ノードで少なくとも一部のデータが更新されたことを示すフラグ情報とを含む管理情報が記憶部に記憶され、前記記憶部に記憶された前記管理情報のうち、次のノードへ処理を進める場合の現在のノードを対象ノードとし、かつ該対象ノードより前のノードのうち該対象ノードのデータ項目を示す情報に対応づけられたバージョン情報に値を有するノードを参照ノードとし、該参照ノードのデータ項目を示す情報に対応付けられたバージョン情報と、前記参照ノードのフラグ情報とに基づいて、前記対象ノードにおけるデータ項目のデータを退避するか否かを判定し、
判定結果に基づいて、前記対象ノードにおけるデータ項目のデータを退避する
ことを含むワークフロー制御方法。
(付記10)
前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報が設定されていない場合、または、前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報の間で相違するバージョン情報の値が設定されている場合、または、前記参照ノードで少なくとも一部のデータが更新されたことを示すフラグ情報が設定されている場合、前記対象ノードにおけるデータ項目のデータを退避することを判定する
付記9に記載のワークフロー制御方法。
(付記11)
前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報の間でバージョン情報の値が同じでかつ、前記参照ノードでデータが更新されていないことを示すフラグ情報が設定されている場合、前記対象ノードにおけるデータ項目のデータを退避しないことを判定する
付記9または付記10に記載のワークフロー制御方法。
(付記12)
前記ワークフローにおいてデータを復元する場合に入力されたノードの位置を示す情報と、前記管理情報と、前記退避したデータとに基づいて、入力されたノードのデータを復元する
付記9〜付記11の何れか1項に記載のワークフロー制御方法。
(付記13)
ワークフローにより所定順序に従って複数のノードの処理を進める場合に、複数のノード毎に、前記ノードを示す情報を、前記ノードで用いるデータ項目を示す情報に対応付けたバージョン情報と、前記ノードで少なくとも一部のデータが更新されたことを示すフラグ情報とを含む管理情報が記憶される記憶部と、
前記記憶部に記憶された前記管理情報のうち、次のノードへ処理を進める場合の現在のノードを対象ノードとし、かつ該対象ノードより前のノードのうち該対象ノードのデータ項目を示す情報に対応づけられたバージョン情報に値を有するノードを参照ノードとし、該参照ノードのデータ項目を示す情報に対応付けられたバージョン情報と、前記参照ノードのフラグ情報とに基づいて、前記対象ノードにおけるデータ項目のデータを退避するか否かを判定する判定部と、
判定結果に基づいて、前記対象ノードにおけるデータ項目のデータを退避する退避部と、
を備えたワークフロー制御システム。
(付記14)
前記判定部は、前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報が設定されていない場合、または、前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報の間で相違するバージョン情報の値が設定されている場合、または、前記参照ノードで少なくとも一部のデータが更新されたことを示すフラグ情報が設定されている場合、前記対象ノードにおけるデータ項目のデータを退避することを判定する
付記13に記載のワークフロー制御システム。
(付記15)
前記判定部は、前記参照ノードのデータ項目を示す情報に対応付けられたバージョン情報の間でバージョン情報の値が同じでかつ、前記参照ノードでデータが更新されていないことを示すフラグ情報が設定されている場合、前記対象ノードにおけるデータ項目のデータを退避しないことを判定する
付記13または付記14に記載のワークフロー制御システム。
(付記16)
前記ワークフローにおいてデータを復元する場合に入力されたノードの位置を示す情報と、前記管理情報と、前記退避したデータとに基づいて、入力されたノードのデータを復元する
付記13〜付記15の何れか1項に記載のワークフロー制御システム。