(57)【要約】【課題】複数のワークフローから省略可能な処理を特定する。【解決手段】ワークフロー制御装置１の制御部４は、ワークフロー定義情報２に基づいて、ワークフロー１１，１２に含まれる処理の中から同一のリソースを用いた処理１１ａ，１１ｂ，１２ｂ，１２ｃを特定し、ワークフロー定義情報２に定義された処理１１ａ，１１ｂ，１２ｂ，１２ｃそれぞれの内容に基づいて、これらの処理の実行順序を特定する。制御部４は、特定された処理１１ａ，１１ｂ，１２ｂ，１２ｃそれぞれの内容と、特定されたこれらの処理の実行順序とに基づいて、これらの処理の中から実行を省略可能な処理１１ｂ，１２ｂを特定する。【選択図】図１
2014191603.tif 000002
【特許請求の範囲】
【請求項１】
同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するためのワークフロー制御プログラムにおいて、
コンピュータに、
前記複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報に基づいて、前記複数のワークフローに含まれる処理の中から前記リソースを用いた複数の処理を特定し、
前記ワークフロー定義情報に定義された、特定された前記複数の処理それぞれの内容に基づいて、前記複数の処理の実行順序を特定し、
特定された前記複数の処理それぞれの内容と前記複数の処理の実行順序とに基づいて、前記複数の処理の中から実行を省略可能な処理を特定する、
処理を実行させることを特徴とするワークフロー制御プログラム。
【請求項２】
前記コンピュータに、
特定された前記省略可能な処理の実行をスキップする、
処理をさらに実行させることを特徴とする請求項１記載のワークフロー制御プログラム。
【請求項３】
前記省略可能な処理の実行をスキップしたとき、前記スキップされた処理の処理結果を生成して処理結果記憶部に格納することを特徴とする請求項２記載のワークフロー制御プログラム。
【請求項４】
前記処理結果の格納では、処理の内容ごとにあらかじめ決められた処理結果を前記スキップされた処理の処理結果として前記処理結果記憶部に格納することを特徴とする請求項３記載のワークフロー制御プログラム。
【請求項５】
前記処理結果の格納では、前記スキップされた処理と同じ内容の処理が過去に実行されていた場合、当該処理の処理結果を前記スキップされた処理の処理結果として前記処理結果記憶部に格納することを特徴とする請求項３または４記載のワークフロー制御プログラム。
【請求項６】
前記省略可能な処理の実行をスキップしたとき、前記スキップされた処理に処理結果の編集処理を行うことが定義されていた場合、生成した処理結果に前記編集処理を行うことを特徴とする請求項３〜５のいずれか１項に記載のワークフロー制御プログラム。
【請求項７】
前記コンピュータに、
前記複数のワークフローそれぞれの実行状況に応じて、前記複数の処理の実行順序を特定し直し、
特定し直された前記複数の処理の実行順序に基づいて前記省略可能な処理を特定し直し、
前記省略可能な処理の特定し直しにより、実行がスキップされた処理の中に実行が省略可能でない状態となった処理がある場合、当該処理を実行する、
処理をさらに実行させることを特徴とする請求項３〜６のいずれか１項に記載のワークフロー制御プログラム。
【請求項８】
前記コンピュータに、
前記複数の処理が実行される区間をワークフローごとに分割した分割区間ごとに、実行優先度を計算する、
処理をさらに実行させ、
前記複数の処理の実行順序の特定では、算出された前記実行優先度に基づいて前記分割区間の実行順序を決定する、
ことを特徴とする請求項１〜６のいずれか１項に記載のワークフロー制御プログラム。
【請求項９】
前記コンピュータに、
前記実行優先度が変更された場合に、変更後の前記実行優先度に基づいて前記複数の処理の実行順序を特定し直し、
特定し直された前記複数の処理の実行順序に基づいて前記省略可能な処理を特定し直す、
処理をさらに実行させることを特徴とする請求項８記載のワークフロー制御プログラム。
【請求項１０】
前記コンピュータに、
前記複数のワークフローに含まれる処理の中に条件分岐処理が存在し、前記条件分岐処理が実行されたとき、当該条件分岐処理の次に実行される処理系列のうち分岐先として選択されなかった処理系列に、前記リソースを用いた処理が含まれている場合には、前記複数の処理から前記選択されなかった処理系列に含まれる処理を除外して、前記省略可能な処理を特定し直す、
処理をさらに実行させることを特徴とする請求項１〜６，８，９のいずれか１項に記載のワークフロー制御プログラム。
【請求項１１】
前記省略可能な処理の特定では、前記複数の処理のうち、前記リソースに対して相反する処理をそれぞれ行う連続する２つの処理を、前記省略可能な処理と特定することを特徴とする請求項１〜１０のいずれか１項に記載のワークフロー制御プログラム。
【請求項１２】
前記省略可能な処理の特定では、前記複数の処理から、前記リソースに対して同じ内容の処理をそれぞれ行う連続する２つの処理を抽出し、抽出された前記２つの処理のうち一方を前記省略可能な処理と特定することを特徴とする請求項１〜１１のいずれか１項に記載のワークフロー制御プログラム。
【請求項１３】
同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するワークフロー制御装置において、
前記複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報を記憶する記憶部と、
前記ワークフロー定義情報に基づいて、前記複数のワークフローに含まれる処理の中から前記リソースを用いた複数の処理を特定し、前記ワークフロー定義情報に定義された、特定された前記複数の処理それぞれの内容に基づいて、前記複数の処理の実行順序を特定し、特定された前記複数の処理それぞれの内容と前記複数の処理の実行順序とに基づいて、前記複数の処理の中から実行を省略可能な処理を特定する制御部と、
を有することを特徴とするワークフロー制御装置。
【請求項１４】
同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するワークフロー制御方法において、
コンピュータが、
前記複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報に基づいて、前記複数のワークフローに含まれる処理の中から前記リソースを用いた複数の処理を特定し、
前記ワークフロー定義情報に定義された、特定された前記複数の処理それぞれの内容に基づいて、前記複数の処理の実行順序を特定し、
特定された前記複数の処理それぞれの内容と前記複数の処理の実行順序とに基づいて、前記複数の処理の中から実行を省略可能な処理を特定する、
ことを特徴とするワークフロー制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフロー制御プログラム、装置および方法に関する。
【背景技術】
【０００２】
業務システムは、サーバ、ストレージ、ネットワーク機器などの多数の装置や、それらの装置に搭載されたＯＳ（Operating System）、ミドルウェア、アプリケーションなどのプログラムといった、多くの資源によって構成されている。このような業務システムが複数稼働している状況において、データセンタは、それらの業務システムの監視や保守作業などの運用作業を行う。
【０００３】
近年、業務システムの運用作業をワークフロー化して自動化を進める技術として、ＲＢＡ（Runbook Automation）技術が注目されている。ＲＢＡ技術により、単純作業による運用負荷の軽減、ヒューマンエラーの削減、運用コストの低減といった様々な効果が期待できる。
【０００４】
また、ワークフローに関する技術としては、例えば、接続するデバイスから複数機能のうちの有効な組み合わせの情報を受け取り、その情報を基にユーザがワークフローを編集するようにしたワークフローシステムがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−００９２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ワークフローの設計者は、個々のワークフローにおいて無駄な処理が発生しないように設計を行う。しかしながら、設計者が複数のワークフロー間の処理の関係を考慮しながら各ワークフローを設計することは容易でない。このため、複数のワークフローが実行される状況では、省略可能な無駄な処理が実行される可能性がある。このように無駄な処理が実行されると、処理全体の実行時間が長くなる、ネットワーク負荷が高くなるといった問題が生じる。
【０００７】
１つの側面では、本発明は、複数のワークフローから省略可能な処理を特定できるワークフロー制御プログラム、装置および方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するためのワークフロー制御プログラムが提供される。このワークフロー制御プログラムを実行するコンピュータは、次のような処理を実行する。コンピュータは、複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報に基づいて、複数のワークフローに含まれる処理の中から上記のリソースを用いた複数の処理を特定する。また、コンピュータは、ワークフロー定義情報に定義された、特定された複数の処理それぞれの内容に基づいて、複数の処理の実行順序を特定する。また、コンピュータは、特定された複数の処理それぞれの内容と複数の処理の実行順序とに基づいて、複数の処理の中から実行を省略可能な処理を特定する。
【０００９】
また、１つの案では、上記のワークフロー制御プログラムを実行するコンピュータと同様の処理を実行するワークフロー制御装置およびワークフロー制御方法が提供される。
【発明の効果】
【００１０】
１態様によれば、複数のワークフローから省略可能な処理を特定できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るワークフロー制御装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る運用システムの構成例を示す図である。
【図３】運用自動化サーバのハードウェア構成例を示す図である。
【図４】運用自動化サーバの処理機能の構成例を示すブロック図である。
【図５】運用自動化サーバの処理全体の例を示すフローチャートである。
【図６】ワークフローに定義されている運用操作部品のモデル化について説明するための図である。
【図７】同一の操作対象／同一の変数利用に基づいて排他区間を決定する処理について説明するための図である。
【図８】排他区間のロックの競合関係を説明するための図である。
【図９】排他区間の結合の例を示す図である。
【図１０】排他区間の分割の例を示す図である。
【図１１】最も大きい実行優先度を持つ排他区間の抽出処理、および次の運用操作部品の実行判断処理の例を示す図である。
【図１２】最も大きい実行優先度を持つ排他区間の抽出処理、および次の運用操作部品の実行判断処理の例を示す図である。
【図１３】ワークフロー実行中に実行優先度が変更された場合のワークフローの排他権（実行権）獲得例を示す図である。
【図１４】ワークフロー実行中に実行優先度が変更された場合のワークフローの排他権（実行権）獲得例を示す図である。
【図１５】同一操作対象に対する冗長な操作を含む複数のワークフローの例を示す図である。
【図１６】冗長な操作の動的な検出・省略についての課題を説明するための第１の図である。
【図１７】冗長な操作の動的な検出・省略についての課題を説明するための第２の図である。
【図１８】最適化制御ワークフローの組み立ての例を示す図である。
【図１９】最適化条件に基づく操作の省略の例を示す図である。
【図２０】省略した運用操作部品の実行結果の設定処理例を示す図である。
【図２１】操作の実行省略時におけるフィルタ処理の例を示す図である。
【図２２】条件分岐を含むワークフローの例を示す図である。
【図２３】条件分岐に応じた最適化制御ワークフローの再組み立ての例を示す図である。
【図２４】実行優先度の変化に応じた最適化制御ワークフローの再組み立ての例を示す図である。
【図２５】最適化制御ワークフローの再組み立てによる実行省略対象の変化の例を示す図である。
【図２６】最適化制御ワークフローの組み立てタイミングについて説明するための図である。
【図２７】最適化制御ワークフローの一覧表示の例を示す図である。
【図２８】最適化制御ワークフローの内容の表示例を示す図である。
【図２９】ワークフロー管理テーブルの例を示す図である。
【図３０】運用操作部品定義テーブルの例を示す図である。
【図３１】変数管理テーブルの例を示す図である。
【図３２】インスタンス管理テーブルの例を示す図である。
【図３３】排他情報管理テーブルの例を示す図である。
【図３４】排他獲得履歴テーブルの例を示す図である。
【図３５】ユーザ係数テーブルの例を示す図である。
【図３６】起動方式係数テーブルの例を示す図である。
【図３７】時間係数テーブルの例を示す図である。
【図３８】一方の最適化対象部品定義テーブルの例を示す図である。
【図３９】他方の最適化対象部品定義テーブルの例を示す図である。
【図４０】最適化制御ワークフロー管理テーブルの例を示す図である。
【図４１】実行結果管理テーブルの例を示す図である。
【図４２】ワークフロー実行部の処理例を示すフローチャートである。
【図４３】実行を省略する運用操作部品の出力情報の組み立て処理の例を示すフローチャートである。
【図４４】排他制御部の処理例を示すフローチャートである。
【図４５】ワークフロー開始時の排他制御処理の例を示すフローチャートである。
【図４６】排他情報の仮決定の処理例を示すフローチャートである。
【図４７】排他情報の実行優先度の計算処理例を示すフローチャートである。
【図４８】ワークフロー動作中の排他制御処理の例を示すフローチャートである。
【図４９】排他アクション決定処理の例を示すフローチャートである。
【図５０】最適化制御ワークフロー組み立て（登録）の処理例を示すフローチャートである。
【図５１】最適化制御ワークフロー組み立て（変更）の処理例を示すフローチャートである。
【図５２】最適化制御ワークフロー組み立て（削除）の処理例を示すフローチャートである。
【図５３】補正処理の例を示すフローチャートである。
【図５４】異なる排他区間のループが発生し得るワークフローの例を示す図である。
【図５５】並列分岐を含むワークフローの例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るワークフロー制御装置の構成例および処理例を示す図である。ワークフロー制御装置１は、複数のワークフローの実行を制御する装置であり、ワークフロー定義情報２が記憶された記憶部３と、制御部４を有する。
【００１３】
ワークフロー定義情報２には、複数のワークフローそれぞれに含まれる処理の内容が定義されている。各ワークフローには、１つ以上の処理が含まれている。ワークフローに含まれる個々の処理とは、例えば、リソース（資源）の監視や保守などのためにそのリソースに何らかの操作を行う処理である。リソースとは、例えば、ワークフロー制御装置１の外部の装置、外部の装置で実行されるプログラムなどである。図１の例では、外部の装置の例としてサーバ５を示している。また、複数のワークフローそれぞれは、同一のリソースを用いた処理を含み得る。
【００１４】
制御部４は、ワークフロー定義情報２に基づいて、複数のワークフローに含まれる処理の中から、同一のリソースを用いた複数の処理を特定する。制御部４は、ワークフロー定義情報２に定義された、特定された複数の処理それぞれの内容に基づいて、これら複数の処理の実行順序を特定する。そして、制御部４は、特定された複数の処理それぞれの内容と、特定された複数の処理の実行順序とに基づいて、これら複数の処理の中から実行を省略可能な処理を特定する。これにより、制御部４は、複数のワークフローから、実行を省略可能な処理を特定することができる。
【００１５】
図１の右側では、ワークフロー１１，１２を例示している。以下、これらのワークフロー１１，１２の例を用いて、制御部４の処理例について説明する。
ワークフロー１１は、処理１１ａ〜１１ｄを含む。ワークフロー１２は、処理１２ａ〜１２ｃを含む。制御部４は、ワークフロー１１，１２に含まれる処理の中から、例えばリソースＲを用いた処理を特定する（ステップＳ１）。ワークフロー１１において、処理１１ａ，１１ｂがリソースＲを用いた処理として特定されたとする。以下、処理１１ａ，１１ｂが順に実行される区間を「区間ｒ１」と呼ぶ。一方、ワークフロー１２において、処理１２ｂ，１２ｃがリソースＲを用いた処理として特定されたとする。以下、処理１２ａ，１２ｂが順に実行される区間を「区間ｒ２」と呼ぶ。
【００１６】
次に、制御部４は、ワークフロー定義情報２に定義された、処理１１ａ，１１ｂ，１２ｂ，１２ｃの各処理内容の情報に基づいて、これらの処理１１ａ，１１ｂ，１２ｂ，１２ｃの実行順序を特定する（ステップＳ２）。ここでは、処理１１ａ，１１ｂ，１２ｂ，１２ｃの順に特定されたとする。なお、実行順序の特定は、例えば、区間ｒ１，ｒ２の実行優先度を計算することによって行われる。
【００１７】
次に、制御部４は、処理１１ａ，１１ｂ，１２ｂ，１２ｃの各処理内容の情報と、特定されたこれらの実行順序とに基づいて、これらの処理の中から実行を省略可能な処理を特定する（ステップＳ３）。ここでは、処理１１ｂ，１２ｂの実行を省略可能と判定されたものとする。なお、制御部４はその後、処理１１ｂ，１２ｂの処理タイミングになったとき、処理１１ｂ，１２ｂをスキップして処理１２ｃを実行することができる。
【００１８】
以上の処理によれば、同一のリソースを用いた処理の内容に基づくことで、処理内容の解析および比較が容易になり、その結果、省略可能な処理の特定が容易になり、かつ、その特定精度を高めることができる。例えば、同一のリソースを用いた処理を特定することで、それらの中から内容が同一の処理や、相反する内容の処理を容易に特定することができる。
【００１９】
また、同一のリソースを用いた処理の内容に基づいて特定された処理の実行順序に基づくことで、省略可能な処理を特定する際にどの処理の内容とどの処理の内容とを比較すべきか、適切に判断することができる。例えば、同一のリソースを用いた複数の処理は、処理の実行タイミングが重複しないため、各処理の実行順序が時系列的に明確に特定される。例えば、省略可能な処理が連続する２つの処理のうちの一方または双方である場合、連続する２つの処理を適切に判断することができる。
【００２０】
さらに、各ワークフローにおいて同一のリソースを用いた処理が実行される区間（例えば、図１の区間ｒ１と区間ｒ２）は、その区間を単位として排他的に実行されることが好ましい。これにより、処理内容や処理結果の整合性が保たれるとともに、処理効率が向上する。
【００２１】
この場合、ワークフロー制御装置１は、同一のリソースを用いた処理に着目して省略可能な処理を特定することにより、処理１つ１つを単位とするのではなく、排他的に実行される区間を単位として実行順序を特定することができる。その結果、適切な処理同士の内容を比較して省略可能な処理を判定することができるようになる。例えば図１のワークフロー１１，１２の場合、区間ｒ１，ｒ２を単位として比較することで、比較すべき処理のペアは処理１１ａと処理１２ｃ、および処理１１ｂと処理１２ｂの２通りに限定される。また、省略可能と判定した処理の実行をスキップした場合に、処理の整合性が崩れる可能性も低減される。
【００２２】
〔第２の実施の形態〕
図２は、第２の実施の形態に係る運用システムの構成例を示す図である。運用システムは、運用自動化サーバ１００と、１つ以上の業務サーバ２１０とを含む。運用自動化サーバ１００と業務サーバ２１０とは、ネットワーク２００を介して接続されている。業務サーバ２１０は、各種の業務処理を実行する。運用自動化サーバ１００は、業務サーバ２１０の監視や保守作業などの運用作業を自動化して管理する。運用自動化サーバ１００は、ＲＢＡ技術を用いて、業務サーバ２１０の運用作業手順が記述されたワークフローに従って業務サーバ２１０の運用を管理する。
【００２３】
図３は、運用自動化サーバのハードウェア構成例を示す図である。運用自動化サーバ１００は、例えば、図３に示すようなコンピュータとして実現される。
運用自動化サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０８を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２４】
ＲＡＭ１０２は、運用自動化サーバ１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２５】
バス１０８に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６および通信インタフェース１０７がある。
【００２６】
ＨＤＤ１０３は、運用自動化サーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００２７】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像を表示装置１０４ａの画面に表示させる。表示装置としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００２８】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００２９】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３０】
通信インタフェース１０７は、ネットワーク２００を介して、業務サーバ２１０などの他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、運用自動化サーバ１００の処理機能を実現することができる。なお、図２に示した業務サーバ２１０、および図１に示したワークフロー制御装置１も、図３に示したハードウェアを有するコンピュータとして実現することができる。
【００３１】
図４は、運用自動化サーバの処理機能の構成例を示すブロック図である。運用自動化サーバ１００は、排他制御部１１０およびワークフロー実行部１２０を備える。排他制御部１１０およびワークフロー実行部１２０の処理は、例えば、運用自動化サーバ１００が備えるＣＰＵ１０１が所定のプログラムを実行することによって実現される。
【００３２】
排他制御部１１０は、ワークフローの実行を管理する。ここで、排他区間とは、ワークフローにおいて排他制御を行う所定の区間をいう。排他制御とは、複数のワークフローが同時に動作して、共通の資源を同時に使用すると競合状態になる場合に、いずれかのワークフローを優先して動作させ、その他のワークフローを処理待ち状態にして、競合を回避させることをいう。
【００３３】
排他制御部１１０は、ワークフローの実行時に排他区間を動的に決定する。排他制御部１１０は、排他区間の決定に際して、未来を予測した操作優先度に従ってワークフローの実行順を制御する。また、排他制御部１１０は、冗長な作業を排除して作業手順を最適化する。
【００３４】
ワークフロー実行部１２０は、排他制御部１１０の制御の下でワークフローを実行する。ワークフロー実行部１２０は、ワークフローごとに個別に設けられる。従って、複数のワークフローが実行される場合、ワークフロー実行部１２０も複数存在する。
【００３５】
また、運用自動化サーバ１００は、排他制御部１１０およびワークフロー実行部１２０の処理時に利用される各種の情報を記憶する記憶部１３０を備える。記憶部１３０には、ワークフロー管理テーブル１３１、運用操作部品定義テーブル１３２、変数管理テーブル１３３、インスタンス管理テーブル１３４、排他情報管理テーブル１３５、排他獲得履歴テーブル１３６、ユーザ係数テーブル１３７、起動方式係数テーブル１３８、時間係数テーブル１３９、最適化対象部品定義テーブル１４０、最適化制御ワークフロー管理テーブル１４１および実行結果管理テーブル１４２が記憶される。
【００３６】
ワークフロー管理テーブル１３１には、各ワークフローに含まれる運用操作部品の情報が格納される。運用操作部品定義テーブル１３２には、運用操作部品の定義情報が格納される。
【００３７】
変数管理テーブル１３３には、インスタンスで利用される変数名や変数値が格納される。インスタンス管理テーブル１３４には、インスタンス単位で管理される情報が格納される。
【００３８】
排他情報管理テーブル１３５には、排他区間に関する情報が格納される。排他獲得履歴テーブル１３６には、排他区間の排他権（実行権）の獲得の履歴情報が格納される。
ユーザ係数テーブル１３７には、ユーザごとのユーザ係数が格納される。起動方式係数テーブル１３８には、ワークフローの起動方法ごとの起動方式係数が格納される。時間係数テーブル１３９には、処理が完了するまでの残り時間ごとの時間係数が格納される。
【００３９】
最適化対象部品定義テーブル１４０には、最適化（すなわち、運用操作部品の実行省略）の対象となる運用操作部品に関する情報が格納される。最適化制御ワークフロー管理テーブル１４１には、排他資源ごとに組み立てられる最適化制御ワークフローに関する情報が格納される。実行結果管理テーブル１４２には、最適化の対象となる運用操作部品の実行結果に関する情報が格納される。
【００４０】
次に、運用自動化サーバ１００の処理について詳しく説明する。以下の説明では、まず、運用自動化サーバ１００の基本的な処理である「ワークフロー実行時における動的な排他制御」について説明する。その後に、「冗長作業排除による作業手順の最適化制御」について説明する。
【００４１】
＜ワークフロー実行時における動的な排他制御＞
運用自動化サーバ１００は、複数のワークフローの実行時において、各ワークフローの進捗状況に応じて適切な排他区間を動的に決定する。
【００４２】
排他制御部１１０は、ワークフローの動作開始時に、運用操作部品の種類と利用している資源（操作対象や変数）とから排他区間を仮決定する。排他制御部１１０は、仮決定した排他区間を基準として、ワークフローの動作中に他のワークフローの実行状況と排他状況を考慮して排他区間を動的に決定する。ここで、運用操作部品とは、ワークフローに含まれる各処理を業務サーバ２１０に自動的に実行させるように、業務サーバ２１０に対する運用操作を自動的に実行するよう記述したスクリプトである。
【００４３】
また、排他制御部１１０は、排他を獲得する際に、獲得済みの排他と、排他を獲得していない他のワークフローの排他取得予定情報、実行優先度を考慮することで、予測に基づいた排他制御を行う。そのために、排他制御部１１０は、ワークフローの作業の順序を適宜変更する。
【００４４】
図５は、運用自動化サーバの処理全体の例を示すフローチャートである。運用自動化サーバ１００へのワークフローの登録時に、排他制御部１１０は、モデル化処理（ステップＳ１１）、排他区間の初期設定処理（ステップＳ１２）を行う。また、ワークフローの動作時に、排他制御部１１０は、排他区間の再設定処理（ステップＳ１３）を行う。
【００４５】
まず、ワークフロー登録時の処理について説明する。モデル化処理（ステップＳ１１）では、次のような処理が行われる。
排他制御部１１０は、登録されたワークフローの運用操作部品の内容に基づいて、運用操作部品をグループ分けし、操作重要度を定義する。例えば、排他制御部１１０は、業務サーバ２１０への情報の登録、ネットワークの設定などの設定系の運用操作部品の操作重要度を、「高（または「３」）」に設定する。また、排他制御部１１０は、ＯＳの再起動、サービスの起動などの操作系の運用操作部品の操作重要度を、例えば、「中（または「２」）」に設定する。また、排他制御部１１０は、サーバ／サービスの状態確認などの参照・確認・通知系の運用操作部品の操作重要度を、例えば、「低（または「１」）」に設定する。これにより、次の図６で説明するように、ワークフローに定義されている運用操作部品をモデル化することができる。モデル化したワークフローによって、各運用操作部品の操作重要度が決定される。
【００４６】
図６は、ワークフローに定義されている運用操作部品のモデル化について説明するための図である。図６の例では、ワークフローＡには、「操作対象、資源の取得」２１、「サービスの停止」２２、「サービスの停止確認」２３、「サーバ停止」２４、「サーバ起動」２５、「サーバの起動確認」２６、「エラー通知メール」２７，２８の各運用操作部品が定義されている。また、ワークフローＢには、「操作対象、資源の取得」３１、「ソフトウェアのインストール」３２、「情報登録」３３、「サーバ再起動」３４、「サーバの起動確認」３５、「メール送信」３６、「エラー通知メール」３７の各運用操作部品が定義されている。
【００４７】
ワークフローＡがモデル化されると、「操作対象、資源の取得」２１は「参照系」２１−１にモデル化され、重要度：１が設定される。「サービスの停止」２２は「操作系」２２−１にモデル化され、重要度：２が設定される。「サービスの停止確認」２３は「参照系」２３−１にモデル化され、重要度：１が設定される。「サーバ停止」２４は「操作系」２４−１にモデル化され、重要度：２が設定される。「サーバ起動」２５は「操作系」２５−１にモデル化され、重要度：２が設定される。「サーバの起動確認」２６は「参照系」２６−１にモデル化され、重要度：１が設定される。「エラー通知メール」２７，２８は通知系２７−１，２８−１にそれぞれモデル化される。
【００４８】
また、ワークフローＢがモデル化されると、「操作対象、資源の取得」３１は「参照系」３１−１にモデル化され、重要度：１が設定される。「ソフトウェアのインストール」３２は「設定系」３２−１にモデル化され、重要度：３が設定される。「情報登録」３３は「設定系」３３−１にモデル化され、重要度：３が設定される。「サーバ再起動」３４は「操作系」３４−１にモデル化され、重要度：２が設定される。「サーバの起動確認」３５は「参照系」３５−１にモデル化され、重要度：１が設定される。「メール送信」３６および「エラー通知メール」３７は、「通知系」３６−１，３７−１にそれぞれモデル化される。
【００４９】
次に、排他区間の初期設定処理（図５のステップＳ１２）では、次のような処理が行われる。
排他制御部１１０は、次の図７および図８で説明するように、（ｉ）同一の操作対象／同一の変数利用、および（ｉｉ）各運用操作部品で利用する資源の流れ（変数の受け渡し）に基づいて、排他区間を自動的に決定する。具体的には、排他制御部１１０は、連続する運用操作部品について、操作対象サーバが同じか否か、または操作対象サーバと操作内容（サービス、インストールするソフトウェア）が同じか否かに基づいて、排他区間を決定する。なお、［排他区間：Ａ］の“Ａ”を「排他区間名」と定義する。
【００５０】
例えば、操作対象がサーバＡの区間は、［排他区間：Ａ］で定義される。操作対象がサーバＢの区間は、［排他区間：Ｂ］で定義される。また、［排他区間：Ａ］において、ServiceXに対する操作の区間は［排他区間：Ａ＋Ｘ］で定義される。また、［排他区間：Ａ］において、InstallSoftYに対する操作の区間は［排他区間：Ａ＋Ｙ］で定義される。また、運用操作部品の出力情報が後続の運用操作部品の入力となっている区間は、［排他区間：Ｃ］で定義される。
【００５１】
図７は、同一の操作対象／同一の変数利用に基づいて排他区間を決定する処理について説明するための図である。
図７（Ａ）において、運用操作部品２２−１，２３−１について、操作対象サーバは「サーバＡ」で同じであり、サービスも「サービスＸ」で同じである。この場合、排他制御部１１０は、運用操作部品２２−１，２３−１について［排他区間：Ａ＋Ｘ］と決定する。運用操作部品２４−１について、操作対象サーバはサーバＡである。この場合、排他制御部１１０は、運用操作部品２４−１について［排他区間：Ａ］と決定する。運用操作部品２５−１，２６−１について、操作対象サーバはサーバＢである。この場合、排他制御部１１０は、運用操作部品２５−１，２６−１について［排他区間：Ｂ］と決定する。
【００５２】
図７（Ｂ）において、排他制御部１１０は、運用操作部品３２−１，３３−１について［排他区間：Ａ＋Ｙ］と決定し、運用操作部品３４−１，３５−１について［排他区間：Ａ］と決定する。
【００５３】
なお、排他制御部１１０は、各運用操作部品で利用する資源の流れ（変数の受け渡し）に基づいて、排他区間を決定することもできる。この処理では、排他制御部１１０は、運用操作部品の出力値が後続の運用操作部品の入力値になっているか否かに基づいて、排他制御の範囲を選定する。例えば、あるサーバ（サーバＣとする）から取得したイベントログ（ログ情報）がデータベースサーバに格納される場合、排他制御部１１０は、その区間について［排他区間：Ｃ］と定義する。
【００５４】
各排他区間におけるロックの競合関係は、排他区間名が以下のいずれかの場合である。
・排他を獲得する排他区間名が、排他獲得済みの排他区間名と部分一致する。
・排他獲得済みの排他区間名が、排他を獲得する排他区間名と部分一致する。
【００５５】
従って、排他制御部１１０は、排他を獲得する排他区間名が、排他獲得済みの排他区間名と部分一致するか、または、排他獲得済みの排他区間名が、排他を獲得する排他区間名と部分一致するかを判定する。排他を獲得する排他区間名が、排他獲得済みの排他区間名と部分一致すると判定した場合、排他制御部１１０は、排他ロックが競合関係にあると判定する。また、排他獲得済みの排他区間名が、排他を獲得する排他区間名と部分一致すると判定した場合、排他制御部１１０は、排他ロックが競合関係にあると判定する。
【００５６】
図８は、排他区間のロックの競合関係を説明するための図である。例えば、排他獲得済みの排他区間が［排他区間：Ａ］の場合であって、排他を獲得する排他区間が［排他区間：Ａ］、［排他区間： Ａ＋Ｘ］または［排他区間： Ａ＋Ｙ］の場合、排他ロックは競合関係になる。一方、排他獲得済みの排他区間が［排他区間：Ａ］の場合であって、排他を獲得する排他区間が［排他区間：Ｂ］、または［排他区間：Ｃ］の場合、排他ロックは競合関係にならない。
【００５７】
次に、ワークフロー動作時の処理について説明する。排他区間の再設定処理（図５のステップＳ１３）では、次のような処理が行われる。
ワークフローが起動すると、排他制御部１１０は、ワークフローの内容を取得して分析する。そして、ワークフローに含まれるすべての運用操作部品について次の処理が実行される。排他制御部１１０は、起動したワークフローにおいて、排他区間の調整および決定を行い、また、動作中のワークフローにおいて、排他区間の調整および決定を行う。ワークフロー実行部１２０は、その調整および決定結果に基づいて、運用操作部品を実行するように、業務サーバ２１０に命令する。
【００５８】
以下、ワークフロー動作時の上記処理について詳細を示す。
（１−１）ワークフローの内容を取得・分析の詳細
ワークフロー起動時に、排他制御部１１０は、実行優先度を以下の処理により決定する。まず、排他制御部１１０は、あらかじめ運用自動化サーバ１００の記憶装置に登録された、ワークフローに定義されている運用操作部品および利用する資源の情報を取得する。次に、排他制御部１１０は、各運用操作部品で利用する資源の情報（操作対象の情報／変数の内容）に基づいて、図５のステップＳ１２と同様の処理を再度実行し、次の場合に排他区間を再設定する。すなわち、排他制御部１１０は、異なる変数が入力される排他区間において、その変数が同じ値に変更された場合にはその排他区間を結合する。また、排他制御部１１０は、同じ変数で設定した排他区間において、その変数の内容が変更された場合にその排他区間を分割する。
【００５９】
図９は、排他区間の結合の例を示す図である。この図９の例は、異なる変数で設定した排他区間において、その変数が同じ値に変更された場合に、その排他区間が結合されることを示す。排他区間の結合前では、運用操作部品２２−１〜２４−１については［排他区間：Ａ］が設定され、運用操作部品２５−１〜２６−１については［排他区間：Ｂ］が設定されている。
【００６０】
その後、ワークフローが実行されて、変数の値に変化が生じたとする。このとき、運用操作部品２２−１〜２４−１に設定された変数Ａの値は「ServerA」であり、運用操作部品２５−１〜２６−１に設定された変数Ｂの値も「ServerA」である。この場合、隣接する［排他区間：Ａ］と［排他区間：Ｂ］において変数Ａの値と変数Ｂの値が同じなので、排他制御部１１０は、［排他区間：Ａ］と［排他区間：Ｂ］とを結合し、［排他区間：Ａ］とする。
【００６１】
図１０は、排他区間の分割の例を示す図である。この図１０の例は、同じ変数で設定した排他区間において、変数の内容が変更された場合に、排他区間が分割されることを示す。排他区間の分割前では、運用操作部品２２−１〜２６−１については［排他区間：Ａ］が設定されている。
【００６２】
その後、ワークフローが実行されて、変数の値に変化が生じたとする。このとき、運用操作部品２２−１〜２３−１に設定された変数Ａの値は「ServerA」である。一方、運用操作部品２４−１〜２６−１に設定された変数Ａの値は「ServerB」である。この場合、運用操作部品２２−１〜２３−１と運用操作部品２４−１〜２６−１の間で変数Ａの値が異なるので、排他制御部１１０は、［排他区間：Ａ］を分割し、［排他区間：Ａ］と［排他区間：Ｂ］を形成する。
【００６３】
次に、排他制御部１１０は、以下の式（１）に従い、ワークフローを起動したユーザと、ワークフローの起動の仕方と、完了予定時刻までの残り時間とに応じて、操作緊急度を決定する。
【００６４】
操作緊急度＝ユーザ係数×起動方式係数×時間係数      ・・・（１）
ユーザ係数は、ワークフローを起動したユーザのユーザ係数である。ユーザ係数としては、例えば、管理者ユーザの場合にはユーザ係数＝３．０が設定され、一般ユーザの場合にはユーザ係数＝２．０が設定される。
【００６５】
起動方式係数としては、例えば、ワークフローの起動が手動起動の場合には、起動方式係数＝２．０が設定される。ワークフローの起動が時間指定によるスケジュール起動の場合には、起動方式係数＝３．０が設定される。ワークフローの起動が監視製品からの通知による起動の場合には、起動方式係数＝３．０が設定される。
【００６６】
時間係数としては、例えば、完了予定時刻までの残り時間が１０分以内の場合には時間係数＝１．５が設定され、それ以外、または、完了予定時刻指定なしの場合には時間係数＝１．０が設定される。
【００６７】
次に、排他制御部１１０は、以下の式（２）に従い、ワークフローの実行優先度を仮決定する。
実行優先度＝（Σ操作重要度）×操作緊急度      ・・・（２）
ここで、例として、操作系の運用操作部品１および参照系の運用操作部品２に排他区間が設定されたワークフローＡについて、仮決定される実行優先度の計算例を示す。ワークフローＡについては、ユーザ係数＝２．０、起動方式係数＝１．０、時間係数＝１．５が設定されているものとする。
【００６８】
運用操作部品１の操作重要度は「２」であり、運用操作部品２の操作重要度は「１」であるから、Σ操作重要度＝２＋１＝３となる。また、式（１）から、操作緊急度＝２．０×１．０×１．５＝３．０と算出される。よって、式（２）から、実行優先度＝３．０×３．０＝９．０と算出される。
【００６９】
（１−２）ワークフローの動作中に仮決定されたワークフローの排他区間の調整・決定
次に、排他制御部１１０は、ワークフローの動作中に仮決定されたワークフローの排他区間の調整・決定を行う。ワークフローが動作した場合、排他制御部１１０は、ワークフローの分岐や運用操作部品の処理結果によって、実行優先度を変更する。また、排他制御部１１０は、実行優先度に応じて、実行している運用操作部品の次の運用操作部品を、即時実行させるか待たせるかを決定する。これらの処理は、以下の手順（Ｉ）〜（Ｖ）により実行される。
【００７０】
（Ｉ）排他制御部１１０は、ワークフロー実行部１２０から所定の通知を受信する。
（ＩＩ）排他制御部１１０は、前述した「（１―１）ワークフローの内容を取得・分析の詳細」の処理を実行し、排他区間と実行優先度を決定し直す。
【００７１】
（ＩＩＩ）排他制御部１１０は、上記（ＩＩ）で再決定した排他区間と実行優先度を記憶装置に格納する。
（ＩＶ）排他制御部１１０は、実行中のワークフローから、最も大きい実行優先度を持つ排他区間を抽出する。
【００７２】
（Ｖ）排他制御部１１０は、次の運用操作部品を即時実行するか待たせるかを判断する。ここでは、排他制御部１１０は、対象となるワークフローの排他取得が決定した場合、運用操作部品を実行する。また、他のワークフローの排他取得が優先となった場合、排他制御部１１０は、その実行作業を遅延させる。
【００７３】
上記（ＩＶ）（Ｖ）の処理について、以下の図１１〜図１６を用いて説明する。
図１１，図１２は、最も大きい実行優先度を持つ排他区間の抽出処理、および次の運用操作部品の実行判断処理の例を示す図である。図１１，図１２では、ワークフローＡ，Ｂ，Ｃを並列に実行させる場合について説明する。図１１，図１２の各ワークフローにおいて、下向きの三角マークは、現在の処理位置を示す。また、後述する排他権（実行権）を獲得している間、そのワークフローは、処理を実行することができる。
【００７４】
図１１において、ワークフローＡの［排他区間：Ａ＋Ｘ］について処理しようとした場合、ワークフローＣの［排他区間：Ａ＋Ｘ］の実行優先度が高いため、ワークフローＡはワークフローＣの排他が解放されるまで待ち状態になる（ステップＳ２１）。
【００７５】
ワークフローＢの［排他区間：Ａ＋Ｙ］は［排他区間：Ａ＋Ｘ］と競合関係にないため、ワークフローＢは排他権（実行権）を獲得する（ステップＳ２２）。
ワークフローＣの［排他区間：Ａ＋Ｘ］については、現時点でのワークフローＡ，Ｂ，Ｃの排他区間で最も実行優先度が高いため、ワークフローＣは、排他権（実行権）を獲得する（ステップＳ２３）。
【００７６】
次に、図１２に示すように、ワークフローＣの［排他区間：Ａ＋Ｘ］の処理が完了した場合、［排他区間：Ａ＋Ｘ］の排他状態が解放される。その結果、ワークフローＡの［排他区間：Ａ＋Ｘ］が最も実行優先度が高いため、ワークフローＡは、排他権（実行権）を獲得する（ステップＳ２４）。
【００７７】
ワークフローＣの［排他区間：Ａ］について、ワークフローＣは、ワークフローＡの［排他区間：Ａ＋Ｘ］の排他状態が解放されるまで、待ち状態になる（ステップＳ２５）。
この後、図示しないが、ワークフローＡの［排他区間：Ａ＋Ｘ］の処理が完了した場合、［排他区間：Ａ＋Ｘ］の排他状態が解放される。ここで、ワークフローＢ，Ｃの［排他区間：Ａ］において実行優先度が同じである場合、管理者権限のため（すなわち、ユーザ係数が最も大きいため）、ワークフローＣが優先して排他権（実行権）を獲得する。
【００７８】
図１３，図１４は、ワークフロー実行中に実行優先度が変更された場合のワークフローの排他権（実行権）獲得例を示す図である。
図１３に示すように、ワークフローＡの［排他区間：Ａ］について、ワークフローＡが排他権（実行権）を獲得した場合、ワークフローＢは［排他区間：Ａ］の排他権（実行権）の獲得前であるが、ワークフローＢの実行優先度が最も高い。このため、ワークフローＡの［排他区間：Ａ］については、ワークフローＢが［排他区間：Ａ］の排他権（実行権）を獲得して実行し、その排他状態が解放されるまで、ワークフローＡは待ち状態となる（ステップＳ３１）。
【００７９】
その後、図１４に示すように、時間経過により時間係数が変化する。その結果、ワークフローＡの［排他区間：Ａ］の実行優先度が変更される。このとき、ワークフローＡの［排他区間：Ａ］の実行優先度が最も高くなるため、ワークフローＡは、排他権（実行権）を獲得して処理を行う（ステップＳ３２）。
【００８０】
以上の図１１〜図１４に示したように、各ワークフローにおける同一資源についての排他区間の処理は、実行優先度が高い順に実行される。また、実行優先度が変更されると、ワークフロー間で実行優先度が再度比較され、その時点で最も大きい実行優先度を有する排他区間の処理が先に実行される。
【００８１】
＜冗長作業排除による作業手順の最適化制御＞
ところで、ワークフローはそれぞれ個別に定義されるものであるので、同時期に実行される複数のワークフロー間では、同一の操作対象に対する冗長な操作が含まれる場合がある。
【００８２】
図１５は、同一操作対象に対する冗長な操作を含む複数のワークフローの例を示す図である。冗長な操作としては、例えば次の２種類がある。１つは、同じ操作対象に対して同じ操作を連続して行うというものである。他の１つは、同じ操作対象に対して相反する操作を連続して行うというものである。
【００８３】
例えば、図１５において、ワークフローＢの［排他区間：Ａ］では、最後にサービスを起動する操作が行われ、その次に実行されるワークフローＣの［排他区間：Ａ］では、最初にサービスを起動する操作が行われる。この場合、サービスを起動するという同一の操作が連続して行われてしまうが、これらは本来いずれか一方だけ実行されればよいものであり、操作が冗長である。
【００８４】
また、図１５において、ワークフローＡの［排他区間：Ａ］では、最後にサービスを起動する操作が行われ、その次に実行されるワークフローＢの［排他区間：Ａ］では、最初にサービスを停止する操作が行われる。この場合、サービスを起動する操作と、この操作とは相反する操作であるサービスを停止するという操作が、連続して行われる。しかし、これらは相反する操作であるため、連続して行うことは無駄であり、操作が冗長である。
【００８５】
これらの例のように冗長な操作が行われると、ワークフローの処理時間が無用に長くなるという問題がある。ワークフローが業務サーバやプログラムなどの資源のメンテナンスを行うものである場合、資源が本来のサービスに利用される時間が短くなり、サービス性が低下する。
【００８６】
また、業務サーバへの操作指示回数が多くなって、ネットワークに余計な負荷がかかるという問題もある。さらに、サービスの起動と停止とが無駄に繰り返された場合には、サービスの停止時間が長くなり、この点でもサービス性が低下するという問題もある。
【００８７】
冗長な操作が行われることを回避するための方法としては、例えば、ワークフローの開発時に冗長な操作が出現しないように対処する方法が考えられる。この場合、開発者は例えば、ワークフローの開発時において、同時に実行されるワークフローの洗い出しを行い、１つのワークフローに定義する操作内容と、ワークフローの実行スケジュールを検証することで、操作の冗長性を排除する。
【００８８】
しかしながら、開発者が事前に複数のワークフロー間の処理の関係を考慮しながら各ワークフローを設計することは容易ではない。例えば、業務運用においては、決められたワークフローが動作する定期業務だけでなく、トラブル対処や随時の要求に対処するなどの非定期の業務もあり、このような非定期の業務に対応するワークフローも実行される。同時実行されるワークフローの中には、このように非定期に実行されるワークフローが含まれる場合もあり、その場合にワークフロー間で冗長な操作が発生するかは、ワークフローの開発時には把握しきれない。
【００８９】
従って、冗長な操作の実行を確実に回避するためには、ワークフローの実行時において冗長な操作を動的に検出し、操作の実行を適宜省略して操作の冗長性を動的に排除することが望まれる。しかし、その実現には、例えば次の図１６，図１７で説明するような課題がある。
【００９０】
図１６は、冗長な操作の動的な検出・省略についての課題を説明するための第１の図である。１つの課題として、ワークフローに条件分岐の運用操作部品が含まれる場合の対処が挙げられる。条件分岐がある場合、分岐条件によって、実行する運用操作部品が変化する。このため、条件分岐の後に冗長と考えられる操作がある場合でも、分岐先の判断の結果によって、その操作を省略してよい場合とよくない場合とがある。
【００９１】
例えば図１６において、ワークフローＢに含まれる運用操作部品Ｔは、以前に実行された操作の結果などに基づいて条件分岐を行う。仮に、運用操作部品Ｔの分岐先が運用操作部品４２に決定された場合、ワークフローＡの［排他区間：Ａ］の次には、ワークフローＢの［排他区間：Ａ］が実行される。この場合、サービスを起動する運用操作部品４１と、サービスを停止する運用操作部品４２という相反する操作の実行を省略することができる。しかし、運用操作部品Ｔの分岐先が運用操作部品Ｕと決定された場合には、運用操作部品４１の実行を省略することはできない。このように、条件分岐がある場合には、省略可能な操作を正確に検出できない。
【００９２】
また、図１６の例において、運用操作部品Ｔの分岐先が確定する前に運用操作部品４１の実行が省略されたとすると、運用操作部品Ｔの分岐先が運用操作部品Ｕと決定された場合には、運用操作部品４１を実行する必要が生じる。しかし、分岐先が運用操作部品Ｕと決定された時点で、ワークフローＡの処理は運用操作部品４１より後まで進行してしまっていることから、ワークフローＡの処理として運用操作部品４１を実行することはできない。
【００９３】
上記の課題を回避する方法として、ワークフローに条件分岐が含まれる場合には一律に操作の省略を行わないようにする方法が考えられる。しかし、条件分岐は多くのワークフローに含まれるため、処理時間の短縮という効果がほとんど得られなくなる。
【００９４】
図１７は、冗長な操作の動的な検出・省略についての課題を説明するための第２の図である。他の課題として、省略された操作の実行結果を、後続の操作で使用できない点も挙げられる。
【００９５】
例えば図１７において、メールを送信するという運用操作部品４４の操作では、それより前の運用操作部品４３の実行結果が参照される。ここで、運用操作部品４３の実行が省略されると、後続の運用操作部品４４の操作は、参照すべき情報が存在しないために実行できなくなる。このように、操作が省略された場合、その操作の実行結果を参照する後の操作の実行が不可能になり、ワークフローを継続できなくなる。
【００９６】
また、運用操作部品の実行情報が、フィルタ処理により編集され、別の運用操作部品で参照される変数として設定される場合もある。この場合でも、運用操作部品の実行が省略されると、別の運用操作部品で参照される変数が設定されなくなり、ワークフローを継続できなくなる。
【００９７】
このような課題に対し、本実施の形態の運用自動化サーバ１００は、次のような方法によって冗長な操作を動的に検出して省略し、ワークフローによる運用手順を最適化する。
図１８は、最適化制御ワークフローの組み立ての例を示す図である。
【００９８】
排他制御部１１０は、ワークフローの実行時において、同じ排他資源に対して操作を行う運用操作部品を集めて、排他資源ごとに仮想的なワークフローを組み立てる。以下、この仮想的なワークフローを「最適化制御ワークフロー」と呼ぶ。なお、以下、例えば排他資源Ｘについての最適化制御ワークフローを「最適化制御ワークフローＸ」と記述する。排他制御部１１０は、最適化制御ワークフローに基づき、ワークフローの実行時に他のワークフローの操作内容や実行順序に応じて、運用操作部品の実行の冗長性を動的に判断して、冗長な操作の実行を適宜省略する。
【００９９】
例えば図１８において、ワークフローＡは［排他区間：Ｙ］を有し、ワークフローＢは［排他区間：Ｘ］と［排他区間：Ｙ］とを有する。排他制御部１１０は、このような排他制御を行う際に、ワークフローＡ，Ｂの排他情報を収集し、インスタンス管理テーブル１３４および排他情報管理テーブル１３５を用いて管理している。管理される排他情報には、排他資源、排他区間、実行優先度などの情報が含まれる。
【０１００】
排他制御部１１０は、これらの排他情報に基づいて、ワークフローＡおよびワークフローＢの実行時に、次のような処理により最適化制御ワークフローを組み立てる。
排他制御部１１０は、排他資源Ｘについての最適化制御ワークフローＸのインスタンスを生成する。排他制御部１１０は、ワークフローＢの［排他区間：Ｘ］についての排他情報を基に最適化制御ワークフローＸを組み立て、最適化制御ワークフローＸに関する情報を最適化制御ワークフロー管理テーブル１４１に登録する。
【０１０１】
また、［排他区間：Ｙ］は複数のワークフローに設定されているので、排他資源Ｙに関しては次のような処理が行われる。排他制御部１１０は、排他資源Ｙについての最適化制御ワークフローＹのインスタンスを生成する。排他制御部１１０は、ワークフローＡ，Ｂそれぞれの排他区間の実行優先度から、排他資源Ｙに対する処理順を決定する。排他制御部１１０は、ワークフローＡの［排他区間：Ｙ］およびワークフローＢの［排他区間：Ｙ］についての排他情報を基に最適化制御ワークフローＹを組み立て、最適化制御ワークフローＹに関する情報を最適化制御ワークフロー管理テーブル１４１に登録する。
【０１０２】
次に、ワークフローＡ，Ｂをそれぞれ実行するワークフロー実行部１２０は、各運用操作部品の実行時に、排他制御部１１０に対して排他獲得の確認を行う。このとき、排他制御部１１０は、該当する排他資源についての最適化制御ワークフローから前後の運用操作部品を判断し、次のいずれかの最適化の条件（すなわち実行省略の条件）に該当するかを判定する。
【０１０３】
・連続実行条件：同じ操作対象に対して同じ操作を連続して実行する。
・相反操作条件：同じ操作対象に対して相反する操作を連続して実行する。
このような最適化の条件は、最適化対象部品定義テーブル１４０に基づいて判定される。最適化対象部品定義テーブル１４０は、最適化の対象とする運用操作部品のリストを保持しており、上記各条件に対応する２種類のテーブル（最適化対象部品定義テーブル）を含む。一方のテーブルには、連続実行条件の対象とする運用操作部品が登録され、他方のテーブルには、相反操作条件の対象とする、相反する操作を行う運用操作部品の対が登録される。
【０１０４】
図１９は、最適化条件に基づく操作の省略の例を示す図である。図１９において、ワークフローＡ，Ｂ，Ｃはそれぞれ［排他区間：Ｘ］を有する。実行優先度に基づき、ワークフローＡの［排他区間：Ｘ］、ワークフローＢの［排他区間：Ｘ］、ワークフローＣの［排他区間：Ｘ］の順に実行されるものとする。
【０１０５】
この場合、排他資源Ｘについての最適化制御ワークフローＸにおいては、サービスを起動する運用操作部品４５と、サービスを停止する運用操作部品４６という相反する操作が連続して現れる。従って、運用操作部品４５，４６は相反操作条件に該当する。また、最適化制御ワークフローＸにおいては、ともにサービスを起動する運用操作部品４７，４８が連続して現れる。従って、運用操作部品４７，４８は連続実行条件に該当する。
【０１０６】
最適化の条件に該当した運用操作部品について、（２−１）運用操作部品の実行省略、（２−２）省略した運用操作部品の実行結果の設定、（２−３）省略した運用操作部品についての後処理の実施、という処理が行われる。以下、（２−１），（２−２），（２−３）の各処理について詳細を示す。
【０１０７】
（２−１）運用操作部品の実行省略
排他制御部１１０は、連続実行条件に該当する、同じ操作を行う運用操作部品について、一方のみ実行させる。本実施の形態では、連続する同じ操作のうち後の操作の実行が省略されるものとする。図１９の例では、運用操作部品４７が実行され、運用操作部品４８の実行が省略される。
【０１０８】
また、排他制御部１１０は、相反操作条件に該当する運用操作部品の組み合わせについて、両方とも実行を省略させる。図１９の例では、運用操作部品４５，４６はともに実行が省略される。
【０１０９】
なお、相反操作条件に該当する運用操作部品の実行が省略された場合には、それらのうち前側の運用操作部品を含むワークフロー（図１９の例では運用操作部品４５を含むワークフローＡ）について、（２−２）の処理の実行の前に次のような処理が行われる。対応するワークフロー実行部１２０は、排他制御部１１０から省略するよう通知された運用操作部品の実行を省略するとともに、その運用操作部品が正常に実行されたものとして、後の（２−２），（２−３）の処理を行う。
【０１１０】
ただし、最適化制御ワークフロー上に、省略したものと同じ運用操作部品が定義されている場合には、次の処理が行われてもよい。排他制御部１１０は、この運用操作部品が実行されるまで該当ワークフローを実行待ち状態にする。そして、排他制御部１１０は、この運用操作部品が実行されると、実行待ち状態のワークフローに対応するワークフロー実行部１２０に、待ち状態の解除を指示する。待ち状態の解除指示を受けたワークフロー実行部１２０は、省略した運用操作部品の実行結果として、待ち状態の解除の前に実行された同じ運用操作部品の実行結果をそのまま実行履歴データベースに設定する。そして、ワークフロー実行部１２０は、設定した実行結果を用いて（２−３）の処理を行う。このワークフロー実行部１２０による処理は、（２−２）の処理の代替として行われる。
【０１１１】
図１９の例では、運用操作部品４５の実行が省略された後、ワークフローＡは、ワークフローＢの運用操作部品４７が実行されるまで待ち状態となる。そして、運用操作部品４７が実行されると、ワークフローＡの待ち状態が解除され、実行が省略された運用操作部品４５の実行結果として、実際に実行された運用操作部品４７の実行結果が実行履歴データベースに設定される。
【０１１２】
（２−２）省略した運用操作部品の実行結果の設定
運用操作部品の実行結果は、後続の運用操作部品の実行時に使用されることがある。このため、実行が省略された運用操作部品についても、正常動作したことを示す値が実行履歴として設定される必要がある。
【０１１３】
繰り返し条件に該当する運用操作部品の実行が省略された場合、その直前には省略したものと同じ運用操作部品が必ず実行される。そこで、ワークフロー実行部１２０は、省略した運用操作部品の実行結果として、直前の同じ運用操作部品の実行結果を設定する。図１９の例では、ワークフローＣの運用操作部品４８の実行が省略されたとき、その実行結果として、ワークフローＢの運用操作部品４７の実行結果が設定される。
【０１１４】
また、相反操作条件に該当する運用操作部品の実行を省略した場合、ワークフロー実行部１２０は、次のようにして省略した運用操作部品の実行結果を設定する。システムが起動してから、省略したものと同じ運用操作部品が同じワークフロー内で一度でも実行されている場合、ワークフロー実行部１２０は、実行済みの運用操作部品の実行結果を、省略した運用操作部品の実行結果として設定する。一方、同じワークフロー内で一度も実行されていない場合、ワークフロー実行部１２０は、あらかじめ用意された実行結果を、省略した運用操作部品の実行結果として設定する。
【０１１５】
図２０は、省略した運用操作部品の実行結果の設定処理例を示す図である。本実施の形態では、実行結果管理テーブル１４２に、相反操作条件による省略対象の運用操作部品についての実行結果が、「デフォルト値」としてあらかじめ記憶される。また、これらの運用操作部品がワークフローの起動後に最初に実行されたとき、その実行結果が例えばワークフローごとに、実行結果管理テーブル１４２に「実際の実行結果」として登録される。そして、ワークフロー実行部１２０は、相反操作条件に該当する運用操作部品の実行を省略したとき、実行結果管理テーブル１４２から実行結果を読み出して、実行履歴データベース１５１に設定する。
【０１１６】
なお、ワークフロー実行部１２０は、ワークフローに関係なく、システムが起動してから、省略したものと同じ運用操作部品が同じワークフロー内で一度でも実行されていれば、その実行結果を省略した運用操作部品の実行結果として設定してもよい。
【０１１７】
また、ワークフロー実行部１２０は、例えば、ワークフローの起動後、あるいはワークフローに関係なくシステムの起動後に、ある操作を行う運用操作部品を初めて実行するときには、その運用操作部品の実行を省略せずに必ず実行してもよい。この場合、実行結果をあらかじめ用意しておく必要はなく、実際に実行された運用操作部品の実行結果を使用することができる。
【０１１８】
なお、実行履歴データベース１５１は、例えば、ワークフロー管理テーブル１３１の一部として実現されてもよい。また、実行履歴データベース１５１においては、例えば、実行結果がワークフローおよび運用操作部品ごとに設定される。また、実行履歴データベース１５１には、運用操作部品ごとに、実行が省略されたか否かを示す省略フラグが設定されてもよい。
【０１１９】
（２−３）省略した運用操作部品についての後処理の実施
ワークフローの定義情報には、運用操作部品の後処理として、実行結果に対するフィルタ処理（編集処理）が設定されている場合がある。ワークフロー実行部１２０は、フィルタ処理が設定された運用操作部品の実行を省略した場合でも、フィルタ処理を省略せずに実行する。その際に、上記手順によって得られた実行結果が使用される。
【０１２０】
図２１は、操作の実行省略時におけるフィルタ処理の例を示す図である。図２１のワークフローＡにおいて、サービスを起動する運用操作部品５１の実行結果をフィルタ処理することで得られた変数が、その後、ファイルを作成する運用操作部品５２が実行される際に参照される。図２１の例では、運用操作部品５２の実行時に、サービス名一覧のファイルの中に、フィルタ処理によって運用操作部品５１の実行結果が加工された変数が設定される。運用操作部品５１の実行が省略された場合、運用操作部品５２の実行時に必要な情報が得られなくなる。
【０１２１】
そこで、ワークフローＡに対応するワークフロー実行部１２０は、運用操作部品５１の実行を省略したとき、上記手順により、以前に実行された同じ運用操作部品の実行結果、またはあらかじめ用意された実行結果（デフォルト値）を得る。そして、ワークフロー実行部１２０は、得られた実行結果に対してフィルタ処理を行い、処理後の変数をワークフロー管理テーブル１３１に格納する。これにより、運用操作部品５２の実行時に、必要な情報が問題なく参照されるようになる。
【０１２２】
以上説明したように、運用自動化サーバ１００は、排他制御のために収集された各ワークフローの排他情報を参照することにより、排他資源ごとに最適化制御ワークフローを組み立てることができる。そして、最適化制御ワークフローに基づいて、複数のワークフローによって行われる同一の排他資源への操作を特定することができ、特定した操作の中から省略可能な冗長な操作を容易に検出することができる。また、運用自動化サーバ１００は、例えば、省略可能な冗長な操作を、最適化対象部品定義テーブル１４０を参照することによって容易に検出することができる。
【０１２３】
検出された冗長な操作の実行が省略されることにより、ワークフローの処理が効率化されて、ワークフロー全体の処理時間が短縮される。その結果、例えば、サーバやサービスの起動および停止を無駄に繰り返すことでそれらの停止時間が長くなって、サービス性が低下するという事態を回避することができる。また、業務サーバへの操作指示回数が減少し、ネットワークの負荷を低減することができる。さらに、余計な操作が実行されないことにより、排他を確保するまでの時間も短縮され、この点でもワークフロー全体の処理時間が短縮される。
【０１２４】
また、運用自動化サーバ１００は、冗長な操作の実行を省略した場合でも、その操作の実行結果情報を、実行結果管理テーブル１４２を参照しながら実行履歴データベース１５１に登録する。また、運用自動化サーバ１００は、フィルタ処理など、実行結果の後処理が必要な場合には、操作の実行を省略した場合でも、その実行結果を生成して後処理を実行する。
【０１２５】
このような処理により、省略された操作の実行結果を参照する後続の操作が正常に実行できることが保証される。すなわち、運用自動化サーバ１００は、後続の操作の実行に影響を与えずに、冗長な操作の実行を省略することができる。
【０１２６】
次に、最適化制御ワークフローの再組み立てについて説明する。排他制御部１１０は、次のような条件が発生した場合に、最適化制御ワークフローの再組み立てを行う。
・条件分岐による排他区間の実行キャンセル
・実行優先度の変化による実行順序の入れ替え
図２２は、条件分岐を含むワークフローの例を示す図である。図２２に示すワークフローＡにおいて、運用操作部品Ｄは条件分岐を行うものである。運用操作部品Ｄの実行結果に応じて、［排他区間：Ｘ］または［排他区間：Ｙ］のいずれかが実行される。
【０１２７】
このワークフローＡの実行時（すなわち、運用操作部品Ｄの実行前）において、排他制御部１１０は、条件分岐の両方の分岐先についての排他情報（すなわち、排他資源Ｘおよび排他資源Ｙの各排他情報）を排他情報管理テーブル１３５に登録する。また、排他制御部１１０は、排他資源Ｘおよび排他資源Ｙのそれぞれについての最適化制御ワークフローを組み立てる。
【０１２８】
その後、運用操作部品Ｄの実行が完了すると、［排他区間：Ｘ］と［排他区間：Ｙ］のうちの一方は実行されなくなる。このように、運用操作部品が排他区間単位で実行されなくなった場合には、該当する排他資源についての最適化制御ワークフローの再組み立てが行われる。
【０１２９】
図２３は、条件分岐に応じた最適化制御ワークフローの再組み立ての例を示す図である。この図２３の例は、図２２のようなワークフローＡとともにワークフローＢ，Ｃが実行される場合を示す。条件分岐を行う運用操作部品Ｄ（図２２参照）の実行前では、図２３の上側に示すように、排他資源Ｘについての最適化制御ワークフローＸと、排他資源Ｙについての最適化制御ワークフローＹとが組み立てられる。
【０１３０】
その後、例えば、運用操作部品Ｄの実行結果により運用操作部品Ａの実行が決定された場合、ワークフローＡに対応するワークフロー実行部１２０は、運用操作部品Ｍ，Ｎ，Ｏの情報の削除を排他制御部１１０に要求する。削除要求を受けた排他制御部１１０は、運用操作部品Ｍ，Ｎ，Ｏの情報をワークフロー管理テーブル１３１から削除するとともに、排他資源Ｙについての最適化制御ワークフローＹの再組み立てを行う。図２３の下側に示すように、最適化制御ワークフローＹからは、ワークフローＡに含まれていた運用操作部品Ｍ，Ｎ，Ｏの情報が削除される。
【０１３１】
このように、条件分岐を行う運用操作部品が実行されて、分岐先が確定すると、分岐先確定により実行がキャンセルされた排他区間を含む最適化制御ワークフローの再組み立てが行われる。これにより、運用自動化サーバ１００は、ワークフローに条件分岐を行う運用操作部品が含まれる場合でも、省略可能な冗長な操作を正確に特定することができる。
【０１３２】
また、運用自動化サーバ１００は、各ワークフローにおける条件分岐の分岐先が確定するのを待たずに、各ワークフローを実行させながら、省略可能な冗長な操作を正確に特定することができる。従って、各ワークフローの実行効率を低下させずに、冗長な操作を正確に特定してその実行を省略することができる。
【０１３３】
図２４は、実行優先度の変化に応じた最適化制御ワークフローの再組み立ての例を示す図である。前述のように、実行中のワークフローにおける排他区間ごとの実行優先度は、重要度や、完了予定時刻までの残り時間などに応じて随時変更される。このように実行優先度が変更されることにより、排他区間の実行順が変更される場合もある。実行優先度の変化に応じて実行順の入れ替えが発生した場合にも、最適化制御ワークフローの再組み立てが行われる。
【０１３４】
図２４の例では、排他資源Ｘについての最適化制御ワークフローＸを最初に組み立てたとき、ワークフローＣの排他区間よりワークフローＢの排他区間の実行優先度の方が高かったものとする。この場合、図２４の上側に示すように、最適化制御ワークフローＸにおいて、ワークフローＢに含まれる運用操作部品Ｆ，Ｇの実行順は、ワークフローＣに含まれる運用操作部品Ｍ，Ｎ，Ｏよりも先になる。
【０１３５】
その後、ワークフローＣの排他区間の実行優先度が変更されて、ワークフローＢより高くなったとする。この場合、図２４の下側に示すように、最適化制御ワークフローＸの再組み立てが行われ、ワークフローＢに含まれる運用操作部品Ｆ，Ｇの実行順は、ワークフローＣに含まれる運用操作部品Ｍ，Ｎ，Ｏよりも後になる。
【０１３６】
このように、運用自動化サーバ１００は、ワークフローの実行状況の変化が生じて、ワークフローの排他区間の実行優先度が変化した場合でも、最適化制御ワークフローの再組み立てを行うことにより、省略可能な冗長な操作を正確に特定することができる。
【０１３７】
なお、同じ排他資源を操作する運用操作部品を含むワークフローが新たに起動された場合にも、そのワークフローの排他区間の実行優先度を考慮して、最適化制御ワークフローの再組み立てが行われる。
【０１３８】
次に、実行省略対象の変化に伴う補正処理について説明する。
図２５は、最適化制御ワークフローの再組み立てによる実行省略対象の変化の例を示す図である。上記のように、条件分岐の実行や実行優先度の変化によって最適化制御ワークフローの再組み立てが行われると、運用操作部品の実行順が変化するため、実行の省略対象の運用操作部品が変化する場合もある。例えば、図２５に示すように、実行省略対象になっていた運用操作部品が、実行省略対象でなくなる場合がある。
【０１３９】
図２５において、実行優先度の変更前では、ワークフローＡの運用操作部品ＣとワークフローＢの運用操作部品Ｆが、例えば相反する操作であるため、ともに実行省略対象になっていたものとする。その後、運用操作部品Ｃの実行が省略されたタイミングで、ワークフローＣの排他区間の実行優先度がワークフローＢの排他区間より高い値に変更になったとする。このとき、最適化制御ワークフローＸの再組み立てが行われ、運用操作部品Ｃの次に実行すべき運用操作部品は、運用操作部品Ｍから、ワークフローＢの運用操作部品Ｆに変更になる。
【０１４０】
このような実行順の変更により、運用操作部品Ｃは実行省略対象ではなくなる。この場合、ワークフローＣを正常に実行させるために、一旦実行が省略された運用操作部品Ｃを実行する必要が生じる。
【０１４１】
ここで、運用操作部品Ｃは本来、ワークフローＡの一環として実行されるものである。しかし、ワークフローＡでは、運用操作部品Ｃの実行を正常に終了したものとして処理が先に進められている。このため、ワークフローＡの一環として運用操作部品Ｃを実行させることができない可能性がある。
【０１４２】
そこで、実行が省略された運用操作部品を実行させるために、次のような補正処理が行われる。なお、ここでは、実行が省略されたが実行が必要になった運用操作部品（すなわち、補正が必要な運用操作部品）を「運用操作部品Ｃ」とし、この運用操作部品Ｃが含まれるワークフローを「ワークフローＡ」とする。
【０１４３】
（補正処理１）
ワークフローＡにおいて運用操作部品Ｃの次に定義されている運用操作部品が、他の排他資源の排他獲得待ちになっている場合、排他制御部１１０は、ワークフローの制御を１つ前の運用操作部品（すなわち運用操作部品Ｃ）に戻す。この場合、ワークフローＡに対応するワークフロー実行部１２０によって運用操作部品Ｃを実行することができる。
【０１４４】
（補正処理２）
ワークフローＡにおいて運用操作部品Ｃの次に、人の操作が行われるアクティビティが定義されており、そのアクティビティにおいて人の操作待ちになっている場合、排他制御部１１０は、アクティビティの実行を取り消して、ワークフローの制御を１つの前の運用操作部品（すなわち運用操作部品Ｃ）に戻す。この場合も、ワークフローＡに対応するワークフロー実行部１２０によって運用操作部品Ｃを実行することができる。
【０１４５】
（補正処理３）
ワークフローＡでの操作が、運用操作部品Ｃの次の操作よりさらに先に進んでいる場合、または、ワークフローＡの実行が終了している場合、排他制御部１１０は、運用操作部品Ｃをワークフロー実行部１２０の代理で自ら実行する。
【０１４６】
以上の各補正処理により、運用自動化サーバ１００は、ワークフローの処理をできるだけ停止させずに、冗長な操作の実行を省略することができる。そして、このようにして冗長な操作の実行を省略した場合でも、ワークフローによる運用操作対象の動作を保証することができる。例えば、運用操作対象のサーバやサービスによる業務に支障が出る可能性が低減される。
【０１４７】
図２６は、最適化制御ワークフローの組み立てタイミングについて説明するための図である。最適化制御ワークフローは、排他資源ごとに次のようにして管理される。なお、ここでは例として、排他資源Ａについての最適化制御ワークフローについて述べる。
【０１４８】
排他制御部１１０は、排他資源Ａを操作する運用操作部品を含むワークフローＷ１が実行される際に、排他資源Ａについての最適化制御ワークフローのインスタンスＡ１を生成し、その情報を最適化制御ワークフロー管理テーブル１４１に登録する（タイミングＴ１１）。
【０１４９】
また、排他資源Ａを操作する運用操作部品を含むワークフロー（図２６の例ではワークフローＷ２，Ｗ３）が新たに実行されたとき、排他制御部１１０は、排他資源Ａの最適化制御ワークフローの再組み立てを行う（タイミングＴ１２，Ｔ１３）。
【０１５０】
排他資源Ａを操作する運用操作部品を含むワークフローが１つも実行されていない状態になったとき、排他制御部１１０は、排他資源Ａの最適化制御ワークフローのインスタンスＡ１を終了させる（タイミングＴ１４）。
【０１５１】
その後、排他資源Ａを操作する運用操作部品を含むワークフローＷ４が新たに実行される際、排他制御部１１０は、排他資源Ａについての最適化制御ワークフローのインスタンスＡ２を生成し、その情報を最適化制御ワークフロー管理テーブル１４１に登録する（タイミングＴ１５）。
【０１５２】
このように、ある排他資源を操作する運用操作部品を含むワークフローが１つでも実行されると、その排他資源に対応する最適化制御ワークフローが組み立てられる。また、同じ排他資源を操作する運用操作部品を含むワークフローが新たに実行されるたびに、最適化制御ワークフローの再組み立てが行われる。このようにして、実行を省略可能な冗長な操作が動的に検出される。
【０１５３】
次に、最適化制御ワークフローの実行結果の表示処理について説明する。
排他制御部１１０は、最適化制御ワークフローの実行情報を実行履歴データベース１５１に格納する。実行情報には、例えば、運用操作部品の実行結果、運用操作部品の実行が省略されたかを示す情報（例えば省略フラグ）、運用操作部品を実際に処理したワークフローを示す情報などが含まれる。排他制御部１１０は、実行履歴データベース１５１に格納された情報を基に、最適化制御ワークフローの実行情報を管理者の端末装置に通知して画面に表示させることができる。これにより、管理者は実行情報を容易に確認することができる。表示される情報としては、最適化の実行状況、補正制御により実行された運用操作部品の有無およびその実行結果などがある。
【０１５４】
図２７は、最適化制御ワークフローの一覧表示の例を示す図である。図２７に示す最適化制御ワークフロー一覧表示画面６１は、「排他資源名」、「インスタンス名」、「実行日時」および「ステータス」の各データ項目を含む。
【０１５５】
「排他資源名」には、排他資源を識別する番号が格納される。「インスタンス名」には、最適化制御ワークフローのインスタンスを識別する番号が格納される。「実行日時」には、対応するインスタンスの実行日時が格納される。実行日時としては、例えば、実行開始日時および実行終了日時が格納される。「ステータス」には、対応するインスタンスが終了したか、あるいは実行中であるかを示すステータス情報が格納される。
【０１５６】
「インスタンス名」は、１つの「排他資源名」に１つまたは複数対応付けられる。「実行日時」および「ステータス」は、「インスタンス名」ごとに対応付けられる。
上記の最適化制御ワークフロー一覧表示画面６１によれば、管理者は、排他資源ごとにいくつの最適化制御ワークフローが組み立てられ、それらの実行状態がどうなっているかを容易に確認することができる。
【０１５７】
図２８は、最適化制御ワークフローの内容の表示例を示す図である。図２８に示す最適化制御ワークフロー表示画面６２には、排他資源ごと、およびインスタンスごとに、最適化制御ワークフローに含まれる操作に関する情報が表示される。これにより、管理者は、各最適化制御ワークフローの内容について容易に確認することができる。
【０１５８】
図２８の例では、最適化制御ワークフローに含まれる運用操作部品の一覧およびその実行順序が表示されている。また、最適化制御ワークフロー表示画面６２において、実行が省略された運用操作部品が、表示色を変えられるなど、他の運用操作部品とは区別して視認可能なように表示されてもよい。
【０１５９】
次に、運用自動化サーバ１００の処理において利用される情報テーブルの例について説明する。
図２９は、ワークフロー管理テーブルの例を示す図である。ワークフロー管理テーブル１３１は、各ワークフローに含まれる運用操作部品を管理するためのテーブルであり、ワークフローの登録時に生成される。ワークフロー管理テーブル１３１は、「ワークフローＮｏ．」、「部品Ｎｏ．」、「運用操作部品名」、「操作対象」、「操作サービス、資源」、「出力」および「次の部品Ｎｏ．」の各データ項目を含む。
【０１６０】
「ワークフローＮｏ．」には、ワークフローを識別する番号が格納される。「部品Ｎｏ．」には、そのワークフローにおける運用操作部品の番号が格納される。「運用操作部品名」には、運用操作部品の名称（操作内容）が格納される。
【０１６１】
「操作対象」には、操作対象となるサーバ、デバイスなどの名称に対応する変数が入力値として格納される。「操作サービス、資源」には、操作するサービス名、資源名に対応する変数が入力値として格納される。「出力」には、出力値が設定される変数が格納される。「次の部品Ｎｏ．」には、そのワークフローにおいて、次に実行する運用操作部品を示す番号が格納される。
【０１６２】
図３０は、運用操作部品定義テーブルの例を示す図である。運用操作部品定義テーブル１３２には、運用操作部品の定義情報があらかじめ格納されている。運用操作部品定義テーブル１３２は、「運用操作部品名」、「部品種別」、「操作／確認対象」および「操作重要度」の各データ項目を含む。
【０１６３】
「運用操作部品名」には、運用操作部品の名称（操作内容）が格納される。「部品種別」には、運用操作部品の種別が格納される。種別には、操作系部品、確認系部品、通知系部品、設定系部品などがある。「操作／確認対象」には、その運用操作部品の操作の対象または確認の対象が格納される。「操作重要度」には、その運用操作部品の操作重要度が格納される。
【０１６４】
図３１は、変数管理テーブルの例を示す図である。変数管理テーブル１３３は、定義されたワークフロー情報の実体を識別する情報であるインスタンスで利用される変数名および変数値を管理するためのテーブルである。変数管理テーブル１３３は、「インスタンスＮｏ．」、「ワークフローＮｏ．」、「変数名」および「変数値」の各データ項目を含む。
【０１６５】
「インスタンスＮｏ．」には、インスタンスを識別するＮｏ．が格納される。「ワークフローＮｏ．」には、ワークフローを識別する番号が格納される。「変数名」には、変数名が格納される。「変数値」には、その変数に設定されている値が格納される。
【０１６６】
図３２は、インスタンス管理テーブルの例を示す図である。インスタンス管理テーブル１３４は、インスタンス単位で管理される情報が格納される。インスタンス管理テーブル１３４は、「インスタンスＮｏ．」、「ワークフローＮｏ．」、「部品Ｎｏ．（現在）」、「ホスト名」、「サービス名」、「ユーザＩＤ」、「起動方式係数」、「排他Ｎｏ．」および「完了予定時刻」の各データ項目を含む。
【０１６７】
「インスタンスＮｏ．」には、インスタンスを識別する番号が格納される。「ワークフローＮｏ．」には、ワークフローを識別する番号が格納される。「部品Ｎｏ．（現在）」には、そのワークフローの現在の処理位置に対応する運用操作部品を識別する番号が格納される。
【０１６８】
「ホスト名」には、ホストの名称が格納される。「サービス名」には、サービスの名称が格納される。「ユーザＩＤ」には、ユーザを識別する情報（ユーザＩＤ）が格納される。「起動方式係数」には、起動方式係数が格納される。「排他Ｎｏ．」には、排他区間を識別する番号が格納される。「完了予定時刻」には、ワークフローの完了予定時刻が格納される。
【０１６９】
図３３は、排他情報管理テーブルの例を示す図である。排他情報管理テーブル１３５は、排他区間に関する情報を管理するためのテーブルである。排他情報管理テーブル１３５は、「排他Ｎｏ．」、「部品Ｎｏ．（ロック開始）」、「部品Ｎｏ．（ロック解除）」、「実行優先度」および「操作緊急度」の各データ項目を含む。
【０１７０】
「排他Ｎｏ．」には、排他区間を識別する番号が格納される。「部品Ｎｏ．（ロック開始）」には、その排他区間の最初の運用操作部品を識別する番号が格納される。「部品Ｎｏ．（ロック解除）」には、その排他区間の最後の運用操作部品を識別する番号が格納される。「実行優先度」には、その排他区間の実行優先度が格納される。「操作緊急度」には、その排他区間の操作緊急度が格納される。
【０１７１】
図３４は、排他獲得履歴テーブルの例を示す図である。排他獲得履歴テーブル１３６は、排他区間の排他権（実行権）の獲得履歴情報を管理する。排他獲得履歴テーブル１３６は、「インスタンスＮｏ．」、「ワークフローＮｏ．」、「排他区間Ｎｏ．」、「開始待ち時間」、「開始時刻」および「完了時刻」の各データ項目を含む。
【０１７２】
「インスタンスＮｏ．」には、インスタンスを識別する番号が格納される。「ワークフローＮｏ．」には、ワークフローを識別する番号が格納される。「排他区間Ｎｏ．」には、排他区間を識別する番号が格納される。
【０１７３】
「開始待ち時間」には、その排他区間が排他権（実行権）を獲得するまでの待ち時間が格納される。「開始時刻」には、その排他区間が排他権（実行権）を獲得する時刻が格納される。「完了時刻」には、その排他区間が排他権（実行権）を獲得して、処理を実行した場合の完了時刻が格納される。
【０１７４】
図３５は、ユーザ係数テーブルの例を示す図である。ユーザ係数テーブル１３７には、ユーザごとのユーザ係数があらかじめ格納されている。ユーザ係数テーブル１３７は、「ユーザＩＤ」および「ユーザ係数」の各データ項目を含む。「ユーザＩＤ」には、ユーザを識別する情報（ユーザＩＤ）が格納される。「ユーザ係数」には、そのユーザＩＤのユーザ係数が格納される。
【０１７５】
図３６は、起動方式係数テーブルの例を示す図である。起動方式係数テーブル１３８には、起動方法ごとの起動方式係数があらかじめ格納されている。起動方式係数テーブル１３８は、「起動方法」および「起動方式係数」の各データ項目を含む。「起動方法」には、ワークフローの起動方法が格納される。「起動方式係数」には、その起動方法に対応する起動方式係数が格納される。
【０１７６】
図３７は、時間係数テーブルの例を示す図である。時間係数テーブル１３９には、時間ごとの時間係数があらかじめ格納されている。時間係数テーブル１３９は、「残り時間」および「時間係数」の各データ項目を有する。「残り時間」には、完了予定時刻までの残り時間が格納される。「時間係数」には、その残り時間に対応する時間係数が格納される。
【０１７７】
次に、最適化対象部品定義テーブル１４０について示す。前述のように、最適化対象部品定義テーブル１４０は、最適化の対象とする運用操作部品のリストを保持しており、次の２種類のテーブルを含む。
【０１７８】
図３８は、一方の最適化対象部品定義テーブルの例を示す図である。一方の最適化対象部品定義テーブル１４０ａには、連続実行条件の対象とする運用操作部品があらかじめ格納されている。最適化対象部品定義テーブル１４０ａは、「運用操作部品」および「オプション」の各データ項目を有する。
【０１７９】
「運用操作部品」には、連続実行条件の対象とする運用操作部品の名称（操作内容）が格納される。「オプション」には、対応する運用操作部品に対して設定可能な変数が格納される。「オプション」は、各運用操作部品に複数対応付けることができる。
【０１８０】
排他制御部１１０は、最適化制御ワークフローから連続する同一名称の運用操作部品の組み合わせを抽出したとき、その名称が最適化対象部品定義テーブル１４０ａに登録されていた場合に、その組み合わせのうち後側の運用操作部品の実行を省略可能と判定することができる。
【０１８１】
図３９は、他方の最適化対象部品定義テーブルの例を示す図である。他方の最適化対象部品定義テーブル１４０ｂには、相反操作条件の対象とする運用操作部品があらかじめ登録されている。最適化対象部品定義テーブル１４０ｂは、「Ｇｏ」および「Ｂａｃｋ」の各データ項目を含み、「Ｇｏ」および「Ｂａｃｋ」のそれぞれに「運用操作部品」および「オプション」の各データ項目が設けられる。
【０１８２】
「運用操作部品」は、対象となる運用操作部品の名称（操作内容）が格納される。「オプション」には、対応する運用操作部品に対して設定可能な変数が格納される。「オプション」は、各運用操作部品に複数対応付けることができる。「Ｇｏ」に登録された運用操作部品と、その運用操作部品に対応付けて「Ｂａｃｋ」に登録された運用操作部品とが、相反する操作を行う運用操作部品の対となっている。
【０１８３】
排他制御部１１０は、例えば次の手順により、相反操作条件に該当するために実行を省略可能な運用操作部品を特定することができる。排他制御部１１０は、最適化制御ワークフローから、最適化対象部品定義テーブル１４０ｂの「Ｇｏ」に登録されている運用操作部品を特定する。次に、排他制御部１１０は、特定した運用操作部品の次の運用操作部品が、特定した運用操作部品に対応付けて「Ｂａｃｋ」に登録されているかを判定し、登録されていた場合に、特定した運用操作部品とその次の運用操作部品の実行を省略可能と判定する。
【０１８４】
図４０は、最適化制御ワークフロー管理テーブルの例を示す図である。最適化制御ワークフロー管理テーブル１４１は、最適化制御ワークフローを管理するためのテーブルである。最適化制御ワークフロー管理テーブル１４１は、「最適化制御ワークフローＮｏ．」、「部品Ｎｏ．」、「運用操作部品」、「ワークフローＮｏ．」、「省略フラグ」、「実行待ち」、「次の部品Ｎｏ．」および「省略後の次の部品Ｎｏ．」の各データ項目を含む。
【０１８５】
「最適化制御ワークフローＮｏ．」には、最適化制御ワークフローを識別する番号が格納される。「部品Ｎｏ．」には、最適化制御ワークフローに含まれる運用操作部品を識別する番号が格納される。「運用操作部品」には、運用操作部品の名称（操作内容）が格納される。「ワークフローＮｏ．」には、運用操作部品が含まれるワークフローを識別する番号が格納される。
【０１８６】
「省略フラグ」には、運用操作部品の実行を省略可能か否かを示す情報が格納される。また、この情報は、実行を省略可能であることを示す場合、連続実行条件と相反操作条件のどちらに該当したかを示す情報も含まれる。「実行待ち」には、実行待ちの対象となっている運用操作部品を識別する番号が格納される。
【０１８７】
「次の部品Ｎｏ．」には、その最適化制御ワークフローにおいて、次に実行する運用操作部品を示す番号が格納される。「省略後の次の部品Ｎｏ．」には、運用操作部品の実行が省略された場合に、その最適化制御ワークフローにおいて、次に実行される運用操作部品を示す番号が格納される。
【０１８８】
図４１は、実行結果管理テーブルの例を示す図である。実行結果管理テーブル１４２には、相反操作条件により実行の省略対象となる運用操作部品ごとに、実行結果の情報が格納される。実行結果管理テーブル１４２は、「運用操作部品」、「出力情報」、「デフォルト値」および「実際の実行結果」の各データ項目を含む。
【０１８９】
「運用操作部品」には、相反操作条件により実行の省略対象となる運用操作部品の名称（操作内容）が格納される。「出力情報」には、出力値（実行結果）が設定される変数が格納される。「出力情報」は、「運用操作部品」に対して複数対応付けることができる。「デフォルト値」には、「出力情報」に登録された変数に設定されるデフォルト値が格納される。以上の「運用操作部品」、「出力情報」および「デフォルト値」には、あらかじめ情報が格納される。
【０１９０】
「実際の実行結果」には、「出力情報」に登録された変数に対して実際の処理によって設定された値（実行結果）が格納される。本実施の形態では、システムの起動後に該当運用操作部品が最初に実行されたときに、その実行結果が「実際の実行結果」に格納される。
【０１９１】
なお、他の例として、「実際の実行結果」には、該当運用操作部品が実行されるたびに最新の実行結果が格納されてもよい。
また、「実際の実行結果」のデータ項目はワークフローごとに設けられてもよい。この場合、あるワークフロー内の該当運用操作部品が最初に実行されたとき、そのワークフローに対応する「実際の実行結果」に実行結果が格納される。あるいは、そのワークフロー内の該当運用操作部品が実行されるたびに、そのワークフローに対応する「実際の実行結果」に最新の実行結果が格納されてもよい。
【０１９２】
次に、運用自動化サーバ１００の処理についてフローチャートを用いて説明する。
図４２は、ワークフロー実行部の処理例を示すフローチャートである。図４２の処理は、ワークフローごとに、そのワークフローに対応するワークフロー実行部１２０によって行われる。
【０１９３】
［ステップＳ５１］ワークフローの処理を開始する際、ワークフロー実行部１２０は、排他制御部１１０に対して、ワークフローの開始、およびワークフローの実行に際して用いる変数の情報を通知する。変数に関する情報は、例えば、ワークフローを起動したユーザのユーザＩＤ、ワークフローの起動方式などの情報を含む。
【０１９４】
［ステップＳ５２］ワークフロー実行部１２０は、ワークフロー管理テーブル１３１に基づいて次に実行する運用操作部品を判別し、排他制御部１１０に対してその運用操作部品の実行開始を通知する。このとき、ワークフロー実行部１２０は、排他制御部１１０に対して、実行する運用操作部品の識別番号と、その運用操作部品が用いる変数の情報を通知する。ワークフロー実行部１２０は、これらの情報を通知した後、排他制御部１１０からの指示待ち状態となる。
【０１９５】
排他制御部１１０は、ステップＳ５２で通知された運用操作部品が省略可能かを判定し、その判定結果に応じた指示をワークフロー実行部１２０に通知する。指示としては、実行指示、連続実行条件による実行省略指示、相反操作条件による実行省略指示がある。また、相反操作条件による実行省略指示には、実行待ちにするか否かを示す情報も含まれる。
【０１９６】
［ステップＳ５３］ワークフロー実行部１２０は、排他制御部１１０からの指示を受け取る。ワークフロー実行部１２０は、指示された内容を判別し（ステップＳ５４，Ｓ５５，Ｓ５８）、指示内容に応じた処理を行う。
【０１９７】
［ステップＳ５４］相反操作条件による実行省略が指示された場合、ステップＳ５５の処理が実行され、それ以外の処理が指示された場合、ステップＳ５８の処理が実行される。
【０１９８】
［ステップＳ５５］実行待ちが指示された場合、ステップＳ５７の処理が実行され、実行待ちが指示されていない場合、ステップＳ５６の処理が実行される。
［ステップＳ５６］ワークフロー実行部１２０は、実行を省略する運用操作部品の実行結果を実行履歴データベース１５１に設定する。処理の詳細については図４３において説明する。
【０１９９】
［ステップＳ５７］実行待ちが指示されるケースとは、実行省略が指示された運用操作部品が含まれる最適化制御ワークフロー上に、他のワークフローに含まれる同じ運用操作部品が含まれているケースである。この場合、他のワークフローに含まれる同じ運用操作部品が実行されたとき、排他制御部１１０は、当該ワークフロー実行部１２０に対して実行待ちの解除を指示するとともに、他のワークフローによる実行結果を渡す。ワークフロー実行部１２０は、排他制御部１１０から取得した実行結果を、実行を省略した運用操作部品の実行結果として実行履歴データベース１５１に設定する。
【０２００】
［ステップＳ５８］連続実行条件による実行省略が指示された場合、ステップＳ５９の処理が実行され、実行が指示された場合、ステップＳ６０の処理が実行される。
［ステップＳ５９］ワークフロー実行部１２０は、実行履歴データベース１５１から、直前に実行された同じ運用操作部品の実行結果を取得する。ワークフロー実行部１２０は、取得した実行結果を、実行を省略した運用操作部品の実行結果として実行履歴データベース１５１に設定する。
【０２０１】
［ステップＳ６０］ワークフロー実行部１２０は、運用操作部品に対応する処理を業務サーバ２１０に実行させる。ワークフロー実行部１２０は、実行結果を実行履歴データベース１５１に設定する。
【０２０２】
また、ワークフロー実行部１２０は、実行した運用操作部品が、最適化対象部品定義テーブル１４０ｂに登録された、相反操作条件の対象とする運用操作部品である場合には、次のような処理を行う。実行結果管理テーブル１４２において、該当運用操作部品に対応する「実際の実行結果」のデータ項目に情報が設定されていない場合、ワークフロー実行部１２０は、実行結果を「実際の実行結果」に設定する。
【０２０３】
［ステップＳ６１］ワークフロー実行部１２０は、運用操作部品にフィルタ処理が定義されているかを判定する。フィルタ処理が定義されている場合、ステップＳ６２の処理が実行され、フィルタ処理が定義されていない場合、ステップＳ６３の処理が実行される。
【０２０４】
なお、運用操作部品に対応するフィルタ処理の内容は、例えば、運用操作部品定義テーブル１３２、あるいはワークフロー管理テーブル１３１において該当運用操作部品に対応付けて定義されていればよい。
【０２０５】
［ステップＳ６２］ワークフロー実行部１２０は、実行結果に対し、定義されたフィルタ処理を施す。
［ステップＳ６３］ワークフロー実行部１２０は、排他制御部１１０に対して、該当運用操作部品の実行終了を通知する。これとともに、ワークフロー実行部１２０は、ワークフロー管理テーブル１３１に基づき、該当ワークフローに次の運用操作部品が登録されているかを判定する。次の運用操作部品がある場合、その運用操作部品についてステップＳ５２からの処理が実行される。一方、次の運用操作部品がない場合、ワークフロー実行部１２０は、排他制御部１１０に対してワークフローの終了を通知し、処理を終了する。
【０２０６】
図４３は、実行を省略する運用操作部品の出力情報の組み立て処理の例を示すフローチャートである。この図４３の処理は、図４２のステップＳ５６の処理に対応する。
［ステップＳ８１］ワークフロー実行部１２０は、実行を省略する運用操作部品が含まれるワークフローにおいて、この運用操作部品と同じ運用操作部品が実行済みであるかを判定する。同じ運用操作部品が実行済みである場合、ステップＳ８２の処理が実行され、未実行である場合、ステップＳ８４の処理が実行される。
【０２０７】
［ステップＳ８２］ワークフロー実行部１２０は、実行済みの同じ運用操作部品が正常に終了したかを判定する。正常に終了した場合、ステップＳ８３の処理が実行され、正常に終了していない場合、ステップＳ８４の処理が実行される。
【０２０８】
［ステップＳ８３］ワークフロー実行部１２０は、実行済みの同じ運用操作部品の実行結果を実行履歴データベース１５１から取得し、取得した実行結果を、実行を省略する運用操作部品の実行結果として実行履歴データベース１５１に設定する。
【０２０９】
［ステップＳ８４］ワークフロー実行部１２０は、システムの起動後に、実行を省略する運用操作部品と同じ運用操作部品が実行済みであるかを判定する。実行結果管理テーブル１４２において、該当運用操作部品に対応付けられた「実際の実行結果」に情報が登録されていれば、同じ運用操作部品が実行済みであると判定される。同じ運用操作部品が実行済みである場合、ステップＳ８５の処理が実行され、未実行である場合、ステップＳ８６の処理が実行される。
【０２１０】
［ステップＳ８５］ワークフロー実行部１２０は、実行結果管理テーブル１４２から、該当運用操作部品に対応付けられた「実際の実行結果」から情報を読み出し、読み出した情報を、実行を省略する運用操作部品の実行結果として実行履歴データベース１５１に設定する。
【０２１１】
［ステップＳ８４］ワークフロー実行部１２０は、実行結果管理テーブル１４２から、該当運用操作部品に対応付けられた「デフォルト値」から情報を読み出し、読み出した情報を、実行を省略する運用操作部品の実行結果として実行履歴データベース１５１に設定する。
【０２１２】
図４４は、排他制御部の処理例を示すフローチャートである。図４４の処理は、ワークフローごとに実行される。
［ステップＳ１０１］排他制御部１１０は、ワークフロー実行部１２０からの通知を待つ。排他制御部１１０がワークフロー実行部１２０から通知を受けると、次のステップＳ１０２の処理が実行される。
【０２１３】
［ステップＳ１０２］排他制御部１１０が、図４２のステップＳ５１で出力されるワークフロー開始通知を受けた場合、ステップＳ１０３の処理が実行され、それ以外の通知を受けた場合、ステップＳ１０５の処理が実行される。
【０２１４】
［ステップＳ１０３］排他制御部１１０は、ワークフロー開始時の排他制御処理を実行する。処理の詳細については図４５において説明する。
［ステップＳ１０４］排他制御部１１０は、最適化制御ワークフローの組み立て処理（登録）を実行する。処理の詳細については図５０において説明する。
【０２１５】
［ステップＳ１０５］排他制御部１１０が、図４２のステップＳ６３で出力される運用操作部品の実行終了通知を受けた場合、ステップＳ１０６の処理が実行される。一方、排他制御部１１０が、図４２のステップＳ５２で出力される運用操作部品の実行開始通知を受けた場合、ステップＳ１０７の処理が実行される。
【０２１６】
［ステップＳ１０６］排他制御部１１０は、最適化制御ワークフローの組み立て処理（削除）を実行する。処理の詳細については図５２において説明する。
［ステップＳ１０７］排他制御部１１０は、ワークフロー動作中の排他制御処理を実行する。処理の詳細については図４８において説明する。
【０２１７】
［ステップＳ１０８］ワークフローが終了していない場合、ステップＳ１０１に戻る。一方、ワークフローが終了した場合、排他制御部１１０は、該当ワークフローについての処理を終了する。ワークフローの終了は、図４２のステップＳ６３で出力されるワークフローの終了通知を受けたことによって判定される。
【０２１８】
図４５は、ワークフロー開始時の排他制御処理の例を示すフローチャートである。
［ステップＳ１２１］排他制御部１１０は、ワークフロー管理テーブル１３１から、実行対象のワークフロー（図４４のステップＳ１０１で実行開始が通知されたワークフロー）の情報を取得する。
【０２１９】
［ステップＳ１２２］排他制御部１１０は、運用操作部品定義テーブル１３２から、実行対象のワークフロー情報に含まれる「運用操作部品名」に対応する「部品種別」を取得する）。これにより、排他制御部１１０は、実行対象のワークフロー情報に含まれる運用操作部品の種別を決定する。
【０２２０】
［ステップＳ１２３］排他制御部１１０は、ワークフロー開始時に確定済みの変数情報を変数管理テーブル１３３に記録する。ワークフロー開始時に確定済みの変数情報とは、例えば、あらかじめ値が設定された変数、またはワークフロー実行部１２０より渡された変数などである。
【０２２１】
［ステップＳ１２４］排他制御部１１０は、開始するワークフローの排他情報を仮決定する。処理の詳細については図４６において説明する。
［ステップＳ１２５］排他制御部１１０は、仮決定した排他情報の実行優先度を計算する。処理の詳細については図４７において説明する。
【０２２２】
図４６は、排他情報の仮決定の処理例を示すフローチャートである。この図４６の処理は、図４５のステップＳ１２４、および後述する図４８のステップＳ１６３の各処理に対応する。
【０２２３】
［ステップＳ１３１］排他制御部１１０は、ワークフロー管理テーブル１３１から、実行対象のワークフローの運用操作部品の情報を取得する。
［ステップＳ１３２］排他制御部１１０は、運用操作部品定義テーブル１３２に基づいて、実行対象のワークフローに含まれる運用操作部品をモデル化する。すなわち、排他制御部１１０、運用操作部品定義テーブル１３２に基づいて、実行対象のワークフローに含まれる運用操作部品を、対応する部品種別に変換する。
【０２２４】
［ステップＳ１３３］排他制御部１１０は、ワークフロー管理テーブル１３１および変数管理テーブル１３３を用いて、実行対象のワークフローにおいて変数の値または変数名が連続している運用操作部品を抽出する。すなわち、排他制御部１１０は、ワークフロー管理テーブル１３１の「部品Ｎｏ．」および「次の部品Ｎｏ．」から、実行対象のワークフロー内での部品種別（モデル化した運用管理部品）の処理順を判定する。そして、排他制御部１１０は、変数管理テーブル１３３に基づいて、その処理順において同じ部品種別の変数の値または同じ変数名が連続するか否かを判定する。その結果、排他制御部１１０は、ワークフロー管理テーブル１３１から、その処理順において同じ部品種別の変数の値または同じ変数名が連続する運用操作部品の区間を抽出する。
【０２２５】
［ステップＳ１３４］排他制御部１１０は、ワークフロー管理テーブル１３１の「操作対象」、「操作サービス、資源」、「出力」のデータ項目を用いて、その処理順に基づいて、運用操作部品の出力値（実行結果）が後続の運用操作部品の入力値になっている運用操作部品の区間を抽出する。
【０２２６】
［ステップＳ１３５］排他制御部１１０は、ステップＳ１３３またはステップＳ１３４において抽出した区間を、排他区間として仮決定する。
［ステップＳ１３６］排他制御部１１０は、運用操作部品定義テーブル１３２、ユーザ係数テーブル１３７、起動方式係数テーブル１３８および時間係数テーブル１３９に基づいて、仮決定した排他区間の実行優先度を仮決定する。
【０２２７】
すなわち、排他制御部１１０は、運用操作部品定義テーブル１３２から、仮決定した排他区間に含まれる部品種別に対応する操作重要度を取得し、操作重要度同士を加算する。また、排他制御部１１０は、ユーザ係数テーブル１３７から、ワークフローを起動したユーザのユーザＩＤに対応するユーザ係数を取得する。また、排他制御部１１０は、起動方式係数テーブル１３８から、ワークフローの起動方法に対応する起動方式係数を取得する。
【０２２８】
また、排他制御部１１０は、ワークフローの完了予定時刻と現時刻との差分から、完了予定時刻までの残り時間を算出する。ここで、排他制御部１１０は、あらかじめ登録されている各運用操作部品の完了までにかかる時間に基づいて、ワークフローの完了予定時刻を算出してもよい。また、排他制御部１１０は、過去に実行したワークフローの履歴情報（例えば、排他獲得履歴テーブル１３６）から取得した完了時刻を完了予定時刻としてもよい。
【０２２９】
排他制御部１１０は、時間係数テーブル１３９から、その算出した残り時間に対応する時間係数を取得する。そして、排他制御部１１０は、上述した式（１）を用いて操作緊急度を算出し、上述した式（２）を用いて実行優先度を算出する。
【０２３０】
［ステップＳ１３７］排他制御部１１０は、インスタンス管理テーブル１３４および排他情報管理テーブル１３５に、仮決定した排他区間に関する情報（仮決定した排他区間、実行優先度、ユーザ係数、起動方式係数、操作緊急度などのステップＳ１３３〜Ｓ１３６で用いた情報）を格納する。
【０２３１】
図４７は、排他情報の実行優先度の計算処理例を示すフローチャートである。この図４７の処理は、図４５のステップＳ１２５、および後述する図４８のステップＳ１６４の各処理に対応する。
【０２３２】
［ステップＳ１４１］排他制御部１１０は、インスタンス管理テーブル１３４およびユーザ係数テーブル１３７から、仮決定した排他区間に関する情報（ユーザ係数、起動方式係数、排他Ｎｏ．、完了予定時刻など）を取得する。
【０２３３】
［ステップＳ１４２］排他制御部１１０は、運用操作部品定義テーブル１３２から、その排他Ｎｏ．に対応する排他区間に含まれる部品種別を取得する。
［ステップＳ１４３］排他制御部１１０は、運用操作部品定義テーブル１３２から、その排他Ｎｏ．に対応する排他区間に含まれる操作重要度情報を取得する。
【０２３４】
なお、ステップＳ１４２，Ｓ１４３の処理順は逆でもよい。
［ステップＳ１４４］排他制御部１１０は、ステップＳ１４１で取得した完了予定時刻から現在の時刻を差し引いて、完了予定時刻までの残り時間を算出し、時間係数テーブル１３９から、その算出した残り時間に対応する時間係数を取得する。排他制御部１１０は、上述した式（１）を用いて操作緊急度を算出し、上述した式（２）を用いて、その排他区間の実行優先度を算出する。
【０２３５】
［ステップＳ１４５］排他制御部１１０は、算出した操作緊急度および実行優先度を排他情報管理テーブル１３５に格納する。
図４８は、ワークフロー動作中の排他制御処理の例を示すフローチャートである。この図４８の処理は、図４４のステップＳ１０７の処理に対応する。
【０２３６】
［ステップＳ１６１］排他制御部１１０は、ワークフロー実行部１２０から通知された情報に含まれる変数の情報（確定した変数の情報）、またはあらかじめ値が設定された変数を、変数管理テーブル１３３に格納する。
【０２３７】
［ステップＳ１６２］排他制御部１１０は、インスタンス管理テーブル１３４から、ワークフローの定義情報を取得する。
［ステップＳ１６３］排他制御部１１０は、仮決定した排他区間に関する情報を更新する。このステップＳ１６３の処理の詳細は、図４６と同様である。
【０２３８】
［ステップＳ１６４］排他制御部１１０は、実行優先度情報を更新する。このステップＳ１６４の処理の詳細は、図４７と同様である。
［ステップＳ１６５］排他制御部１１０は、最適化制御ワークフローの組み立て処理（変更）を実行する。処理の詳細については図５１において説明する。
【０２３９】
［ステップＳ１６６］排他制御部１１０は、排他アクション動作を決定する。処理の詳細については図４９において説明する。
図４９は、排他アクション決定処理の例を示すフローチャートである。この図４９の処理は、図４８のステップＳ１６６の処理に対応する。
【０２４０】
［ステップＳ１７１］排他制御部１１０は、実行対象のワークフローについて仮決定した排他区間に関する情報と実行優先度情報を取得する。ここでは、排他制御部１１０は、インスタンス管理テーブル１３４から、実行対象のワークフローについて仮決定した排他区間に関する情報（排他Ｎｏ．など）を取得する。排他制御部１１０は、その排他Ｎｏ．をキーとして、排他情報管理テーブル１３５から実行優先度を取得する。
【０２４１】
［ステップＳ１７２］排他制御部１１０は、実行中のワークフローについて、ワークフローの実行状況、現在の排他区間に関する情報と実行優先度情報、仮決定された排他区間に関する予定情報と実行優先度情報を取得する。ここでは、排他制御部１１０は、インスタンス管理テーブル１３４を読み込んで、ワークフローの実行状況を取得する。
【０２４２】
排他制御部１１０は、インスタンス管理テーブル１３４および排他情報管理テーブル１３５から、実行中のワークフロー（ただし、図４４のステップＳ１０１の初回処理において実行開始が通知された、実行対象のワークフローを除く）について現在の排他区間に関する情報を取得する。具体的には、排他制御部１１０は、まず、インスタンス管理テーブル１３４の「部品Ｎｏ．（現在）」から、ワークフローで現在の対象となっている運用操作部品（現在の処理位置）を判定する。次に、排他制御部１１０は、インスタンス管理テーブル１３４およびワークフロー管理テーブル１３１に基づいて、その運用操作部品（現在の処理位置）がどの排他区間に含まれるかを判定する。排他制御部１１０は、判定した排他区間の排他Ｎｏ．をキーとして、排他情報管理テーブル１３５から実行優先度を取得する。
【０２４３】
［ステップＳ１７３］排他制御部１１０は、インスタンス管理テーブル１３４および排他情報管理テーブル１３５から、実行中のワークフロー（ただし、図４４のステップＳ１０１の初回処理において実行開始が通知された、実行対象のワークフローを除く）について仮決定した排他区間に関する情報を取得する。具体的には、排他制御部１１０は、まず、インスタンス管理テーブル１３４から、ワークフローで現在の対象となっている運用操作部品（現在の処理位置）が属する排他区間以外の排他区間の情報を取得する。次に、排他制御部１１０は、その排他区間の排他Ｎｏ．をキーとして、排他情報管理テーブル１３５から実行優先度を取得する。排他制御部１１０は、実行対象のワークフローおよびステップＳ１７２において情報を取得したワークフローに含まれる、実行優先度を取得した排他区間の中から、実行優先度情報が最も大きい排他区間を抽出する。
【０２４４】
［ステップＳ１７４］排他制御部１１０は、インスタンス管理テーブル１３４および排他情報管理テーブル１３５を参照して、実行対象の運用操作部品（図４４のステップＳ１０１の直近の処理において実行開始が通知された運用操作部品）の排他制御情報を確認する。
【０２４５】
実行対象の運用操作部品が排他対象の場合（すなわち、排他区間に含まれる場合）、排他制御部１１０は、最適化制御ワークフロー管理テーブル１４１の「省略フラグ」に基づいて、実行対象の運用操作部品が実行省略の対象か否か、また、実行省略の場合それが連続実行条件と相反操作条件のどちらに基づくものかを確認する。
【０２４６】
［ステップＳ１７５］ステップＳ１７３で抽出された排他区間が属するワークフローが、図４４のステップＳ１０１の初回処理において実行開始が通知された、実行対象のワークフローである場合、ステップＳ１７６の処理が実行される。一方、抽出されたワークフローが実行対象のワークフローでない場合、ステップＳ１７７の処理が実行される。
【０２４７】
［ステップＳ１７６］排他制御部１１０は、実行対象のワークフローの処理を継続する旨の通知（Action）を、実行対象のワークフローに対応するワークフロー実行部１２０に出力する。このActionによって次のような処理が指示される。
【０２４８】
ステップＳ１７４において実行対象の運用操作部品が実行省略の対象でないと判定した場合、排他制御部１１０は、運用操作部品の実行を指示する。一方、実行対象の運用操作部品が実行省略の対象であると判定した場合、排他制御部１１０は、次のような指示を行う。
【０２４９】
実行対象の運用操作部品と、その前または後の運用操作部品との組み合わせが連続実行条件に該当する場合、排他制御部１１０は、連続実行条件による実行省略を指示する。
相反操作条件に該当する場合、次のような処理が行われる。実行対象の運用操作部品と、その前の運用操作部品との組み合わせが相反操作条件に該当する場合、排他制御部１１０は、相反実行条件による実行省略を指示する。また、実行対象の運用操作部品と、その後の運用操作部品との組み合わせが相反操作条件に該当する場合、排他制御部１１０は次のような処理を行う。
【０２５０】
実行対象の運用操作部品が含まれる最適化制御ワークフロー上に、他のワークフローに含まれる後続の運用操作部品として実行対象と同じ運用操作部品が含まれていない場合、排他制御部１１０は、相反実行条件による実行省略を指示する。
【０２５１】
一方、実行対象の運用操作部品が含まれる最適化制御ワークフロー上に、他のワークフローに含まれる後続の運用操作部品として実行対象と同じ運用操作部品が含まれている場合、排他制御部１１０は、実行待ちを指示する。この場合、排他制御部１１０は、他のワークフローに含まれる後続の同じ運用操作部品が実行されると、ワークフロー実行部１２０に対して実行待ちの解除を指示するとともに、その実行結果を出力する。
【０２５２】
なお、他の例として、実行対象の運用操作部品と、その前または後の運用操作部品との組み合わせが相反操作条件に該当する場合、排他制御部１１０は、一律に相反操作条件による実行省略を指示してもよい。
【０２５３】
排他制御部１１０は、上記のようにActionを出力するとともに、最適化制御ワークフロー管理テーブル１４１における実行対象の運用操作部品に対応付けられた「省略フラグ」に、ワークフロー実行部１２０への指示内容に応じた情報を登録する。
【０２５４】
［ステップＳ１７７］排他制御部１１０は、ステップＳ１７３で抽出されたワークフローが排他権（実行権）を喪失するまで、ワークフロー実行部１２０にActionを出力しないことにより、実行対象のワークフローを処理待ち状態にする。
【０２５５】
なお、ステップＳ１７６，Ｓ１７７では、排他制御部１１０は、排他獲得履歴テーブル１３６に対して、必要に総じて情報の新規登録または更新を行う。例えば、排他権を獲得し、その排他区間の処理が完了された場合、排他制御部１１０は「完了時刻」の情報を更新する。また、実行対象の運用操作部品が含まれる排他区間が排他解除待ちである場合、排他制御部１１０は「開始待ち時間」の情報を更新する。
【０２５６】
図５０は、最適化制御ワークフロー組み立て（登録）の処理例を示すフローチャートである。この図５０の処理は、ワークフロー実行部１２０からワークフローの開始通知を受けた場合の処理であり、図４４のステップＳ１０４の処理に対応する。
【０２５７】
［ステップＳ１９１］排他制御部１１０は、実行対象のワークフローに排他区間が存在するかを判定する。図４５のステップＳ１２４の処理により排他区間が抽出され、その排他区間に関する情報がインスタンス管理テーブル１３４および排他情報管理テーブル１３５に登録されている場合に、排他区間が存在すると判定される。排他区間が存在する場合、ステップＳ１９２の処理が実行され、排他区間が存在しない場合、処理が終了される。
【０２５８】
［ステップＳ１９２］排他制御部１１０は、実行対象のワークフローに存在する排他区間での操作対象となる排他資源を特定し、特定した排他資源と同じ排他資源に対応する最適化制御ワークフローが最適化制御ワークフロー管理テーブル１４１に登録されているかを判定する。登録されている場合、ステップＳ１９４の処理が実行され、登録されていない場合、ステップＳ１９３の処理が実行される。
【０２５９】
［ステップＳ１９３］排他制御部１１０は、ステップＳ１９３で特定した排他資源に対応する最適化制御ワークフローのインスタンスを、最適化制御ワークフロー管理テーブル１４１に新規に登録する。このインスタンスには、実行対象のワークフローに存在する排他区間内の運用操作部品の情報が登録される。
【０２６０】
［ステップＳ１９４］排他制御部１１０は、ステップＳ１９３で特定した排他資源と同じ排他資源に対応する既存の最適化制御ワークフローに、実行対象のワークフローに存在する排他区間の運用操作部品が挿入されるように、最適化制御ワークフロー管理テーブル１４１を更新する。これにより、上記の既存の最適化制御ワークフローの再組み立てが行われる。
【０２６１】
この再組み立てにおいて、排他制御部１１０は、実行対象のワークフロー、および上記の既存の最適化制御ワークフローに含まれるワークフローごとの排他区間それぞれについての実行優先度を、排他情報管理テーブル１３５から読み込んで比較する。排他制御部１１０は、その比較結果に基づき、最適化制御ワークフロー内で実行優先度が高い順に排他区間が並ぶように、実行対象のワークフローの排他区間を挿入する。
【０２６２】
また、排他制御部１１０は、最適化対象部品定義テーブル１４０に基づいて、再組み立てを行った最適化制御ワークフローから、実行を省略可能な運用操作部品を特定し直す。排他制御部１１０は、最適化制御ワークフロー管理テーブル１４１の「省略フラグ」のうち、実行の省略可否が変更された運用操作部品や、連続実行条件と相反操作条件のどちらによって実行省略可能と判定されたかで変化した運用操作部品に対応する「省略フラグ」を更新する。
【０２６３】
［ステップＳ１９５］排他制御部１１０は、排他区間を挿入した最適化制御ワークフローにおいて、その挿入箇所の直前の運用操作部品の実行が省略済みであるかを、実行履歴データベース１５１に基づいて判定する。省略済みである場合、ステップＳ１９６の処理が実行され、省略されていない場合、処理が終了される。
【０２６４】
［ステップＳ１９６］排他制御部１１０は、実行が省略された運用操作部品についての補正処理を実行する。処理の詳細については図５３において説明する。
図５１は、最適化制御ワークフロー組み立て（変更）の処理例を示すフローチャートである。この図５２の処理は、ワークフロー実行部１２０から運用操作部品の実行開始通知を受けた場合の処理であり、図４８のステップＳ１６５の処理に対応する。
【０２６５】
［ステップＳ２０１］排他制御部１１０は、実行対象の運用操作部品が含まれる最適化制御ワークフローに属するワークフローごとの排他区間の少なくとも１つについて、実行優先度が変更されたかを判定する。少なくとも１つの排他区間の実行優先度が変更された場合、ステップＳ２０２の処理が実行され、どの排他区間の実行優先度も変更されていない場合、処理が終了される。
【０２６６】
［ステップＳ２０２］排他制御部１１０は、実行対象のワークフロー内の排他区間が含まれている最適化制御ワークフローを、最適化制御ワークフロー管理テーブル１４１から特定する。排他制御部１１０は、排他情報管理テーブル１３５に基づき、特定した最適化制御ワークフローに含まれる各排他区間の実行優先度を比較する。
【０２６７】
排他制御部１１０は、その比較結果から排他区間の入れ替えが必要である場合には、最適化制御ワークフローの再組み立てを行って、最適化制御ワークフロー管理テーブル１４１を更新する。この再組み立てにおいて、排他制御部１１０は、最適化制御ワークフロー内で実行優先度が高い順に排他区間が並ぶように、排他区間の順序を入れ替える。
【０２６８】
また、最適化制御ワークフローの再組み立てが行われた場合、排他制御部１１０は、最適化対象部品定義テーブル１４０に基づいて、再組み立てを行った最適化制御ワークフローから、実行を省略可能な運用操作部品を特定し直す。排他制御部１１０は、最適化制御ワークフロー管理テーブル１４１の「省略フラグ」のうち、実行の省略可否が変更された運用操作部品や、連続実行条件と相反操作条件のどちらによって実行省略可能と判定されたかで変化した運用操作部品に対応する「省略フラグ」を更新する。
【０２６９】
［ステップＳ２０３］排他制御部１１０は、ステップＳ２０３で特定した最適化制御ワークフローにおいて、順序の移動が発生した排他区間の直前の運用操作部品の実行が省略済みであるかを、実行履歴データベース１５１に基づいて判定する。省略済みである場合、ステップＳ２０４の処理が実行され、省略されていない場合、処理が終了される。
【０２７０】
［ステップＳ２０４］排他制御部１１０は、実行が省略された運用操作部品についての補正処理を実行する。処理の詳細については図５３において説明する。
図５２は、最適化制御ワークフロー組み立て（削除）の処理例を示すフローチャートである。この図５２の処理は、ワークフロー実行部１２０から運用操作部品の実行終了通知を受けた場合の処理であり、図４４のステップＳ１０６の処理に対応する。
【０２７１】
［ステップＳ２１１］排他制御部１１０は、ワークフロー管理テーブル１３１の「次の部品Ｎｏ．」から、実行終了が通知された運用操作部品（以下、「終了した運用操作部品」と呼ぶ）の次に実行される運用操作部品の部品Ｎｏ．を取得する。
【０２７２】
［ステップＳ２１２］排他制御部１１０は、ステップＳ２１１で複数の部品Ｎｏ．が取得され（すなわち、終了した運用操作部品が条件分岐を行うものであり）、かつ、条件分岐の実行結果により分岐しないと判定された側に続くいずれかの運用操作部品が、終了した運用操作部品が属していた排他区間とは異なる他の排他区間に属する、という条件に該当するかを判定する。上記条件に該当する場合、ステップＳ２１３の処理が実行され、上記条件に該当しない場合、処理が終了される。
【０２７３】
［ステップＳ２１３］排他制御部１１０は、分岐しないと判定された側に続く運用操作部品が属する他の排他区間に含まれる処理情報を、最適化制御ワークフロー管理テーブル１４１から削除する。これにより、削除対象の排他区間が含まれていた最適化制御ワークフローの再組み立てが行われる。
【０２７４】
また、排他制御部１１０は、最適化対象部品定義テーブル１４０に基づいて、再組み立てを行った最適化制御ワークフローから、実行を省略可能な運用操作部品を特定し直す。排他制御部１１０は、最適化制御ワークフロー管理テーブル１４１の「省略フラグ」のうち、実行の省略可否が変更された運用操作部品や、連続実行条件と相反操作条件のどちらによって実行省略可能と判定されたかで変化した運用操作部品に対応する「省略フラグ」を更新する。
【０２７５】
［ステップＳ２１４］排他制御部１１０は、処理情報を削除した最適化制御ワークフローにおいて、削除した区間の直前の運用操作部品の実行が省略済みであるかを、実行履歴データベース１５１に基づいて判定する。省略済みである場合、ステップＳ２１５の処理が実行され、省略されていない場合、ステップＳ１０８の処理が実行される。
【０２７６】
［ステップＳ２１５］排他制御部１１０は、実行が省略された運用操作部品についての補正処理を実行する。処理の詳細については図５３において説明する。
図５３は、補正処理の例を示すフローチャートである。この図５３の処理は、図５０のステップＳ１９６、図５１のステップＳ２０４、図５２のステップＳ２１４の各処理に対応する。なお、ここでは、補正対象の運用操作部品（すなわち、実行が省略された運用操作部品）が含まれるワークフローを「補正対象のワークフロー」と呼ぶ。
【０２７７】
［ステップＳ２２１］排他制御部１１０は、補正対象のワークフローの処理状態を確認する。補正対象の運用操作部品の次の操作が運用操作部品による操作であり、この運用操作部品が排他獲得待ち状態になっている場合、ステップＳ２２２の処理が実行される。また、補正対象の運用操作部品の次の操作がアクティビティによる操作であり、このアクティビティが排他獲得待ち状態になっている場合、ステップＳ２２５の処理が実行される。また、補正対象の運用操作部品の次の操作が実行中か、またはその操作の実行が終了している場合、ステップＳ２２９の処理が実行される。
【０２７８】
［ステップＳ２２２］排他制御部１１０は、排他制御を補正対象のワークフローに設定する。
［ステップＳ２２３］排他制御部１１０は、補正対象のワークフローを実行するワークフロー実行部１２０に対して、補正対象の運用操作部品の次の運用操作部品をキャンセルするよう指示する。
【０２７９】
なお、ステップＳ２２２，Ｓ２２３の処理順は入れ替え可能である。
［ステップＳ２２４］排他制御部１１０は、補正対象のワークフローを実行するワークフロー実行部１２０に対して、このワークフローの制御を補正対象の運用操作部品に戻すように指示する。この指示を受けたワークフロー実行部１２０は、省略された運用操作部品をあらためて実行する。
【０２８０】
［ステップＳ２２５］排他制御部１１０は、補正対象の運用操作部品の次のアクティビティにおける通知者（すなわち、このアクティビティの実行の際に承認などの入力操作を行う者）に対して、アクティビティの実行を取り消す旨を通知する。例えば、通知者に電子メールを送信することで取り消す旨が通知される。
【０２８１】
［ステップＳ２２６］排他制御部１１０は、補正対象のワークフローを実行するワークフロー実行部１２０に対して、補正対象の運用操作部品の次のアクティビティをキャンセルするよう指示する。
【０２８２】
［ステップＳ２２７］排他制御部１１０は、排他制御を補正対象のワークフローに設定する。
なお、ステップＳ２２５，Ｓ２２６，Ｓ２２７の処理順は変更可能である。ただし、ステップＳ２２５，Ｓ２２６の各処理はできるだけ間隔を空けずに実行されることが望ましい。
【０２８３】
［ステップＳ２２８］排他制御部１１０は、補正対象のワークフローを実行するワークフロー実行部１２０に対して、このワークフローの制御を補正対象の運用操作部品に戻すように指示する。この指示を受けたワークフロー実行部１２０は、省略された運用操作部品をあらためて実行する。
【０２８４】
［ステップＳ２２９］補正対象のワークフローにおいて、少なくとも補正対象の運用操作部品の次の操作はすでに実行済みであることから、補正対象のワークフローを実行するワークフロー実行部１２０に、補正対象の運用操作部品を実行させることができない。そこで、排他制御部１１０は、補正対象の運用操作部品を代理で実行し、実行結果を実行履歴データベース１５１に設定する。
【０２８５】
次に、ワークフローの他の構成例を示すとともに、最適化制御ワークフローに対する各ワークフローの排他区間の組み込み処理について示す。
図５４は、異なる排他区間のループが発生し得るワークフローの例を示す図である。
【０２８６】
図５４に示すワークフローでは、運用操作部品７１により操作対象のリストが取得され、運用操作部品７２により、そのリストから操作対象が設定（選択）される。その設定の結果、運用操作部品７２の後に、設定された操作対象に対する運用操作部品が動的に設定されて実行される。すなわち、運用操作部品７２の次には、設定された操作対象に対応する排他区間が現れる。例えば、操作対象として排他資源Ｘが設定された場合、運用操作部品７２の次に［排他区間：Ｘ］が現れる。
【０２８７】
そして、各排他区間における最後の運用操作部品は条件分岐となっており、分岐先は運用操作部品Ｄと運用操作部品７２となっている。すなわち、分岐先が運用操作部品７２となった場合、処理のループが発生し、分岐先が運用操作部品Ｄとなった場合にループから抜ける。
【０２８８】
このようなワークフローの場合、どの排他資源を操作する運用操作部品が実行されるか、および、それらの運用操作部品が何回繰り返して実行されるかを予測することができない。そこで、排他制御部１１０は、運用操作部品７２が実行されて、操作対象を示す変数が設定された時点で、後続の排他区間に含まれる運用操作部品を操作対象に対応する最適化制御ワークフローに組み込む。すなわち、ループが実行されるたびに、操作対象に対応する最適化制御ワークフローの再組み立てが行われる。これにより、ループ区間の運用操作部品についても実行省略の対象とすることが可能になる。
【０２８９】
図５５は、並列分岐を含むワークフローの例を示す図である。
図５５に示すワークフローでは、運用操作部品Ｄの実行後に、［排他区間：Ｘ］と［排他区間：Ｙ］とは並列に実行される。この場合、排他制御部１１０は、［排他区間：Ｘ］に含まれる運用操作部品を排他資源Ｘに対応する最適化制御ワークフローに組み込むとともに、［排他区間：Ｙ］に含まれる運用操作部品を排他資源Ｙに対応する最適化制御ワークフローに組み込む。
【０２９０】
このように、それぞれ異なる排他資源を操作する排他区間が並列に実行される場合、排他資源ごとに運用操作部品を最適化制御ワークフローに登録することで、どちらの排他区間に含まれる運用操作部品についても実行省略の対象とすることができる。
【０２９１】
なお、１つの排他区間の内部に並列に実行される区間がある場合、排他制御部１１０は、ワークフロー管理テーブル１３１に定義された、その排他区間についての運用操作部品の情報を、そのまま対応する最適化制御ワークフローに登録すればよい。
【０２９２】
また、前述した図２２では、排他区間の外側に条件分岐を行う運用操作部品がある場合を示したが、その他の例として、排他区間の内部に条件分岐がある場合もあり得る。この場合、排他制御部１１０は、条件分岐の分岐先の運用操作部品について、この条件分岐が含まれる排他区間に存在する運用操作部品の情報を、対応する最適化制御ワークフローに登録すればよい。
【０２９３】
例えば、図２２の運用操作部品Ａ〜Ｅ，Ｍ〜Ｏのすべてが同一の［排他区間：Ｘ］に含まれる場合、これらすべての運用操作部品の情報が排他資源Ｘに対応する最適化制御ワークフローに登録されればよい。また、例えば、図２２の運用操作部品Ｄ，Ａ，Ｍが同一の［排他区間：Ｘ］に含まれる場合、運用操作部品Ｄ，Ａ，Ｍの情報が排他資源Ｘに対応する最適化制御ワークフローに登録されればよい。また、例えば、図２２の運用操作部品Ｄ，Ａ〜Ｃが同一の［排他区間：Ｘ］に含まれる場合、運用操作部品Ｄ，Ａ〜Ｃの情報が排他資源Ｘに対応する最適化制御ワークフローに登録されればよい。
【０２９４】
このような処理により、条件分岐の分岐先に存在する運用操作部品についても、実行省略の対象とすることが可能になる。
なお、上記の各実施の形態に示した装置（ワークフロー制御装置１、運用自動化サーバ１００など）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc−Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２９５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２９６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２９７】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するためのワークフロー制御プログラムにおいて、
コンピュータに、
前記複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報に基づいて、前記複数のワークフローに含まれる処理の中から前記リソースを用いた複数の処理を特定し、
前記ワークフロー定義情報に定義された、特定された前記複数の処理それぞれの内容に基づいて、前記複数の処理の実行順序を特定し、
特定された前記複数の処理それぞれの内容と前記複数の処理の実行順序とに基づいて、前記複数の処理の中から実行を省略可能な処理を特定する、
処理を実行させることを特徴とするワークフロー制御プログラム。
【０２９８】
（付記２）  前記コンピュータに、
特定された前記省略可能な処理の実行をスキップする、
処理をさらに実行させることを特徴とする付記１記載のワークフロー制御プログラム。
【０２９９】
（付記３）  前記省略可能な処理の実行をスキップしたとき、前記スキップされた処理の処理結果を生成して処理結果記憶部に格納することを特徴とする付記２記載のワークフロー制御プログラム。
【０３００】
（付記４）  前記処理結果の格納では、処理の内容ごとにあらかじめ決められた処理結果を前記スキップされた処理の処理結果として前記処理結果記憶部に格納することを特徴とする付記３記載のワークフロー制御プログラム。
【０３０１】
（付記５）  前記処理結果の格納では、前記スキップされた処理と同じ内容の処理が過去に実行されていた場合、当該処理の処理結果を前記スキップされた処理の処理結果として前記処理結果記憶部に格納することを特徴とする付記３または４記載のワークフロー制御プログラム。
【０３０２】
（付記６）  前記省略可能な処理の実行をスキップしたとき、前記スキップされた処理に処理結果の編集処理を行うことが定義されていた場合、生成した処理結果に前記編集処理を行うことを特徴とする付記３〜５のいずれか１つに記載のワークフロー制御プログラム。
【０３０３】
（付記７）  前記コンピュータに、
前記複数のワークフローそれぞれの実行状況に応じて、前記複数の処理の実行順序を特定し直し、
特定し直された前記複数の処理の実行順序に基づいて前記省略可能な処理を特定し直し、
前記省略可能な処理の特定し直しにより、実行がスキップされた処理の中に実行が省略可能でない状態となった処理がある場合、当該処理を実行する、
処理をさらに実行させることを特徴とする付記３〜６のいずれか１つに記載のワークフロー制御プログラム。
【０３０４】
（付記８）  前記コンピュータに、
前記複数の処理が実行される区間をワークフローごとに分割した分割区間ごとに、実行優先度を計算する、
処理をさらに実行させ、
前記複数の処理の実行順序の特定では、算出された前記実行優先度に基づいて前記分割区間の実行順序を決定する、
ことを特徴とする付記１〜６のいずれか１つに記載のワークフロー制御プログラム。
【０３０５】
（付記９）  前記コンピュータに、
前記実行優先度が変更された場合に、変更後の前記実行優先度に基づいて前記複数の処理の実行順序を特定し直し、
特定し直された前記複数の処理の実行順序に基づいて前記省略可能な処理を特定し直す、
処理をさらに実行させることを特徴とする付記８記載のワークフロー制御プログラム。
【０３０６】
（付記１０）  前記コンピュータに、
前記複数のワークフローに含まれる処理の中に条件分岐処理が存在し、前記条件分岐処理が実行されたとき、当該条件分岐処理の次に実行される処理系列のうち分岐先として選択されなかった処理系列に、前記リソースを用いた処理が含まれている場合には、前記複数の処理から前記選択されなかった処理系列に含まれる処理を除外して、前記省略可能な処理を特定し直す、
処理をさらに実行させることを特徴とする付記１〜６，８，９のいずれか１つに記載のワークフロー制御プログラム。
【０３０７】
（付記１１）  前記省略可能な処理の特定では、前記複数の処理のうち、前記リソースに対して相反する処理をそれぞれ行う連続する２つの処理を、前記省略可能な処理と特定することを特徴とする付記１〜１０のいずれか１つに記載のワークフロー制御プログラム。
【０３０８】
（付記１２）  前記省略可能な処理の特定では、前記複数の処理から、前記リソースに対して同じ内容の処理をそれぞれ行う連続する２つの処理を抽出し、抽出された前記２つの処理のうち一方を前記省略可能な処理と特定することを特徴とする付記１〜１１のいずれか１つに記載のワークフロー制御プログラム。
【０３０９】
（付記１３）  同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するワークフロー制御装置において、
前記複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報を記憶する記憶部と、
前記ワークフロー定義情報に基づいて、前記複数のワークフローに含まれる処理の中から前記リソースを用いた複数の処理を特定し、前記ワークフロー定義情報に定義された、特定された前記複数の処理それぞれの内容に基づいて、前記複数の処理の実行順序を特定し、特定された前記複数の処理それぞれの内容と前記複数の処理の実行順序とに基づいて、前記複数の処理の中から実行を省略可能な処理を特定する制御部と、
を有することを特徴とするワークフロー制御装置。
【０３１０】
（付記１４）  前記制御部は、さらに、特定された前記省略可能な処理の実行をスキップすることを特徴とする付記１３記載のワークフロー制御装置。
（付記１５）  前記制御部は、前記省略可能な処理の実行をスキップしたとき、前記スキップされた処理の処理結果を生成して処理結果記憶部に格納することを特徴とする付記１４記載のワークフロー制御装置。
【０３１１】
（付記１６）  前記制御部は、前記処理結果の格納において、処理の内容ごとにあらかじめ決められた処理結果を前記スキップされた処理の処理結果として前記処理結果記憶部に格納することを特徴とする付記１５記載のワークフロー制御装置。
【０３１２】
（付記１７）  前記制御部は、前記処理結果の格納において、前記スキップされた処理と同じ内容の処理が過去に実行されていた場合、当該処理の処理結果を前記スキップされた処理の処理結果として前記処理結果記憶部に格納することを特徴とする付記１５または１６記載のワークフロー制御装置。
【０３１３】
（付記１８）  前記制御部は、さらに、前記複数の処理が実行される区間をワークフローごとに分割した分割区間ごとに、実行優先度を計算し、
前記複数の処理の実行順序の特定においては、算出された前記実行優先度に基づいて前記分割区間の実行順序を決定する、
ことを特徴とする付記１３〜１７のいずれか１つに記載のワークフロー制御装置。
【０３１４】
（付記１９）  前記制御部は、前記省略可能な処理の特定において、前記複数の処理のうち、前記リソースに対して相反する処理をそれぞれ行う連続する２つの処理を、前記省略可能な処理と特定することを特徴とする付記１３〜１８のいずれか１つに記載のワークフロー制御装置。
【０３１５】
（付記２０）  同一のリソースを用いた処理をそれぞれ含む複数のワークフローの実行を制御するワークフロー制御方法において、
コンピュータが、
前記複数のワークフローそれぞれに含まれる処理の内容が定義されたワークフロー定義情報に基づいて、前記複数のワークフローに含まれる処理の中から前記リソースを用いた複数の処理を特定し、
前記ワークフロー定義情報に定義された、特定された前記複数の処理それぞれの内容に基づいて、前記複数の処理の実行順序を特定し、
特定された前記複数の処理それぞれの内容と前記複数の処理の実行順序とに基づいて、前記複数の処理の中から実行を省略可能な処理を特定する、
ことを特徴とするワークフロー制御方法。
【符号の説明】
【０３１６】
１  ワークフロー制御装置
２  ワークフロー定義情報
３  記憶部
４  制御部
５  サーバ
１１，１２  ワークフロー
１１ａ〜１１ｄ，１２ａ〜１２ｃ  処理
【図１】
2014191603.tif 000003
【図２】
2014191603.tif 000004
【図３】
2014191603.tif 000005
【図４】
2014191603.tif 000006
【図５】
2014191603.tif 000007
【図６】
2014191603.tif 000008
【図７】
2014191603.tif 000009
【図８】
2014191603.tif 000010
【図９】
2014191603.tif 000011
【図１０】
2014191603.tif 000012
【図１１】
2014191603.tif 000013
【図１２】
2014191603.tif 000014
【図１３】
2014191603.tif 000015
【図１４】
2014191603.tif 000016
【図１５】
2014191603.tif 000017
【図１６】
2014191603.tif 000018
【図１７】
2014191603.tif 000019
【図１８】
2014191603.tif 000020
【図１９】
2014191603.tif 000021
【図２０】
2014191603.tif 000022
【図２１】
2014191603.tif 000023
【図２２】
2014191603.tif 000024
【図２３】
2014191603.tif 000025
【図２４】
2014191603.tif 000026
【図２５】
2014191603.tif 000027
【図２６】
2014191603.tif 000028
【図２７】
2014191603.tif 000029
【図２８】
2014191603.tif 000030
【図２９】
2014191603.tif 000031
【図３０】
2014191603.tif 000032
【図３１】
2014191603.tif 000033
【図３２】
2014191603.tif 000034
【図３３】
2014191603.tif 000035
【図３４】
2014191603.tif 000036
【図３５】
2014191603.tif 000037
【図３６】
2014191603.tif 000038
【図３７】
2014191603.tif 000039
【図３８】
2014191603.tif 000040
【図３９】
2014191603.tif 000041
【図４０】
2014191603.tif 000042
【図４１】
2014191603.tif 000043
【図４２】
2014191603.tif 000044
【図４３】
2014191603.tif 000045
【図４４】
2014191603.tif 000046
【図４５】
2014191603.tif 000047
【図４６】
2014191603.tif 000048
【図４７】
2014191603.tif 000049
【図４８】
2014191603.tif 000050
【図４９】
2014191603.tif 000051
【図５０】
2014191603.tif 000052
【図５１】
2014191603.tif 000053
【図５２】
2014191603.tif 000054
【図５３】
2014191603.tif 000055
【図５４】
2014191603.tif 000056
【図５５】
2014191603.tif 000057