(57)【特許請求の範囲】
【請求項１】
コンピュータに、
ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第１のサーバ装置群に処理を実行させる実行制御処理を実行する前後に、前記第１のサーバ装置群に含まれる構成要素のそれぞれについて状態を取得し、
前記実行制御処理を実行する前後で取得した状態が異なる構成要素と前記実行制御処理とを関連付けた情報を記憶手段に記憶し、
ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第２のサーバ装置群に含まれる構成要素のうち、前記実行制御処理と関連付けて前記記憶手段に記憶された前記構成要素と前記第１のサーバ装置群に含まれる他の構成要素とに予め定められた依存関係と同じ依存関係が、前記第２のサーバ装置群に含まれる他の構成要素と予め定められている構成要素を特定し、
前記実行制御処理を、特定された構成要素に実行させる設定を行なう
ことを特徴とする設定プログラム。
【請求項２】
前記コンピュータに、
連続で前記第１のサーバ装置群に実行した実行制御処理群のそれぞれについて、前記第１のサーバ装置群に含まれる構成要素間の依存関係と前記第２のサーバ装置群に含まれる構成要素間の依存関係との対応に応じて、前記第２のサーバ装置群に含まれる構成要素を特定し、
連続で実行した前記実行制御処理群の実行順序で、前記実行制御処理群を前記実行制御処理群のそれぞれに特定された構成要素に実行させる設定を行なう、
ことを特徴とする請求項１に記載の設定プログラム。
【請求項３】
前記コンピュータに、
前記実行制御処理群のいずれかと同一の実行制御処理を含む他の実行制御処理群のうち、前記同一の実行制御処理よりも実行順序が先である実行制御処理を、前記実行制御処理群のうちの前記同一の実行制御処理よりも先の実行順序で実行させる設定を行ない、
前記他の実行制御処理群のうち、前記同一の実行制御処理よりも実行順序が後である実行制御処理を、前記実行制御処理群のうちの前記同一の実行制御処理よりも後の実行順序で実行させる設定を行なう、
ことを特徴とする請求項２に記載の設定プログラム。
【請求項４】
前記コンピュータに、
前記第２のサーバ装置群と一部の構成要素を共用する第３のサーバ装置群に含まれる構成要素と、前記他の実行制御処理群に含まれる実行制御処理のそれぞれとを、前記第１のサーバ装置群及び前記第３のサーバ装置群に予め定められた構成要素間の依存関係に応じて対応付けて前記設定を行なう、
ことを特徴とする請求項３に記載の設定プログラム。
【請求項５】
ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第１のサーバ装置群に処理を実行させる実行制御処理を実行する前後に、前記第１のサーバ装置群に含まれる構成要素のそれぞれについて状態を取得するステップと、
前記実行制御処理を実行する前後で取得した状態が異なる構成要素と前記実行制御処理とを関連付けた情報を記憶手段に記憶するステップと、
ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第２のサーバ装置群に含まれる構成要素のうち、前記実行制御処理と関連付けて前記記憶手段に記憶された前記構成要素と前記第１のサーバ装置群に含まれる他の構成要素とに予め定められた依存関係と同じ依存関係が、前記第２のサーバ装置群に含まれる他の構成要素と予め定められている構成要素を特定するステップと、
前記実行制御処理を、特定された構成要素に実行させる設定を行なうステップと
を含んだことを特徴とするワークフロー作成方法。
【請求項６】
ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第１のサーバ装置群に処理を実行させる実行制御処理を実行する前後に、前記第１のサーバ装置群に含まれる構成要素のそれぞれについて状態を取得する取得手段と、
前記実行制御処理を実行する前後で取得した状態が異なる構成要素と前記実行制御処理とを関連付けた情報を記憶する記憶手段と、
ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第２のサーバ装置群に含まれる構成要素のうち、前記実行制御処理と関連付けて前記記憶手段に記憶された前記構成要素と前記第１のサーバ装置群に含まれる他の構成要素とに予め定められた依存関係と同じ依存関係が、前記第２のサーバ装置群に含まれる他の構成要素と予め定められている構成要素を特定する特定手段と、
前記実行制御処理を、特定された構成要素に実行させる設定を行なう設定手段と
を備えたことを特徴とするワークフロー作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設定プログラム、ワークフロー作成方法およびワークフロー作成装置に関する。
【背景技術】
【０００２】
従来、情報処理装置に実行させる一連のタスクをワークフローとして自動実行させることが行われている。ここで、ワークフローとは、ＯＳやミドルウェア（アプリケーション）に対する１つの操作であるタスクを組み合わせて定義された一連の作業手順である。例えば、多数のＩＴ機器（サーバ、ストレージ、ネットワークなど）が設置され、ＯＳ（Operating System）／ミドルウェア／アプリケーションによって構成された業務システムを複数稼働させたデータセンタにおいて、監視や保守作業にワークフローとして定められた一連のタスクが自動実行される。
【０００３】
データセンタにおける運用作業を自動化する一般的なＲＢＡ（Run Book Automation）製品では、ＯＳに依存の無いスクリプト実行環境を提供し、ファイル操作などＯＳが提供する機能を利用した作業をＯＳの種別を意識せずに作業タスクとして作成して自動化する手段が提供されている。
【０００４】
また、ＯＳ以外については、例えばミドルウェアに対する操作は、ミドルウェア製品ごとの操作用作業タスクを組み合わせてワークフローを作成することが知られている。この場合、ミドルウェアごとの操作の違いを吸収するスクリプト等を作成すれば、操作を論理化することができ、ミドルウェアが異なる環境でも同一ワークフローで動作させることが可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２７７５３５号公報
【特許文献２】特開平１０−２７２０３号公報
【特許文献３】特開平１０−２１４２８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、テスト環境でテストしていたワークフロー(運用作業手順の定義)を、実業務を行う本番の実地環境に展開する場合など、テスト環境と実地環境では、システム構成が異なる場合や、サーバが担う役割が異なることがある。例えば、同じアプリケーションサーバであっても、単一業務を稼働させる役割である場合と複数の業務を稼働させる役割を担っている場合がある。
【０００７】
このため、サーバ間の依存関係に従って、例えばサーバの起動順序や停止順序などを考慮して運用作業手順を変更することが求められる。一例として、パッチ適用などの保守作業のためにアプリケーション（ミドルウェア）やサーバの停止を行う場合、当該サーバが担う役割によっては、影響範囲が異なり、事前事後の作業タスクが変化する。これに間違いなく対応するために、人手によるワークフローの手直しをしなければならない。
【０００８】
従来の技術では、ワークフローの管理者が、テスト環境と実地環境の構成の差異（システム構成の差）を手作業で明確化し、導入先である実地環境に応じてワークフロー定義の修正作業を手作業で実施していた。
【０００９】
手作業での定義変更を行うことは品質低下を招くため、コストが許容する範囲で本番用の実地環境により近い環境をテスト環境として準備することで、手作業での修正範囲を小さくすることもある。しかし、テスト環境を実施環境に近づけようとすることは、ＩＴコストを増大させている一因となる。
【００１０】
１つの側面では、本発明は、異なるシステムにワークフローを展開する場合に展開先のシステムに合わせたワークフローを作成することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、設定プログラム、ワークフロー作成方法およびワークフロー作成装置は、ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第１のサーバ装置群に処理を実行させる実行制御処理を実行する前後に、前記第１のサーバ装置群に含まれる構成要素のそれぞれについて状態を取得し、前記実行制御処理を実行する前後で取得した状態が異なる構成要素と前記実行制御処理とを関連付けた情報を記憶手段に記憶し、ハードウェア又はソフトウェアである複数の構成要素を含み、予め構成要素間の依存関係が定められている第２のサーバ装置群に含まれる構成要素のうち、前記実行制御処理と関連付けて前記記憶手段に記憶された前記構成要素と前記第１のサーバ装置群に含まれる他の構成要素とに予め定められた依存関係と同じ依存関係を、前記第２のサーバ装置群に含まれる他の構成要素と予め定められている構成要素を特定し、前記実行制御処理を、特定された構成要素に実行させる設定を行なう。
【発明の効果】
【００１２】
異なるシステムにワークフローを展開する場合に展開先のシステムに合わせたワークフローを作成することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施例にかかるワークフロー作成装置１０の構成図である。
【図２】図２は、テスト環境４０と実地環境５０の具体例についての説明図である。
【図３】図３は、テスト環境４０での処理を説明する説明図である。
【図４】図４は、図２に示した環境に、ＣＩ番号を付した説明図である。
【図５】図５は、ワークフローの展開の具体例についての説明図である。
【図６】図６は、Ｆｌｏｗ００３について作成した作業タスク一覧の具体例の説明図である。
【図７】図７は、作業タスク一覧の変化についての説明図である。（その１）
【図８】図８は、作業タスク一覧の変化についての説明図である。（その２）
【図９】図９は、作業タスク一覧の変化についての説明図である。（その３）
【図１０】図１０は、作業タスク一覧の変化についての説明図である。（その４）
【図１１】図１１は、作業タスク一覧の変化についての説明図である。（その５）
【図１２】図１２は、ワークフローの結合を説明する模式図である。
【図１３】図１３は、ＣＭＤＢ３０の具体例の説明図である。（その１）
【図１４】図１４は、ＣＭＤＢ３０の具体例の説明図である。（その２）
【図１５】図１５は、ワークフローＤＢ２０の具体例の説明図である。
【図１６】図１６は、ワークフロー作成装置の処理動作を説明するフローチャートである。
【図１７】図１７は、コンピュータをワークフロー作成装置として動作させる場合の構成図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、設定プログラム、ワークフロー作成方法およびワークフロー作成装置の実施の形態を詳細に説明する。
【実施例】
【００１５】
図１は、本実施例にかかるワークフロー作成装置１０の構成図である。ワークフロー作成装置１０は、取得部１１、判別部１２、識別部１３、列挙部１４、設定部１５および結合部１６を有する。
【００１６】
取得部１１は、テスト環境４０で実行されたワークフローについて、ワークフローに含まれるタスクの実行前後におけるテスト環境４０内の構成要素について状態を取得する。判別部１２は、取得部１１による取得結果からタスクの実行前後で状態に変化がある場合には当該タスクが操作系のタスクであると判別し、状態に変化がない場合には参照系のタスクであると判別する。
【００１７】
識別部１３は、状態の変化に基づいて操作系のタスクがテスト環境のどの構成要素に対する操作であるかを識別する。列挙部１４は、操作系タスクの対象となった構成要素を操作対象として含むワークフローを抽出し、操作系タスクの前後のタスクを列挙する。
【００１８】
設定部１５は、ワークフロー内のタスクについて、ワークフローにおいて先に実行されるタスク（先行タスク）との間へのタスクの挿入可否を設定する。結合部１６は、操作系タスクについて、実地環境５０の構成を示す構成情報、列挙部１４によって列挙された前後のタスク、および構成要素間に定められた依存関係によって特定される操作対象の構成要素に基づいて、ワークフローを生成する。この結果、結合部１６は、実地環境での実行時に他の構成要素に影響を与えないワークフローを作成することができる。
【００１９】
テスト環境４０は、サーバ４１，４２を含むサーバ群によって構成されるシステムである。各サーバは、ＯＳ上でミドルウェアとアプリケーションが動作している。また、実地環境５０は、サーバ５１，５２を含むサーバ群によって構成されるシステムである。各サーバは、ＯＳ上でミドルウェアとアプリケーションが動作している。
【００２０】
テスト環境４０は、実地環境５０での動作を試験するためのシステムであり、その構成は実地環境５０と同一ではない。テスト環境４０と実地環境５０のシステム構成は、ＣＭＤＢ（Configuration Management Database）３０に登録されている。ＣＭＤＢ３０は、サーバ間やサーバ上で動作するアプリケーションなど構成アイテム（以降ＣＩと呼ぶ）間の依存関係を自動的に導出して管理する。また、ワークフローＤＢ２０は、ワークフロー作成装置１０が使用し、また作成したワークフローが登録されるデータベースである。
【００２１】
図２は、テスト環境４０と実地環境５０の具体例についての説明図である。テスト環境４０に構築されたシステム１は、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバを有する。テスト環境４０においてシステム１のＷｅｂサーバは、ＯＳ１上でミドルウェアＭＷ１が動作している。テスト環境４０におけるシステム１のＡＰサーバも同様に、ＯＳ１上でミドルウェアＭＷ１が動作している。そして、テスト環境４０におけるシステム１のＤＢサーバは、ＯＳ１上でミドルウェアＭＷ２が動作している。
【００２２】
実地環境５０に構築されたシステム１は、テスト環境４０の場合と同様に、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバを有する。実地環境５０においてシステム１のＷｅｂサーバは、ＯＳ１上でミドルウェアＭＷ３が動作している。また、実地環境５０におけるシステム１のＡＰサーバも同様に、ＯＳ１上でミドルウェアＭＷ３が動作している。そして、実地環境５０におけるシステム１のＤＢサーバは、ＯＳ２上でミドルウェアＭＷ２が動作している。
【００２３】
このように、テスト環境４０と実地環境５０とを比較すると、システム１のＷｅｂサーバのミドルウェアと、システム１のＤＢサーバのＯＳが異なる。加えて、実地環境５０では、ＡＰサーバとＤＢサーバは、システム２とシステム１で共有される。なお、システム２のＷｅｂサーバは、システム１とは独立のサーバを有する。
【００２４】
図３は、テスト環境４０での処理を説明する説明図である。取得部１１は、テスト環境４０で実行したワークフローの各タスクの操作対象である操作対象オブジェクトの状態をモニタする操作対象オブジェクトモニタである。取得部１１は、作業タスクの実行前、および実行後に、ＯＳの状態、ミドルウェアの状態、プロセスの状態をスナップショットとして取得する。
【００２５】
取得部１１は、サーバの状態（ＯＳの状態）については、外部の管理サーバからpingを行って取得する。また、取得部１１は、ミドルウェアの状態については、ＯＳの機能を利用してサービスの状態を取得する。このＯＳの機能の一例としては、net startコマンドがある。取得部１１は、プロセスの状態については、ＯＳの機能を利用してプロセス一覧を取得する。
【００２６】
判別部１２は、作業タスク実行前後のスナップショットを比較し、差異がない場合は、“参照系タスク”とし、差異がある場合は、“操作系タスク”として、ワークフローＤＢ２０内に作業タスクの種別を保存する。
【００２７】
操作系タスクと判断された場合は、識別部１３がスナップショット比較によって差異として表出した情報をキーにＣＭＤＢ３０内のＣＩを検索し、操作系タスクがどのＣＩに影響を与えるものであるのかの関係をワークフローＤＢ２０内の作業タスク情報として保存する。
【００２８】
スナップショット比較によって差異として表出した情報が“サーバの状態変化”の場合は、当該サーバの名前、ＩＰアドレスをキーにＣＭＤＢ３０内のＣＩを検索し、操作系タスクがどのＣＩに影響を与えるものであるのかの関係をワークフローＤＢ２０内の作業タスク情報として保存する。例えば、ｐｉｎｇ応答の結果がタスクの実行前後において異なる場合に、サーバの状態が変化したと判断する。
【００２９】
スナップショット比較によって差異として表出した情報が“プロセスの状態変化”の場合は、当該プロセスの名前をキーに、上記サーバの場合と同様にＣＭＤＢ３０内のＣＩを検索し、操作系タスクがどのＣＩに影響を与えるものであるのかの関係をワークフローＤＢ２０内の作業タスク情報として保存する。例えば、ＯＳの機能を利用して取得したプロセス一覧がタスクの実行前後において異なる場合に、プロセスの状態が変化したと判断する。
【００３０】
そして、サーバでもプロセスでもない場合、状態変化のあったサービスがＯＳ上で稼働するどのミドルウェアであるのかを特定し、その情報をキーに、ＣＭＤＢ３０内のＣＩを検索し、操作系タスクがどのＣＩに影響を与えるものであるのかの関係をワークフローＤＢ２０内の作業タスク情報として保存する。例えば、net startコマンドに対する応答がタスクの実行前後において異なる場合に、サービスの状態が変化したと判断する。
【００３１】
状態変化のあったサービスがＯＳ上で稼働するどのミドルウェアであるのかを特定する手法は、具体的には、ＯＳが製品情報を管理しているレジストリ内のアンインストールに関する情報の範囲で“サービス名”と一致する情報を検索し、製品名として登録されている領域と一致するものを抽出する。１つだけ抽出された場合は、それを操作対象のミドルウェアとして特定する。
【００３２】
一意に決まらない場合、すなわちサービス名と一致する情報が見つからない場合や複数見つかった場合は、サービスを管理する情報から当該サービスの実行パスを取り出し、このパス情報をキーにレジストリ内のソフトウェアに関する情報の範囲で検索する。この検索の結果、一致するパス名が１つだけあった場合、その情報を保有しているソフトウェア情報の製品名を操作対象のミドルウェアとして特定する。なお、この検索でも特定されない場合は、検索で見つかった複数の製品名候補を“サービス名”とともに管理者へ提示、例えば画面表示し、管理者が選択して特定すればよい。
【００３３】
図３に示した例では、作業タスクｔａｓｋ００１の実行前後では変化が無く、ｔａｓｋ００１は参照系タスクである。作業タスクｔａｓｋ００２の実行前後では、ミドルウェアＭＷ１の停止が発生しているので、作業タスクｔａｓｋ００２は操作系タスクである。この作業タスクｔａｓｋ００２の操作種別は停止、操作対象はミドルウェアＭＷ１、ＣＩ番号は７００００３である。
【００３４】
図４は、図２に示した環境に、ＣＩ番号を付した説明図である。図４に示したように、テスト環境のシステム１のＷｅｂサーバのＣＩ番号は５００１、テスト環境のシステム１のＷｅｂサーバで動作するミドルウェアＭＷ１のＣＩ番号が７００００３である。また、テスト環境のシステム１のＡＰサーバのＣＩ番号は５００２、テスト環境のシステム１のＷｅｂサーバで動作するミドルウェアＭＷ１のＣＩ番号が７００００４である。
【００３５】
同様に、実地環境のシステム１のＷｅｂサーバのＣＩ番号は１００１、実地環境のシステム１のＷｅｂサーバで動作するミドルウェアＭＷ３のＣＩ番号が５００００３である。また、実地環境のシステム１のＡＰサーバのＣＩ番号は１００２、実地環境のシステム１のＡＰサーバで動作するミドルウェアＭＷ３のＣＩ番号が５００００４である。そして、実地環境のシステム２のＷｅｂサーバのＣＩ番号は１００６、実地環境のシステム２のＷｅｂサーバで動作するミドルウェアＭＷ３のＣＩ番号が５００００５である。
【００３６】
これらのＣＩ番号は、図１３及び図１４に示したＣＭＤＢ３０の具体例から得られる。図１３に示したテーブル３１は、ＣＭＤＢ３０に含まれる業務の構成情報である。実地環境のシステム１にＣＩ番号１００００１、実地環境のシステム２にＣＩ番号１００００２、テスト環境のシステム１にＣＩ番号１００５０１が与えられている。また、実地環境のシステム１（ＣＩ番号１００００１）が構成ＣＩとして１００１〜１００５を有することが示されている。同様に、実地環境のシステム２（ＣＩ番号１００００２）が構成ＣＩとして１００６，１００２〜１００５を有することが示されている。そして、テスト環境のシステム１（ＣＩ番号１００５０１）が構成ＣＩとして５００１〜５００３を有することが示されている。
【００３７】
図１３に示したテーブル３２は、ＣＭＤＢ３０に含まれるサーバの構成情報である。ＣＩ番号１００１〜１０１２，５００１〜５００３について、サーバ名、ＩＰアドレス、ＯＳ種別、ＯＳ−ＶＬ（バージョンレベル）、構成ＣＩ、依存ＣＩが示されている。
【００３８】
図１４に示したテーブル３３は、ＣＭＤＢ３０に含まれるミドルウェアの構成情報である。ＣＩ番号５００００１〜５０００２３，７００００３〜７００００４についてミドルウェアの名称、ベンダ名、ＭＷ−ＶＬ（バージョンレベル）、依存ＣＩが示されている。
【００３９】
併せて、図１５を参照し、ワークフローＤＢ２０の具体例について説明する。図１５に示したテーブル２１は、ワークフローの定義について示すテーブルである。テーブル２１は、ワークフローの番号（ｆｌｏｗ００１〜０１２）とフローの名称、フローを構成する作業タスクである構成タスクが示されている。
【００４０】
図１５に示したテーブル２２は、作業タスクに関する情報を示すテーブルである。テーブル２２は、作業タスクを識別するタスク番号、先行タスク、列番号、先行タスクとの間に他のタスクを挿入することを禁止するか否か、操作の種別、操作の対象、操作対象のＣＩ番号の項目を有する。
【００４１】
このように、ワークフロー作成装置１０は、テスト環境４０で実行したワークフローについて作業タスクの前後でスナップショットを取得して各作業タスクが操作系であるか参照系であるか判断し、操作系である場合にはＣＭＤＢ３０を参照して操作種別と操作対象がどのＣＩであるかを示すテーブルを得ることができる。
【００４２】
その後、ワークフロー作成装置１０は、実地環境５０にワークフローを展開する。実地環境５０へのワークフロー展開時には、識別部１３がワークフローＤＢ２０に保存した情報を基にして、列挙部１４が実地環境５０にワークフローを適用した場合のワークフロー内の各作業タスクの操作対象（ＣＭＤＢ３０内ではＣＩとして表現される）を列挙する。そして、操作対象ごとに以下（１）〜（４）の処理を繰り返す。
【００４３】
（１）操作対象に対して操作を行っている作業タスク（操作系タスク）を含むワークフローを抽出する。参照系タスクのみのワークフローは抽出しない。
（２）抽出されたワークフローから、操作対象への作業タスク、および前後の作業タスクを抽出して、結合候補となる作業タスク一覧を作成する。
（３）操作対象と、作業タスク一覧の操作対象である構成アイテム（ＣＩ）の依存関係をＣＭＤＢ３０から取得し、操作対象（ＣＩ）間の依存関係に合わせて作業タスクの依存関係を導出する。
（４）導出された作業タスク間の依存関係に作業タスクを組み替えて、ワークフローを結合し、元のワークフローから派生した新しいワークフローとして生成する。
【００４４】
図５は、ワークフローの展開の具体例についての説明図である。ＣＩ番号“５００１”、“５００２”に該当する実地環境５０におけるＷｅｂサーバとＡＰサーバのＣＩ番号を、ＣＭＤＢ３０を検索して決定している。例えば、ＣＭＤＢ３０が図１３に示すテーブル３１及びテーブル３２を含む場合に、実地環境であるシステム１に含まれる構成ＣＩ１００１、１００２、１００３、１００４、１００５をテーブル３１から読み出し、構成ＣＩ間の依存関係が構成ＣＩ５００１と５００２との関係と同じである構成ＣＩのＣＩ番号を取得する。それにより、ＣＩ番号“５００１”、“５００２”に該当する実地環境５０におけるＷｅｂサーバとＡＰサーバのＣＩ番号が“１００１”、“１００２”であると決定している。そして、ＣＩ番号“５００１”に依存する“７００００３”と“５００２”に依存する“７００００４”と同じ関係にある本番環境１００００１でのＣＩ番号を抽出している。
【００４５】
この結果、テスト環境４０のＣＩ番号“５００１”は対応する実地環境５０のＣＩ番号“１００１”に置換えられ、テスト環境４０のＣＩ番号“５００２”は対応する実地環境５０のＣＩ番号“１００２”に置換えられる。同様に、テスト環境４０のＣＩ番号“７００００３”は対応する実地環境５０のＣＩ番号“５００００３”に置換えられ、テスト環境４０のＣＩ番号“７００００４”は対応する実地環境５０のＣＩ番号“５００００４”に置換えられる。
【００４６】
この作業タスクのうち、操作対象に対して操作を行っている作業タスク（操作系タスク）を含むワークフローを抽出する（参照系タスクのみのワークフローは抽出しない）。具体的には、テーブル２２から該当する操作系タスクを抽出し、その操作系タスクを含んでいるワークフローをテーブル２１から抽出する。
【００４７】
図５に示した例では、ＣＩ番号“５００００３”、“５００００４”、“１００１”、“１００２”に対して“停止”操作を行う操作系タスクを、全ワークフロー定義を対象に検索し、該当するワークフローを抽出することとなる。この結果、ＣＩ番号“５００００４”、“１００２”に対して、他のワークフロー（ｆｌｏｗ００３）が停止操作していることが解る。
【００４８】
さらに、抽出されたワークフローから、操作対象への作業タスク、および前後の作業タスクをテーブル２１から抽出して、結合候補となる作業タスク一覧を作成する。この際、Ｆｌｏｗ００１と操作対象が重なる作業タスクは重複タスクとして記録する。
【００４９】
図６は、Ｆｌｏｗ００３について作成したテーブルの具体例の説明図である。タスクｔａｓｋ１０１〜１０６に関し、先行タスク、列番号、先行タスクとの間への他のタスクの挿入を禁止するか、タスク種別、重複タスクが示されている。タスクｔａｓｋ１０２は、先行タスクであるｔａｓｋ１０１との間への他のタスクの挿入が禁止されている。この禁止の設定は、タスクの内容によって定まり、設定部１５が行なう。この設定は、設定部１５がタスクの内容を判別して自動的に設定しても良いし、オペレータからの操作を受け付けて設定してもよい。また、タスクｔａｓｋ１０４は、重複タスクとしてタスクｔａｓｋ００３が設定されており、タスクｔａｓｋ１０６には重複タスクとしてタスクｔａｓｋ００５が設定されている。
【００５０】
ワークフロー作成装置１０の結合部１６は、操作対象と、列挙した作業タスクの操作対象である構成アイテム（ＣＩ）の依存関係をＣＭＤＢ３０から取得し、操作対象間（ＣＩ）の依存関係に合わせて作業タスクの依存関係を導出する。
【００５１】
ＣＭＤＢ３０では、ＣＩ番号“１００６”が“１００２”に依存しており、“１００６”の構成ＣＩである“５００００５”は、“１００６”に依存している。よって、各ＣＩを操作する作業タスクも同様の依存関係があるとみなす。この要領でｆｌｏｗ００３の全作業タスクの依存関係を明確にすると図７のようになり、これらの作業タスクは必ずこの順に実行する必要がある。一方、依存関係のないタスクは並行実行も可能である。
【００５２】
また、同様に展開しようとしているワークフロー“ｆｌｏｗ００１”についても同様の手順で依存関係を明確にすると図８に示した状態になる。具体的には、ｆｌｏｗ００１に含まれるタスクｔａｓｋ００１〜００５について、先行タスク、列番号、挿入禁止、タスク種別、依存タスクが設定されている。タスクｔａｓｋ００２には禁止が設定されるとともに、依存タスクがｔａｓｋ００３，００４であることが示されている。また、ｔａｓｋ００３，０４には、依存タスクがｔａｓｋ００５であることが示されている。
【００５３】
結合部１６は、導出された作業タスク間の依存関係をもとに、作業タスクを組み替えて、ワークフローを結合し、基のワークフローから派生した新しいワークフローとして生成する。
【００５４】
具体例では、ｆｌｏｗ００１を自フロー、ｆｌｏｗ００３を他フローとし、他フローのタスク一覧において、列番号の一番大きい行から逆順にループして処理を行なう。
【００５５】
このとき、他フローの処理行の“重複タスク”にタスク番号が格納されている場合には、何も処理せず、次の行へ進む。
【００５６】
また、他フローの処理行の“依存タスク”にタスク番号がある場合、自フロー（ｆｌｏｗ００１）内の当該タスク番号の行の直前に処理行を複写する。なお、重複タスク列は除いて複写する。この際、挿入する行の“列番号”は、依存タスクが持つ列番号から“１”減算した値を設定する。かかる処理を行なって、次の行へ進む。
【００５７】
この結果、ｆｌｏｗ００１のタスク一覧は、図９に示したように変化する。図９では、ｔａｓｋ００５とｔａｓｋ００４の間にｔａｓｋ１０５が挿入され、その列番号は４となっている。
【００５８】
そして、他フローの処理行の“依存タスク”にタスク番号がない場合、他フローにおける次の行に相当する自フロー（ｆｌｏｗ００１）内のタスク行の直前に処理行を（重複タスク列を除いて）複写する。この際、挿入する行の“列番号”は、挿入しようとしている行の次の行が持つ列番号から“１”減算した値を設定する。かかる処理を行なって、次の行へ進む。
【００５９】
この結果、ｆｌｏｗ００１のタスク一覧は、図１０に示したように変化する。図１０では、ｔａｓｋ００３とｔａｓｋ００２の間にｔａｓｋ１０２が挿入され、その列番号は２となっている。
【００６０】
さらに、他フローの処理行の“挿入禁止”列に“禁止”表示がある場合、その直前の行とセットにして、複数行まとめて前述のルールに従って自フロー内に複写する。挿入する際、挿入先の業務の列番号から“１”減算した値を設定する。ただし、自フロー内に挿入しようとする対象行に“挿入禁止”の表示がある場合、依存関係がない場合は、その前後のどちらかの行に挿入し、依存関係がある場合、依存関係に従って挿入先を決定する。かかる処理を行なって、次の行へ進む。
【００６１】
最終的にｆｌｏｗ００１のタスク一覧は図１１に示したように変化する。図１１では、ｔａｓｋ１０３とｔａｓｋ００２の間にｔａｓｋ１０１，１０２が挿入され、その列番号は０，１となっている。
【００６２】
結合部１６は、ワークフローＤＢ２０内の“ｆｌｏｗ００１”を新しいワークフロー（仮に“ｆｌｏｗ１００１”）として複写し、上記ループ処理で作成されたｆｌｏｗ００１の表を反映する。これによって、ワークフローの結合は完成する。
【００６３】
図１２は、以上のワークフローの結合を説明する模式図である。ｆｌｏｗ００１は、作業タスクｔａｓｋ００１〜００５を有し、ｔａｓｋ００３がＣＩ５００００４に対する停止操作である。ｆｌｏｗ００３は、作業タスクｔａｓｋ１０１〜１０６を有し、ｔａｓｋ１０４がＣＩ５００００４に対する停止操作である。
【００６４】
ｆｌｏｗ００１とｆｌｏｗ００３を結合したｆｌｏｗ１００１では、ＣＩ５００００４に対する停止操作はｔａｓｋ００３に統合されている。そして、ｔａｓｋ００１〜００２の順序とｔａｓｋ１０１〜１０３の順序は守られるが、ｔａｓｋ００１〜００２とｔａｓｋ１０１〜１０３とは並行して実行される。同様に、ｔａｓｋ００４〜００５の順序は守られるが、ｔａｓｋ００４〜００５とｔａｓｋ１０５とは並行して実行される。
【００６５】
図１６は、ワークフロー作成装置の処理動作を説明するフローチャートである。まず、テスト環境でワークフローを実行し（Ｓ１０１）、取得部１１がタスクの実行前後でスナップショットを取得する（Ｓ１０２）。
【００６６】
次に、判別部１２がスナップショットを比較し（Ｓ１０３）、差異があるかを判別する（Ｓ１０４）。判別部１３は、差異があるタスク（Ｓ１０４，Ｙｅｓ）を操作系タスクと判別して（Ｓ１０５）、識別部１３による操作対象の識別を行なう（Ｓ１０７）。また、差異がないタスク（Ｓ１０４，Ｎｏ）については、判別部１３は参照系タスクと判別する（Ｓ１０６）。
【００６７】
判別部１２による判別結果と、識別部１３による識別結果は、ワークフローＤＢ２０に保存する（Ｓ１０８）。その後、列挙部１４が操作対象を列挙し（Ｓ１０９）、設定部１５がタスクの挿入禁止を必要に応じて設定した（Ｓ１１０）後、結合部１６がＣＭＤＢ３０と連携し、ＣＩ間の依存関係を参照しながらワークフローを結合する（Ｓ１１１）。その後、タスクの操作対象の構成要素の種別に基づき、必要に応じて適用するスクリプトを選択して（Ｓ１１２）、処理を終了する。
【００６８】
図１７は、コンピュータをワークフロー作成装置として動作させる場合の構成図である。図１７に示したように、コンピュータ６０は、ＣＰＵ６１、メモリ６２、ＨＤＤ（Hard Disk Drive）６３及びネットワークインタフェース６４がバスに接続した構成を有する。ＨＤＤ６３は、ワークフロー作成プログラム１０ａを保持する。ワークフロー作成プログラム１０ａは、メモリ６２に展開され、ＣＰＵ６１によって実行される取得プロセス１１ａ、判別プロセス１２ａ、識別プロセス１３ａ、列挙プロセス１４ａ、設定プロセス１５ａ及び統合プロセス１６ａを有する。取得プロセス１１ａは、ＣＰＵ６１に実行された場合に、取得部１１の機能を実現する。判別プロセス１２ａは、ＣＰＵ６１に実行された場合に、判別部１２の機能を実現する。識別プロセス１３ａは、ＣＰＵ６１に実行された場合に、識別プロセス１３の機能を実現する。列挙プロセス１４ａは、ＣＰＵ６１に実行された場合に、列挙部１４の機能を実現する。設定プロセス１５ａは、ＣＰＵ６１に実行された場合に、設定部１５の機能を実現する。統合プロセス１６ａは、ＣＰＵ６１に実行された場合に、統合部１６の機能を実現する。
【００６９】
ネットワークインタフェース６４は、ワークフローＤＢシステム７０のネットワークインタフェース７１と、ＣＭＤＢシステム８０のネットワークインタフェース８１とに接続する。ワークフローＤＢシステム７０は、ネットワークインタフェース７１に加え、アクセス制御部７２と、ワークフローＤＢ２０とを有する。アクセス制御部７２は、ネットワークインタフェース７１を介してコンピュータ６０からのアクセスを受け付け、ワークフローＤＢ２０に対するアクセスを処理する。
【００７０】
ＣＭＤＢシステム８０は、ネットワークインタフェース８１に加え、アクセス制御部８２と、ＣＭＤＢ３０とを有する。アクセス制御部８２は、ネットワークインタフェース８１を介してコンピュータ６０からのアクセスを受け付け、ＣＭＤＢ３０に対するアクセスを処理する。
【００７１】
以上説明してきたように、本実施例にかかるワークフロー作成装置１０は、テスト環境４０で実行されたワークフローのタスクの実行前後の状態から操作系のタスクを判別し、どの構成要素に対する操作であるかを識別する。そして、操作系タスクの対象となった構成要素を操作対象として含むワークフローを抽出し、必要に応じて先行タスクとの間へのタスクの挿入可否を設定して、実地環境５０のワークフローとして結合する。このとき、実地環境５０の構成情報、操作系タスクの前後のタスク、および操作系タスクの操作対象との依存関係に基づいて、ワークフローを結合する。
【００７２】
このため、ワークフロー作成装置１０は、異なるシステムにワークフローを展開する場合に展開先のシステムに合わせたワークフローを作成することができる。そして、かかるワークフローは、展開先での実行時に他の構成要素に影響を与えないワークフローとなる。
【００７３】
テスト環境でテストしたワークフロー定義を、テスト環境と実地環境の差異を意識して手直しすることなく、自動的に実地環境に適応できることで、ワークフローの品質を低下させることなく短時間で実地環境用のワークフローを得ることができる。
【００７４】
また、実地環境と同じ構成の環境をテスト環境として準備する必要がなくなるため、テスト環境を準備するコストも大幅に削減することができる。そして、環境の差異を考慮するための環境の判断、環境ごとの作業手順をワークフローとして定義する必要がないため、シンプルなワークフローとなり、ワークフローのメンテナンスコストの低下、修正時のリスク低減が図られる。
【００７５】
加えて、操作対象オブジェクト（サーバやミドルウェア）と各ワークフロー内で行われる操作が関係付けられるため、ワークフローが影響を及ぼす範囲や操作対象オブジェクトに変化が発生した場合の影響を可視化することができ、運用品質を向上できる。
【符号の説明】
【００７６】
１０  ワークフロー作成装置
１１  取得部
１２  判別部
１３  識別部
１４  列挙部
１５  設定部
１６  結合部
２０  ワークフローＤＢ
２１〜２２，３１〜３３  テーブル
３０  ＣＭＤＢ
４０  テスト環境
５０  実地環境
４１〜４２，５１〜５２  サーバ
【図１】
0005609656.tif 000002
【図２】
0005609656.tif 000003
【図３】
0005609656.tif 000004
【図４】
0005609656.tif 000005
【図５】
0005609656.tif 000006
【図６】
0005609656.tif 000007
【図７】
0005609656.tif 000008
【図８】
0005609656.tif 000009
【図９】
0005609656.tif 000010
【図１０】
0005609656.tif 000011
【図１１】
0005609656.tif 000012
【図１２】
0005609656.tif 000013
【図１３】
0005609656.tif 000014
【図１４】
0005609656.tif 000015
【図１５】
0005609656.tif 000016
【図１６】
0005609656.tif 000017
【図１７】
0005609656.tif 000018