(57)【要約】  複数のワークフロー間における制約違反をワークフローの実行前に解消させる。状態遷移モデル生成部は、受信部によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する。制約違反判定部は、状態遷移モデルおよび受信部によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する。制約違反が発生すると判定された場合に、ワークフロー定義変更部は、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える。状態遷移モデル生成部は、変更後の処理手順およびポリシーを用い、変更後の状態遷移モデルを生成する。制約違反判定部は、変更後の状態遷移モデルおよび変更後の制約を用いて制約違反が発生するか否かを判定する。制約違反が発生しないと判定された場合に、表示部は、代替ワークフロー定義をモニタに表示させる。
2008152910.tif 000002
【特許請求の範囲】
【請求項１】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信手順と、
前記受信手順によって受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、
前記状態遷移モデル生成手順によって生成された前記状態遷移モデルおよび前記受信手順によって受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、
前記判定手順によって前記制約違反が発生すると判定された場合に、前記処理手順、前記ポリシーおよび前記制約のいずれか一つまたは複数に変更を加える変更手順と、
前記変更手順によって前記変更が加えられた場合に、前記変更が加えられた後の前記処理手順、前記ポリシーおよび前記制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手順と、
をコンピュータに実行させることを特徴とするワークフロー定義変更プログラム。
【請求項２】
前記状態遷移モデル生成手順は、前記変更手順によって変更が加えられた後の前記処理手順および前記ポリシーを用いて変更後の前記状態遷移モデルを生成し、
前記判定手順は、前記状態遷移モデル生成手順によって生成された変更後の前記状態遷移モデルおよび前記変更手順によって変更が加えられた後の前記制約を用いて前記制約違反が発生するか否かを判定する
ことを特徴とする請求項１に記載のワークフロー定義変更プログラム。
【請求項３】
前記状態遷移モデル生成手順によって生成された前記状態遷移モデルおよび変更後の前記状態遷移モデルを比較して、前記状態遷移モデルの変更の前後において値が変わった変数を特定する変数特定手順をさらにコンピュータに実行させる
ことを特徴とする請求項２に記載のワークフロー定義変更プログラム。
【請求項４】
前記判定手順によって前記制約違反が発生すると判定された場合に、前記制約違反が発生すると判定された回数が、所定回数に到達しているときには、前記代替ワークフロー定義の提示が不可能である旨を通知する通知手順をさらにコンピュータに実行させる
ことを特徴とする請求項３に記載のワークフロー定義変更プログラム。
【請求項５】
前記提示手順は、前記制約違反に関する内容をさらに提示することを特徴とする請求項１〜４のいずれか１項に記載のワークフロー定義変更プログラム。
【請求項６】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更方法であって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信ステップと、
前記受信ステップにおいて受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成ステップと、
前記状態遷移モデル生成ステップにおいて生成された前記状態遷移モデルおよび前記受信ステップにおいて受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定ステップと、
前記判定ステップにおいて前記制約違反が発生すると判定された場合に、前記処理手順、前記ポリシーおよび前記制約のいずれか一つまたは複数に変更を加える変更ステップと、
前記変更ステップにおいて前記変更が加えられた場合に、前記変更が加えられた後の前記処理手順、前記ポリシーおよび前記制約を含むワークフロー定義を代替ワークフロー定義として提示する提示ステップと、
を含むことを特徴とするワークフロー定義変更方法。
【請求項７】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更装置であって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信手段と、
前記受信手段によって受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手段と、
前記状態遷移モデル生成手段によって生成された前記状態遷移モデルおよび前記受信手段によって受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定手段と、
前記判定手段によって前記制約違反が発生すると判定された場合に、前記処理手順、前記ポリシーおよび前記制約のいずれか一つまたは複数に変更を加える変更手段と、
前記変更手段によって前記変更が加えられた場合に、前記変更が加えられた後の前記処理手順、前記ポリシーおよび前記制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手段と、
を備えることを特徴とするワークフロー定義変更装置。
【請求項８】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信手順と、
前記受信手順によって受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、
前記状態遷移モデル生成手順によって生成された前記状態遷移モデルおよび前記受信手順によって受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、
前記判定手順によって制約違反が発生すると判定された場合に、前記ワークフローと前記制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示手順と
をコンピュータに実行させることを特徴とするワークフロー定義変更プログラム。
【請求項９】
前記表示手順は、前記判定手順によって制約違反が発生すると判定されたワークフローである制約違反ワークフローと、前記制約違反ワークフローに含まれる処理手順と同時に同一のリソースを用いる処理手順が含まれるワークフローとを表示させることを特徴とする請求項８に記載のワークフロー定義変更プログラム。
【請求項１０】
前記表示手順は、異なるワークフローに含まれる二以上の処理手順が同一の時刻に実行される場合に、前記ワークフロー画面における横軸方向または縦軸方向のいずれか一方を時間軸として、前記二以上の処理手順が同一の時間に実行されることを識別できるように該二以上の処理手順を表示させることを特徴とする請求項８に記載のワークフロー定義変更プログラム。
【請求項１１】
前記表示手順は、異なるワークフローに含まれる二以上の処理手順によって同時に同一のリソースが用いられる期間が存在する場合に、前記二以上の処理手順と、前記二以上の処理手順以外の処理手順である他の処理手順とを識別できるように構成したワークフロー画面を、前記表示装置に表示させることを特徴とする請求項８〜１０のいずれか１項に記載のワークフロー定義変更プログラム。
【請求項１２】
前記表示手順は、前記二以上の処理手順によって同時に同一のリソースが用いられることにより該二以上の処理手順の処理時間が長くなる場合に、前記二以上の処理手順を、前記他の処理手順と比較して伸長した図形を用いて表示させることを特徴とする請求項１１に記載のワークフロー定義変更プログラム。
【請求項１３】
前記表示手順は、前記二以上の処理手順によって同時に同一のリソースが用いられる期間が存在し、かつ、該期間において前記二以上の処理手順の一方の処理手順の実行が終了するまで他方の処理手順の実行が待ち状態になる場合に、前記他方の処理手順が待ち状態になることを識別できるように表示させることを特徴とする請求項１１に記載のワークフロー定義変更プログラム。
【請求項１４】
前記表示手順は、前記判定手順によって、前記ワークフローに含まれるすべての処理手順の実行が終了する時刻、または、前記ワークフローに含まれるすべての処理手順の実行が終了するまでにかかる時間を定める制約に違反すると判定された場合に、前記時刻または時間を表示させることを特徴とする請求項８〜１０のいずれか１項に記載のワークフロー定義変更プログラム。
【請求項１５】
前記ワークフロー画面上で、前記ワークフロー定義の変更操作を受け付ける変更操作受付手順をさらにコンピュータに実行させ、
前記状態遷移モデル生成手順は、前記変更操作受付手順によって受け付けられた変更後のワークフロー定義を用い、前記状態遷移モデルを生成することを特徴とする請求項８〜１０のいずれか１項に記載のワークフロー定義変更プログラム。
【請求項１６】
前記変更操作受付手順は、前記ワークフローに含まれるすべての処理手順の実行が終了する時刻、または、前記ワークフローに含まれるすべての処理手順の実行が終了するまでにかかる時間を定める制約の変更を受け付けることを特徴とする請求項１５に記載のワークフロー定義変更プログラム。
【請求項１７】
前記変更操作受付手順は、各処理手順の実行順序を定める制約の変更を受け付けることを特徴とする請求項１５に記載のワークフロー定義変更プログラム。
【請求項１８】
前記変更操作受付手順は、同時に同一のリソースを用いることができる処理手順の数を定める制約の変更を受け付けることを特徴とする請求項１５に記載のワークフロー定義変更プログラム。
【請求項１９】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更方法であって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信ステップと、
前記受信ステップにおいて受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成ステップと、
前記状態遷移モデル生成ステップにおいて生成された前記状態遷移モデルおよび前記受信ステップにおいて受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定ステップと、
前記判定ステップにおいて制約違反が発生すると判定された場合に、前記ワークフローと前記制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示ステップと
を含むことを特徴とするワークフロー定義変更方法。
【請求項２０】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更装置であって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信手段と、
前記受信手段によって受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手段と、
前記状態遷移モデル生成手段によって生成された前記状態遷移モデルおよび前記受信手段によって受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定手段と、
前記判定手段によって制約違反が発生すると判定された場合に、前記ワークフローと前記制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示手段と
を備えることを特徴とするワークフロー定義変更装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ワークフロー定義を変更するのに有用なワークフロー定義変更プログラム、ワークフロー定義変更方法およびワークフロー定義変更装置に関し、特に、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができるワークフロー定義変更プログラム、ワークフロー定義変更方法およびワークフロー定義変更装置に関する。
【背景技術】
【０００２】
近年、情報システムの大規模化、複雑化に伴い、システムの運用管理も複雑化してきている。このため、システムを正常に運用することがますます困難になってきている。このような状況を踏まえて、運用管理の手順や規則をワークフローで定義し、この定義にしたがってシステム管理者がシステムを操作することや、この定義にしたがってシステム自体に運用管理処理を行わせること等で運用管理作業の負担を軽減させている（下記特許文献１参照）。【０００３】
【特許文献１】特開平０９−０４４３５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、上述したワークフローによる運用管理では、複数のワークフロー間の相互干渉が問題となる。具体的には、同一のリソースを扱うワークフローが複数ある場合に、それらを同時に実行させたときにリソースの競合が生じ、この競合によって処理遅延等の問題が発生する可能性がある。このような問題を解決するための手法の一つとして、シミュレーションがある。このシミュレーションは、ある特定のシナリオ(入力系列)を想定し、このシナリオにしたがった処理結果を評価する手法であるため、想定外のシナリオで発生し得る制約違反や、発生確率の小さな制約違反を見逃しやすい。また、他の手法として、ワークフロー実行時に制約違反を検出して回避策をとる手法がある。この手法では、制約違反が検出された時点で回避策を考えなければならず、システム管理者の負担が高いうえ、事前に制約違反の発生が予測されたとしてもその制約違反を回避させることができない。【０００５】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができるワークフロー定義変更プログラム、ワークフロー定義変更方法およびワークフロー定義変更装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、処理手順、ポリシーおよび制約を受信する受信手順と、受信手順によって受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、状態遷移モデル生成手順によって生成された状態遷移モデルおよび受信手順によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、判定手順によって制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える変更手順と、変更手順によって変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手順と、をコンピュータに実行させることを特徴とする。【０００７】
また、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更方法であって、処理手順、ポリシーおよび制約を受信する受信ステップと、受信ステップにおいて受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成ステップと、状態遷移モデル生成ステップにおいて生成された状態遷移モデルおよび受信ステップにおいて受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定ステップと、判定ステップにおいて制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える変更ステップと、変更ステップにおいて変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義として提示する提示ステップと、を含むことを特徴とする。【０００８】
また、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更装置であって、処理手順、ポリシーおよび制約を受信する受信手段と、受信手段によって受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手段と、状態遷移モデル生成手段によって生成された状態遷移モデルおよび受信手段によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定手段と、判定手段によって制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える変更手段と、変更手段によって変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手段と、を備えることを特徴とする。【０００９】
これらの発明によれば、例えば、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加え、この変更を加えた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。【００１０】
また、本発明は、上記発明において、上記状態遷移モデル生成手順は、変更手順によって変更が加えられた後の処理手順およびポリシーを用いて変更後の状態遷移モデルを生成し、上記判定手順は、状態遷移モデル生成手順によって生成された変更後の状態遷移モデルおよび変更手順によって変更が加えられた後の制約を用いて制約違反が発生するか否かを判定することを特徴とする。【００１１】
これにより、変更を加えた後の処理手順およびポリシーに基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生しないと判定された場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。【００１２】
また、本発明は、上記発明において、上記状態遷移モデル生成手順によって生成された状態遷移モデルおよび変更後の状態遷移モデルを比較して、状態遷移モデルの変更の前後において値が変わった変数を特定する変数特定手順をさらにコンピュータに実行させることを特徴とする。【００１３】
また、本発明は、上記発明において、上記判定手順によって制約違反が発生すると判定された場合に、制約違反が発生すると判定された回数が、所定回数に到達しているときには、代替ワークフロー定義の提示が不可能である旨を通知する通知手順をさらにコンピュータに実行させることを特徴とする。【００１４】
また、本発明は、上記発明において、上記提示手順は、制約違反に関する内容をさらに提示することを特徴とする。【００１５】
また、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、処理手順、ポリシーおよび制約を受信する受信手順と、受信手順によって受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、状態遷移モデル生成手順によって生成された状態遷移モデルおよび受信手順によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、判定手順によって制約違反が発生すると判定された場合に、ワークフローと制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示手順とをコンピュータに実行させることを特徴とする。【００１６】
また、本発明は、上記発明において、上記表示手順は、判定手順によって制約違反が発生すると判定されたワークフローである制約違反ワークフローと、制約違反ワークフローに含まれる処理手順と同時に同一のリソースを用いる処理手順が含まれるワークフローとを表示させることを特徴とする。【００１７】
また、本発明は、上記発明において、上記表示手順は、異なるワークフローに含まれる二以上の処理手順によって同時に同一のリソースが用いられる期間が存在する場合に、上記二以上の処理手順と、上記二以上の処理手順以外の処理手順である他の処理手順とを識別できるように構成したワークフロー画面を、表示装置に表示させることを特徴とする。【００１８】
これらの発明によれば、例えば、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、制約違反が発生しているワークフローを容易に認識することができ、制約違反が発生した原因を容易に認識することができる。【００１９】
また、本発明は、上記発明において、上記ワークフロー画面上で、上記ワークフロー定義の変更操作を受け付ける変更操作受付手順をさらにコンピュータに実行させ、上記状態遷移モデル生成手順は、上記変更操作受付手順によって受け付けられた変更後のワークフロー定義を用い、上記状態遷移モデルを生成することを特徴とする。【００２０】
この発明によれば、例えば、ワークフロー画面上でワークフロー定義の変更操作を受け付けることができ、変更後のワークフロー定義に基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、システム管理者は、ワークフロー定義を容易に変更することができ、変更後のワークフロー定義が制約に違反するか否かを容易に確認することができる。
【発明の効果】
【００２１】
本発明によれば、受信した複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよび受信した複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加え、この変更を加えた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示することができる。【００２２】
また、本発明によれば、変更を加えた後の処理手順およびポリシーに基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生しないと判定された場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示することができる。【００２３】
また、本発明によれば、制約違反が発生しているワークフローを容易に認識することができ、制約違反が発生した原因を容易に認識することができる。【００２４】
また、本発明によれば、システム管理者が、ワークフロー定義を容易に変更することができ、変更後のワークフロー定義が制約に違反するか否かを容易に確認することができる。【００２５】
すなわち、本発明によれば、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができるという効果を奏する。
【図面の簡単な説明】
【００２６】
【図１】図１は、ワークフロー定義変更装置の機能構成図である。
【図２】図２は、ワークフローＡの処理手順を示す図である。
【図３】図３は、ワークフローＡの処理手順を示す図である。
【図４】図４は、ワークフローＢの処理手順を示す図である。
【図５】図５は、ワークフローＢの処理手順を示す図である。
【図６】図６は、図２に示すワークフローＡを変換して生成されたオートマトンを示す図である。
【図７】図７は、図４に示すワークフローＢを変換して生成されたオートマトンを示す図である。
【図８】図８は、積オートマトンを生成するための二つのオートマトンを示す図である。
【図９】図９は、図８に示す二つのオートマトンを用いて生成された積オートマトンを示す図である。
【図１０】図１０は、リソースの競合が生じるロケーションＬ１１を中心とした積オートマトンの一部分を示す図である。
【図１１】図１１は、図１０に示すロケーションＬ１１においてリソースの割当タイプがノンプリエンティブである場合に加えられる変更を説明するための図である。
【図１２】図１２は、図１０に示すロケーションＬ１１においてリソースの割当タイプがプリエンティブである場合に加えられる変更を説明するための図である。
【図１３】図１３は、図１０に示すロケーションＬ１１においてリソースの割当タイプがコンカレントである場合に加えられる変更を説明するための図である。
【図１４】図１４は、代替ワークフローを表示させるための代替ワークフローデータを例示する図である。
【図１５】図１５は、ワークフロー定義変更装置の処理手順を示すフローチャートである。
【図１６】図１６は、ワークフロー定義変更プログラムを実行するコンピュータの機能構成図である。
【図１７】図１７は、実施例２に係るワークフロー定義変更装置の機能構成図である。
【図１８−１】図１８−１は、同一のリソースを用いない２つの処理手順の表示例を示す図である。
【図１８−２】図１８−２は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。
【図１８−３】図１８−３は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。
【図１８−４】図１８−４は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。
【図１９−１】図１９−１は、ワークフロー完了時刻の制約に違反したワークフローの表示例を示す図である。
【図１９−２】図１９−２は、処理順序の制約に違反したワークフローの表示例を示す図である。
【図１９−３】図１９−３は、リソース競合の制約に違反したワークフローの表示例を示す図である。
【図２０】図２０は、ワークフロー画面の一例を示す図である。
【図２１−１】図２１−１は、ワークフロー完了時刻の変更操作例を示す図である。
【図２１−２】図２１−２は、割当タイプの変更操作例を示す図である。
【図２１−３】図２１−３は、リソースの変更操作例を示す図である。
【図２１−４】図２１−４は、変更操作を受け付けた後に表示されるワークフロー画面の一例を示す図である。
【図２２】図２２は、実施例２に係るワークフロー定義変更装置の処理手順を示すフローチャートである。
【符号の説明】
【００２７】
１０    ワークフロー定義変更装置
１１    制御部
１２    記憶部
２０    ワークフロー定義変更装置
２１    制御部
１１１    受信部
１１２    状態遷移モデル生成部
１１３    制約違反判定部
１１４    ワークフロー定義変更部
１１５    表示部
１１６    変更変数特定部
２１２    状態遷移モデル生成部
２１３    制約違反判定部
２１５    表示部
２１６    変更操作受付部
１０００    コンピュータ
１０１０    ＣＰＵ
１０２０    入力装置
１０３０    モニタ
１０４０    媒体読取装置
１０５０    通信装置
１０６０    ＲＡＭ
１０６１    ワークフロー定義変更プロセス
１０７０    ハードディスク装置
１０７１    ワークフロー定義変更プログラム
１０７２    ワークフロー定義変更用データ
１０８０    バス
【発明を実施するための最良の形態】
【００２８】
以下に添付図面を参照して、この発明に係るワークフロー定義変更プログラム、ワークフロー定義変更方法およびワークフロー定義変更装置の好適な実施形態を詳細に説明する。
【実施例１】
【００２９】
まず、本実施例におけるワークフロー定義変更装置は、システム管理者によって入力されたワークフロー定義を用い、複数のワークフローを実行した際の状態遷移モデルを生成し、この状態遷移モデルを用いて各ワークフローに制約違反が発生するか否かを判定し、制約違反が発生する場合には、ワークフロー定義に変更を加えることで制約違反を解消したワークフロー定義をシステム管理者に提示する点に特徴がある。これにより、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができる。【００３０】
ここで、ワークフロー定義には、処理手順、ポリシーおよび制約が含まれる。処理手順は、ワークフローにおける各種の手続きに関する定義であり、ポリシーは、処理手順の実行時に用いられるリソースの割り当て規則に関する定義であり、制約は、処理手順の実行時に遵守すべき規則に関する定義である。【００３１】
このようなワークフロー定義変更装置が有する諸機能について、図１を参照して詳細に説明する。図１は、ワークフロー定義変更装置の機能構成図である。同図に示すように、ワークフロー定義変更装置１０は、ワークフロー定義変更装置１０を全体制御する制御部１１と、制御部１１での処理に用いられるアプリケーションやデータを記憶する記憶部１２とを有する。【００３２】
制御部１１は、受信部１１１と、状態遷移モデル生成部１１２と、制約違反判定部１１３と、ワークフロー定義変更部１１４と、表示部１１５と、変更変数特定部１１６とを有する。【００３３】
受信部１１１は、システム管理者によって生成された複数の処理手順、複数のポリシーおよび複数の制約を含むワークフロー定義を受信する。ワークフロー定義に含まれる処理手順について図２〜図５を参照して説明する。図２および図３は、ワークフローＡの処理手順を示す図である。ワークフローＡは、サーバＡにパッチを適用する際のワークフローである。図３に示す各項目のうち、処理番号、処理内容、最短処理時間、最長処理時間および変数設定の各項目が処理手順に含まれる。【００３４】
図２および図３に示されるワークフローＡの処理手順について具体的に説明する。処理番号が“Ａ１”である処理手続きは、ワークフローＡ実行時に最初に処理が行われる手続きであり、処理内容は、ワークフローＡが開始されることを示す“開始”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）であり、この処理手続きで変数“Ｆｌａｇ”に初期値として“０”が割り当てられる。処理番号が“Ａ２”である処理手続きは、ワークフローＡ実行時に２番目に処理が行われる手続きであり、処理内容は、サーバＡで提供されているサービスを停止させることを示す“サービス停止”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。【００３５】
処理番号が“Ａ３”である処理手続きは、ワークフローＡ実行時に３番目に処理が行われる手続きであり、処理内容は、サーバＡのファイルをサーバＢにバックアップすることを示す“バックアップ”であり、最短処理時間は４０分であり、最長処理時間は６０分（つまり処理時間は４０分〜６０分）である。処理番号が“Ａ４”である処理手続きは、ワークフローＡ実行時に４番目に処理が行われる手続きであり、処理内容は、サーバＡにパッチを適用することを示す“パッチ適用”であり、最短処理時間は１０分であり、最長処理時間は３０分（つまり処理時間は１０分〜３０分）である。【００３６】
処理番号が“Ａ５”である処理手続きは、ワークフローＡ実行時に５番目に処理が行われる手続きであり、処理内容は、サーバＡをリブートすることを示す“リブート”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。処理番号が“Ａ６”である処理手続きは、ワークフローＡ実行時に６番目に処理が行われる手続きであり、処理内容は、サーバＡで提供するサービスを開始させることを示す“サービス開始”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。【００３７】
処理番号が“Ａ７”である処理手続きは、ワークフローＡ実行時に７番目に処理が行われる手続きであり、処理内容は、サーバＡにおけるサービスの開始が成功したか否かにより処理が分岐することを示す“成功？”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）であり、この処理手続きの判定結果に応じて変数“Ｒｅｓｕｌｔ”に“０”または“１”が割り当てられる。【００３８】
処理番号が“Ａ８”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ７”である処理手続きでサービスの開始が失敗した場合（ＮＯ）に処理が行われる手続きであり、処理内容は、サービス開始の失敗が最初の失敗であるか否かにより処理が分岐することを示す“最初の失敗？”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。【００３９】
処理番号が“Ａ９”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ８”である処理手続きでサービス開始の失敗が最初である場合（ＹＥＳ）に処理が行われる手続きであり、処理内容は、サービスの開始が失敗した原因を分析することを示す“原因分析”であり、最短処理時間は１０分であり、最長処理時間は６０分（つまり処理時間は１０分〜６０分）であり、この処理手続きで変数“Ｆｌａｇ”に“１”が割り当てられる。【００４０】
処理番号が“Ａ１０”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ８”である処理手続きでサービス開始の失敗が２度目である場合（ＮＯ）に処理が行われる手続きであり、処理内容は、サーバＢからサーバＡにファイルをリストアすることを示す“リストア”であり、最短処理時間は４０分であり、最長処理時間は６０分（つまり処理時間は４０分〜６０分）である。【００４１】
処理番号が“Ａ１１”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ１０”である処理手続きの後に処理が行われる手続きであり、処理内容は、サーバＡで提供するサービスを開始させることを示す“サービス開始”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。処理番号が“Ａ１２”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ１１”である処理手続きの後に処理が行われる手続きであり、処理内容は、レポートを生成することを示す“レポート生成”であり、最短処理時間は１０分であり、最長処理時間は１５分（つまり処理時間は１０分〜１５分）である。処理番号が“Ａ１３”である処理手続きは、ワークフローＡ実行時に最後に処理が行われる手続きであり、処理内容は、ワークフローＡが終了することを示す“終了”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）である。【００４２】
図４および図５は、ワークフローＢの処理手順を示す図である。ワークフローＢは、サーバＢでウイルススキャンを実行する際のワークフローである。図５に示す各項目のうち、処理番号、処理内容、最短処理時間、最長処理時間および変数設定の各項目が処理手順に含まれる。【００４３】
図４および図５に示されるワークフローＢの処理手順について具体的に説明する。処理番号が“Ｂ１”である処理手続きは、ワークフローＢ実行時に最初に処理が行われる手続きであり、処理内容は、ワークフローＢが開始されることを示す“開始”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）である。処理番号が“Ｂ２”である処理手続きは、ワークフローＢ実行時に２番目に処理が行われる手続きであり、処理内容は、新ウイルス情報をダウンロードすることを示す“ダウンロード”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。【００４４】
処理番号が“Ｂ３”である処理手続きは、ワークフローＢ実行時に３番目に処理が行われる手続きであり、処理内容は、ワクチンファイルをアップデートすることを示す“アップデート”であり、最短処理時間は１０分であり、最長処理時間は２０分（つまり処理時間は１０分〜２０分）である。処理番号が“Ｂ４”である処理手続きは、ワークフローＢ実行時に４番目に処理が行われる手続きであり、処理内容は、ウイルススキャンを実行することを示す“ウイルススキャン”であり、最短処理時間は６０分であり、最長処理時間は９０分（つまり処理時間は６０分〜９０分）である。【００４５】
処理番号が“Ｂ５”である処理手続きは、ワークフローＢ実行時に５番目に処理が行われる手続きであり、処理内容は、ウイルスが発見されたか否かにより処理が分岐することを示す“ウイルス発見？”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）であり、この処理手続きの判定結果に応じて変数“Ｄｅｔｅｃｔ”に“０”または“１”が割り当てられる。【００４６】
処理番号が“Ｂ６”である処理手続きは、ワークフローＢ実行時に、処理番号が“Ｂ５”である処理手続きでウイルスが発見された場合（ＹＥＳ）に処理が行われる手続きであり、処理内容は、管理者に警告することを示す“警告”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。処理番号が“Ｂ７”である処理手続きは、ワークフローＢ実行時に最後に処理が行われる手続きであり、処理内容は、ワークフローＢが終了することを示す“終了”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）である。【００４７】
ワークフロー定義に含まれるポリシーについて図３および図５を参照して説明する。図３および図５に示す各項目のうち、処理番号、リソース、割当タイプおよび優先順位の各項目がポリシーに含まれる。ここで、割当タイプには、例えば、ノンプリエンティブ（Non-preemptive）と、プリエンティブ（Preemptive）と、コンカレント(Concurrent)とがある。【００４８】
ノンプリエンティブは、複数の処理手続きが同一のリソースを使用する場合に、先に実行された処理手続きが完全に終了してから、後の処理手続きを実行するタイプである。このノンプリエンティブは、例えば、ファイルへの同時書き込みを禁止するとき等に用いられる。【００４９】
プリエンティブは、複数の処理手続きが同一のリソースを使用する場合に、各処理手続きの優先順位を比較し、優先順位の高い処理手続きを先に実行させて処理が終了してから、優先順位の低い処理手続きを実行するタイプである。したがって、先にリソースを使用していた処理手続きの方が後からリソースを使用する処理手続きよりも優先順位が高い場合には、上記ノンプリエンティブと同様の動作になる。このプリエンティブは、例えば、緊急を要する作業を割り込ませるとき等に用いられるタイプである。【００５０】
コンカレントは、複数の処理手続きで同時に同一のリソースを使用することを許可するタイプであるが。したがって、処理手続きごとにリソースを使用する場合に比べて処理時間は長くなる。このコンカレントは、例えば、サーバのＣＰＵで複数の処理を実行するとき等に用いられる。【００５１】
図３に示されるワークフローＡのポリシーについて具体的に説明する。処理番号が“Ａ２”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“プリエンティブ”を採用する。“サーバＡ”の使用が競合した場合の優先順位には、優先順位が低いことを示す“０”が割り当てられている。処理番号が“Ａ３”である処理手続きは、リソースとして“サーバＡ”および“サーバＢ”を使用し、リソースが競合したときの割当タイプとしてそれぞれ“ノンプリエンティブ”および“コンカレント”を採用する。処理番号が“Ａ４”〜“Ａ６”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“ノンプリエンティブ”を採用する。処理番号が“Ａ７”および“Ａ１１”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“コンカレント”を採用する。【００５２】
処理番号が“Ａ９”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“プリエンティブ”を採用する。“サーバＡ”の使用が競合した場合の優先順位には、優先順位が高いことを示す“１”が割り当てられている。処理番号が“Ａ１０”である処理手続きは、リソースとして“サーバＡ”および“サーバＢ”を使用し、リソースが競合したときの割当タイプとしてそれぞれ“プリエンティブ”および“コンカレント”を採用する。“サーバＡ”の使用が競合した場合の優先順位には、優先順位が高いことを示す“１”が割り当てられている。【００５３】
図５に示されるワークフローＢのポリシーについて具体的に説明する。処理番号が“Ｂ２”〜“Ｂ４”である処理手続きは、リソースとして“サーバＢ”を使用し、リソースが競合したときの割当タイプとして“コンカレント”を採用する。【００５４】
ワークフロー定義に含まれる制約としては、例えば、「時刻０分でワークフローＡを実行し、かつ、時刻２００分でワークフローＢを開始したときに、時刻４００分の時点でワークフローＡとワークフローＢが終了していること」が該当する。この制約は論理式で表すこととしてもよい。【００５５】
図１に示す状態遷移モデル生成部１１２は、受信部１１１によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する。具体的には、複数のワークフローをそれぞれオートマトンに変換し、これらのオートマトンを用いて積オートマトンを生成し、生成した積オートマトンに対してリソースの競合状態に応じた変更を加える。これにより、リソースの競合状態が発生する複数のワークフローを実行した際の状態遷移モデルを生成することができる。また、状態遷移モデル生成部１１２は、後述するワークフロー定義変更部１１４によって変更が加えられた後の処理手順およびポリシーを用いて変更後の複数のワークフローを実行した際の状態遷移モデルを生成する。【００５６】
ここで、本実施例では、状態遷移モデルとして、ハイブリッドオートマトン（Hybrid  automata）を採用する。このハイブリッドオートマトンは、時間の概念をオートマトンに導入したタイムオートマトン（timed  automata）[R.  Alur  and  D.  L.  Dill,  “A  theory  of  timed  automata,”  Theoretical  Computer  Sci.,  vol.  126,  pp.  183-235,  1994.参照]を、一般化したものであり、アナログ的な連続量を扱うシステムを、有限状態遷移モデルで表現することを可能にしている。タイムオートマトンは、経過時間に伴って一律に増加し続けるという性質を持つ変数のクラスclockを導入することで、システムにおける時間の経過を表現可能としたものである。これに対してハイブリッドオートマトンは、各変数の単位時間当たりの変量を定義することを可能とし、これを利用することで時間の経過とともに減少する変数の表現や、同一時間内における増加量の異なる複数の変数を表現可能としたものである。【００５７】
状態遷移モデルの生成過程について図６〜図１３を参照して説明する。以下においては、二つのワークフロー（ワークフローＡおよびワークフローＢ）を実行した際の状態遷移モデルを生成する過程について説明する。【００５８】
図６は、図２に示すワークフローＡを変換して生成されたオートマトンを示す図である。図６に示すロケーションＬＡ１、ＬＡ２、ＬＡ３、ＬＡ１３は、それぞれ図２に示す処理手続きＡ１、Ａ２、Ａ３、Ａ１３に対応して定義され、各ロケーション間は、ワークフロー定義に含まれる処理手続き間の順序関係定義にしたがって接続される。ここでは、説明の便宜のために、図２に示す処理手続きのうちの一部の手続きについてのみ説明することにする。ロケーションＬＡ０は、初期ロケーションであり、各変数の初期値を定義する。このロケーションＬＡ０では、変数ｔＡ、変数Ｒｅｓｕｌｔ、変数Ｆｌａｇに、初期値として０がセットされる。変数ｔＡは、各ロケーションでの処理時間をカウントするタイマ変数である。【００５９】
ロケーションＬＡ０に記述されている“ｔＡ≦ＴＳＡ”は、タイマ変数ＴＡが、０から所定の開始時刻ＴＳＡに到達するまでの間はロケーションＬＡ０に留まることを示す。ロケーションＬＡ０とロケーションＬＡ１との間に記述されている“ｔＡ＝ＴＳＡ”は、タイマ変数ｔＡが、開始時刻ＴＳＡに到達した時点でロケーションＬＡ０からロケーションＬＡ１に遷移することを示す。ロケーションＬＡ０とロケーションＬＡ１との間に記述されている“ｔＡ：＝０、Ｆｌａｇ：＝０”は、ロケーションＬＡ０からロケーションＬＡ１に遷移するときに、タイマ変数ｔＡおよび変数Ｆｌａｇに０がセットされることを示す。【００６０】
ロケーションＬＡ１、ＬＡ２、ＬＡ３にそれぞれ記述されている“ｔＡ≦０”、“ｔＡ≦１０”、“ｔＡ≦６０”は、各ロケーションに留まることができる最長処理時間を示す。この最長処理時間は、図３に示す最長処理時間に対応する。したがって、ロケーションＬＡ１には０分以上留まることができず、ロケーションＬＡ２には１０分以上留まることができず、ロケーションＬＡ３には６０分以上留まることができないことになる。【００６１】
ロケーションＬＡ１とロケーションＬＡ２の間、およびロケーションＬＡ２とロケーションＬＡ３の間にそれぞれ記述されている“ｔＡ≧０”、“ｔＡ≧５”は、遷移元のロケーションに留まることができる最短処理時間を示す。この最短処理時間は、図３に示す最短処理時間に対応する。したがって、ロケーションＬＡ１からロケーションＬＡ２には０分以上経過しないと遷移することができず、ロケーションＬＡ２からロケーションＬＡ３には５分以上経過しないと遷移することができないことになる。【００６２】
ロケーションＬＡ１とロケーションＬＡ２の間、およびロケーションＬＡ２とロケーションＬＡ３の間にそれぞれ記述されている“ｔＡ：＝０”は、ロケーションを遷移するときに、タイマ変数ｔＡに０がセットされることを示す。【００６３】
図７は、図４に示すワークフローＢを変換して生成されたオートマトンを示す図である。図７に示すロケーションＬＢ１、ＬＢ２、ＬＢ３、ＬＢ７は、それぞれ図４に示す処理手続きＢ１、Ｂ２、Ｂ３、Ｂ７に対応して定義され、各ロケーション間は、ワークフロー定義に含まれる処理手続き間の順序関係定義にしたがって接続される。ここでは、説明の便宜のために、図４に示す処理手続きのうちの一部の手続きについてのみ説明することにする。ロケーションＬＢ０は、初期ロケーションであり、各変数の初期値を定義する。このロケーションＬＢ０では、変数ｔＢ、変数Ｄｅｔｅｃｔに、初期値として０がセットされる。変数ｔＢは、各ロケーションでの処理時間をカウントするタイマ変数である。【００６４】
ロケーションＬＢ０に記述されている“ｔＢ≦ＴＳＢ”は、タイマ変数ｔＢが、０から所定の開始時刻ＴＳＢに到達するまでの間はロケーションＬＢ０に留まることを示す。ロケーションＬＢ０とロケーションＬＢ１との間に記述されている“ｔＢ＝ＴＳＢ”は、タイマ変数ｔＢが、開始時刻ＴＳＢに到達した時点でロケーションＬＢ０からロケーションＬＢ１に遷移することを示す。ロケーションＬＢ０とロケーションＬＢ１との間に記述されている“ｔＢ：＝０”は、ロケーションＬＢ０からロケーションＬＢ１に遷移するときに、タイマ変数ｔＢに０がセットされることを示す。【００６５】
ロケーションＬＢ１、ＬＢ２、ＬＢ３にそれぞれ記述されている“ｔＢ≦０”、“ｔＢ≦１０”、“ｔＢ≦２０”は、各ロケーションに留まることができる最長処理時間を示す。この最長処理時間は、図５に示す最長処理時間に対応する。したがって、ロケーションＬＢ１には０分以上留まることができず、ロケーションＬＢ２には１０分以上留まることができず、ロケーションＬＢ３には２０分以上留まることができないことになる。【００６６】
ロケーションＬＢ１とロケーションＬＢ２の間、およびロケーションＬＢ２とロケーションＬＢ３の間にそれぞれ記述されている“ｔＢ≧０”、“ｔＢ≧５”は、遷移元のロケーションに留まることができる最短処理時間を示す。この最短処理時間は、図５に示す最短処理時間に対応する。したがって、ロケーションＬＢ１からロケーションＬＢ２には０分以上経過しないと遷移することができず、ロケーションＬＢ２からロケーションＬＢ３には５分以上経過しないと遷移することができないことになる。【００６７】
ロケーションＬＢ１とロケーションＬＢ２の間、およびロケーションＬＢ２とロケーションＬＢ３の間にそれぞれ記述されている“ｔＢ：＝０”は、ロケーションを遷移するときに、タイマ変数ｔＢに０がセットされることを示す。【００６８】
図８は、積オートマトンを生成するための二つのオートマトンを示す図であり、図９は、図８に示す二つのオートマトンを用いて生成された積オートマトンを示す図である。ここでは、説明の便宜のために、１３個の処理手続きを有するワークフローＡおよび７個の処理手続きを有するワークフローＢを用いるのではなく、それぞれ３個の処理手続きを有するワークフローＸおよびワークフローＹを用いることにする。図８に示すオートマトンＨＸは、処理手続きＸ０，Ｘ１，Ｘ２を有するワークフローＸを変換して生成されたものであり、３個のロケーションＬＸ０，ＬＸ１，ＬＸ２を有し、オートマトンＨＹは、処理手続きＹ０，Ｙ１，Ｙ２を有するワークフローＹを変換して生成されたものであり、３個のロケーションＬＹ０，ＬＹ１，ＬＹ２を有する。図９に示す積オートマトンは、オートマトンＨＸとオートマトンＨＹとを掛け合わせることで生成され、９個のロケーションＬ００，Ｌ０１，Ｌ０２，Ｌ１０，Ｌ１１，Ｌ１２，Ｌ２０，Ｌ２１，Ｌ２２を有する。各図に示されるオートマトンおよび積オートマトンの構成要素については、上述したワークフローＡおよびワークフローＢのオートマトンの構成要素と同様であるため、ここではその説明を省略する。【００６９】
図１０〜図１３を参照して、積オートマトンを構成する処理手続き中にリソースの競合が発生する処理手続きが存在する場合に、この処理手続きに対してリソースの競合状態に応じた変更を加える手順について説明する。ここでは、図９に示す積オートマトンを構成する処理手続きのうち、ロケーションＬ１１でリソースの競合が生じると仮定した場合について説明する。【００７０】
図１０は、リソースの競合が生じるロケーションＬ１１を中心とした積オートマトンの一部分を示す図である。図１０に示すロケーションＬ１１は、図９に示す積オートマトンの中心部分に位置するロケーション（ＬＸ１，ＬＹ１）である。このロケーションＬ１１に記載されている“ｔ’Ｘ”および“ｔ’Ｙ”は、タイマ変数ｔＸおよびタイマ変数ｔＹの単位時間当たりの変数を示す。したがって、“ｔ’Ｘ＝１”および“ｔ’Ｙ＝１”はそれぞれ１分ごとに１ずつ増加することを示す。【００７１】
図１１は、図１０に示すロケーションＬ１１においてリソースの割当タイプがノンプリエンティブである場合に加えられる変更を説明するための図である。この場合には、新たにロケーションＬＷ１１およびロケーションＷＬ１１を追加し、ロケーションＬ１１を削除する。また、ロケーションＬ１０からロケーションＬ１１への遷移を、ロケーションＬ１０からロケーションＬＷ１１への遷移に変更し、ロケーションＬ０１からロケーションＬ１１への遷移を、ロケーションＬ０１からロケーションＷＬ１１への遷移に変更する。さらに、ロケーションＬ１１からロケーションＬ２１への遷移を、ロケーションＬＷ１１からロケーションＬ２１への遷移に変更し、ロケーションＬ１１からロケーションＬ１２への遷移を、ロケーションＷＬ１１からロケーションＬ１２への遷移に変更する。【００７２】
ここで、ロケーションＬＷ１１は、処理手続きＸ１が先に実行され、処理手続きＹ１が処理手続きＸ１の実行が終了するまで待機することを示すロケーションである。ロケーションＬＷ１１に記述されている“ｔ’Ｘ＝１”および“ｔ’Ｙ＝０”は、タイマ変数ｔＸが１分ごとに１ずつ増加し、タイマ変数ｔＹが変化しないことを示す。また、ロケーションＷＬ１１は、処理手続きＹ１が先に実行され、処理手続きＸ１が処理手続きＹ１の実行が終了するまで待機することを示すロケーションである。ロケーションＷＬ１１に記述されている“ｔ’Ｘ＝０”および“ｔ’Ｙ＝１”は、タイマ変数ｔＸが変化せず、タイマ変数ｔＹが１分ごとに１ずつ増加することを示す。【００７３】
図１２は、図１０に示すロケーションＬ１１においてリソースの割当タイプがプリエンティブである場合に加えられる変更を説明するための図である。この場合には、上述したノンプリエンティブである場合と同様にして、新たにロケーションＬＷ１１およびロケーションＷＬ１１を追加し、ロケーションＬ１１を削除する。また、ロケーションＬ１０からロケーションＬ１１への遷移を、ロケーションＬ１０からロケーションＬＷ１１およびロケーションＷＬ１１への遷移に変更する。そして、この場合の遷移先を決定する条件として、処理手続きＸ１の優先順位と処理手続きＹ１の優先順位を比較して、処理手続きＸ１の優先順位の方が高い場合にはロケーションＬＷ１１に遷移させ、処理手続きＹ１の優先順位の方が高い場合にはロケーションＷＬ１１に遷移させるｊｕｍｐ命令を追加する。【００７４】
また、ロケーションＬ０１からロケーションＬ１１への遷移を、ロケーションＬ０１からロケーションＬＷ１１およびロケーションＷＬ１１への遷移に変更する。そして、この場合の遷移先を決定する条件として、処理手続きＸ１の優先順位と処理手続きＹ１の優先順位を比較して、処理手続きＸ１の優先順位の方が高い場合にはロケーションＬＷ１１に遷移させ、処理手続きＹ１の優先順位の方が高い場合にはロケーションＷＬ１１に遷移させるｊｕｍｐ命令を追加する。【００７５】
さらに、ロケーションＬ１１からロケーションＬ２１への遷移を、ロケーションＬＷ１１からロケーションＬ２１への遷移に変更し、ロケーションＬ１１からロケーションＬ１２への遷移を、ロケーションＷＬ１１からロケーションＬ１２への遷移に変更する。【００７６】
図１３は、図１０に示すロケーションＬ１１においてリソースの割当タイプがコンカレントである場合に加えられる変更を説明するための図である。この場合には、ロケーションＬ１１に記述されている“ｔ’Ｘ＝１”および“ｔ’Ｙ＝１”を、それぞれ“ｔ’Ｘ＝１／２”および“ｔ’Ｙ＝１／２”に変更する。これは、処理手続きの実行時間が、リソースを競合している処理手続きの数に比例して増加することから、単位時間当たりの変量を処理手続きの数で割ることでコンカレントによる実行状況を表したものである。【００７７】
図１に示す制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数の処理手順を実行した際に制約違反が発生するか否かを判定する。また、制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された変更後の状態遷移モデルおよび後述するワークフロー定義変更部１１４によって変更が加えられた後の制約を用いて制約違反が発生するか否かを判定する。【００７８】
制約違反が発生するか否かを判定するための手法としては、様々なモデル検査手法[E.M.Clarke,  O.Grumberg,  and  D.  A.  Peled,  Model  Checking,  The  MIT  Press,  1999.参照]を用いることができる。モデル検査手法としては、例えば、model  checking、SPIN[G.  J.  Holzmann,  “The  model  checker  SPIN,”  IEEE  Transactions  on  Software  Engineering,  Vol.23,  No.5,  1997.参照]、HyTech[HyTech:  The  HYbrid  TECHnology  Tool,  available  at  http://embedded.eecs.berkeley.edu/research/hytech/参照]がある。【００７９】
model  checkingは、ハイブリッドオートマトンを用いてモデル化されたシステムの振る舞いを分析するための代表的な手法である。SPINは、様々なアルゴリズムによって計算時間の短縮が図られている手法である。HyTechは、ハイブリッドオートマトンの表現を容易にした手法である。【００８０】
model  checkingは、最初にシステムが満たしているかどうかを調べたい性質を、ＣＴＬ(Computational  Tree  Logic)やＬＴＬ(Linear-time  Temporal  Logic)などの時相論理式で記述する。続いて、この時相論理式の否定をオートマトンに変換し、このオートマトンおよびモデル化したシステムのハイブリッドオートマトンを用いて合成オートマトンを生成する。続いて、合成オートマトンが受理する言語の集合が空であるかどうかを判定する。空である場合には、モデル化したシステムと時相論理式の否定とを同時に満たすことはない、つまり、モデル化したシステムは、時相論理式で記述された性質を満たすことになる。一方、合成オートマトンに受理される言語が存在する場合には、モデル化されたシステムは、時相論理式で記述された性質を満たさないこととなる。受理される言語の集合が、時相論理式で記述された性質を満たさないことの例示となる。【００８１】
図１に示すワークフロー定義変更部１１４は、制約違反判定部１１３によって制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える。変更を加える方法としては、例えば、処理手順に含まれるワークフローの開始時刻を変更する方法、ポリシーに含まれる割当タイプや優先順位を変更する方法、制約に含まれるワークフローの終了時刻を変更する方法等がある。【００８２】
変更を加える方法について、以下に具体的に説明する。例えば、「ワークフローＡ」および「ワークフローＢ」に関するワークフロー定義が付与され、この制約として「二つのワークフローが時刻４００分の時点で終了していること」が定義されている場合に、ワークフローＡの終了時刻が４０５分になると判定されたときには、次のように変更することができる。【００８３】
処理手順に含まれるワークフローの開始時刻を変更する場合には、例えば、ワークフローＢの開始時刻を、現在の開始時刻である時刻２００分の１／２にあたる時刻１００分に変更する。このように、ワークフローＢの開始時刻を早めることで、各ワークフローの処理タイミングをずらすことができるため、リソースの競合を解消させてワークフローＡの処理時間を短縮させることが可能となる。【００８４】
ポリシーに含まれる割当タイプや優先順位を変更する場合には、例えば、ワークフローＡとワークフローＢで使用するサーバＢへの割当タイプが“コンカレント”に設定されている場合に、サーバＢへの割当タイプを“プリエンティブ”に変更し、ワークフローＡの優先順位をワークフローＢの優先順位よりも高くする。このように、ワークフローＡに優先的にリソースを利用させることで、ワークフローＡの処理時間を短縮させることができる。【００８５】
制約に含まれるワークフローの終了時刻を変更する場合には、例えば、二つのワークフローの終了時刻を、現在の終了時刻（時刻４００分）からワークフローＡの終了時刻にあたる時刻４０５分に変更する。このように、制約に含まれる終了時刻を、遅い方の終了時刻に合わせることで、ワークフローＡを制約に含まれる終了時刻までに確実に終了させることができる。つまり、制約違反を確実に解消させることができる。【００８６】
ワークフロー定義変更部１１４は、ワークフロー定義に含まれる処理手順、ポリシーおよび制約のうちの一部または全部に変更を加えることができるが、変更を加えることによって制約違反が解消されればよい。したがって、処理手順、ポリシーおよび制約を変更する方法や変更する内容については、上述した変更方法や変更内容には限定されない。また、効率的に制約違反を解消させるために、例えば、変更方法や変更内容ごとに制約違反の判定結果を記憶させて分析することで、変更方法や変更内容を学習させることとしてもよい。【００８７】
表示部１１５は、ワークフロー定義変更部１１４によって変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてワークフロー定義変更装置１０のモニタに表示させる。表示部１１５は、代替ワークフロー定義に加えて制約違反に関する内容をワークフロー定義変更装置１０のモニタに表示させる。制約違反に関する内容には、制約違反が発生する旨のメッセージが含まれる。【００８８】
図１４は、代替ワークフローを表示させるための代替ワークフローデータを例示する図である。同図に示すように、代替ワークフローデータには、データ項目として、例えば、システム管理者によって入力された原形のワークフローに関する変数の範囲および違反発生と、修正後の代替ワークフローに関する変更内容、変数の範囲および違反発生が含まれる。変更内容には、ワークフロー定義変更部１１４によって変更が加えられた内容が格納される。変数の範囲には、制約違反判定部１１３によって判定されるときに用いられる変数の取り得る範囲が格納される。違反発生には、制約違反判定部１１３によって判定された結果が格納される。【００８９】
表示部１１５は、ワークフロー定義変更部１１４によって変更が加えられない場合、すなわち、制約違反が発生しない場合には、制約違反が発生しない旨のメッセージをワークフロー定義変更装置１０のモニタに表示させる。表示部１１５は、制約違反が発生しない旨のメッセージに加えて受信部１１１によって受信された処理手順、ポリシーおよび制約を含むワークフロー定義をワークフロー定義変更装置１０のモニタに表示させることとしてもよい。【００９０】
表示部１１５は、制約違反判定部１１３によって制約違反が発生すると判定された場合に、制約違反が発生すると判定された回数が、所定回数に到達しているときには、代替ワークフロー定義の提示が不可能である旨のメッセージをワークフロー定義変更装置１０のモニタに表示させることとしてもよい。これにより、制約違反の解消が困難であることをシステム管理者に認識させることが可能となる。【００９１】
なお、システム管理者に代替ワークフロー定義等を提示する方法は、ワークフロー定義変更装置１０のモニタに表示させることには限定されない。例えば、プリンターから出力させて提示することとしてもよいし、電子データとして出力させて提示することとしてもよい。【００９２】
変更変数特定部１１６は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび変更後の状態遷移モデルを比較して、状態遷移モデルの変更の前後において値が変わった変数を特定する。変更変数特定部１１６によって特定された変数は、表示部１１５によってワークフロー定義変更装置１０のモニタに表示される。【００９３】
次に、本実施例におけるワークフロー定義変更装置１０の処理手順について図１５を参照して説明する。図１５は、ワークフロー定義変更装置の処理手順を示すフローチャートである。この処理手順では、システム管理者によって入力されたワークフロー定義を用いて複数のワークフローに制約違反が発生するか否かを判定し、制約違反が発生する場合にはワークフロー定義を変更してシステム管理者に提示する際の手順について説明する。【００９４】
最初に、ワークフロー定義変更装置１０の受信部１１１は、システム管理者によって生成された複数の処理手順、複数のポリシーおよび複数の制約を含むワークフロー定義を受信する（ステップＳ１０１）。【００９５】
続いて、状態遷移モデル生成部１１２は、受信部１１１によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ１０２）。【００９６】
続いて、制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する（ステップＳ１０３）。この判定の結果がＮＯである場合（ステップＳ１０４；ＮＯ）に、表示部１１５は、制約違反が発生しない旨のメッセージをワークフロー定義変更装置１０のモニタに表示させ（ステップＳ１１１）、本処理を終了する。【００９７】
一方、ステップＳ１０３における判定の結果、制約違反が発生すると判定された場合（ステップＳ１０４；ＹＥＳ）に、ワークフロー定義変更部１１４は、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える（ステップＳ１０５）。【００９８】
続いて、状態遷移モデル生成部１１２は、上記ステップＳ１０５でワークフロー定義変更部１１４によって変更が加えられた後の処理手順およびポリシーを用い、変更後の複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ１０６）。【００９９】
続いて、制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された変更後の状態遷移モデルおよび上記ステップＳ１０５でワークフロー定義変更部１１４によって変更が加えられた後の制約を用いて制約違反が発生するか否かを判定する（ステップＳ１０７）。この判定の結果がＹＥＳである場合（ステップＳ１０８；ＹＥＳ）には、処理を上記ステップＳ１０５に移行する。【０１００】
一方、ステップＳ１０７における判定の結果、制約違反が発生しないと判定された場合（ステップＳ１０８；ＮＯ）に、変更変数特定部１１６は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび変更後の状態遷移モデルを比較して、状態遷移モデルの変更の前後において値が変わった変数を特定する（ステップＳ１０９）。【０１０１】
続いて、表示部１１５は、制約違反が発生する旨のメッセージ、変更が加えられた後の処理手順・ポリシー・制約を含む代替ワークフロー定義、および状態遷移モデルの変更の前後で値が変化した変数を、ワークフロー定義変更装置１０のモニタに表示させ（ステップＳ１１０）、本処理を終了する。【０１０２】
上述してきたように、本実施例のワークフロー定義変更装置１０では、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加え、この変更を加えた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。【０１０３】
また、変更を加えた後の処理手順およびポリシーに基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生しないと判定された場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。【０１０４】
したがって、本実施例のワークフロー定義変更装置１０によれば、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができる。【０１０５】
なお、図１に示した本実施例におけるワークフロー定義変更装置１０の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、ワークフロー定義変更装置１０の制御部１１の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、ワークフロー定義変更装置１０と同等の機能を実現することもできる。以下に、制御部１１の機能をソフトウェアとして実装したワークフロー定義変更プログラム１０７１を実行するコンピュータの一例を示す。【０１０６】
図１６は、ワークフロー定義変更プログラムを実行するコンピュータの機能構成図である。このコンピュータ１０００は、各種演算処理を実行するＣＰＵ（Central  Processing  Unit）１０１０と、ユーザからのデータの入力を受け付ける入力装置１０２０と、各種情報を表示するモニタ１０３０と、記録媒体からプログラム等を読み取る媒体読取装置１０４０と、ネットワークを介して他のコンピュータとの間でデータの授受をおこなう通信装置１０５０と、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）１０６０と、ハードディスク装置１０７０とをバス１０８０で接続して構成される。【０１０７】
そして、ハードディスク装置１０７０には、図１に示した制御部１１と同様の機能を有するワークフロー定義変更プログラム１０７１と、図１に示した記憶部１２に記憶される各種データに対応するワークフロー定義変更用データ１０７２とが記憶される。なお、ワークフロー定義変更用データ１０７２を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。【０１０８】
そして、ＣＰＵ１０１０がワークフロー定義変更プログラム１０７１をハードディスク装置１０７０から読み出してＲＡＭ１０６０に展開することにより、ワークフロー定義変更プログラム１０７１は、ワークフロー定義変更プロセス１０６１として機能するようになる。そして、ワークフロー定義変更プロセス１０６１は、ワークフロー定義変更用データ１０７２から読み出した情報等を適宜ＲＡＭ１０６０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。【０１０９】
なお、ワークフロー定義変更プログラム１０７１は、必ずしもハードディスク装置１０７０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【実施例２】
【０１１０】
ところで、上記実施例１に係るワークフロー定義変更装置１０では、ワークフロー定義を受信し、ワークフローが制約に違反する場合、ワークフロー定義を自動的に変更することで制約違反を解消する例を示したが、ワークフローが制約に違反する場合、システム管理者からワークフロー定義の変更操作を受け付けることで制約違反を解消するように構成してもよい。そこで、実施例２では、ワークフローが制約に違反する場合、システム管理者からワークフロー定義の変更操作を受け付ける例について説明する。【０１１１】
実施例２に係るワークフロー定義変更装置は、システム管理者によって生成されたワークフロー定義を受信して、状態遷移モデルを生成した後、かかる状態遷移モデルが制約に違反するか否かを判定する。そして、状態遷移モデルが制約に違反する場合、ワークフローと制約とを図形および文字列により表した画面（以下、「ワークフロー画面」という）をモニタに表示させ、かかるワークフロー画面上でワークフロー定義の変更操作を受け付ける。そして、ワークフロー定義の変更操作を受け付けた場合に、再度制約違反の発生有無を判定し、制約違反が発生する場合には、再度ワークフロー画面をモニタに表示させる。【０１１２】
このような実施例２に係るワークフロー定義変更装置が有する諸機能について、図１７を参照して詳細に説明する。図１７は、実施例２に係るワークフロー定義変更装置の機能構成図である。同図に示すように、ワークフロー定義変更装置２０は、ワークフロー定義変更装置２０を全体制御する制御部２１と、記憶部１２とを有する。なお、ここでは、図１に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。【０１１３】
状態遷移モデル生成部２１２は、実施例１に示した状態遷移モデル生成部１１２と同様に、受信部１１１によって受信されたワークフロー定義を用いて状態遷移モデルを生成する。さらに、実施例２に係る状態遷移モデル生成部２１２は、後述する変更操作受付部２１６が受け付けた変更が加えられたワークフロー定義を用いて状態遷移モデルを生成する。【０１１４】
制約違反判定部２１３は、状態遷移モデル生成部２１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数の処理手順を実行した際に制約違反が発生するか否かを判定する。そして、制約違反判定部２１３は、制約違反が発生すると判定した場合、制約違反が発生すると判定されたワークフロー（以下、「制約違反ワークフロー」という）と、制約違反ワークフローに含まれる処理手順と同時に同一のリソースを用いる処理手順が含まれるワークフロー（以下、「リソース共有ワークフロー」という）とを特定する。【０１１５】
表示部２１５は、制約違反判定部２１３による制約違反の判定結果を、ワークフロー定義変更装置２０のモニタに表示させる。具体的には、表示部２１５は、制約違反判定部２１３によって、制約違反が発生しないと判定された場合、制約違反が発生しない旨のメッセージをワークフロー定義変更装置２０のモニタに表示させる。【０１１６】
一方、表示部２１５は、制約違反判定部２１３によって制約違反が発生すると判定された場合、制約違反ワークフローと、リソース共有ワークフローとを図形および文字列により表したワークフロー画面をモニタに表示させる。このとき、表示部２１５は、同一のリソースを用いる処理手順と、同一のリソースを用いない処理手順とを識別できるように表示させる。また、表示部２１５は、違反となった制約を図形および文字列を用いて表示させる。また、表示部２１５は、異なるワークフローに含まれる二以上の処理手順が同一の時刻に実行される場合、ワークフロー画面における横軸方向または縦軸方向のいずれか一方を時間軸として、同一の時間に実行されることを識別できるようにかかる二以上の処理手順を表示させる。【０１１７】
以下に、表示部２１５が表示させるワークフロー画面について図１８−１〜図１８−４、図１９−１〜図１９−３および図２０を参照して説明する。なお、以下では、ワークフロー画面の横軸方向を時間軸とする。【０１１８】
まず、図１８−１〜図１８−４を参照して、表示部２１５が同一のリソースを用いる処理手順と同一のリソースを用いない処理手順とを識別できるように表示させる手法について説明する。以下では、ワークフローＰに含まれる処理手順Ｐ１〜Ｐ４と、ワークフローＱに含まれる処理手順Ｑ１〜Ｑ４の表示手法について説明する。【０１１９】
図１８−１は、同一のリソースを用いない２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ１と処理手順Ｑ１は、同一のリソースを用いない処理手順であるとする。かかる場合、表示部２１５は、処理手順を所定の図形を用いて表示させる。具体的には、同図に示した例のように、表示部２１５は、処理手順Ｐ１と処理手順Ｑ１とを円形で表示させる。同図の例では、横軸が時間軸のため、処理手順Ｐ１の方が処理手順Ｑ１よりも先に処理を開始することを表している。【０１２０】
図１８−２は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ２と処理手順Ｑ２の割当タイプはコンカレントであり、同一のリソースを用いる期間が存在するものとする。また、処理手順Ｐ２と処理手順Ｑ２の処理時間は、同一のリソースを用いることで長くなるものとする。かかる場合、表示部２１５は、同一のリソースを用いない処理手順（図１８−１参照）と比較して、処理手順Ｐ２と処理手順Ｑ２との処理手順が長くなることを視覚的に認識できる図形および文字列を用いて、処理手順Ｐ２と処理手順Ｑ２とを表示させる。また、表示部２１５は、処理手順が長くなる理由を示すために、処理手順Ｐ２と処理手順Ｑ２とが同一のリソースを用いることを図形および文字列を用いて表示させる。【０１２１】
同図に示した例では、表示部２１５は、処理手順Ｐ２と処理手順Ｑ２とを時間軸方向に伸長された楕円形で表示させる。また、表示部２１５は、処理手順Ｐ２と処理手順Ｑ２とを縦軸方向の矢印で結び、「同リソース」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ２と処理手順Ｑ２とは、同時に同一のリソースを使用する期間が存在し、処理手順Ｐ２と処理手順Ｑ２の処理時間が長くなることを視覚的に認識することができる。【０１２２】
図１８−３は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ３と処理手順Ｑ３の割当タイプはプリエンティブであり、同一のリソースを用いる期間が存在するものとする。また、先にリソースを使用していた処理手順Ｐ３の優先順位の方が後からリソースを使用する処理手順Ｑ３よりも高いものとする。したがって、処理手順Ｐ３の処理手続きが完全に終了した後に、処理手順Ｑ３は処理手続きを開始する。かかる場合、表示部２１５は、処理手順Ｐ３の処理手続きが完全に終了するまで、処理手順Ｑ３が待ち状態になることを視覚的に認識できる図形および文字列を用いて、処理手順Ｐ３と処理手順Ｑ３とを表示させる。【０１２３】
同図に示した例では、表示部２１５は、処理手順Ｑ３を時間軸方向に伸長された楕円形で表示させる。また、表示部２１５は、処理手順Ｐ３と処理手順Ｑ３とが同一のリソースを用いることを表示させるとともに、処理手順Ｑ３が待ち状態となる期間に斜線を付して「待ち状態」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ３の処理手続きが完了するまで、処理手順Ｑ３が待ち状態となり、処理手順Ｑ３の処理時間が長くなることを視覚的に認識することができる。【０１２４】
図１８−４は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ４と処理手順Ｑ４の割当タイプはプリエンティブであり、同一のリソースを用いる期間が存在するものとする。また、先にリソースを使用していた処理手順Ｑ４の優先順位の方が後からリソースを使用する処理手順Ｐ４よりも低いものとする。したがって、処理手順Ｑ４の処理手続き中に処理手順Ｐ４の処理手続きが割り込みをして、処理手順Ｐ４の処理手続きが完了した後に、処理手順Ｑ４が処理手続きを再開する。かかる場合、表示部２１５は、処理手順Ｑ４の処理手続き中に、処理手順Ｐ４の処理手続きが割り込みして、処理手順Ｐ４の処理手続きが完了した後に、処理手順Ｑ４が処理手続きを再開することを視覚的に認識できる図形および文字列を用いて、処理手順Ｐ４と処理手順Ｑ４とを表示させる。【０１２５】
同図に示した例では、表示部２１５は、処理手順Ｑ４を時間軸方向に伸長された楕円形で表示させる。また、表示部２１５は、処理手順Ｐ４と処理手順Ｑ４とが同一のリソースを用いることを表示させるとともに、処理手順Ｑ４が待ち状態となる期間に斜線を付して「待ち状態」という文字列を表示させる。これにより、システム管理者は、処理手順Ｑ４の処理手続き中に、処理手順Ｐ４の処理手続きが割り込みして、処理手順Ｐ４の処理手続きが完了した後に、処理手順Ｑ４が処理手続きを再開することを視覚的に認識することができる。【０１２６】
次に、図１９−１〜図１９−３を参照して、表示部２１５が制約違反を表示させる手法について説明する。以下では、ワークフローＰに含まれる処理手順Ｐ５〜Ｐ７と、ワークフローＱに含まれる処理手順Ｑ６およびＱ７の表示手法について説明する。【０１２７】
図１９−１は、ワークフロー完了時刻の制約に違反したワークフローの表示例を示す図である。同図に示したワークフローＰには、「午後１時に開始して午後３時までに終了すること」という制約があるとする。そして、ワークフローＰは、「午後３時」を過ぎた後にすべての処理手続きが終了するものとする。かかる場合、表示部２１５は、ワークフローＰが「午後３時」までにすべての処理手続きが終了せず、制約に違反していることを表示する。【０１２８】
同図に示した例では、表示部２１５は、ワークフロー中の「午後３時」になる箇所（同図の例では、処理手順Ｐ５とＥｎｄとの間）に、縦軸方向の線および制約に規定されている完了時刻を表示させるとともに、「デッドライン違反」という文字列を表示させる。これにより、システム管理者は、ワークフローＰが「午後３時までに終了すること」という制約に違反していることを視覚的に認識することができる。【０１２９】
図１９−２は、処理順序の制約に違反したワークフローの表示例を示す図である。同図に示した処理手順Ｐ６および処理手順Ｑ６には、「処理手順Ｑ６の処理手続きが完了した後に、処理手順Ｐ６の処理手続きが開始されること」という制約があるとする。そして、処理手順Ｑ６は、処理手順Ｐ６の処理手続きが完了した後に、処理手続きを開始するものとする。かかる場合、表示部２１５は、処理手順Ｐ６および処理手順Ｑ６が処理順序の制約に違反していることを表示させる。【０１３０】
同図に示した例では、表示部２１５は、処理手順Ｑ６から処理手順Ｐ６方向の矢印を表示させるとともに、「処理順序違反」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ６および処理手順Ｑ６が処理順序の制約に違反していることを視覚的に認識することができる。【０１３１】
図１９−３は、リソース競合の制約に違反したワークフローの表示例を示す図である。同図に示した処理手順Ｐ７と処理手順Ｑ７は、同一のリソースを用いる処理手順であり、この処理手順Ｐ７と処理手順Ｑ７とが用いるリソースには、「２以上の処理手順によって同時に用いられてはならない」という制約があるとする。かかる場合、表示部２１５は、処理手順Ｐ７と処理手順Ｑ７とがリソース競合の制約に違反していることを表示させる。【０１３２】
同図に示した例では、表示部２１５は、処理手順Ｐ７と処理手順Ｑ７とを縦軸方向の矢印で結び、「リソース競合違反」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ７と処理手順Ｑ７とが同時に用いられることが禁止されているリソースを同時に用いるためにリソース競合の制約に違反していることを視覚的に認識することができる。【０１３３】
上述した図１８−１〜図１８−４および図１９−１〜図１９−３に示した表示部２１５によるワークフロー画面の表示手法を用いたワークフロー画面の一例について説明する。図２０は、ワークフロー画面の一例を示す図である。【０１３４】
同図に示したワークフロー画面には、処理手順Ｐ８およびＰ９を含むワークフローＰと、処理手順Ｑ８〜Ｑ１１を含むワークフローＱとが表示されている。そして、ワークフローＱは、ワークフロー完了時刻の制約に違反している。すなわち、制約違反判定部２１３によって、ワークフローＱが制約違反ワークフローと特定され、ワークフローＱに含まれる処理手順Ｑ１０と同一のリソースを用いている処理手順Ｐ９を含むワークフローＰがリソース共有ワークフローと特定されたことになる。【０１３５】
同図に示したワークフロー画面を閲覧することで、処理手順Ｐ９と処理手順Ｑ１０とが同時に同一のリソースを用いているために、ワークフローＱの処理時間が長くなっていることを認識できる。その結果、ワークフローＱがワークフロー完了時刻の制約に違反していることを認識できる。【０１３６】
図１７に示す変更操作受付部２１６は、ワークフロー画面上で、ワークフロー定義の変更操作を受け付ける。具体的には、変更操作受付部２１６は、マウスやキーボード等の入力装置を介して、処理手順、ポリシーおよび制約の変更操作を受け付け、状態遷移モデル生成部２１２に対して、変更後のワークフロー定義を用いて、状態遷移モデルを生成させる。そして、制約違反判定部２１３により制約違反の判定処理が再度行われることになる。【０１３７】
図２１−１〜図２１−４を参照して、変更操作受付部２１６がワークフロー画面上で受け付けるワークフロー定義の変更操作について説明する。以下では、図２０に示したワークフロー画面上でワークフロー定義の変更操作を受け付ける例について説明する。【０１３８】
図２１−１は、ワークフロー完了時刻の変更操作例を示す図である。同図に示した例では、変更操作受付部２１６は、「ワークフローＱは午後３時までに終了すること」というワークフロー完了時刻の制約を「ワークフローＱは午後５時までに終了すること」という制約に変更する操作を受け付け、ワークフローＱのワークフロー完了時刻を変更する。【０１３９】
例えば、変更操作受付部２１６は、マウス等のドラッグ操作によりデッドラインを表す線（図２０の例では、「３ＰＭ」の下部に表示されている線）を移動されることによりワークフロー完了時刻の変更操作を受け付ける。また、例えば、変更操作受付部２１６は、マウス等によりデッドラインを示す線をクリックされると、ワークフロー完了時刻を編集するための画面に遷移させ、かかる画面上でワークフロー完了時刻を編集されることによりワークフロー完了時刻の変更操作を受け付ける。これにより、ワークフローＱに発生していた制約違反を解消することができる。【０１４０】
図２１−２は、割当タイプの変更操作例を示す図である。同図に示した例では、変更操作受付部２１６は、処理手順Ｐ９およびＱ１０の割当タイプをコンカレントからノンプリエンティブに変更する操作を受け付け、処理手順Ｐ９およびＱ１０の割当タイプを変更する。【０１４１】
例えば、変更操作受付部２１６は、マウス等により処理手順Ｐ９を表す楕円形の図形、または、処理手順Ｑ１０を表す楕円形の図形をクリックされると、割当タイプと優先順位を編集するための画面に遷移させ、かかる画面上で割当タイプをコンカレントからノンプリエンティブに変更され、かつ、処理手順Ｑ１０の優先順位が処理手順Ｐ９の優先順位よりも高くなるように編集されることにより割当タイプの変更操作を受け付ける。【０１４２】
また、例えば、変更操作受付部２１６は、マウス等により処理手順Ｐ９を表す楕円形の図形、または、処理手順Ｑ１０を表す楕円形の図形をクリックされると、割当タイプと優先順位を選択するためのプルダウンメニューを表示させ、かかるプルダウンメニューで割当タイプをコンカレントからノンプリエンティブに変更され、かつ、処理手順Ｑ１０の優先順位が処理手順Ｐ９の優先順位よりも高くなるように優先順位が選択されることにより割当タイプの変更操作を受け付ける。これにより、処理手順Ｑ１０の実行が優先的に行われて、処理手順Ｑ１０の処理時間が短くなるので、ワークフローＱに発生していた制約違反を解消することができる。【０１４３】
図２１−３は、リソースの変更操作例を示す図である。同図に示した例では、変更操作受付部２１６は、処理手順Ｐ９またはＱ１０が用いるリソースを変更する操作を受け付け、処理手順Ｐ９またはＱ１０が用いるリソースを変更する。【０１４４】
例えば、上記例と同様に、変更操作受付部２１６は、マウス等により処理手順Ｐ９を表す楕円形の図形、または、処理手順Ｑ１０を表す楕円形の図形をクリックされると、用いるリソースを変更するための画面に遷移させたり、用いるリソースを選択するためのプルダウンメニューを表示させたりすることにより、リソースの変更操作を受け付ける。これにより、処理手順Ｐ９と処理手順Ｑ１０とが同一のリソースを用いることがなくなり、処理手順Ｑ１０の処理時間が短くなるので、ワークフローＱに発生していた制約違反を解消することができる。【０１４５】
なお、ワークフロー定義の変更操作は、図２１−１〜図２１−３の示した例に限られない。ここでは、ワークフロー定義の他の変更操作例をいくつか説明する。例えば、図１９−２に示した例のように、処理順序の制約に違反している場合、変更操作受付部２１６は、マウス等により制約違反を示す図形をクリックされると、「制約削除」や「順序変更」等のメニューを含むプルダウンメニューを表示させる。そして、制約削除を選択された場合、変更操作受付部２１６は、処理順序の制約を削除する。一方、順序変更を選択された場合、変更操作受付部２１６は、処理手順の順序を入れ替えた制約に変更する。図１９−２に示した例では、順序変更を選択された場合に、変更操作受付部２１６は、「処理手順Ｑ６の処理手続きが完了した後に、処理手順Ｐ６の処理手続きが開始されること」という制約を「処理手順Ｐ６の処理手続きが完了した後に、処理手順Ｑ６の処理手続きが開始されること」という制約に変更する。【０１４６】
また、例えば、図１９−３に示した例のように、リソース競合の制約に違反している場合、変更操作受付部２１６は、マウス等により制約違反を示す図形をクリックされると、「制約削除」や「多重数変更」等のメニューを含むプルダウンメニューを表示させる。そして、多重度変更を選択された場合、変更操作受付部２１６は、同一のリソースを同時に用いることができる処理手順の数（以下、「多重数」という）を編集するための画面に遷移させる。図１９−３に示した例では、処理手順Ｐ７およびＱ７が用いるリソースの多重数を「１」から「２」に変更することでリソース競合の制約違反を解消することができる。【０１４７】
ここで、変更操作受付部２１６がワークフロー定義の変更操作を受け付けた後に、新たな制約違反が発生する例について説明する。図２１−４は、変更操作を受け付けた後に表示されるワークフロー画面の一例を示す図である。図２１−４では、図２０に示した処理手順Ｑ１０が用いるリソースを変更する操作を受け付けたことにより、新たな制約違反が発生した場合に表示されるワークフロー画面を示す。【０１４８】
図２１−４に示した例では、図２０に示した処理手順Ｑ１０が用いるリソースが、図２１−４の示したワークフローＲの処理手順Ｒ１により用いられるリソースに変更されることにより、処理手順Ｑ１０の処理時間は短くならず、ワークフローＱの制約違反が解消されていない。また、処理手順Ｒ１の処理時間が長くなるため、ワークフローＲがワークフロー完了時刻の制約に違反している。【０１４９】
このように、変更操作受付部２１６がワークフロー定義の変更操作を受け付けた後、制約違反判定部２１３は、再度、制約違反の判定処理を行う。そして、制約違反判定部２１３は、制約に違反するワークフローが存在すると判定した場合、制約違反ワークフローおよびリソース共有ワークフローを特定し、表示部２１５は、再度ワークフロー画面をモニタに表示させる。【０１５０】
次に、実施例２に係るワークフロー定義変更装置２０の処理手順について図２２を参照して説明する。図２２は、実施例２に係るワークフロー定義変更装置２０の処理手順を示すフローチャートである。この処理手順では、システム管理者によって入力されたワークフロー定義を用いて複数のワークフローに制約違反が発生するか否かを判定し、制約違反が発生する場合にはワークフロー画面を表示して、ワークフロー定義の変更操作を受け付ける際の手順について説明する。【０１５１】
最初に、ワークフロー定義変更装置２０の受信部１１１は、システム管理者によって生成された複数の処理手順、複数のポリシーおよび複数の制約を含むワークフロー定義を受信する（ステップＳ２０１）。【０１５２】
続いて、状態遷移モデル生成部２１２は、受信部１１１によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ２０２）。【０１５３】
続いて、制約違反判定部２１３は、状態遷移モデル生成部２１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する（ステップＳ２０３）。この判定の結果がＮＯである場合（ステップＳ２０４；ＮＯ）に、表示部２１５は、制約違反が発生しない旨のメッセージをワークフロー定義変更装置２０のモニタに表示させ（ステップＳ２０５）、本処理を終了する。【０１５４】
一方、制約違反が発生すると判定した場合（ステップＳ２０４；ＹＥＳ）、制約違反判定部２１３は、制約違反ワークフローとリソース共有ワークフローとを特定する（ステップＳ２０６）。【０１５５】
続いて、表示部２１５は、制約違反判定部２１３によって特定された制約違反ワークフローと、リソース共有ワークフローとを図形および文字列により表したワークフロー画面を、ワークフロー定義変更装置２０のモニタに表示させる（ステップＳ２０７）。【０１５６】
続いて、変更操作受付部２１６は、ワークフロー画面上で、ワークフロー定義の変更操作を受け付けると（ステップＳ２０８；ＹＥＳ）、状態遷移モデル生成部２１２に対して、変更後のワークフロー定義を入力して状態遷移モデルを生成させる。【０１５７】
変更操作受付部２１６によって変更後のワークフロー定義を入力された状態遷移モデル生成部２１２は、変更後のワークフロー定義を用い、変更後の複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ２０２）。【０１５８】
続いて、制約違反判定部２１３は、状態遷移モデル生成部２１２によって生成された変更後の状態遷移モデルおよび上記ステップＳ２０８で変更操作受付部２１６が受け付けた変更後の制約を用いて制約違反が発生するか否かを判定する（ステップＳ２０３）。この判定の結果がＹＥＳである場合（ステップＳ２０４；ＹＥＳ）には、上記ステップＳ２０６〜ステップＳ２０８の処理を行う。【０１５９】
上述してきたように、実施例２に係るワークフロー定義変更装置２０では、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、制約違反が発生しているワークフローを容易に認識することができ、制約違反が発生した原因を容易に認識することができる。【０１６０】
また、ワークフロー画面上でワークフロー定義の変更操作を受け付けることができ、変更後のワークフロー定義に基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、システム管理者は、ワークフロー定義を容易に変更することができ、変更後のワークフロー定義が制約に違反するか否かを容易に確認することができる。【０１６１】
したがって、実施例２に係るワークフロー定義変更装置２０によれば、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができる。【０１６２】
なお、上記実施例２では、表示部２１５が処理手順Ｐ１等を円形で表示させる例を示したが、処理手順Ｐ１等を矩形や星型等の他の図形を用いて表示させてもよい。【０１６３】
また、上記実施例２では、制約違反が発生すると判定した場合に、制約違反判定部２１３が制約違反ワークフローおよびリソース共有ワークフローを特定し、表示部２１５が制約違反ワークフローおよびリソース共有ワークフローのみをワークフロー画面に表示させる例を示したが、制約違反が発生すると判定した場合、表示部２１５は、受信部１１１が受信したすべてのワークフローをワークフロー画面に表示させてもよい。【０１６４】
また、上記実施例２において、表示部２１５は、制約違反が発生すると判定した場合に、制約違反ワークフローとリソース共有ワークフローとを識別できるように表示してもよい。例えば、表示部２１５は、制約違反ワークフローとリソース共有ワークフローとを異なる色により表示する。【０１６５】
また、上記実施例２において、表示部２１５は、制約違反が発生しないと判定した場合に、制約違反が発生しない旨のメッセージをモニタに表示させるとともに、制約違反が発生しない旨のメッセージを音声によって出力してもよい。また、表示部２１５は、制約違反が発生すると判定した場合に、ワークフロー画面をモニタに表示させるとともに、制約違反が発生する旨のメッセージを音声によって出力してもよい。
【産業上の利用可能性】
【０１６６】
以上のように、本発明に係るワークフロー定義変更プログラム、ワークフロー定義変更方法およびワークフロー定義変更装置は、ワークフロー定義を変更するのに有用であり、特に、複数のワークフロー間における制約違反をワークフローの実行前に解消させることに適している。
【図１】
2008152910.tif 000003
【図２】
2008152910.tif 000004
【図３】
2008152910.tif 000005
【図４】
2008152910.tif 000006
【図５】
2008152910.tif 000007
【図６】
2008152910.tif 000008
【図７】
2008152910.tif 000009
【図８】
2008152910.tif 000010
【図９】
2008152910.tif 000011
【図１０】
2008152910.tif 000012
【図１１】
2008152910.tif 000013
【図１２】
2008152910.tif 000014
【図１３】
2008152910.tif 000015
【図１４】
2008152910.tif 000016
【図１５】
2008152910.tif 000017
【図１６】
2008152910.tif 000018
【図１７】
2008152910.tif 000019
【図１８−１】
2008152910.tif 000020
【図１８−２】
2008152910.tif 000021
【図１８−３】
2008152910.tif 000022
【図１８−４】
2008152910.tif 000023
【図１９−１】
2008152910.tif 000024
【図１９−２】
2008152910.tif 000025
【図１９−３】
2008152910.tif 000026
【図２０】
2008152910.tif 000027
【図２１−１】
2008152910.tif 000028
【図２１−２】
2008152910.tif 000029
【図２１−３】
2008152910.tif 000030
【図２１−４】
2008152910.tif 000031
【図２２】
2008152910.tif 000032
【手続補正書】
【提出日】平成21年8月21日(2009.8.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信手順と、
前記受信手順によって受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、
前記状態遷移モデル生成手順によって生成された前記状態遷移モデルおよび前記受信手順によって受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、
前記判定手順によって前記制約違反が発生すると判定された場合に、前記処理手順、前記ポリシーおよび前記制約のいずれか一つまたは複数に変更を加える変更手順と、
前記変更手順によって前記変更が加えられた場合に、前記変更が加えられた後の前記処理手順、前記ポリシーおよび前記制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手順と、
をコンピュータに実行させることを特徴とするワークフロー定義変更プログラム。
【請求項２】
前記状態遷移モデル生成手順は、前記変更手順によって変更が加えられた後の前記処理手順および前記ポリシーを用いて変更後の前記状態遷移モデルを生成し、
前記判定手順は、前記状態遷移モデル生成手順によって生成された変更後の前記状態遷移モデルおよび前記変更手順によって変更が加えられた後の前記制約を用いて前記制約違反が発生するか否かを判定する
ことを特徴とする請求項１に記載のワークフロー定義変更プログラム。
【請求項３】
前記状態遷移モデル生成手順によって生成された前記状態遷移モデルおよび変更後の前記状態遷移モデルを比較して、前記状態遷移モデルの変更の前後において値が変わった変数を特定する変数特定手順をさらにコンピュータに実行させる
ことを特徴とする請求項２に記載のワークフロー定義変更プログラム。
【請求項４】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更方法であって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信ステップと、
前記受信ステップにおいて受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成ステップと、
前記状態遷移モデル生成ステップにおいて生成された前記状態遷移モデルおよび前記受信ステップにおいて受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定ステップと、
前記判定ステップにおいて前記制約違反が発生すると判定された場合に、前記処理手順、前記ポリシーおよび前記制約のいずれか一つまたは複数に変更を加える変更ステップと、
前記変更ステップにおいて前記変更が加えられた場合に、前記変更が加えられた後の前記処理手順、前記ポリシーおよび前記制約を含むワークフロー定義を代替ワークフロー定義として提示する提示ステップと、
を含むことを特徴とするワークフロー定義変更方法。
【請求項５】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信手順と、
前記受信手順によって受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、
前記状態遷移モデル生成手順によって生成された前記状態遷移モデルおよび前記受信手順によって受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、
前記判定手順によって制約違反が発生すると判定された場合に、前記ワークフローと前記制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示手順と
をコンピュータに実行させることを特徴とするワークフロー定義変更プログラム。
【請求項６】
前記表示手順は、前記判定手順によって制約違反が発生すると判定されたワークフローである制約違反ワークフローと、前記制約違反ワークフローに含まれる処理手順と同時に同一のリソースを用いる処理手順が含まれるワークフローとを表示させることを特徴とする請求項５に記載のワークフロー定義変更プログラム。
【請求項７】
前記表示手順は、異なるワークフローに含まれる二以上の処理手順によって同時に同一のリソースが用いられる期間が存在する場合に、前記二以上の処理手順と、前記二以上の処理手順以外の処理手順である他の処理手順とを識別できるように構成したワークフロー画面を、前記表示装置に表示させることを特徴とする請求項５または６に記載のワークフロー定義変更プログラム。
【請求項８】
前記ワークフロー画面上で、前記ワークフロー定義の変更操作を受け付ける変更操作受付手順をさらにコンピュータに実行させ、
前記状態遷移モデル生成手順は、前記変更操作受付手順によって受け付けられた変更後のワークフロー定義を用い、前記状態遷移モデルを生成することを特徴とする請求項５または６に記載のワークフロー定義変更プログラム。
【請求項９】
各種手続きに関する処理手順、前記処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび前記処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更方法であって、
前記処理手順、前記ポリシーおよび前記制約を受信する受信ステップと、
前記受信ステップにおいて受信された複数の前記処理手順および複数の前記ポリシーを用い、複数の前記処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成ステップと、
前記状態遷移モデル生成ステップにおいて生成された前記状態遷移モデルおよび前記受信ステップにおいて受信された複数の前記制約を用い、複数の前記ワークフローを実行した際に制約違反が発生するか否かを判定する判定ステップと、
前記判定ステップにおいて制約違反が発生すると判定された場合に、前記ワークフローと前記制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示ステップと
を含むことを特徴とするワークフロー定義変更方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ワークフロー定義を変更するのに有用なワークフロー定義変更プログラムおよびワークフロー定義変更方法に関し、特に、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができるワークフロー定義変更プログラムおよびワークフロー定義変更方法に関する。
【背景技術】
【０００２】
近年、情報システムの大規模化、複雑化に伴い、システムの運用管理も複雑化してきている。このため、システムを正常に運用することがますます困難になってきている。このような状況を踏まえて、運用管理の手順や規則をワークフローで定義し、この定義にしたがってシステム管理者がシステムを操作することや、この定義にしたがってシステム自体に運用管理処理を行わせること等で運用管理作業の負担を軽減させている（下記特許文献１参照）。
【０００３】
【特許文献１】特開平０９−０４４３５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、上述したワークフローによる運用管理では、複数のワークフロー間の相互干渉が問題となる。具体的には、同一のリソースを扱うワークフローが複数ある場合に、それらを同時に実行させたときにリソースの競合が生じ、この競合によって処理遅延等の問題が発生する可能性がある。このような問題を解決するための手法の一つとして、シミュレーションがある。このシミュレーションは、ある特定のシナリオ(入力系列)を想定し、このシナリオにしたがった処理結果を評価する手法であるため、想定外のシナリオで発生し得る制約違反や、発生確率の小さな制約違反を見逃しやすい。また、他の手法として、ワークフロー実行時に制約違反を検出して回避策をとる手法がある。この手法では、制約違反が検出された時点で回避策を考えなければならず、システム管理者の負担が高いうえ、事前に制約違反の発生が予測されたとしてもその制約違反を回避させることができない。
【０００５】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができるワークフロー定義変更プログラムおよびワークフロー定義変更方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、処理手順、ポリシーおよび制約を受信する受信手順と、受信手順によって受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、状態遷移モデル生成手順によって生成された状態遷移モデルおよび受信手順によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、判定手順によって制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える変更手順と、変更手順によって変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手順と、をコンピュータに実行させることを特徴とする。
【０００７】
また、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更方法であって、処理手順、ポリシーおよび制約を受信する受信ステップと、受信ステップにおいて受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成ステップと、状態遷移モデル生成ステップにおいて生成された状態遷移モデルおよび受信ステップにおいて受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定ステップと、判定ステップにおいて制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える変更ステップと、変更ステップにおいて変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義として提示する提示ステップと、を含むことを特徴とする。
【０００８】
また、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更装置であって、処理手順、ポリシーおよび制約を受信する受信手段と、受信手段によって受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手段と、状態遷移モデル生成手段によって生成された状態遷移モデルおよび受信手段によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定手段と、判定手段によって制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える変更手段と、変更手段によって変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義として提示する提示手段と、を備えることを特徴とする。
【０００９】
これらの発明によれば、例えば、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加え、この変更を加えた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。
【００１０】
また、本発明は、上記発明において、上記状態遷移モデル生成手順は、変更手順によって変更が加えられた後の処理手順およびポリシーを用いて変更後の状態遷移モデルを生成し、上記判定手順は、状態遷移モデル生成手順によって生成された変更後の状態遷移モデルおよび変更手順によって変更が加えられた後の制約を用いて制約違反が発生するか否かを判定することを特徴とする。
【００１１】
これにより、変更を加えた後の処理手順およびポリシーに基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生しないと判定された場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。
【００１２】
また、本発明は、上記発明において、上記状態遷移モデル生成手順によって生成された状態遷移モデルおよび変更後の状態遷移モデルを比較して、状態遷移モデルの変更の前後において値が変わった変数を特定する変数特定手順をさらにコンピュータに実行させることを特徴とする。
【００１３】
また、本発明は、上記発明において、上記判定手順によって制約違反が発生すると判定された場合に、制約違反が発生すると判定された回数が、所定回数に到達しているときには、代替ワークフロー定義の提示が不可能である旨を通知する通知手順をさらにコンピュータに実行させることを特徴とする。
【００１４】
また、本発明は、上記発明において、上記提示手順は、制約違反に関する内容をさらに提示することを特徴とする。
【００１５】
また、本発明は、各種手続きに関する処理手順、処理手順の実行時に用いられるリソースの割り当て規則に関するポリシーおよび処理手順の実行時に遵守すべき規則に関する制約を含むワークフロー定義を提示するワークフロー定義変更プログラムであって、処理手順、ポリシーおよび制約を受信する受信手順と、受信手順によって受信された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成する状態遷移モデル生成手順と、状態遷移モデル生成手順によって生成された状態遷移モデルおよび受信手順によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する判定手順と、判定手順によって制約違反が発生すると判定された場合に、ワークフローと制約違反とを図形および文字列により表した画面であるワークフロー画面を、所定の表示装置に表示させる表示手順とをコンピュータに実行させることを特徴とする。
【００１６】
また、本発明は、上記発明において、上記表示手順は、判定手順によって制約違反が発生すると判定されたワークフローである制約違反ワークフローと、制約違反ワークフローに含まれる処理手順と同時に同一のリソースを用いる処理手順が含まれるワークフローとを表示させることを特徴とする。
【００１７】
また、本発明は、上記発明において、上記表示手順は、異なるワークフローに含まれる二以上の処理手順によって同時に同一のリソースが用いられる期間が存在する場合に、上記二以上の処理手順と、上記二以上の処理手順以外の処理手順である他の処理手順とを識別できるように構成したワークフロー画面を、表示装置に表示させることを特徴とする。
【００１８】
これらの発明によれば、例えば、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、制約違反が発生しているワークフローを容易に認識することができ、制約違反が発生した原因を容易に認識することができる。
【００１９】
また、本発明は、上記発明において、上記ワークフロー画面上で、上記ワークフロー定義の変更操作を受け付ける変更操作受付手順をさらにコンピュータに実行させ、上記状態遷移モデル生成手順は、上記変更操作受付手順によって受け付けられた変更後のワークフロー定義を用い、上記状態遷移モデルを生成することを特徴とする。
【００２０】
この発明によれば、例えば、ワークフロー画面上でワークフロー定義の変更操作を受け付けることができ、変更後のワークフロー定義に基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、システム管理者は、ワークフロー定義を容易に変更することができ、変更後のワークフロー定義が制約に違反するか否かを容易に確認することができる。
【発明の効果】
【００２１】
本発明によれば、受信した複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよび受信した複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加え、この変更を加えた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示することができる。
【００２２】
また、本発明によれば、変更を加えた後の処理手順およびポリシーに基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生しないと判定された場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示することができる。
【００２３】
また、本発明によれば、制約違反が発生しているワークフローを容易に認識することができ、制約違反が発生した原因を容易に認識することができる。
【００２４】
また、本発明によれば、システム管理者が、ワークフロー定義を容易に変更することができ、変更後のワークフロー定義が制約に違反するか否かを容易に確認することができる。
【００２５】
すなわち、本発明によれば、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２６】
以下に添付図面を参照して、この発明に係るワークフロー定義変更プログラムおよびワークフロー定義変更方法の好適な実施形態を詳細に説明する。
【実施例１】
【００２７】
まず、本実施例におけるワークフロー定義変更装置は、システム管理者によって入力されたワークフロー定義を用い、複数のワークフローを実行した際の状態遷移モデルを生成し、この状態遷移モデルを用いて各ワークフローに制約違反が発生するか否かを判定し、制約違反が発生する場合には、ワークフロー定義に変更を加えることで制約違反を解消したワークフロー定義をシステム管理者に提示する点に特徴がある。これにより、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができる。
【００２８】
ここで、ワークフロー定義には、処理手順、ポリシーおよび制約が含まれる。処理手順は、ワークフローにおける各種の手続きに関する定義であり、ポリシーは、処理手順の実行時に用いられるリソースの割り当て規則に関する定義であり、制約は、処理手順の実行時に遵守すべき規則に関する定義である。
【００２９】
このようなワークフロー定義変更装置が有する諸機能について、図１を参照して詳細に説明する。図１は、ワークフロー定義変更装置の機能構成図である。同図に示すように、ワークフロー定義変更装置１０は、ワークフロー定義変更装置１０を全体制御する制御部１１と、制御部１１での処理に用いられるアプリケーションやデータを記憶する記憶部１２とを有する。
【００３０】
制御部１１は、受信部１１１と、状態遷移モデル生成部１１２と、制約違反判定部１１３と、ワークフロー定義変更部１１４と、表示部１１５と、変更変数特定部１１６とを有する。
【００３１】
受信部１１１は、システム管理者によって生成された複数の処理手順、複数のポリシーおよび複数の制約を含むワークフロー定義を受信する。ワークフロー定義に含まれる処理手順について図２〜図５を参照して説明する。図２および図３は、ワークフローＡの処理手順を示す図である。ワークフローＡは、サーバＡにパッチを適用する際のワークフローである。図３に示す各項目のうち、処理番号、処理内容、最短処理時間、最長処理時間および変数設定の各項目が処理手順に含まれる。
【００３２】
図２および図３に示されるワークフローＡの処理手順について具体的に説明する。処理番号が“Ａ１”である処理手続きは、ワークフローＡ実行時に最初に処理が行われる手続きであり、処理内容は、ワークフローＡが開始されることを示す“開始”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）であり、この処理手続きで変数“Ｆｌａｇ”に初期値として“０”が割り当てられる。処理番号が“Ａ２”である処理手続きは、ワークフローＡ実行時に２番目に処理が行われる手続きであり、処理内容は、サーバＡで提供されているサービスを停止させることを示す“サービス停止”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。
【００３３】
処理番号が“Ａ３”である処理手続きは、ワークフローＡ実行時に３番目に処理が行われる手続きであり、処理内容は、サーバＡのファイルをサーバＢにバックアップすることを示す“バックアップ”であり、最短処理時間は４０分であり、最長処理時間は６０分（つまり処理時間は４０分〜６０分）である。処理番号が“Ａ４”である処理手続きは、ワークフローＡ実行時に４番目に処理が行われる手続きであり、処理内容は、サーバＡにパッチを適用することを示す“パッチ適用”であり、最短処理時間は１０分であり、最長処理時間は３０分（つまり処理時間は１０分〜３０分）である。
【００３４】
処理番号が“Ａ５”である処理手続きは、ワークフローＡ実行時に５番目に処理が行われる手続きであり、処理内容は、サーバＡをリブートすることを示す“リブート”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。処理番号が“Ａ６”である処理手続きは、ワークフローＡ実行時に６番目に処理が行われる手続きであり、処理内容は、サーバＡで提供するサービスを開始させることを示す“サービス開始”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。
【００３５】
処理番号が“Ａ７”である処理手続きは、ワークフローＡ実行時に７番目に処理が行われる手続きであり、処理内容は、サーバＡにおけるサービスの開始が成功したか否かにより処理が分岐することを示す“成功？”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）であり、この処理手続きの判定結果に応じて変数“Ｒｅｓｕｌｔ”に“０”または“１”が割り当てられる。
【００３６】
処理番号が“Ａ８”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ７”である処理手続きでサービスの開始が失敗した場合（ＮＯ）に処理が行われる手続きであり、処理内容は、サービス開始の失敗が最初の失敗であるか否かにより処理が分岐することを示す“最初の失敗？”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。
【００３７】
処理番号が“Ａ９”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ８”である処理手続きでサービス開始の失敗が最初である場合（ＹＥＳ）に処理が行われる手続きであり、処理内容は、サービスの開始が失敗した原因を分析することを示す“原因分析”であり、最短処理時間は１０分であり、最長処理時間は６０分（つまり処理時間は１０分〜６０分）であり、この処理手続きで変数“Ｆｌａｇ”に“１”が割り当てられる。
【００３８】
処理番号が“Ａ１０”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ８”である処理手続きでサービス開始の失敗が２度目である場合（ＮＯ）に処理が行われる手続きであり、処理内容は、サーバＢからサーバＡにファイルをリストアすることを示す“リストア”であり、最短処理時間は４０分であり、最長処理時間は６０分（つまり処理時間は４０分〜６０分）である。
【００３９】
処理番号が“Ａ１１”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ１０”である処理手続きの後に処理が行われる手続きであり、処理内容は、サーバＡで提供するサービスを開始させることを示す“サービス開始”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。処理番号が“Ａ１２”である処理手続きは、ワークフローＡ実行時に、処理番号が“Ａ１１”である処理手続きの後に処理が行われる手続きであり、処理内容は、レポートを生成することを示す“レポート生成”であり、最短処理時間は１０分であり、最長処理時間は１５分（つまり処理時間は１０分〜１５分）である。処理番号が“Ａ１３”である処理手続きは、ワークフローＡ実行時に最後に処理が行われる手続きであり、処理内容は、ワークフローＡが終了することを示す“終了”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）である。
【００４０】
図４および図５は、ワークフローＢの処理手順を示す図である。ワークフローＢは、サーバＢでウイルススキャンを実行する際のワークフローである。図５に示す各項目のうち、処理番号、処理内容、最短処理時間、最長処理時間および変数設定の各項目が処理手順に含まれる。
【００４１】
図４および図５に示されるワークフローＢの処理手順について具体的に説明する。処理番号が“Ｂ１”である処理手続きは、ワークフローＢ実行時に最初に処理が行われる手続きであり、処理内容は、ワークフローＢが開始されることを示す“開始”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）である。処理番号が“Ｂ２”である処理手続きは、ワークフローＢ実行時に２番目に処理が行われる手続きであり、処理内容は、新ウイルス情報をダウンロードすることを示す“ダウンロード”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。
【００４２】
処理番号が“Ｂ３”である処理手続きは、ワークフローＢ実行時に３番目に処理が行われる手続きであり、処理内容は、ワクチンファイルをアップデートすることを示す“アップデート”であり、最短処理時間は１０分であり、最長処理時間は２０分（つまり処理時間は１０分〜２０分）である。処理番号が“Ｂ４”である処理手続きは、ワークフローＢ実行時に４番目に処理が行われる手続きであり、処理内容は、ウイルススキャンを実行することを示す“ウイルススキャン”であり、最短処理時間は６０分であり、最長処理時間は９０分（つまり処理時間は６０分〜９０分）である。
【００４３】
処理番号が“Ｂ５”である処理手続きは、ワークフローＢ実行時に５番目に処理が行われる手続きであり、処理内容は、ウイルスが発見されたか否かにより処理が分岐することを示す“ウイルス発見？”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）であり、この処理手続きの判定結果に応じて変数“Ｄｅｔｅｃｔ”に“０”または“１”が割り当てられる。
【００４４】
処理番号が“Ｂ６”である処理手続きは、ワークフローＢ実行時に、処理番号が“Ｂ５”である処理手続きでウイルスが発見された場合（ＹＥＳ）に処理が行われる手続きであり、処理内容は、管理者に警告することを示す“警告”であり、最短処理時間は５分であり、最長処理時間は１０分（つまり処理時間は５分〜１０分）である。処理番号が“Ｂ７”である処理手続きは、ワークフローＢ実行時に最後に処理が行われる手続きであり、処理内容は、ワークフローＢが終了することを示す“終了”であり、最短処理時間と最長処理時間はともに０分（つまり処理時間は０分）である。
【００４５】
ワークフロー定義に含まれるポリシーについて図３および図５を参照して説明する。図３および図５に示す各項目のうち、処理番号、リソース、割当タイプおよび優先順位の各項目がポリシーに含まれる。ここで、割当タイプには、例えば、ノンプリエンティブ（Non-preemptive）と、プリエンティブ（Preemptive）と、コンカレント(Concurrent)とがある。
【００４６】
ノンプリエンティブは、複数の処理手続きが同一のリソースを使用する場合に、先に実行された処理手続きが完全に終了してから、後の処理手続きを実行するタイプである。このノンプリエンティブは、例えば、ファイルへの同時書き込みを禁止するとき等に用いられる。
【００４７】
プリエンティブは、複数の処理手続きが同一のリソースを使用する場合に、各処理手続きの優先順位を比較し、優先順位の高い処理手続きを先に実行させて処理が終了してから、優先順位の低い処理手続きを実行するタイプである。したがって、先にリソースを使用していた処理手続きの方が後からリソースを使用する処理手続きよりも優先順位が高い場合には、上記ノンプリエンティブと同様の動作になる。このプリエンティブは、例えば、緊急を要する作業を割り込ませるとき等に用いられるタイプである。
【００４８】
コンカレントは、複数の処理手続きで同時に同一のリソースを使用することを許可するタイプであるが。したがって、処理手続きごとにリソースを使用する場合に比べて処理時間は長くなる。このコンカレントは、例えば、サーバのＣＰＵで複数の処理を実行するとき等に用いられる。
【００４９】
図３に示されるワークフローＡのポリシーについて具体的に説明する。処理番号が“Ａ２”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“プリエンティブ”を採用する。“サーバＡ”の使用が競合した場合の優先順位には、優先順位が低いことを示す“０”が割り当てられている。処理番号が“Ａ３”である処理手続きは、リソースとして“サーバＡ”および“サーバＢ”を使用し、リソースが競合したときの割当タイプとしてそれぞれ“ノンプリエンティブ”および“コンカレント”を採用する。処理番号が“Ａ４”〜“Ａ６”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“ノンプリエンティブ”を採用する。処理番号が“Ａ７”および“Ａ１１”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“コンカレント”を採用する。
【００５０】
処理番号が“Ａ９”である処理手続きは、リソースとして“サーバＡ”を使用し、リソースが競合したときの割当タイプとして“プリエンティブ”を採用する。“サーバＡ”の使用が競合した場合の優先順位には、優先順位が高いことを示す“１”が割り当てられている。処理番号が“Ａ１０”である処理手続きは、リソースとして“サーバＡ”および“サーバＢ”を使用し、リソースが競合したときの割当タイプとしてそれぞれ“プリエンティブ”および“コンカレント”を採用する。“サーバＡ”の使用が競合した場合の優先順位には、優先順位が高いことを示す“１”が割り当てられている。
【００５１】
図５に示されるワークフローＢのポリシーについて具体的に説明する。処理番号が“Ｂ２”〜“Ｂ４”である処理手続きは、リソースとして“サーバＢ”を使用し、リソースが競合したときの割当タイプとして“コンカレント”を採用する。
【００５２】
ワークフロー定義に含まれる制約としては、例えば、「時刻０分でワークフローＡを実行し、かつ、時刻２００分でワークフローＢを開始したときに、時刻４００分の時点でワークフローＡとワークフローＢが終了していること」が該当する。この制約は論理式で表すこととしてもよい。
【００５３】
図１に示す状態遷移モデル生成部１１２は、受信部１１１によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する。具体的には、複数のワークフローをそれぞれオートマトンに変換し、これらのオートマトンを用いて積オートマトンを生成し、生成した積オートマトンに対してリソースの競合状態に応じた変更を加える。これにより、リソースの競合状態が発生する複数のワークフローを実行した際の状態遷移モデルを生成することができる。また、状態遷移モデル生成部１１２は、後述するワークフロー定義変更部１１４によって変更が加えられた後の処理手順およびポリシーを用いて変更後の複数のワークフローを実行した際の状態遷移モデルを生成する。
【００５４】
ここで、本実施例では、状態遷移モデルとして、ハイブリッドオートマトン（Hybrid  automata）を採用する。このハイブリッドオートマトンは、時間の概念をオートマトンに導入したタイムオートマトン（timed  automata）[R.  Alur  and  D.  L.  Dill,  “A  theory  of  timed  automata,”  Theoretical  Computer  Sci.,  vol.  126,  pp.  183-235,  1994.参照]を、一般化したものであり、アナログ的な連続量を扱うシステムを、有限状態遷移モデルで表現することを可能にしている。タイムオートマトンは、経過時間に伴って一律に増加し続けるという性質を持つ変数のクラスclockを導入することで、システムにおける時間の経過を表現可能としたものである。これに対してハイブリッドオートマトンは、各変数の単位時間当たりの変量を定義することを可能とし、これを利用することで時間の経過とともに減少する変数の表現や、同一時間内における増加量の異なる複数の変数を表現可能としたものである。
【００５５】
状態遷移モデルの生成過程について図６〜図１３を参照して説明する。以下においては、二つのワークフロー（ワークフローＡおよびワークフローＢ）を実行した際の状態遷移モデルを生成する過程について説明する。
【００５６】
図６は、図２に示すワークフローＡを変換して生成されたオートマトンを示す図である。図６に示すロケーションＬＡ１、ＬＡ２、ＬＡ３、ＬＡ１３は、それぞれ図２に示す処理手続きＡ１、Ａ２、Ａ３、Ａ１３に対応して定義され、各ロケーション間は、ワークフロー定義に含まれる処理手続き間の順序関係定義にしたがって接続される。ここでは、説明の便宜のために、図２に示す処理手続きのうちの一部の手続きについてのみ説明することにする。ロケーションＬＡ０は、初期ロケーションであり、各変数の初期値を定義する。このロケーションＬＡ０では、変数ｔＡ、変数Ｒｅｓｕｌｔ、変数Ｆｌａｇに、初期値として０がセットされる。変数ｔＡは、各ロケーションでの処理時間をカウントするタイマ変数である。
【００５７】
ロケーションＬＡ０に記述されている“ｔＡ≦ＴＳＡ”は、タイマ変数ＴＡが、０から所定の開始時刻ＴＳＡに到達するまでの間はロケーションＬＡ０に留まることを示す。ロケーションＬＡ０とロケーションＬＡ１との間に記述されている“ｔＡ＝ＴＳＡ”は、タイマ変数ｔＡが、開始時刻ＴＳＡに到達した時点でロケーションＬＡ０からロケーションＬＡ１に遷移することを示す。ロケーションＬＡ０とロケーションＬＡ１との間に記述されている“ｔＡ：＝０、Ｆｌａｇ：＝０”は、ロケーションＬＡ０からロケーションＬＡ１に遷移するときに、タイマ変数ｔＡおよび変数Ｆｌａｇに０がセットされることを示す。
【００５８】
ロケーションＬＡ１、ＬＡ２、ＬＡ３にそれぞれ記述されている“ｔＡ≦０”、“ｔＡ≦１０”、“ｔＡ≦６０”は、各ロケーションに留まることができる最長処理時間を示す。この最長処理時間は、図３に示す最長処理時間に対応する。したがって、ロケーションＬＡ１には０分以上留まることができず、ロケーションＬＡ２には１０分以上留まることができず、ロケーションＬＡ３には６０分以上留まることができないことになる。
【００５９】
ロケーションＬＡ１とロケーションＬＡ２の間、およびロケーションＬＡ２とロケーションＬＡ３の間にそれぞれ記述されている“ｔＡ≧０”、“ｔＡ≧５”は、遷移元のロケーションに留まることができる最短処理時間を示す。この最短処理時間は、図３に示す最短処理時間に対応する。したがって、ロケーションＬＡ１からロケーションＬＡ２には０分以上経過しないと遷移することができず、ロケーションＬＡ２からロケーションＬＡ３には５分以上経過しないと遷移することができないことになる。
【００６０】
ロケーションＬＡ１とロケーションＬＡ２の間、およびロケーションＬＡ２とロケーションＬＡ３の間にそれぞれ記述されている“ｔＡ：＝０”は、ロケーションを遷移するときに、タイマ変数ｔＡに０がセットされることを示す。
【００６１】
図７は、図４に示すワークフローＢを変換して生成されたオートマトンを示す図である。図７に示すロケーションＬＢ１、ＬＢ２、ＬＢ３、ＬＢ７は、それぞれ図４に示す処理手続きＢ１、Ｂ２、Ｂ３、Ｂ７に対応して定義され、各ロケーション間は、ワークフロー定義に含まれる処理手続き間の順序関係定義にしたがって接続される。ここでは、説明の便宜のために、図４に示す処理手続きのうちの一部の手続きについてのみ説明することにする。ロケーションＬＢ０は、初期ロケーションであり、各変数の初期値を定義する。このロケーションＬＢ０では、変数ｔＢ、変数Ｄｅｔｅｃｔに、初期値として０がセットされる。変数ｔＢは、各ロケーションでの処理時間をカウントするタイマ変数である。
【００６２】
ロケーションＬＢ０に記述されている“ｔＢ≦ＴＳＢ”は、タイマ変数ｔＢが、０から所定の開始時刻ＴＳＢに到達するまでの間はロケーションＬＢ０に留まることを示す。ロケーションＬＢ０とロケーションＬＢ１との間に記述されている“ｔＢ＝ＴＳＢ”は、タイマ変数ｔＢが、開始時刻ＴＳＢに到達した時点でロケーションＬＢ０からロケーションＬＢ１に遷移することを示す。ロケーションＬＢ０とロケーションＬＢ１との間に記述されている“ｔＢ：＝０”は、ロケーションＬＢ０からロケーションＬＢ１に遷移するときに、タイマ変数ｔＢに０がセットされることを示す。
【００６３】
ロケーションＬＢ１、ＬＢ２、ＬＢ３にそれぞれ記述されている“ｔＢ≦０”、“ｔＢ≦１０”、“ｔＢ≦２０”は、各ロケーションに留まることができる最長処理時間を示す。この最長処理時間は、図５に示す最長処理時間に対応する。したがって、ロケーションＬＢ１には０分以上留まることができず、ロケーションＬＢ２には１０分以上留まることができず、ロケーションＬＢ３には２０分以上留まることができないことになる。
【００６４】
ロケーションＬＢ１とロケーションＬＢ２の間、およびロケーションＬＢ２とロケーションＬＢ３の間にそれぞれ記述されている“ｔＢ≧０”、“ｔＢ≧５”は、遷移元のロケーションに留まることができる最短処理時間を示す。この最短処理時間は、図５に示す最短処理時間に対応する。したがって、ロケーションＬＢ１からロケーションＬＢ２には０分以上経過しないと遷移することができず、ロケーションＬＢ２からロケーションＬＢ３には５分以上経過しないと遷移することができないことになる。
【００６５】
ロケーションＬＢ１とロケーションＬＢ２の間、およびロケーションＬＢ２とロケーションＬＢ３の間にそれぞれ記述されている“ｔＢ：＝０”は、ロケーションを遷移するときに、タイマ変数ｔＢに０がセットされることを示す。
【００６６】
図８は、積オートマトンを生成するための二つのオートマトンを示す図であり、図９は、図８に示す二つのオートマトンを用いて生成された積オートマトンを示す図である。ここでは、説明の便宜のために、１３個の処理手続きを有するワークフローＡおよび７個の処理手続きを有するワークフローＢを用いるのではなく、それぞれ３個の処理手続きを有するワークフローＸおよびワークフローＹを用いることにする。図８に示すオートマトンＨＸは、処理手続きＸ０，Ｘ１，Ｘ２を有するワークフローＸを変換して生成されたものであり、３個のロケーションＬＸ０，ＬＸ１，ＬＸ２を有し、オートマトンＨＹは、処理手続きＹ０，Ｙ１，Ｙ２を有するワークフローＹを変換して生成されたものであり、３個のロケーションＬＹ０，ＬＹ１，ＬＹ２を有する。図９に示す積オートマトンは、オートマトンＨＸとオートマトンＨＹとを掛け合わせることで生成され、９個のロケーションＬ００，Ｌ０１，Ｌ０２，Ｌ１０，Ｌ１１，Ｌ１２，Ｌ２０，Ｌ２１，Ｌ２２を有する。各図に示されるオートマトンおよび積オートマトンの構成要素については、上述したワークフローＡおよびワークフローＢのオートマトンの構成要素と同様であるため、ここではその説明を省略する。
【００６７】
図１０〜図１３を参照して、積オートマトンを構成する処理手続き中にリソースの競合が発生する処理手続きが存在する場合に、この処理手続きに対してリソースの競合状態に応じた変更を加える手順について説明する。ここでは、図９に示す積オートマトンを構成する処理手続きのうち、ロケーションＬ１１でリソースの競合が生じると仮定した場合について説明する。
【００６８】
図１０は、リソースの競合が生じるロケーションＬ１１を中心とした積オートマトンの一部分を示す図である。図１０に示すロケーションＬ１１は、図９に示す積オートマトンの中心部分に位置するロケーション（ＬＸ１，ＬＹ１）である。このロケーションＬ１１に記載されている“ｔ’Ｘ”および“ｔ’Ｙ”は、タイマ変数ｔＸおよびタイマ変数ｔＹの単位時間当たりの変数を示す。したがって、“ｔ’Ｘ＝１”および“ｔ’Ｙ＝１”はそれぞれ１分ごとに１ずつ増加することを示す。
【００６９】
図１１は、図１０に示すロケーションＬ１１においてリソースの割当タイプがノンプリエンティブである場合に加えられる変更を説明するための図である。この場合には、新たにロケーションＬＷ１１およびロケーションＷＬ１１を追加し、ロケーションＬ１１を削除する。また、ロケーションＬ１０からロケーションＬ１１への遷移を、ロケーションＬ１０からロケーションＬＷ１１への遷移に変更し、ロケーションＬ０１からロケーションＬ１１への遷移を、ロケーションＬ０１からロケーションＷＬ１１への遷移に変更する。さらに、ロケーションＬ１１からロケーションＬ２１への遷移を、ロケーションＬＷ１１からロケーションＬ２１への遷移に変更し、ロケーションＬ１１からロケーションＬ１２への遷移を、ロケーションＷＬ１１からロケーションＬ１２への遷移に変更する。
【００７０】
ここで、ロケーションＬＷ１１は、処理手続きＸ１が先に実行され、処理手続きＹ１が処理手続きＸ１の実行が終了するまで待機することを示すロケーションである。ロケーションＬＷ１１に記述されている“ｔ’Ｘ＝１”および“ｔ’Ｙ＝０”は、タイマ変数ｔＸが１分ごとに１ずつ増加し、タイマ変数ｔＹが変化しないことを示す。また、ロケーションＷＬ１１は、処理手続きＹ１が先に実行され、処理手続きＸ１が処理手続きＹ１の実行が終了するまで待機することを示すロケーションである。ロケーションＷＬ１１に記述されている“ｔ’Ｘ＝０”および“ｔ’Ｙ＝１”は、タイマ変数ｔＸが変化せず、タイマ変数ｔＹが１分ごとに１ずつ増加することを示す。
【００７１】
図１２は、図１０に示すロケーションＬ１１においてリソースの割当タイプがプリエンティブである場合に加えられる変更を説明するための図である。この場合には、上述したノンプリエンティブである場合と同様にして、新たにロケーションＬＷ１１およびロケーションＷＬ１１を追加し、ロケーションＬ１１を削除する。また、ロケーションＬ１０からロケーションＬ１１への遷移を、ロケーションＬ１０からロケーションＬＷ１１およびロケーションＷＬ１１への遷移に変更する。そして、この場合の遷移先を決定する条件として、処理手続きＸ１の優先順位と処理手続きＹ１の優先順位を比較して、処理手続きＸ１の優先順位の方が高い場合にはロケーションＬＷ１１に遷移させ、処理手続きＹ１の優先順位の方が高い場合にはロケーションＷＬ１１に遷移させるｊｕｍｐ命令を追加する。
【００７２】
また、ロケーションＬ０１からロケーションＬ１１への遷移を、ロケーションＬ０１からロケーションＬＷ１１およびロケーションＷＬ１１への遷移に変更する。そして、この場合の遷移先を決定する条件として、処理手続きＸ１の優先順位と処理手続きＹ１の優先順位を比較して、処理手続きＸ１の優先順位の方が高い場合にはロケーションＬＷ１１に遷移させ、処理手続きＹ１の優先順位の方が高い場合にはロケーションＷＬ１１に遷移させるｊｕｍｐ命令を追加する。
【００７３】
さらに、ロケーションＬ１１からロケーションＬ２１への遷移を、ロケーションＬＷ１１からロケーションＬ２１への遷移に変更し、ロケーションＬ１１からロケーションＬ１２への遷移を、ロケーションＷＬ１１からロケーションＬ１２への遷移に変更する。
【００７４】
図１３は、図１０に示すロケーションＬ１１においてリソースの割当タイプがコンカレントである場合に加えられる変更を説明するための図である。この場合には、ロケーションＬ１１に記述されている“ｔ’Ｘ＝１”および“ｔ’Ｙ＝１”を、それぞれ“ｔ’Ｘ＝１／２”および“ｔ’Ｙ＝１／２”に変更する。これは、処理手続きの実行時間が、リソースを競合している処理手続きの数に比例して増加することから、単位時間当たりの変量を処理手続きの数で割ることでコンカレントによる実行状況を表したものである。
【００７５】
図１に示す制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数の処理手順を実行した際に制約違反が発生するか否かを判定する。また、制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された変更後の状態遷移モデルおよび後述するワークフロー定義変更部１１４によって変更が加えられた後の制約を用いて制約違反が発生するか否かを判定する。
【００７６】
制約違反が発生するか否かを判定するための手法としては、様々なモデル検査手法[E.M.Clarke,  O.Grumberg,  and  D.  A.  Peled,  Model  Checking,  The  MIT  Press,  1999.参照]を用いることができる。モデル検査手法としては、例えば、model  checking、SPIN[G.  J.  Holzmann,  “The  model  checker  SPIN,”  IEEE  Transactions  on  Software  Engineering,  Vol.23,  No.5,  1997.参照]、HyTech[HyTech:  The  HYbrid  TECHnology  Tool,  available  at  http://embedded.eecs.berkeley.edu/research/hytech/参照]がある。
【００７７】
model  checkingは、ハイブリッドオートマトンを用いてモデル化されたシステムの振る舞いを分析するための代表的な手法である。SPINは、様々なアルゴリズムによって計算時間の短縮が図られている手法である。HyTechは、ハイブリッドオートマトンの表現を容易にした手法である。
【００７８】
model  checkingは、最初にシステムが満たしているかどうかを調べたい性質を、ＣＴＬ(Computational  Tree  Logic)やＬＴＬ(Linear-time  Temporal  Logic)などの時相論理式で記述する。続いて、この時相論理式の否定をオートマトンに変換し、このオートマトンおよびモデル化したシステムのハイブリッドオートマトンを用いて合成オートマトンを生成する。続いて、合成オートマトンが受理する言語の集合が空であるかどうかを判定する。空である場合には、モデル化したシステムと時相論理式の否定とを同時に満たすことはない、つまり、モデル化したシステムは、時相論理式で記述された性質を満たすことになる。一方、合成オートマトンに受理される言語が存在する場合には、モデル化されたシステムは、時相論理式で記述された性質を満たさないこととなる。受理される言語の集合が、時相論理式で記述された性質を満たさないことの例示となる。
【００７９】
図１に示すワークフロー定義変更部１１４は、制約違反判定部１１３によって制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える。変更を加える方法としては、例えば、処理手順に含まれるワークフローの開始時刻を変更する方法、ポリシーに含まれる割当タイプや優先順位を変更する方法、制約に含まれるワークフローの終了時刻を変更する方法等がある。
【００８０】
変更を加える方法について、以下に具体的に説明する。例えば、「ワークフローＡ」および「ワークフローＢ」に関するワークフロー定義が付与され、この制約として「二つのワークフローが時刻４００分の時点で終了していること」が定義されている場合に、ワークフローＡの終了時刻が４０５分になると判定されたときには、次のように変更することができる。
【００８１】
処理手順に含まれるワークフローの開始時刻を変更する場合には、例えば、ワークフローＢの開始時刻を、現在の開始時刻である時刻２００分の１／２にあたる時刻１００分に変更する。このように、ワークフローＢの開始時刻を早めることで、各ワークフローの処理タイミングをずらすことができるため、リソースの競合を解消させてワークフローＡの処理時間を短縮させることが可能となる。
【００８２】
ポリシーに含まれる割当タイプや優先順位を変更する場合には、例えば、ワークフローＡとワークフローＢで使用するサーバＢへの割当タイプが“コンカレント”に設定されている場合に、サーバＢへの割当タイプを“プリエンティブ”に変更し、ワークフローＡの優先順位をワークフローＢの優先順位よりも高くする。このように、ワークフローＡに優先的にリソースを利用させることで、ワークフローＡの処理時間を短縮させることができる。
【００８３】
制約に含まれるワークフローの終了時刻を変更する場合には、例えば、二つのワークフローの終了時刻を、現在の終了時刻（時刻４００分）からワークフローＡの終了時刻にあたる時刻４０５分に変更する。このように、制約に含まれる終了時刻を、遅い方の終了時刻に合わせることで、ワークフローＡを制約に含まれる終了時刻までに確実に終了させることができる。つまり、制約違反を確実に解消させることができる。
【００８４】
ワークフロー定義変更部１１４は、ワークフロー定義に含まれる処理手順、ポリシーおよび制約のうちの一部または全部に変更を加えることができるが、変更を加えることによって制約違反が解消されればよい。したがって、処理手順、ポリシーおよび制約を変更する方法や変更する内容については、上述した変更方法や変更内容には限定されない。また、効率的に制約違反を解消させるために、例えば、変更方法や変更内容ごとに制約違反の判定結果を記憶させて分析することで、変更方法や変更内容を学習させることとしてもよい。
【００８５】
表示部１１５は、ワークフロー定義変更部１１４によって変更が加えられた場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてワークフロー定義変更装置１０のモニタに表示させる。表示部１１５は、代替ワークフロー定義に加えて制約違反に関する内容をワークフロー定義変更装置１０のモニタに表示させる。制約違反に関する内容には、制約違反が発生する旨のメッセージが含まれる。
【００８６】
図１４は、代替ワークフローを表示させるための代替ワークフローデータを例示する図である。同図に示すように、代替ワークフローデータには、データ項目として、例えば、システム管理者によって入力された原形のワークフローに関する変数の範囲および違反発生と、修正後の代替ワークフローに関する変更内容、変数の範囲および違反発生が含まれる。変更内容には、ワークフロー定義変更部１１４によって変更が加えられた内容が格納される。変数の範囲には、制約違反判定部１１３によって判定されるときに用いられる変数の取り得る範囲が格納される。違反発生には、制約違反判定部１１３によって判定された結果が格納される。
【００８７】
表示部１１５は、ワークフロー定義変更部１１４によって変更が加えられない場合、すなわち、制約違反が発生しない場合には、制約違反が発生しない旨のメッセージをワークフロー定義変更装置１０のモニタに表示させる。表示部１１５は、制約違反が発生しない旨のメッセージに加えて受信部１１１によって受信された処理手順、ポリシーおよび制約を含むワークフロー定義をワークフロー定義変更装置１０のモニタに表示させることとしてもよい。
【００８８】
表示部１１５は、制約違反判定部１１３によって制約違反が発生すると判定された場合に、制約違反が発生すると判定された回数が、所定回数に到達しているときには、代替ワークフロー定義の提示が不可能である旨のメッセージをワークフロー定義変更装置１０のモニタに表示させることとしてもよい。これにより、制約違反の解消が困難であることをシステム管理者に認識させることが可能となる。
【００８９】
なお、システム管理者に代替ワークフロー定義等を提示する方法は、ワークフロー定義変更装置１０のモニタに表示させることには限定されない。例えば、プリンターから出力させて提示することとしてもよいし、電子データとして出力させて提示することとしてもよい。
【００９０】
変更変数特定部１１６は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび変更後の状態遷移モデルを比較して、状態遷移モデルの変更の前後において値が変わった変数を特定する。変更変数特定部１１６によって特定された変数は、表示部１１５によってワークフロー定義変更装置１０のモニタに表示される。
【００９１】
次に、本実施例におけるワークフロー定義変更装置１０の処理手順について図１５を参照して説明する。図１５は、ワークフロー定義変更装置の処理手順を示すフローチャートである。この処理手順では、システム管理者によって入力されたワークフロー定義を用いて複数のワークフローに制約違反が発生するか否かを判定し、制約違反が発生する場合にはワークフロー定義を変更してシステム管理者に提示する際の手順について説明する。
【００９２】
最初に、ワークフロー定義変更装置１０の受信部１１１は、システム管理者によって生成された複数の処理手順、複数のポリシーおよび複数の制約を含むワークフロー定義を受信する（ステップＳ１０１）。
【００９３】
続いて、状態遷移モデル生成部１１２は、受信部１１１によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ１０２）。
【００９４】
続いて、制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する（ステップＳ１０３）。この判定の結果がＮＯである場合（ステップＳ１０４；ＮＯ）に、表示部１１５は、制約違反が発生しない旨のメッセージをワークフロー定義変更装置１０のモニタに表示させ（ステップＳ１１１）、本処理を終了する。
【００９５】
一方、ステップＳ１０３における判定の結果、制約違反が発生すると判定された場合（ステップＳ１０４；ＹＥＳ）に、ワークフロー定義変更部１１４は、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加える（ステップＳ１０５）。
【００９６】
続いて、状態遷移モデル生成部１１２は、上記ステップＳ１０５でワークフロー定義変更部１１４によって変更が加えられた後の処理手順およびポリシーを用い、変更後の複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ１０６）。
【００９７】
続いて、制約違反判定部１１３は、状態遷移モデル生成部１１２によって生成された変更後の状態遷移モデルおよび上記ステップＳ１０５でワークフロー定義変更部１１４によって変更が加えられた後の制約を用いて制約違反が発生するか否かを判定する（ステップＳ１０７）。この判定の結果がＹＥＳである場合（ステップＳ１０８；ＹＥＳ）には、処理を上記ステップＳ１０５に移行する。
【００９８】
一方、ステップＳ１０７における判定の結果、制約違反が発生しないと判定された場合（ステップＳ１０８；ＮＯ）に、変更変数特定部１１６は、状態遷移モデル生成部１１２によって生成された状態遷移モデルおよび変更後の状態遷移モデルを比較して、状態遷移モデルの変更の前後において値が変わった変数を特定する（ステップＳ１０９）。
【００９９】
続いて、表示部１１５は、制約違反が発生する旨のメッセージ、変更が加えられた後の処理手順・ポリシー・制約を含む代替ワークフロー定義、および状態遷移モデルの変更の前後で値が変化した変数を、ワークフロー定義変更装置１０のモニタに表示させ（ステップＳ１１０）、本処理を終了する。
【０１００】
上述してきたように、本実施例のワークフロー定義変更装置１０では、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、処理手順、ポリシーおよび制約のいずれか一つまたは複数に変更を加え、この変更を加えた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。
【０１０１】
また、変更を加えた後の処理手順およびポリシーに基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生しないと判定された場合に、変更が加えられた後の処理手順、ポリシーおよび制約を含むワークフロー定義を代替ワークフロー定義としてシステム管理者に提示させることができる。
【０１０２】
したがって、本実施例のワークフロー定義変更装置１０によれば、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができる。
【０１０３】
なお、図１に示した本実施例におけるワークフロー定義変更装置１０の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、ワークフロー定義変更装置１０の制御部１１の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、ワークフロー定義変更装置１０と同等の機能を実現することもできる。以下に、制御部１１の機能をソフトウェアとして実装したワークフロー定義変更プログラム１０７１を実行するコンピュータの一例を示す。
【０１０４】
図１６は、ワークフロー定義変更プログラムを実行するコンピュータの機能構成図である。このコンピュータ１０００は、各種演算処理を実行するＣＰＵ（Central  Processing  Unit）１０１０と、ユーザからのデータの入力を受け付ける入力装置１０２０と、各種情報を表示するモニタ１０３０と、記録媒体からプログラム等を読み取る媒体読取装置１０４０と、ネットワークを介して他のコンピュータとの間でデータの授受をおこなう通信装置１０５０と、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）１０６０と、ハードディスク装置１０７０とをバス１０８０で接続して構成される。
【０１０５】
そして、ハードディスク装置１０７０には、図１に示した制御部１１と同様の機能を有するワークフロー定義変更プログラム１０７１と、図１に示した記憶部１２に記憶される各種データに対応するワークフロー定義変更用データ１０７２とが記憶される。なお、ワークフロー定義変更用データ１０７２を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
【０１０６】
そして、ＣＰＵ１０１０がワークフロー定義変更プログラム１０７１をハードディスク装置１０７０から読み出してＲＡＭ１０６０に展開することにより、ワークフロー定義変更プログラム１０７１は、ワークフロー定義変更プロセス１０６１として機能するようになる。そして、ワークフロー定義変更プロセス１０６１は、ワークフロー定義変更用データ１０７２から読み出した情報等を適宜ＲＡＭ１０６０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【０１０７】
なお、ワークフロー定義変更プログラム１０７１は、必ずしもハードディスク装置１０７０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【実施例２】
【０１０８】
ところで、上記実施例１に係るワークフロー定義変更装置１０では、ワークフロー定義を受信し、ワークフローが制約に違反する場合、ワークフロー定義を自動的に変更することで制約違反を解消する例を示したが、ワークフローが制約に違反する場合、システム管理者からワークフロー定義の変更操作を受け付けることで制約違反を解消するように構成してもよい。そこで、実施例２では、ワークフローが制約に違反する場合、システム管理者からワークフロー定義の変更操作を受け付ける例について説明する。
【０１０９】
実施例２に係るワークフロー定義変更装置は、システム管理者によって生成されたワークフロー定義を受信して、状態遷移モデルを生成した後、かかる状態遷移モデルが制約に違反するか否かを判定する。そして、状態遷移モデルが制約に違反する場合、ワークフローと制約とを図形および文字列により表した画面（以下、「ワークフロー画面」という）をモニタに表示させ、かかるワークフロー画面上でワークフロー定義の変更操作を受け付ける。そして、ワークフロー定義の変更操作を受け付けた場合に、再度制約違反の発生有無を判定し、制約違反が発生する場合には、再度ワークフロー画面をモニタに表示させる。
【０１１０】
このような実施例２に係るワークフロー定義変更装置が有する諸機能について、図１７を参照して詳細に説明する。図１７は、実施例２に係るワークフロー定義変更装置の機能構成図である。同図に示すように、ワークフロー定義変更装置２０は、ワークフロー定義変更装置２０を全体制御する制御部２１と、記憶部１２とを有する。なお、ここでは、図１に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
【０１１１】
状態遷移モデル生成部２１２は、実施例１に示した状態遷移モデル生成部１１２と同様に、受信部１１１によって受信されたワークフロー定義を用いて状態遷移モデルを生成する。さらに、実施例２に係る状態遷移モデル生成部２１２は、後述する変更操作受付部２１６が受け付けた変更が加えられたワークフロー定義を用いて状態遷移モデルを生成する。
【０１１２】
制約違反判定部２１３は、状態遷移モデル生成部２１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数の処理手順を実行した際に制約違反が発生するか否かを判定する。そして、制約違反判定部２１３は、制約違反が発生すると判定した場合、制約違反が発生すると判定されたワークフロー（以下、「制約違反ワークフロー」という）と、制約違反ワークフローに含まれる処理手順と同時に同一のリソースを用いる処理手順が含まれるワークフロー（以下、「リソース共有ワークフロー」という）とを特定する。
【０１１３】
表示部２１５は、制約違反判定部２１３による制約違反の判定結果を、ワークフロー定義変更装置２０のモニタに表示させる。具体的には、表示部２１５は、制約違反判定部２１３によって、制約違反が発生しないと判定された場合、制約違反が発生しない旨のメッセージをワークフロー定義変更装置２０のモニタに表示させる。
【０１１４】
一方、表示部２１５は、制約違反判定部２１３によって制約違反が発生すると判定された場合、制約違反ワークフローと、リソース共有ワークフローとを図形および文字列により表したワークフロー画面をモニタに表示させる。このとき、表示部２１５は、同一のリソースを用いる処理手順と、同一のリソースを用いない処理手順とを識別できるように表示させる。また、表示部２１５は、違反となった制約を図形および文字列を用いて表示させる。また、表示部２１５は、異なるワークフローに含まれる二以上の処理手順が同一の時刻に実行される場合、ワークフロー画面における横軸方向または縦軸方向のいずれか一方を時間軸として、同一の時間に実行されることを識別できるようにかかる二以上の処理手順を表示させる。
【０１１５】
以下に、表示部２１５が表示させるワークフロー画面について図１８−１〜図１８−４、図１９−１〜図１９−３および図２０を参照して説明する。なお、以下では、ワークフロー画面の横軸方向を時間軸とする。
【０１１６】
まず、図１８−１〜図１８−４を参照して、表示部２１５が同一のリソースを用いる処理手順と同一のリソースを用いない処理手順とを識別できるように表示させる手法について説明する。以下では、ワークフローＰに含まれる処理手順Ｐ１〜Ｐ４と、ワークフローＱに含まれる処理手順Ｑ１〜Ｑ４の表示手法について説明する。
【０１１７】
図１８−１は、同一のリソースを用いない２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ１と処理手順Ｑ１は、同一のリソースを用いない処理手順であるとする。かかる場合、表示部２１５は、処理手順を所定の図形を用いて表示させる。具体的には、同図に示した例のように、表示部２１５は、処理手順Ｐ１と処理手順Ｑ１とを円形で表示させる。同図の例では、横軸が時間軸のため、処理手順Ｐ１の方が処理手順Ｑ１よりも先に処理を開始することを表している。
【０１１８】
図１８−２は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ２と処理手順Ｑ２の割当タイプはコンカレントであり、同一のリソースを用いる期間が存在するものとする。また、処理手順Ｐ２と処理手順Ｑ２の処理時間は、同一のリソースを用いることで長くなるものとする。かかる場合、表示部２１５は、同一のリソースを用いない処理手順（図１８−１参照）と比較して、処理手順Ｐ２と処理手順Ｑ２との処理手順が長くなることを視覚的に認識できる図形および文字列を用いて、処理手順Ｐ２と処理手順Ｑ２とを表示させる。また、表示部２１５は、処理手順が長くなる理由を示すために、処理手順Ｐ２と処理手順Ｑ２とが同一のリソースを用いることを図形および文字列を用いて表示させる。
【０１１９】
同図に示した例では、表示部２１５は、処理手順Ｐ２と処理手順Ｑ２とを時間軸方向に伸長された楕円形で表示させる。また、表示部２１５は、処理手順Ｐ２と処理手順Ｑ２とを縦軸方向の矢印で結び、「同リソース」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ２と処理手順Ｑ２とは、同時に同一のリソースを使用する期間が存在し、処理手順Ｐ２と処理手順Ｑ２の処理時間が長くなることを視覚的に認識することができる。
【０１２０】
図１８−３は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ３と処理手順Ｑ３の割当タイプはプリエンティブであり、同一のリソースを用いる期間が存在するものとする。また、先にリソースを使用していた処理手順Ｐ３の優先順位の方が後からリソースを使用する処理手順Ｑ３よりも高いものとする。したがって、処理手順Ｐ３の処理手続きが完全に終了した後に、処理手順Ｑ３は処理手続きを開始する。かかる場合、表示部２１５は、処理手順Ｐ３の処理手続きが完全に終了するまで、処理手順Ｑ３が待ち状態になることを視覚的に認識できる図形および文字列を用いて、処理手順Ｐ３と処理手順Ｑ３とを表示させる。
【０１２１】
同図に示した例では、表示部２１５は、処理手順Ｑ３を時間軸方向に伸長された楕円形で表示させる。また、表示部２１５は、処理手順Ｐ３と処理手順Ｑ３とが同一のリソースを用いることを表示させるとともに、処理手順Ｑ３が待ち状態となる期間に斜線を付して「待ち状態」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ３の処理手続きが完了するまで、処理手順Ｑ３が待ち状態となり、処理手順Ｑ３の処理時間が長くなることを視覚的に認識することができる。
【０１２２】
図１８−４は、同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。同図に示した処理手順Ｐ４と処理手順Ｑ４の割当タイプはプリエンティブであり、同一のリソースを用いる期間が存在するものとする。また、先にリソースを使用していた処理手順Ｑ４の優先順位の方が後からリソースを使用する処理手順Ｐ４よりも低いものとする。したがって、処理手順Ｑ４の処理手続き中に処理手順Ｐ４の処理手続きが割り込みをして、処理手順Ｐ４の処理手続きが完了した後に、処理手順Ｑ４が処理手続きを再開する。かかる場合、表示部２１５は、処理手順Ｑ４の処理手続き中に、処理手順Ｐ４の処理手続きが割り込みして、処理手順Ｐ４の処理手続きが完了した後に、処理手順Ｑ４が処理手続きを再開することを視覚的に認識できる図形および文字列を用いて、処理手順Ｐ４と処理手順Ｑ４とを表示させる。
【０１２３】
同図に示した例では、表示部２１５は、処理手順Ｑ４を時間軸方向に伸長された楕円形で表示させる。また、表示部２１５は、処理手順Ｐ４と処理手順Ｑ４とが同一のリソースを用いることを表示させるとともに、処理手順Ｑ４が待ち状態となる期間に斜線を付して「待ち状態」という文字列を表示させる。これにより、システム管理者は、処理手順Ｑ４の処理手続き中に、処理手順Ｐ４の処理手続きが割り込みして、処理手順Ｐ４の処理手続きが完了した後に、処理手順Ｑ４が処理手続きを再開することを視覚的に認識することができる。
【０１２４】
次に、図１９−１〜図１９−３を参照して、表示部２１５が制約違反を表示させる手法について説明する。以下では、ワークフローＰに含まれる処理手順Ｐ５〜Ｐ７と、ワークフローＱに含まれる処理手順Ｑ６およびＱ７の表示手法について説明する。
【０１２５】
図１９−１は、ワークフロー完了時刻の制約に違反したワークフローの表示例を示す図である。同図に示したワークフローＰには、「午後１時に開始して午後３時までに終了すること」という制約があるとする。そして、ワークフローＰは、「午後３時」を過ぎた後にすべての処理手続きが終了するものとする。かかる場合、表示部２１５は、ワークフローＰが「午後３時」までにすべての処理手続きが終了せず、制約に違反していることを表示する。
【０１２６】
同図に示した例では、表示部２１５は、ワークフロー中の「午後３時」になる箇所（同図の例では、処理手順Ｐ５とＥｎｄとの間）に、縦軸方向の線および制約に規定されている完了時刻を表示させるとともに、「デッドライン違反」という文字列を表示させる。これにより、システム管理者は、ワークフローＰが「午後３時までに終了すること」という制約に違反していることを視覚的に認識することができる。
【０１２７】
図１９−２は、処理順序の制約に違反したワークフローの表示例を示す図である。同図に示した処理手順Ｐ６および処理手順Ｑ６には、「処理手順Ｑ６の処理手続きが完了した後に、処理手順Ｐ６の処理手続きが開始されること」という制約があるとする。そして、処理手順Ｑ６は、処理手順Ｐ６の処理手続きが完了した後に、処理手続きを開始するものとする。かかる場合、表示部２１５は、処理手順Ｐ６および処理手順Ｑ６が処理順序の制約に違反していることを表示させる。
【０１２８】
同図に示した例では、表示部２１５は、処理手順Ｑ６から処理手順Ｐ６方向の矢印を表示させるとともに、「処理順序違反」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ６および処理手順Ｑ６が処理順序の制約に違反していることを視覚的に認識することができる。
【０１２９】
図１９−３は、リソース競合の制約に違反したワークフローの表示例を示す図である。同図に示した処理手順Ｐ７と処理手順Ｑ７は、同一のリソースを用いる処理手順であり、この処理手順Ｐ７と処理手順Ｑ７とが用いるリソースには、「２以上の処理手順によって同時に用いられてはならない」という制約があるとする。かかる場合、表示部２１５は、処理手順Ｐ７と処理手順Ｑ７とがリソース競合の制約に違反していることを表示させる。
【０１３０】
同図に示した例では、表示部２１５は、処理手順Ｐ７と処理手順Ｑ７とを縦軸方向の矢印で結び、「リソース競合違反」という文字列を表示させる。これにより、システム管理者は、処理手順Ｐ７と処理手順Ｑ７とが同時に用いられることが禁止されているリソースを同時に用いるためにリソース競合の制約に違反していることを視覚的に認識することができる。
【０１３１】
上述した図１８−１〜図１８−４および図１９−１〜図１９−３に示した表示部２１５によるワークフロー画面の表示手法を用いたワークフロー画面の一例について説明する。図２０は、ワークフロー画面の一例を示す図である。
【０１３２】
同図に示したワークフロー画面には、処理手順Ｐ８およびＰ９を含むワークフローＰと、処理手順Ｑ８〜Ｑ１１を含むワークフローＱとが表示されている。そして、ワークフローＱは、ワークフロー完了時刻の制約に違反している。すなわち、制約違反判定部２１３によって、ワークフローＱが制約違反ワークフローと特定され、ワークフローＱに含まれる処理手順Ｑ１０と同一のリソースを用いている処理手順Ｐ９を含むワークフローＰがリソース共有ワークフローと特定されたことになる。
【０１３３】
同図に示したワークフロー画面を閲覧することで、処理手順Ｐ９と処理手順Ｑ１０とが同時に同一のリソースを用いているために、ワークフローＱの処理時間が長くなっていることを認識できる。その結果、ワークフローＱがワークフロー完了時刻の制約に違反していることを認識できる。
【０１３４】
図１７に示す変更操作受付部２１６は、ワークフロー画面上で、ワークフロー定義の変更操作を受け付ける。具体的には、変更操作受付部２１６は、マウスやキーボード等の入力装置を介して、処理手順、ポリシーおよび制約の変更操作を受け付け、状態遷移モデル生成部２１２に対して、変更後のワークフロー定義を用いて、状態遷移モデルを生成させる。そして、制約違反判定部２１３により制約違反の判定処理が再度行われることになる。
【０１３５】
図２１−１〜図２１−４を参照して、変更操作受付部２１６がワークフロー画面上で受け付けるワークフロー定義の変更操作について説明する。以下では、図２０に示したワークフロー画面上でワークフロー定義の変更操作を受け付ける例について説明する。
【０１３６】
図２１−１は、ワークフロー完了時刻の変更操作例を示す図である。同図に示した例では、変更操作受付部２１６は、「ワークフローＱは午後３時までに終了すること」というワークフロー完了時刻の制約を「ワークフローＱは午後５時までに終了すること」という制約に変更する操作を受け付け、ワークフローＱのワークフロー完了時刻を変更する。
【０１３７】
例えば、変更操作受付部２１６は、マウス等のドラッグ操作によりデッドラインを表す線（図２０の例では、「３ＰＭ」の下部に表示されている線）を移動されることによりワークフロー完了時刻の変更操作を受け付ける。また、例えば、変更操作受付部２１６は、マウス等によりデッドラインを示す線をクリックされると、ワークフロー完了時刻を編集するための画面に遷移させ、かかる画面上でワークフロー完了時刻を編集されることによりワークフロー完了時刻の変更操作を受け付ける。これにより、ワークフローＱに発生していた制約違反を解消することができる。
【０１３８】
図２１−２は、割当タイプの変更操作例を示す図である。同図に示した例では、変更操作受付部２１６は、処理手順Ｐ９およびＱ１０の割当タイプをコンカレントからノンプリエンティブに変更する操作を受け付け、処理手順Ｐ９およびＱ１０の割当タイプを変更する。
【０１３９】
例えば、変更操作受付部２１６は、マウス等により処理手順Ｐ９を表す楕円形の図形、または、処理手順Ｑ１０を表す楕円形の図形をクリックされると、割当タイプと優先順位を編集するための画面に遷移させ、かかる画面上で割当タイプをコンカレントからノンプリエンティブに変更され、かつ、処理手順Ｑ１０の優先順位が処理手順Ｐ９の優先順位よりも高くなるように編集されることにより割当タイプの変更操作を受け付ける。
【０１４０】
また、例えば、変更操作受付部２１６は、マウス等により処理手順Ｐ９を表す楕円形の図形、または、処理手順Ｑ１０を表す楕円形の図形をクリックされると、割当タイプと優先順位を選択するためのプルダウンメニューを表示させ、かかるプルダウンメニューで割当タイプをコンカレントからノンプリエンティブに変更され、かつ、処理手順Ｑ１０の優先順位が処理手順Ｐ９の優先順位よりも高くなるように優先順位が選択されることにより割当タイプの変更操作を受け付ける。これにより、処理手順Ｑ１０の実行が優先的に行われて、処理手順Ｑ１０の処理時間が短くなるので、ワークフローＱに発生していた制約違反を解消することができる。
【０１４１】
図２１−３は、リソースの変更操作例を示す図である。同図に示した例では、変更操作受付部２１６は、処理手順Ｐ９またはＱ１０が用いるリソースを変更する操作を受け付け、処理手順Ｐ９またはＱ１０が用いるリソースを変更する。
【０１４２】
例えば、上記例と同様に、変更操作受付部２１６は、マウス等により処理手順Ｐ９を表す楕円形の図形、または、処理手順Ｑ１０を表す楕円形の図形をクリックされると、用いるリソースを変更するための画面に遷移させたり、用いるリソースを選択するためのプルダウンメニューを表示させたりすることにより、リソースの変更操作を受け付ける。これにより、処理手順Ｐ９と処理手順Ｑ１０とが同一のリソースを用いることがなくなり、処理手順Ｑ１０の処理時間が短くなるので、ワークフローＱに発生していた制約違反を解消することができる。
【０１４３】
なお、ワークフロー定義の変更操作は、図２１−１〜図２１−３の示した例に限られない。ここでは、ワークフロー定義の他の変更操作例をいくつか説明する。例えば、図１９−２に示した例のように、処理順序の制約に違反している場合、変更操作受付部２１６は、マウス等により制約違反を示す図形をクリックされると、「制約削除」や「順序変更」等のメニューを含むプルダウンメニューを表示させる。そして、制約削除を選択された場合、変更操作受付部２１６は、処理順序の制約を削除する。一方、順序変更を選択された場合、変更操作受付部２１６は、処理手順の順序を入れ替えた制約に変更する。図１９−２に示した例では、順序変更を選択された場合に、変更操作受付部２１６は、「処理手順Ｑ６の処理手続きが完了した後に、処理手順Ｐ６の処理手続きが開始されること」という制約を「処理手順Ｐ６の処理手続きが完了した後に、処理手順Ｑ６の処理手続きが開始されること」という制約に変更する。
【０１４４】
また、例えば、図１９−３に示した例のように、リソース競合の制約に違反している場合、変更操作受付部２１６は、マウス等により制約違反を示す図形をクリックされると、「制約削除」や「多重数変更」等のメニューを含むプルダウンメニューを表示させる。そして、多重度変更を選択された場合、変更操作受付部２１６は、同一のリソースを同時に用いることができる処理手順の数（以下、「多重数」という）を編集するための画面に遷移させる。図１９−３に示した例では、処理手順Ｐ７およびＱ７が用いるリソースの多重数を「１」から「２」に変更することでリソース競合の制約違反を解消することができる。
【０１４５】
ここで、変更操作受付部２１６がワークフロー定義の変更操作を受け付けた後に、新たな制約違反が発生する例について説明する。図２１−４は、変更操作を受け付けた後に表示されるワークフロー画面の一例を示す図である。図２１−４では、図２０に示した処理手順Ｑ１０が用いるリソースを変更する操作を受け付けたことにより、新たな制約違反が発生した場合に表示されるワークフロー画面を示す。
【０１４６】
図２１−４に示した例では、図２０に示した処理手順Ｑ１０が用いるリソースが、図２１−４の示したワークフローＲの処理手順Ｒ１により用いられるリソースに変更されることにより、処理手順Ｑ１０の処理時間は短くならず、ワークフローＱの制約違反が解消されていない。また、処理手順Ｒ１の処理時間が長くなるため、ワークフローＲがワークフロー完了時刻の制約に違反している。
【０１４７】
このように、変更操作受付部２１６がワークフロー定義の変更操作を受け付けた後、制約違反判定部２１３は、再度、制約違反の判定処理を行う。そして、制約違反判定部２１３は、制約に違反するワークフローが存在すると判定した場合、制約違反ワークフローおよびリソース共有ワークフローを特定し、表示部２１５は、再度ワークフロー画面をモニタに表示させる。
【０１４８】
次に、実施例２に係るワークフロー定義変更装置２０の処理手順について図２２を参照して説明する。図２２は、実施例２に係るワークフロー定義変更装置２０の処理手順を示すフローチャートである。この処理手順では、システム管理者によって入力されたワークフロー定義を用いて複数のワークフローに制約違反が発生するか否かを判定し、制約違反が発生する場合にはワークフロー画面を表示して、ワークフロー定義の変更操作を受け付ける際の手順について説明する。
【０１４９】
最初に、ワークフロー定義変更装置２０の受信部１１１は、システム管理者によって生成された複数の処理手順、複数のポリシーおよび複数の制約を含むワークフロー定義を受信する（ステップＳ２０１）。
【０１５０】
続いて、状態遷移モデル生成部２１２は、受信部１１１によって受信された複数の処理手順および複数のポリシーを用いて複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ２０２）。
【０１５１】
続いて、制約違反判定部２１３は、状態遷移モデル生成部２１２によって生成された状態遷移モデルおよび受信部１１１によって受信された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定する（ステップＳ２０３）。この判定の結果がＮＯである場合（ステップＳ２０４；ＮＯ）に、表示部２１５は、制約違反が発生しない旨のメッセージをワークフロー定義変更装置２０のモニタに表示させ（ステップＳ２０５）、本処理を終了する。
【０１５２】
一方、制約違反が発生すると判定した場合（ステップＳ２０４；ＹＥＳ）、制約違反判定部２１３は、制約違反ワークフローとリソース共有ワークフローとを特定する（ステップＳ２０６）。
【０１５３】
続いて、表示部２１５は、制約違反判定部２１３によって特定された制約違反ワークフローと、リソース共有ワークフローとを図形および文字列により表したワークフロー画面を、ワークフロー定義変更装置２０のモニタに表示させる（ステップＳ２０７）。
【０１５４】
続いて、変更操作受付部２１６は、ワークフロー画面上で、ワークフロー定義の変更操作を受け付けると（ステップＳ２０８；ＹＥＳ）、状態遷移モデル生成部２１２に対して、変更後のワークフロー定義を入力して状態遷移モデルを生成させる。
【０１５５】
変更操作受付部２１６によって変更後のワークフロー定義を入力された状態遷移モデル生成部２１２は、変更後のワークフロー定義を用い、変更後の複数のワークフローを実行した際の状態遷移モデルを生成する（ステップＳ２０２）。
【０１５６】
続いて、制約違反判定部２１３は、状態遷移モデル生成部２１２によって生成された変更後の状態遷移モデルおよび上記ステップＳ２０８で変更操作受付部２１６が受け付けた変更後の制約を用いて制約違反が発生するか否かを判定する（ステップＳ２０３）。この判定の結果がＹＥＳである場合（ステップＳ２０４；ＹＥＳ）には、上記ステップＳ２０６〜ステップＳ２０８の処理を行う。
【０１５７】
上述してきたように、実施例２に係るワークフロー定義変更装置２０では、システム管理者によって入力された複数の処理手順および複数のポリシーを用い、複数の処理手順に対応するワークフローを実行した際の状態遷移モデルを生成することができ、この状態遷移モデルおよびシステム管理者によって入力された複数の制約を用い、複数のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、制約違反が発生しているワークフローを容易に認識することができ、制約違反が発生した原因を容易に認識することができる。
【０１５８】
また、ワークフロー画面上でワークフロー定義の変更操作を受け付けることができ、変更後のワークフロー定義に基づく状態遷移モデルならびに変更を加えた後の制約を用いて変更後のワークフローを実行した際に制約違反が発生するか否かを判定することができ、この判定で制約違反が発生すると判定された場合に、制約違反ワークフローとリソース共有ワークフローとを特定してワークフロー画面を表示することができる。その結果、システム管理者は、ワークフロー定義を容易に変更することができ、変更後のワークフロー定義が制約に違反するか否かを容易に確認することができる。
【０１５９】
したがって、実施例２に係るワークフロー定義変更装置２０によれば、複数のワークフロー間における制約違反をワークフローの実行前に解消させることができる。
【０１６０】
なお、上記実施例２では、表示部２１５が処理手順Ｐ１等を円形で表示させる例を示したが、処理手順Ｐ１等を矩形や星型等の他の図形を用いて表示させてもよい。
【０１６１】
また、上記実施例２では、制約違反が発生すると判定した場合に、制約違反判定部２１３が制約違反ワークフローおよびリソース共有ワークフローを特定し、表示部２１５が制約違反ワークフローおよびリソース共有ワークフローのみをワークフロー画面に表示させる例を示したが、制約違反が発生すると判定した場合、表示部２１５は、受信部１１１が受信したすべてのワークフローをワークフロー画面に表示させてもよい。
【０１６２】
また、上記実施例２において、表示部２１５は、制約違反が発生すると判定した場合に、制約違反ワークフローとリソース共有ワークフローとを識別できるように表示してもよい。例えば、表示部２１５は、制約違反ワークフローとリソース共有ワークフローとを異なる色により表示する。
【０１６３】
また、上記実施例２において、表示部２１５は、制約違反が発生しないと判定した場合に、制約違反が発生しない旨のメッセージをモニタに表示させるとともに、制約違反が発生しない旨のメッセージを音声によって出力してもよい。また、表示部２１５は、制約違反が発生すると判定した場合に、ワークフロー画面をモニタに表示させるとともに、制約違反が発生する旨のメッセージを音声によって出力してもよい。
【産業上の利用可能性】
【０１６４】
以上のように、本発明に係るワークフロー定義変更プログラムおよびワークフロー定義変更方法は、ワークフロー定義を変更するのに有用であり、特に、複数のワークフロー間における制約違反をワークフローの実行前に解消させることに適している。
【図面の簡単な説明】
【０１６５】
【図１】ワークフロー定義変更装置の機能構成図である。
【図２】ワークフローＡの処理手順を示す図である。
【図３】ワークフローＡの処理手順を示す図である。
【図４】ワークフローＢの処理手順を示す図である。
【図５】ワークフローＢの処理手順を示す図である。
【図６】図２に示すワークフローＡを変換して生成されたオートマトンを示す図である。
【図７】図４に示すワークフローＢを変換して生成されたオートマトンを示す図である。
【図８】積オートマトンを生成するための二つのオートマトンを示す図である。
【図９】図８に示す二つのオートマトンを用いて生成された積オートマトンを示す図である。
【図１０】リソースの競合が生じるロケーションＬ１１を中心とした積オートマトンの一部分を示す図である。
【図１１】図１０に示すロケーションＬ１１においてリソースの割当タイプがノンプリエンティブである場合に加えられる変更を説明するための図である。
【図１２】図１０に示すロケーションＬ１１においてリソースの割当タイプがプリエンティブである場合に加えられる変更を説明するための図である。
【図１３】図１０に示すロケーションＬ１１においてリソースの割当タイプがコンカレントである場合に加えられる変更を説明するための図である。
【図１４】代替ワークフローを表示させるための代替ワークフローデータを例示する図である。
【図１５】ワークフロー定義変更装置の処理手順を示すフローチャートである。
【図１６】ワークフロー定義変更プログラムを実行するコンピュータの機能構成図である。
【図１７】実施例２に係るワークフロー定義変更装置の機能構成図である。
【図１８−１】同一のリソースを用いない２つの処理手順の表示例を示す図である。
【図１８−２】同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。
【図１８−３】同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。
【図１８−４】同時に同一のリソースを用いる２つの処理手順の表示例を示す図である。
【図１９−１】ワークフロー完了時刻の制約に違反したワークフローの表示例を示す図である。
【図１９−２】処理順序の制約に違反したワークフローの表示例を示す図である。
【図１９−３】リソース競合の制約に違反したワークフローの表示例を示す図である。
【図２０】ワークフロー画面の一例を示す図である。
【図２１−１】ワークフロー完了時刻の変更操作例を示す図である。
【図２１−２】割当タイプの変更操作例を示す図である。
【図２１−３】リソースの変更操作例を示す図である。
【図２１−４】変更操作を受け付けた後に表示されるワークフロー画面の一例を示す図である。
【図２２】実施例２に係るワークフロー定義変更装置の処理手順を示すフローチャートである。
【符号の説明】
【０１６６】
１０    ワークフロー定義変更装置
１１    制御部
１２    記憶部
２０    ワークフロー定義変更装置
２１    制御部
１１１    受信部
１１２    状態遷移モデル生成部
１１３    制約違反判定部
１１４    ワークフロー定義変更部
１１５    表示部
１１６    変更変数特定部
２１２    状態遷移モデル生成部
２１３    制約違反判定部
２１５    表示部
２１６    変更操作受付部
１０００    コンピュータ
１０１０    ＣＰＵ
１０２０    入力装置
１０３０    モニタ
１０４０    媒体読取装置
１０５０    通信装置
１０６０    ＲＡＭ
１０６１    ワークフロー定義変更プロセス
１０７０    ハードディスク装置
１０７１    ワークフロー定義変更プログラム
１０７２    ワークフロー定義変更用データ
１０８０    バス
【国際調査報告】
2008152910.tif 000033
2008152910.tif 000034
2008152910.tif 000035
2008152910.tif 000036