(57)【要約】【課題】  複数の要求に関するデータ操作が、複数の操作者によって、１個のデータベースに対して行われる場合において、それらのデータ操作の履歴から、個々の要求に関するデータ操作のワークフローを精度良く抽出する。【解決手段】  データベースに対するデータ操作の履歴を記録するための履歴データベース5を用意する。ワークフロー生成サーバ7は、その操作履歴に記録された複数のデータ操作の関係性を定量化する。この定量化のために、データベースのデータ定義や、データベース上のデータへの操作予告の履歴を用いる。そして、この定量化した数値に基づいて、ワークフローを生成する。そして、ワークフロー生成サーバ7は、生成したワークフローと、ワークフローデータベース4上のワークフローデータを比較し、その結果に基づいて、新たに定義すべきワークフローの推薦や、既存のワークフローに対する変更の推薦を行う。【選択図】図１Ａ
2014048673.tif 000002
【特許請求の範囲】
【請求項１】
処理部を備えたワークフロー生成サーバであって、
前記処理部は、
データベースの外部キーに基づいて、前記データベースに対するデータ操作の履歴間の関係性を定量化した値とし、
当該定量化した値を用いて複数のデータ操作からなるワークフローを生成する
ことを特徴とするワークフロー生成サーバ。
【請求項２】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
既登録のワークフローと、生成した前記ワークフローを比較し、
比較結果に応じて、生成した前記ワークフローの追加を推薦する
ことを特徴とするワークフロー生成サーバ。
【請求項３】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
既登録のワークフローと、生成した前記ワークフローを比較し、
比較結果に応じて、既登録のワークフローの修正を推薦する
ことを特徴とするワークフロー生成サーバ。
【請求項４】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
既登録のワークフローからデータ操作に関するノードだけを抽出したものと、生成した前記ワークフローをグラフとして比較する
ことを特徴とするワークフロー生成サーバ。
【請求項５】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
既登録のワークフローからデータ操作に関するノードだけを抽出したものと、生成した前記ワークフローを集合として比較する
ことを特徴とするワークフロー生成サーバ。
【請求項６】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
予め定義した前記データベースの外部キーに加え、実質的な外部キーを自動生成する
ことを特徴とするワークフロー生成サーバ。
【請求項７】
請求項６に記載のワークフロー生成サーバであって、
前記処理部は、
前記既登録のワークフローのワークフローデータを元に、当該ワークフローで同時に行われるデータ操作を、前記実質的な外部キーとして自動生成する
ことを特徴とするワークフロー生成サーバ。
【請求項８】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
前記ワークフローを生成する際に、当該ワークフローの特徴を示す文字列を自動生成し、前記ワークフローを推薦する際に当該文字列も提示する
ことを特徴とするワークフロー生成サーバ。
【請求項９】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
前記データ操作の履歴間の関係性を定量化するに際し、
当該２個のデータ操作の実行日時の差、当該２個のデータ操作の間に行われた他のデータ操作の数、或いは当該２個のデータ操作を行ったユーザの組織を参照する
ことを特徴とするワークフロー生成サーバ。
【請求項１０】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
前記ワークフローを操作履歴グラフとし、
当該操作履歴グラフをワークフローとして実用的な形に変更するために、前記操作履歴グラフに含まれる分岐の数を削減する
ことを特徴とするワークフロー生成サーバ。
【請求項１１】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
前記ワークフローをデータ操作グラフとし、
当該操作履歴グラフをワークフローとして実用的な形に変更するために、前記操作履歴グラフ中に含まれるループを解消する
ことを特徴とするワークフロー生成サーバ。
【請求項１２】
請求項１に記載のワークフロー生成サーバであって、
前記処理部は、
前記データベースの操作予告の履歴を記録した操作予告履歴を用いて、前記データ操作の履歴間の関係性を定量化して、前記定量化した値とする
ことを特徴とするワークフロー生成サーバ。
【請求項１３】
請求項１に係るワーフロー生成サーバ。
前記処理部は、
前記データベースのトランザクション処理の履歴を用いて、前記データ操作の履歴間の関係性を定量化して、前記定量化した値とする
ことを特徴とするワークフロー生成サーバ。
【請求項１４】
ワークフロー生成サーバによるワークフロー生成方法であって、
データベースに対するデータ操作の履歴を記録し、
前記ワークフロー生成サーバは、
前記データベースの外部キーに基づいて、記録された前記データ操作の履歴間の関係性を定量化した値とし、
当該定量化した値を用いて複数のデータ操作からなるワークフローを生成する
ことを特徴とするワークフロー生成方法。
【請求項１５】
請求項１４に記載のワークフロー生成方法であって、
前記ワークフロー生成サーバは、
前記データベースに対する操作予告の履歴を更に記録し、
前記操作予告の履歴を用いて、前記データ操作の履歴間の関係性を定量化して、前記定量化した値とする
ことを特徴とするワークフロー生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、特にデータ管理業務の支援技術に関する。
【背景技術】
【０００２】
仮想化技術によるシステム集約の影響で、少数の運用管理者が多数の装置を運用する必要が生じている。そのため、構成管理を効率化する構成管理データベース（Configuration Management Database、以下CMDB）の必要性は増加している。しかし、一般にCMDBは、そのデータベース上のデータを操作するためのワークフローまでは定義しない。従って、CMDB上のデータを正確に保つためには、以下のいずれかの仕組みを事前に用意する必要がある。
【０００３】
(1) データ操作のワークフローを事前に定義し、運用管理者は必ずそれらのワークフローに従ってデータ操作を行う。
【０００４】
(2) 構成変更に伴ってデータ操作を自動的に行うソフトウェア（CMDBのプラグインなど）を事前に設定し、運用管理者は必ずそのソフトウェアを介してデータ操作を行う。
【０００５】
上記の仕組みが整った環境では、データの更新ミスは起こらないはずである。しかし、構成情報として管理すべきデータは、新しい装置の導入や、新しいサービスの提供開始に伴って増加する。それらのデータを操作するワークフローが固まるまでは、更新ミスが発生する危険性が高い。また、新しい装置・サービス導入時に、ワークフローを厳密に決めたとしても、実態に合わないワークフローは現場で無視される傾向にある。そのため、一度決めたワークフローを見直さない限り、やはり更新ミスが発生する危険性が高い。
【０００６】
ワークフローを見直すための作業時間を短縮するために、過去の作業履歴をもとにワークフローを生成するという方法がある。特許文献１は、医用画像検索システムの作業履歴と、事前に定義されたワークフローにあたる作業テンプレートから、新しい作業手順を生成する方法に関する発明である。特許文献２は、模範作業者の手本ログと、一般作業者の実績ログを比較することで、追加あるいは削除すべき手順を留意手順として抽出する方法に関する発明である。いずれの方法も、一連の作業は１名の作業者が行うこと、および作業履歴は作業毎に区別できることを前提としている。特許文献３は、事前に登録されたルールから逸脱した方法で実行されたタスクの履歴から、新たなルールを自動合成する方法に関する発明である。この発明は、作業者を抽象化することで、複数の作業者による作業に対応することはできるが、複数の作業の履歴が混在することは想定していない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１０１０８８号公報
【特許文献２】特開２００９−１１６６７３号公報
【特許文献３】特開平１１−２５０１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した公知例の方法をCMDBの変更履歴に適用しても、精度良くワークフローを推薦することはできない。
まず、仮想化されたシステムでは、複数の要求に関する作業が同時並行で行われる場合がある。例えば、顧客AのためのWebサーバ構築と、顧客Bのためのデータベース構築が同時並行で行われると、CMDBに対するデータ操作の履歴には両者が混在する。このような場合、公知例ではワークフロー検出の精度が下がる。
【０００９】
次に、システムが巨大な場合は、１個の要求に関する作業が、複数の運用管理者（例えばサーバ管理者とネットワーク管理者）で分担される場合がある。このような場合、データ操作の履歴を運用管理者別に分析する方法では、ワークフロー検出の精度が下がる。
最後に、CMDB上のデータ更新日時と、実機の設定情報更新日時は異なる場合がある。例えば、運用管理者が新しいVMの情報（IPアドレスなど）を部分的に決めながら、数日かけてCMDBに登録し、最後にまとめてVMの構築作業を行う、ということがある。このようにデータ操作日時の間隔が空くと、公知例ではワークフロー検出の精度が下がる。
【００１０】
本発明の目的は、複数の要求に関するデータ操作が、複数の操作者によって、１個のデータベースに対して行われる場合において、それらのデータ操作の履歴から、個々の要求に関するデータ操作のワークフローを精度良く抽出し、データ操作を含むワークフローを見直すための作業時間を短縮することが可能なワークフロー生成サーバ、及び生成方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記の目的を達成するため、本発明においては、処理部を備えたワークフロー生成サーバであって、処理部は、データベースの外部キーに基づいて、データベースに対するデータ操作の履歴間の関係性を定量化した値とし、当該定量化した値を用いて複数のデータ操作からなるワークフローを生成するワークフロー生成サーバを提供する。
【００１２】
また、本発明においては、上記の目的を達成するため、ワークフロー生成サーバによるワークフロー生成方法であって、データベースに対するデータ操作の履歴を記録し、ワークフロー生成サーバは、データベースの外部キーに基づいて、記録されたデータ操作の履歴間の関係性を定量化した値とし、当該定量化した値を用いて複数のデータ操作からなるワークフローを生成するワークフロー生成方法を提供する。
【００１３】
すなわち、本発明の好適な態様においては、従来のデータベースに対するデータ操作の履歴を記録するための履歴データベースを用意し、作業者がデータベース操作ソフトウェアを介してそのデータベース上の対象データ群を操作すると、データベースまたはデータベース操作ソフトウェアは、その操作履歴を履歴データベースに記録し、ワークフロー生成サーバは、その操作履歴に記録された複数のデータ操作の関係性を定量化した値とする。ワークフロー生成サーバは、この定量化のために、データベースのデータ定義や、データベース上のデータへの操作予告の履歴を用いる。そして、この定量化した値に基づいて、新たにワークフローを生成する。
【００１４】
そして、ワークフロー生成サーバは、上記の方法で生成されたワークフローと、ワークフローデータベース上の既登録ワークフローとを比較し、その結果に基づいて、新たに定義すべきワークフローの推薦や、既存のワークフローに対する変更の推薦を行う。既存のワークフローに対する変更とは、ワークフローへのデータ操作作業の追加や削除などのことである。なお、CMDBに上記の方法を適用する場合、上記のデータベースは構成管理データベース、対象データ群は構成情報データ群、作業者は運用管理者に対応する。
【発明の効果】
【００１５】
本発明のワークフロー生成サーバは、複数の要求に関するデータ操作が１個のデータベースに対して行われる場合において、個々の要求に関するデータ操作のワークフローを精度良く抽出し、新たに定義するための作業時間を短縮できる。
【００１６】
また、データベース操作ソフトウェアによるデータ操作の履歴だけでなく、ワークフローシステムによるデータ操作の履歴も記録した場合、既存のワークフローに対する修正案を生成できるので、ワークフローを修正するための作業時間も短縮できる。
【図面の簡単な説明】
【００１７】
【図１Ａ】第１の実施例におけるコンピュータシステムを模式的に示す図である。
【図１Ｂ】第１の実施例におけるコンピュータシステムのサーバの一構成例を示す図である。
【図２】第１の実施例に係る、データ定義の一例を示す図である。
【図３】第１の実施例に係る、ユーザ情報の一例を示す図である。
【図４】第１の実施例に係る、顧客情報の一例を示す図である。
【図５】第１の実施例に係る、顧客−ＶＭ情報の一例を示す図である。
【図６】第１の実施例に係る、ＶＭ情報の一例を示す図である。
【図７】第１の実施例に係る、監視設定の一例を示す図である。
【図８】第１の実施例に係る、ファイアウォール設定の一例を示す図である。
【図９】第１の実施例に係る、ワークフローデータの一例を示す図である。
【図１０】第１の実施例に係る、ノードデータの一例を示す図である。
【図１１】第１の実施例に係る、操作履歴の一例を示す図である。
【図１２】第２の実施例に係る、操作予告履歴の一例を示す図である。
【図１３】第１の実施例に係る、推薦ワークフローデータの一例を示す図である。
【図１４】第１の実施例に係る、推薦ノードデータの一例を示す図である。
【図１５Ａ】第１の実施例に係る、ワークフロー生成プログラムのフローチャート図である。
【図１５Ｂ】第１の実施例に係る、ワークフロー生成プログラムのフローチャート（続き）図である。
【図１５Ｃ】第１の実施例に係る、ワークフロー生成プログラムのフローチャート（続き）図である。
【図１６】第１および第２の実施例におけるワークフロー推薦プログラムのフローチャート図である。
【図１７】第１の実施例における操作履歴グラフの一例を示す図である。
【図１８】第１の実施例に係る、ワークフロー推薦プログラムによる画面表示の一例を示す図である。
【図１９】第１の実施例に係る、ワークフロー推薦プログラムによる画面表示の一例を示す図である。
【図２０】第２の実施例におけるコンピュータシステムを模式的に示す図である。
【図２１】第２の実施例におけるワークフロー生成プログラムのフローチャート図である。
【図２２】第２の実施例における操作履歴グラフの一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面に従い、本発明の種々の実施形態を説明する。なお、本明細書において、「関連性スコア」とは、操作履歴ペアに含まれる２個の操作履歴の関係性の強さを示す数値、すなわち操作履歴の関係性を定量化した値を意味する。また、「操作予告」とは、データベースの構成情報に対するデータ操作の予告を意味している。
【実施例１】
【００１９】
第１の実施例に係るワークフロー生成サーバ、或いはワークフロー生成方法は、データベースの外部キーに基づいて、データベースに対するデータ操作の履歴間の関係性を定量化した値とし、この値を用いて複数のデータ操作からなるワークフローを生成する構成を備える。
【００２０】
図１Ａに、第１の実施例で想定するコンピュータシステムを模式的に示す。コンピュータシステムは、構成管理データベース3、ワークフローデータベース4、履歴データベース5、推薦データベース6、ワークフロー管理サーバ7、ワークフロー生成サーバ8、管理者端末9によって構成される。これらの機器は、物理的な通信回線2を通して管理ネットワーク1に接続される。
【００２１】
図１Ｂに、第１の実施例における各種サーバの内部構成の一例を示す。ワークフロー管理サーバ7、ワークフロー生成サーバ8は通常のコンピュータ構成を有し、処理部である中央処理部(Central Processing Unit :CPU)からなるプロセッサ111が、データパス112を介して、管理ネットワーク1に接続されるネットワークインタフェース113、記憶部であるメモリ114、記憶装置113、キーボード、表示装置等の入出力部(I/O)116に接続されている。メモリ114には、図１Ａに示した各種のプログラムが記憶され、CPUであるプロセッサ111によって実行される。記憶装置112は、サーバ11内部に示したが、外部に設置しても良く、図１Ａに示した各種のデータベースの一部を蓄積することもできる。なお、管理者端末9も同様のコンピュータ構成を有することは言うまでもない。
【００２２】
本実施例の構成管理データベース3は、複数の物理または仮想的なコンピュータシステムの構成管理に用いられるものとする。また、この構成管理データベース3上のデータは複数の運用管理者によって操作されるものとする。管理者端末9は運用管理者の数だけ存在しても良い。
【００２３】
構成管理データベース3は、複数の物理または仮想的なコンピュータシステムの構成情報と、それらの構成情報を管理するために必要なデータを格納するデータベースである。構成情報を管理するために必要なデータとして、このデータベースはデータ定義3000およびユーザ情報3100を格納する。また、本実施例の構成管理データベース3は、構成情報を表形式で格納する。しかし、本実施例の実施形態は表形式のデータに限定されるものではない。例えば、木構造のデータであっても、後述するデータ定義に相当するデータがあれば、本実施例を適用できる。
【００２４】
データ定義3000は、各構成情報に含まれる情報の参照関係を示すデータである。構成管理データベース3がリレーショナルデータベース管理システム（Relational Database Management System、RDBMS）の場合、データ定義はCREATE TABLEコマンドで作成されるデータの一部である。
【００２５】
図２は、データ定義3000の一例である。列3001は、データ定義を一意に識別するためのIDである。列3002〜3003は、参照元テーブルおよびカラムの名称である。列3004〜3005は、参照先テーブルおよびカラムの名称である。例えば、行3011は、「顧客−VM情報」テーブルの「顧客ID」カラムは、「顧客情報」テーブルの主キーである「顧客ID」カラムを参照する外部キーであることを示す。なお、この外部キーは、データベースに対して明示的に予め定義された外部キーである。
【００２６】
ユーザ情報3100は、構成管理データベース上のデータを操作可能なユーザ、すなわち運用管理者に関するデータである。ユーザ情報3100は、運用管理者によって事前に作成される。
【００２７】
図３は、ユーザ情報3100の一例である。列3101は、このシステムの運用管理者を一意に識別するためのIDである。運用管理者IDは、各種データのアクセス制御や、データ操作履歴の記録に用いられる。列3102は、アクセス制御に用いられるパスワードである。列3103は、各ユーザが所属する組織のIDである。
【００２８】
図４〜図８に示す顧客情報3200からファイアウォール設定3600は、本実施例における構成情報である。これらはあくまで構成情報の一例であり、本実施例の実施形態はこれに限定されるものではない。これらの構成情報は、ワークフロー実行プログラム72またはデータベース接続ソフトウェア91を通して、運用管理者から操作される。
【００２９】
顧客情報3200は、物理的または仮想的なコンピュータシステムを利用する顧客に関するデータである。
図４は、顧客情報3200の一例である。列3201は、顧客を一意に識別するためのIDである。列3202は、顧客の名称である。
【００３０】
顧客−VM情報3300は、顧客情報とVM情報の関係を示すデータである。
図５は、顧客−VM情報3300の一例である。列3301は、関係を一意に識別するためのIDである。列3302は、顧客情報を参照する外部キーである。列3303は、VM情報を参照する外部キーである。
【００３１】
VM情報3400は、仮想的なコンピュータシステム上で動作する仮想マシン（Virtual Machine、VM）に関するデータである。
図６は、VM情報3400の一例である。列3401は、VMを一意に識別するためのIDである。列3402は、VMが動作する物理マシンのホスト名である。列3403は、そのVMのホスト名である。列3404〜3406は、そのVMが利用するCPUコア数、メモリ領域のサイズ、ディスク領域のサイズである。
【００３２】
監視設定3500は、物理マシンまたは仮想マシンに対する監視設定に関するデータである。
図７は、監視設定3500の一例である。列3501は、監視設定を一意に識別するためのIDである。列3502は、その監視設定が示す物理マシンまたは仮想マシンのホスト名である。列3503は、そのホストに対する生死監視の有無を示す値である。列3504は、そのホストに対するディスク監視の有無と、ディスク監視に用いる閾値を示す値である。
【００３３】
ファイアウォール設定3600は、物理的または仮想的なコンピュータシステム上に設置されたファイアウォールの設定に関するデータである。顧客情報3200から監視設定3500は何らかのキーで関係付けられているが、ファイアウォール設定3600だけはどのキーでも関係付けられていない。そのため、本実施例ではファイアウォール設定を含むワークフローを精度良く推薦できない。その対策は本実施例の最後と、実施例２で述べる。
【００３４】
図８は、ファイアウォール設定3600の一例である。列3601は、ファイアウォール設定を一意に識別するためのIDである。列3602〜3606は、その設定が対象とするパケットの条件である。列3607は、その条件に該当するパケットに対する処理の内容である。
【００３５】
ワークフローデータベース4は、ワークフロー管理サーバが用いるデータを格納するデータベースである。このデータベースは、ワークフローデータ4000とノードデータ4100を格納する。本実施例では、作業をノードとして示し、ワークフローは複数のノードと、ノード間の一方向の接続関係から成るものとする。１個のノードから複数のノードへ向かう接続関係は、作業の分岐、あるいは作業の並列化を示すものとする。
【００３６】
ワークフローデータ4000は、ワークフロー全体に関するデータである。
図９は、ワークフローデータ4000の一例である。列4001は、ワークフローを一意に識別するためのIDである。列4002は、ワークフローの表示名である。この表示名は、ワークフロー表示プログラムがワークフローを表示する際に用いられる。
【００３７】
ノードデータ4100は、ワークフローに含まれるノードに関するデータである。
図１０の上段は、ノードデータ4100の一例である。列4101は、そのノードが属するワークフローのIDである。列4102は、そのノードを一意に識別するためのIDである。列4103は、そのノードの次のノードのIDである。そのノードが示す作業のあとで作業が分岐する場合、あるいは複数の作業が並列で行われる場合は、この列に複数のノードIDが入力される。列4104は、そのノードの実行権限を持つユーザあるいは組織のIDである。列4105は、そのノードが示す作業の内容である。本実施例では詳細を省略するが、この内容には、ワークフロー表示プログラムがそのノードを表示する際に用いる画面表示や、ワークフロー実行プログラムが行う処理を含む。
【００３８】
図１０の下段に示す、列4106〜4108は、列4105の内容に含まれる、構成管理データベースへのデータ操作に関するデータである。列4106は、そのデータ操作の対象テーブルである。列4107は、そのデータ操作の対象カラムである。列4108は、そのデータ操作の内容である。データ操作の内容には、データの追加、更新、削除などがある。また、データや更新の場合は、更新後の値を自由入力させる場合や、いくつかの候補から選択させる場合がある。
【００３９】
図１Ａの履歴データベース5は、構成管理データベース3に格納された構成情報に対するデータ操作の履歴を格納するデータベースである。このデータベースは操作履歴5000を格納する。
操作履歴5000は、構成情報に対するデータ操作の履歴である。本実施例では、構成情報に対する追加、更新、削除をデータ操作として扱う。しかし、本実施例の実施形態はこれに限定されるものではなく、あらゆるデータへのアクセスをデータ操作として扱って良い。例えば、データの閲覧などもデータ操作として扱って良い。
【００４０】
図１１は、操作履歴5000の一例である。図１１の上段の列5001は、操作履歴を一意に識別するためのIDである。列5002〜5003は、そのデータ操作が行われたテーブルおよびカラムの名称である。列5004は、そのデータ操作が行われたレコードの主キーの値である。レコードを一意に指定するために必要であれば、１個のカラムから成る主キーではなく、複数のカラムから成る複合キーを用いても良い。列5005は、そのデータ操作の内容である。
【００４１】
図１１の下段の列5006は、そのデータ操作が行われる前に、そのレコードに格納されていたデータである。データ操作の内容が「追加」の場合は、この列にデータは格納されない。列5007は、そのデータ操作が行われた後に、そのレコードに格納されていたデータである。データ操作の内容が「削除」の場合は、この列にデータは格納されない。列5008は、そのデータ操作の実行日時である。列5009は、そのデータ操作を実行したユーザのIDである。
【００４２】
図１Ａの推薦データベース6は、ワークフロー生成プログラムが作成したワークフローを格納するデータベースである。このワークフローを、ワークフローデータベースに格納されているワークフローと区別するために、以下では推薦ワークフローと呼ぶ。このデータベースは、推薦ワークフローデータ6000と推薦ノードデータ6100を格納する。これらの構造は、ワークフローデータ4000およびノードデータ4100とほぼ同じである。
【００４３】
推薦ワークフローデータ6000は、推薦ワークフロー全体に関するデータである。
図１３は、推薦ワークフローデータ6000の一例である。列6001は、推薦ワークフローを一意に識別するためのIDである。列6002は、ワークフロー生成プログラムが作成した、その推薦ワークフローの名称案である。列6003は、ワークフロー生成プログラムが計算した、その推薦ワークフローのグラフ利用スコアである。このグラフ利用スコアについては後述する。
【００４４】
推薦ノードデータ6100は、推薦ワークフローに含まれるノードに関するデータである。以下では、これらのノードを推薦ノードと呼ぶ。
図１４は、推薦ノードデータ6100の一例である。図１４の上段の列6101は、その推薦ノードが属する推薦ワークフローのIDである。列6102は、その推薦ノードを一意に識別するためのIDである。列6103は、その推薦ノードの次の推薦ノードのIDである。列6104は、そのノードを頻繁に実行しているユーザあるいは組織のIDである。
【００４５】
図１４の下段の列6105〜6107は、構成管理データベースへのデータ操作に関するデータである。列6105は、そのデータ操作の対象テーブルである。列6106は、そのデータ操作の対象カラムである。列6107は、そのデータ操作の内容である。データ操作の内容には、データの追加、更新、削除などがある。また、データや更新の場合は、更新後の値を自由入力させる場合や、いくつかの候補から選択させる場合がある。
【００４６】
図１Ａのワークフロー管理サーバ7は、ワークフローの表示および実行を行うサーバである。ワークフロー管理サーバ7は、図１Ｂに一例を示したように、ネットワークインタフェースを通してパケットを送受信する。ワークフロー管理サーバ7の各プログラムはメモリに格納されており、動作時には処理部であるCPUが内部のデータパスを通してそれらを読み出して実行する。メモリは、ワークフロー表示プログラム71およびワークフロー実行プログラム72を格納する。
【００４７】
ワークフロー表示プログラム71は、運用管理者からの要求に応じて、ワークフローデータベース4に格納されたワークフローデータを提供するプログラムである。本実施例では、運用管理者はWebブラウザ92を通して、ワークフロー表示プログラム71から提供されたワークフローデータを閲覧するものとする。
【００４８】
ワークフロー実行プログラム72は、運用管理者からの要求に応じて、物理的または仮想的な装置の設定変更処理や、それに伴う構成管理データベース上の構成情報の操作を行うプログラムである。本実施例では、運用管理者はWebブラウザ92を通して、ワークフロー実行プログラム72に対して処理の実行を指示するものとする。また、ワークフロー実行プログラム72は、構成情報を操作する際に、そのデータ操作の履歴を履歴データベース5に記録する。この記録は本実施例にとって必須ではないが、この記録を行うことにより、ワークフロー生成サーバは既存のワークフローに対する修正を推薦できるようになる。
【００４９】
図１Ａのワークフロー生成サーバ8は、推薦ワークフローを生成するサーバである。ワークフロー生成サーバ8は、図１Ｂに例示したネットワークインタフェースを通してパケットを送受信する。ワークフロー生成サーバ8の各プログラムはメモリに格納されており、動作時にはCPUがデータパスを通してそれらを読み出して実行する。メモリは、ワークフロー生成プログラム81およびワークフロー推薦プログラム82を格納する。
【００５０】
ワークフロー生成プログラム81は、運用管理者からの要求に応じて、あるいは定期的に、推薦ワークフローを生成するプログラムである。
【００５１】
ワークフロー推薦プログラム82は、運用管理者からの要求に応じて、ワークフローの新規追加または既存ワークフローの修正を推薦するプログラムである。本実施例では、運用管理者はWebブラウザ92を通して、ワークフロー推薦プログラム82から提供された推薦結果を閲覧するものとする。
【００５２】
図１Ａの管理者端末9は、運用管理者がワークフロー管理サーバ、ワークフロー生成サーバおよびデータベースを利用する際に操作する端末である。管理者端末9はインターフェイスを通してパケットを送受信する。管理者端末9の各プログラムはメモリに格納されており、動作時にはCPUがデータパスを通してそれらを読み出して実行する。メモリは、データベース接続ソフトウェア91およびWebブラウザ92を格納する。
【００５３】
データベース接続ソフトウェア91は、運用管理者に対して、構成管理データベース3上のデータを閲覧、編集機能を提供するプログラムである。データベース操作ソフトウェア91は、運用管理者が構成情報を操作する際に、そのデータ操作の履歴を履歴データベース5に記録する。この記録は本実施例にとって必須である。
【００５４】
Webブラウザ92は、運用管理者に対して、ワークフロー管理サーバおよびワークフロー生成サーバ上のプログラムを利用するためのインターフェイスとして動作するプログラムである。
【００５５】
図１５Ａ〜図１５Ｃは、ワークフロー生成プログラム81が、推薦ワークフローデータを生成するためのフローチャートである。このプログラムは、推薦ワークフローデータおよび推薦ノードデータを生成し、生成したデータを推薦データベースに格納する。これらのデータは後述するワークフロー推薦プログラム82によって利用される。
【００５６】
図１５Ａのフローチャートにおいて、ワークフロー生成プログラム81は、最初に、運用管理者に指定された期間の操作履歴を履歴データベースから取得する（S101）。この期間の長さは、構成管理データベースに対して行われる操作に応じて、運用管理者が事前に決定する。例えば、開始から終了まで最長２週間かかるワークフローが存在する場合は、この期間の長さは２週間以上にする必要がある。
【００５７】
次に、ワークフロー生成プログラム81は、S101で取得した操作履歴の組合せ（以下、操作履歴ペア）を作成する（S102）。そして、これ以降のS103〜113では、操作履歴ペアに含まれる２個の操作履歴の関係性の強さを示す数値、すなわち操作履歴の関係性を定量化した値（以下、関係性スコアと称する。）を計算する。実施例１では、この操作履歴の関係性を定量化した値である関係性スコアの大きさを最も左右する情報として、データ定義を用いる。操作履歴の関係性を定量化した値である関係性スコアの初期値はRS0とする。
【００５８】
まず、ワークフロー生成プログラム81は、未検証の操作履歴ペアを１個選択する。以下では、選択された操作履歴ペアをHPと呼ぶ。また、HPに含まれる操作履歴を、実行日時が過去の順にH1、H2と呼ぶ（S104）。次に、ワークフロー生成プログラム81は、この２つの操作履歴の実行日時の差、この２つの操作履歴の間に行われた他のデータ操作の数、およびこの２つの操作履歴を実行したユーザの組織を比較する。そして、H1とH2があまりにもかけ離れている場合は、以後の分析から除外する（S105〜107）。これは、実態と異なるワークフローの生成を避けるためである。例えば、同じデータに関する２つのデータ処理があったとしても、その２つの実行日時がかけ離れている場合、その２つのデータ処理は異なるワークフローに属する可能性が高い。すなわち、ワークフロー生成サーバ8のCPUで実行されるワークフロー生成プログラム81は、２個のデータ操作の履歴間の関係性を定量化するに際し、当該２個のデータ操作の実行日時の差、当該２個のデータ操作の間に行われた他のデータ操作の数、或いは当該２個のデータ操作を行ったユーザの組織を参照することにより、より精度高くワークフローを生成することができる。
【００５９】
次に、ワークフロー生成プログラム81は、H1の対象テーブルとH2の対象テーブルの関係性に関するデータ定義を構成情報データベースから取得する（S108）。具体的には、H1に含まれる対象テーブル名および対象カラム名を、データ定義の参照元テーブルおよび参照元カラム名に指定し、H2に含まれる対象テーブル名および対象カラム名を、データ定義の参照先テーブルおよび参照先カラム名に指定して、データ定義を検索する。また、H1とH2を入れ替えて同様の検索を行う。そして、これ以降のS109〜113では、S108で取得した各データ定義（以下、DD）の検査を行う。
【００６０】
ワークフロー生成プログラム81は、DDの示すカラムが、H1の操作後データとH2の操作後データで一致するかどうかを検査する（S111）。このとき、いずれかの操作後データが「なし」の場合は、一致したと見なさない。このとき、いずれかの操作後データが「なし」の場合は、両者が一致する場合、H1の操作後データとH2の操作後データが、定義された外部キーで接続されるように、レコードが作成または更新されたことが分かる。接続を作る場合、通常、データは参照される側から先に更新されるため、参照先テーブルおよびカラムはH1、参照元テーブル及びカラムはH2として、操作後データを比較すれば良い。しかし、参照先と参照元の関係が相互参照の場合は、H1とH2が逆の場合も検査して良い。
【００６１】
上記が一致しなかった場合、ワークフロー生成プログラム81は、DDの示すカラムが、H1の操作前データとH2の操作前データで一致するかどうかを検査する（S112）。このとき、いずれかの操作前データが「なし」の場合は、一致したと見なさない。両者が一致する場合、H1の操作前データとH2の操作前データは外部キーで接続されていたが、この接続を切るように、レコードが更新または削除されたことが分かる。接続を切る場合、通常、データは参照する側から先に更新されるため、参照先テーブルおよびカラムはH2、参照元テーブル及びカラムはH1として、操作後データを比較すれば良い。しかし、参照先と参照元の関係が相互参照の場合は、H1とH2が逆の場合も検査して良い。
【００６２】
S111またはS112のいずれかの条件を満たした場合、ワークフロー生成プログラム81は、操作履歴ペアHPに関係性スコアRS1を加算し、関係性スコアRS0＋RS1とする（S113）。
【００６３】
操作履歴の関係性を定量化した値である関係性スコアの計算が完了すると、ワークフロー生成プログラム81は、閾値T3以上の関係性スコアを持つ操作履歴ペアの集合を作成する（S114）。ここで閾値を設ける理由は、ワークフロー生成プログラムの計算量を削減するためである。そのため、閾値で限定せずに、関係性スコアの高い上位数件の操作履歴ペアを残すという方法でも良い。
【００６４】
そして、ワークフロー生成プログラム81は、この操作履歴ペアをグラフのノード（点）およびエッジ（線）と見立てて、複数のグラフを作成する（S115）。以下では、このグラフを操作履歴グラフと呼ぶ。このとき作成されるグラフは、そのグラフに含まれる全てのノードが、そのグラフに含まれる他のノードおよびエッジを介して、他の全てのノードに到達可能なものとする。なお、到達可能性を考慮する際に、エッジの方向は無視して良い。ここで作成される操作履歴グラフすべてを含む集合を、以下ではHGSと呼ぶ。
【００６５】
図１７は、実施例１における操作履歴グラフの例を示す図である。例えば、図１１の操作履歴5011〜5018からは、２個の操作履歴グラフ1001、および操作履歴グラフ1002が作成される。エッジは、操作履歴ペアに含まれる２個の操作履歴を関連付けるデータ定義に応じて、一方向または双方向とする。例えば、データ定義3011は参照元が「顧客−VM情報」、参照先が「顧客情報」であることを示しているため、参照先から参照元へ向かう一方向のエッジを作成する。これは、ワークフローとしては、参照される側のデータ（参照先のデータ）から先に作成、更新する必要があるためである。なお、図１７において、括弧内の数値は、操作履歴の関係性を定量化した値である関係性スコアの一例を示していること明らかである。
【００６６】
図２のデータ定義および図３〜7の構成情報によると、図１１の操作履歴のなかでは、6個の操作履歴ペア（操作履歴5011と5015、5013と5015、5013と5018、5012と5016、5014と5016、5014と5017）が同じキーを含んでいる。従って、これらの操作履歴ペアは関係性が強いと言える。従って、これらの操作履歴ペアは、図１５のS113で大きい関係性スコア（例えば、10）が割り当てられる。一方、単純に連続して行われた操作同士（操作履歴5011と5012、5012と5013など）は、必ずしも関係性が強くなく、関係性スコアは小さい（例えば、1）。このように、データ定義を用いて操作履歴の関係性を定量化することで、複数の要求に関連する操作履歴が混在していても、個々の要求ごとに操作履歴グラフを抽出することが可能になる。
【００６７】
次に、ワークフロー生成プログラム81は、HGSに含まれる個々の操作履歴グラフに対して整形処理を行う（S116）。整形処理とは、操作履歴グラフの形を、ワークフローとして実用的な形に変更する処理のこと全般を指す。例えば、操作履歴グラフに含まれる分岐の数を削減する処理や、操作履歴グラフ中に存在するループを解消する処理のことである。本実施例においても、データベースの定義が正規化されていない場合などに、操作履歴グラフ中にループが発生する。すなわち、ワークフロー生成サーバ8のCPUで実行されるワークフロー生成プログラム81は、ワークフローの操作履歴グラフをワークフローとして実用的な形に変更するために、操作履歴グラフに含まれる分岐の数を削減する処理、あるいは、ワークフローの操作履歴グラフをワークフローとして実用的な形に変更するために、前記操作履歴グラフ中に含まれるループを解消する処理を実行する。
【００６８】
操作履歴グラフに含まれる分岐数を削減する方法としては、例えば操作履歴の実行日時に従ってエッジを付け替える方法（図１７の1003）や、開始ノードが１個になるようにエッジを付け替える方法（図１７の1004）がある。
【００６９】
操作履歴グラフ中に存在するループを解消する方法としては、例えば、ループを構成するノードに限り、実行時間順に並ぶようにエッジを付け替える方法がある。または、関係性スコアに基づいて一部のエッジを削除する方法がある。例えば、操作履歴グラフから外されるノードが発生しない範囲で、ループが解消されるまで、関係性スコアが低いエッジから順に削除するという方法がある。
【００７０】
次に、図１５Ｂにおいて、ワークフロー生成プログラム81は、HGSに含まれる個々の操作履歴グラフに対して、抽象化を行う（S121〜124）。
この抽象化後の操作履歴を、以下ではデータ操作と呼び、抽象化された操作履歴によって構成されるグラフを、以下ではデータ操作グラフと呼ぶ。
【００７１】
ここで言う抽象化とは、操作対象の値の抽象化および操作対象のカラムの抽象化である。例えば、「監視設定テーブルのレコードについて、生死監視カラムの値を「なし」に更新する」という操作履歴があった場合、その操作対象の値を抽象化すると「監視設定テーブル上のレコードの生死監視カラムの値を更新する」というデータ操作が生成される。また、その操作対象のカラムを抽象化すると「監視設定テーブル上のレコードを更新する」というデータ操作が生成される。なお、抽象化される前の操作履歴ペアは、データ操作同士のペアとして維持される。また、データ操作同士を繋ぐカラムの情報についても、データ操作ペアに付随する情報として維持される。ワークフロー生成プログラム81は、以上のようにして生成されたデータ操作グラフすべてを、データ操作グラフのリスト（以下、OGL）に追加する（S124）。
【００７２】
操作履歴はすべて異なるため、HGSには同一の操作履歴グラフは存在しなかった。しかし、抽象化された操作履歴であるデータ操作のいくつかは一致する可能性があるため、OGLのなかには同一のデータ操作グラフが存在する可能性がある。そこで、ワークフロー生成プログラム81は、OGLからデータ操作グラフの重複を排除した、データ操作グラフの集合（以下、OGS）を作成する（S125）。
また、ワークフロー生成プログラム81は、OGSのなかの２個以上のデータ操作グラフに含まれる部分グラフを発見し、OGSに追加する（S126）。この処理は必須ではなく、複数のワークフローのなかで共通して行われるデータ操作をワークフローとして抽出したい場合のみ必要とされる。そして、ワークフロー生成プログラム81は、OGLおよびOGSから、ノード数（データ操作数）が閾値T4以下のグラフを除去する（S127）。ここで閾値を設ける理由は、ワークフロー生成プログラムの計算量を削減するためである。
【００７３】
図１５Ｃに示す、これ以降のS131〜143では、OGSに含まれる各データ操作グラフに対して、そのデータ操作グラフが利用される度合いを示す数値、すなわち、図１３に示したグラフ利用スコアを計算する。グラフ利用スコアの初期値はGS0とする。
【００７４】
更に、ワークフロー生成プログラム81は、OGSのなかから、未検証のデータ操作グラフを１個選択する（S133）。以下では、選択されたデータ操作グラフをOG1と呼ぶ。これ以降のS134〜143では、OGLに含まれる各データ操作グラフとOG1を比較し、その結果に応じてOG1のグラフ利用スコアに値を加算する。
【００７５】
まず、ワークフロー生成プログラム81は、OGLのなかから、OG1と比較していないデータ操作グラフを選択する（S135）。以下では、このデータ操作グラフをOG2と呼ぶ。そして、OG1とOG2を比較し、以下のいずれかの条件を満たす場合は、OG1のグラフ利用スコアに値を加算する（S136〜143）。
・OG1とOG2が完全に一致する。
・OG1に含まれるデータ操作の集合と、OG2に含まれるデータ操作の集合が完全に一致する。
・OG1がOG2の部分グラフである。
・OG1に含まれるデータ操作の集合がOG2に含まれるデータ操作の集合の部分集合である。
【００７６】
一致する度合いが大きいほど、グラフ利用スコアへの加算値は高いものとする。すなわち、GS1 ＞＝ GS2 ＞＝ GS3 ＞＝ GS4の関係が成り立つものとする。ただし、ワークフローを生成する際に、ワークフローの実行順（すなわち、グラフとして一致するかどうか）を重要視する場合は、GS1 ＞＝ GS3 ＞＝ GS2 ＞＝ GS4という関係にしても良い。
【００７７】
次に、ワークフロー生成プログラム81は、グラフ利用スコアが閾値T5以下のデータ操作グラフを、OGSから削除する（S144）閾値を超えるデータ操作グラフの数が多すぎる、または少なすぎる場合は、グラフ利用スコアの高い順に固定数のデータ操作グラフをOGSとしても良い。
【００７８】
最後に、ワークフロー生成プログラム81は、OGSに含まれるデータ操作グラフを、S133〜S143で計算したグラフ利用スコアと共に、推薦データベース6に登録する（S145）。このとき、データ操作グラフ全体の情報を推薦ワークフローデータ6000に、データ操作グラフに含まれる個々のノードの情報を推薦ノードデータ6100に登録する。なお、ワークフロー生成プログラム81は、この登録の際に、推薦ノードデータの対象テーブル、対象カラムおよび操作内容に基づいてワークフローの名称を自動生成する。この名称は、生成したワークフローの特徴を運用管理者に示すために用いられる。例えば、図１７の操作履歴グラフ1003に基づいて作成されたワークフローの場合を考える。開始ノードの情報だけを用いた場合、ワークフローの名称は「顧客情報の追加」となる。また、開始ノードと終了ノードの情報を用いた場合、ワークフローの名称は「顧客情報の追加〜監視設定の追加」となる。これらの方法以外に、開始ノードと終了ノード以外のノードの情報を使う方法や、ワークフローに含まれるノード数を使う方法を用いても良い。どのような情報を用いる方法が適切かは、対象となるデータベースごとに異なる。
【００７９】
以上が、本実施例におけるワークフロー生成プログラム81が推薦ワークフローデータを生成する処理の概要である。
【００８０】
図１６は、ワークフロー推薦プログラム82が、運用管理者に対してワークフローの推薦結果を表示するためのフローチャートである。このプログラムは、既存のワークフローと、ワークフロー生成プログラムが作成した推薦ワークフローを比較し、その結果に基づいて新しいワークフローを推薦する。
【００８１】
ワークフロー推薦プログラム82は、最初に、ワークフローデータベース4から全てのワークフローデータおよびノードデータを取得する（S201）。そして、S201で取得した個々のワークフローを、データ操作グラフに変換する（S202）。ワークフローにはデータ操作以外のノードも含まれているため、データ操作グラフへの変換を行う際に、これらのノードは除外する。例えば、あるワークフローのなかでノードAの次ノードがノードB、ノードBの次ノードがノードCという関係があるときに、ノードAとCだけがデータ操作の場合、そのワークフローをノードAの次ノードがノードCというデータ操作グラフに変換する。以下では、このように作成されたデータ操作グラフの集合をWFGSと呼ぶ。
【００８２】
次に、ワークフロー推薦プログラム82は、推薦データベース6から全ての推薦ワークフローデータおよび推薦ノードデータを取得する（S203）。そして、S203で取得した個々の推薦ワークフローをデータ操作グラフに変換する（S204）。以下では、このデータ操作グラフの集合をRGSと呼ぶ。そして、これ以降のS205〜217では、RGSに含まれる各データ操作グラフ（以下、RG）の検査を行う。
【００８３】
まず、ワークフロー推薦プログラム82は、RGと一致するデータ操作グラフがWFGSに含まれるかどうかを検査する（S207）。もしRGと一致するデータ操作グラフがある場合は、RGに基づく推薦を行う必要はないため、S204に戻る。RGと一致するデータ操作グラフがWFGSに含まれない場合は、WFGSから１個ずつデータ操作グラフを取り出して、RGと比較する（S208〜217）。以下では、WFGSから取得したデータ操作グラフをWFGと呼ぶ。
【００８４】
以下では、RGとWFGの比較を行い、その結果によって処理を分岐する。
まず、ワークフロー推薦プログラム82は、WFGに含まれるデータ操作の集合とRGに含まれるデータ操作の集合が一致するかどうかを検査する（S210）。一致した場合は、WFGに対応するワークフローについて、データ操作の並び替えを推薦する（S211）。
【００８５】
上記に該当しない場合は、ワークフロー推薦プログラム82は、WFGがRGの部分グラフであるかどうか、またはWFGに含まれるデータ操作の集合がRGに含まれるデータ操作の集合の部分集合であるかどうかを検査する（S212）。いずれかの条件に該当した場合は、WFGに対応するワークフローについて、RGに含まれてWFGに含まれないデータ操作の追加を推薦する（S213）。
【００８６】
上記にも該当しない場合は、ワークフロー推薦プログラム82は、RGがWFGの部分グラフであるかどうか、またはRGに含まれるデータ操作の集合がWFGに含まれるデータ操作の集合の部分集合であるかどうかを検査する（S214）。いずれかの条件に該当した場合は、WFGに対応するワークフローについて、WFGに含まれてRGに含まれないデータ操作の削除を推薦する（S215）。
【００８７】
しかし、WFGSに含まれるすべてのWFGとRGを比較しても、RGに基づく推薦が1回も行われない場合がある。そのようなことが起こるのは、RGが既存のワークフローと全く異なる場合である。従って、そのような場合、ワークフロー推薦プログラム82は、RGに含まれるデータ操作から成るワークフローの新規作成を推薦する（S216〜217）。
【００８８】
なお、S212とS214について、部分グラフまたは部分集合に含まれるノード数が閾値T9以下の場合は、判定に失敗したものとして良い。このような処理を追加することで、既存のワークフローとの類似性が低い推薦ワークフローについては、「新規作成の推薦」という形で推薦することができる。
【００８９】
図１８は、ワークフローの新規作成を推薦する場合の、ワークフロー推薦プログラム82による画面表示の例を示す図である。1101はワークフロー生成プログラムによって自動生成されたワークフローの名称である。このように、ワークフロー生成サーバ8は、自動生成された文字列をワークフローの推薦に際して、表示等の提示を行うことにより、利用者への便宜を図ることができる。
【００９０】
同図において、1102はワークフローの全体像、1103は運用管理者の画面操作によって特定されたノードの詳細表示である。運用管理者はボタン1104を選択することで、追加案をそのままワークフローとして追加することができる。あるいは、運用管理者はボタン1105を選択することで、追加案をデフォルト値として含むワークフロー作成画面を表示することができる。
【００９１】
図１９は、既存のワークフローに対するデータ操作の追加を推薦する場合の、ワークフロー推薦プログラム82による画面表示の例を示す図である。1201は、この修正案が対象とする、既存のワークフローの名称である。1202はこの修正案が対象とするワークフローの全体像、1203は修正案のワークフローの全体像である。修正前と修正後で共通するノードは灰色で表示されている。運用管理者はボタン1204を選択することで、修正案に従ってワークフローとして修正することができる。修正案を多少変更した上でワークフローを修正したい場合は、運用管理者はボタン1205を選択することで、修正案をデフォルト値として含むワークフロー編集画面を表示することができる。
【００９２】
以上が、ワークフロー推薦プログラム82がワークフローの推薦結果を表示する処理の概要である。
【００９３】
以上では、データ定義が存在する場合の処理について示した。しかし、ワークフロー生成プログラム81は、構成管理データベース3が持つデータ定義である外部キーに加えて、ワークフロー生成プログラムが自動生成したデータ定義を用いて外部キーとしても良い。データ定義の自動生成方法の例を以下に示す。方法１〜2は実際に格納されている構成情報を用いる方法、方法３〜４は既存のワークフローに含まれるデータ操作の共起関係を用いる方法である。
【００９４】
(方法１)全ての構成情報のカラムを検査して、各カラムに含まれるデータの集合を作成する。その上で、各カラムのデータの集合同士を比較する。あるカラムAのデータの集合と、カラムBのデータの集合の一致する割合が一定値を超える場合は、カラムAおよびBに関係があることを示すデータ定義を外部キーとして自動生成する。
【００９５】
(方法２)方法１の集合に加えて、各カラムに含まれる値を形態素解析した結果の集合を作成する。その上で、形態素解析した結果の集合と、方法Aの集合を比較する。あるカラムAのデータの集合と、あるカラムBのデータを形態素解析した結果の集合の一致する割合が一定値を超える場合は、カラムAおよびBに関係があることを示すデータ定義を外部キーとして自動生成する。例えば、テーブルCのカラム「物理ホスト名」の値は「host＋数値」、テーブルDのカラム「仮想ホスト名」の値は「host＋数値＋数値」という法則性がある場合、この方法で、カラム「仮想ホスト名」からカラム「物理ホスト名」を参照するデータ定義を外部キーとして自動生成できる。
【００９６】
(方法３)全てのワークフローデータおよびノードデータを検査して、１個のノード中で同時に操作されるカラム同士には関連があるものとする。例えば、１個のノード中でテーブルAの操作とテーブルBの操作が並んでいた場合、テーブルBのカラムからテーブルAのカラムを参照する（あるいはその逆の）データ定義を外部キーとして自動生成する。
【００９７】
(方法４)全てのワークフローデータおよびノードデータを検査して、連続するノードのなかで操作されるカラム同士には関連があるものとする。例えば、あるノード中でテーブルAが操作されており、その次のノードでテーブルBが操作されていた場合、テーブルBのカラムからテーブルAのカラムを参照する（あるいはその逆の）データ定義を外部キーとして自動生成する。
【００９８】
以上のようにして、ワークフロー推薦プログラム82は、運用管理者に対して、新規作成すべきワークフロー、および修正すべきワークフローとその修正方法を推薦することができる。この推薦はデータ定義に基づいて行われるため、複数の要求に関するデータ操作が構成管理データベースに対して行われる場合においても、推薦されるワークフローの精度は従来技術より高くなる。
【００９９】
これにより、運用管理者は、ワークフローの作成および修正を迅速に行うことができるという効果がある。また、ワークフローの作成および修正にかかる時間を短縮することで、ワークフローの頻繁な見直しを可能とし、ひいては構成管理データベースの更新ミスの削減という効果が得られる。
【実施例２】
【０１００】
以下、図２０〜図２２を用いて第２の実施例を説明する。第２の実施例のワークフロー生成サーバ、或いはワークフロー生成方法は、データベースの操作予告の履歴を記録した操作予告履歴、或いはデータベースのトランザクション処理の履歴を用いて、データ操作の履歴間の関係性を定量化した値とする構成を備える点に特徴がある。
【０１０１】
本実施例では、ワークフロー生成サーバのワークフロー推薦プログラムは、他の構成情報との関係がデータ定義に含まれない構成情報についても、操作予告履歴等から関係を発見することができ、この発見した関係に基づいてワークフローの推薦を行うことで、推薦されるワークフローの精度は従来技術より高くすることができる。
【０１０２】
図２０に、実施例２で想定するコンピュータシステムを模式的に示す。コンピュータシステムを構成する構成要素は、実施例１と同じである。ただし、本実施例の履歴データベース5は、実施例１の履歴データベースが格納するデータに加えて、操作予告履歴5100を格納する。
【０１０３】
本実施例では、構成情報に対するデータ操作の予告を操作予告と呼ぶ。操作予告とは、いつ、どの構成情報を、どのような値に更新するかを示すデータのことである。運用管理者は、自分がこれから行うデータ操作が、他の運用管理者によるデータ操作と衝突することを防ぐために、そのデータ操作に関する操作予告を事前に共有する。この操作予告に関する履歴を、本実施例では推薦データフローの精度を向上させるために利用する。以下では、この操作予告に関する履歴を操作予告履歴と呼ぶ。
【０１０４】
図１２は、操作予告履歴5100の一例である。図１２の上段の列5101は、操作予告履歴を一意に識別するためのIDである。列5102〜5103は、データ操作が予告されているテーブルおよびカラムの名称である。列5104は、予告されたデータ操作の種類である。列5105は、予告されたデータ操作が行われる前のレコードの内容である。列5106は、予告されたデータ操作が行われた後のレコードの内容である。
【０１０５】
図１２の下段の列5107は、その操作予告が操作予告履歴5100に追加された日時である。列5108は、その操作予告を操作予告履歴5100に追加したユーザである。列5109は、その操作予告が追加された時点で、その予告されたデータ操作が実際に行われる予定だった日時である。列5110は、その操作予告が追加された時点で、その予告されたデータ操作を実際に行う予定だったユーザのIDである。列5111は、その予告されたデータ操作が実際に行われた日時である。列5112は、その予告されたデータ操作を実際に行ったユーザのIDである。列5113は、その予告されたデータ操作を実際に行った際に記録された操作履歴のIDである。
【０１０６】
操作予告履歴5100は、データベース接続ソフトウェア91またはワークフロー実行プログラム72によって作成および更新される。これらのプログラムを介して運用管理者が操作予告を行うと、操作予告履歴5100に新しい操作予告履歴が追加される。このとき追加される操作予告履歴には、列5101〜5110の値が入力される。そして、運用管理者が、その操作予告履歴に基づいて実際にデータ操作を行うと、そのデータ操作に関する操作履歴が操作予告5000に登録されたあとで、その操作予告履歴の列5111〜5113の値が入力される。
【０１０７】
図２１は、実施例２のワークフロー生成プログラム81が、推薦ワークフローデータを生成するためのフローチャートである。
【０１０８】
実施例２のワークフロー生成プログラム81は、操作履歴の関係性を定量化した値である関係性スコアを計算するために、データ定義に加えて操作予告履歴を用いる。そのため、データ定義を用いて関係性スコアを計算する処理（S301〜313）は、実施例１のS101〜113とほぼ同じである。ただし、実施例２のワークフロー生成プログラム81は、データ定義の検証を行ったあとで、操作予告履歴を用いた関係性スコアの計算処理（S314以降）に進む。
【０１０９】
まず、ワークフロー生成プログラム81は、H1に対応する操作予告履歴（以下、SH1）およびH2に対応する操作予告履歴（以下、SH2）を取得する（S314）。H1に対応する操作予告履歴とは、列5112が、H1の列5001に一致する操作予告履歴のことである。H1かH2のいずれかに操作予告履歴が存在しない場合は、次の操作履歴ペアの検証に移る（S315）。H1とH2の両方に操作予告履歴が存在する場合は、この２つの操作予告履歴の予告登録日時の差、予告実行予定日時の差、および予告実行日時の差を検査する（S316〜318）。これは、実態と異なるワークフローの生成を避けるためである。
【０１１０】
これらの検査を通過した場合に、操作履歴ペアHPに、関係性スコアRS2を加算する（S319）。なお、S316〜318で検査した日時の差を元に、ここで加算する関係性スコアに差を付けても良い。関係性スコアに差を持たせることで、例えば、後述するS320の処理で作成される操作履歴ペアの集合が多すぎる場合に、操作履歴ペアの絞り込みが可能になる。
【０１１１】
関係性スコアの計算が完了すると、ワークフロー生成プログラム81は、閾値T3以上の関係性スコアを持つ操作履歴ペアの集合を作成する（S320）。この処理は実施例１のS114と同様である。そして、ワークフロー生成プログラム81は、この操作履歴ペアをグラフのノード（点）およびエッジ（線）と見立てて、複数の操作履歴グラフを作成する（S321）。
【０１１２】
図２２は、実施例２における操作履歴グラフの例を示す図である。例えば、図１１の操作履歴5011〜5020からは、２個の操作履歴グラフが作成される。図１１の1301はそのうちの１個である。操作予告履歴に基づいて関連付けられたノード間のエッジは、データ定義のように方向に関する情報を含まないため、双方向とする。例えば、操作履歴5013、5019、5020は予告実行予定日時がほぼ同時刻のため、これらの操作履歴の間に双方向のエッジを作成する。なお、図２２において、実線矢印が示す関係の関係性スコアは全てRS0＋RS1、破線矢印が示す関係の関係性スコアは、全てRS0＋RS2である。
【０１１３】
次に、ワークフロー生成プログラム81は、HGSに含まれる個々の操作履歴グラフに対して整形処理を行う（S121）。実施例２では、実施例１よりも双方向のエッジが発生しやすい。操作履歴グラフ中に存在するループを解消する方法としては、例えば操作予告履歴に含まれる日時データ（予告登録日時、予告実行予定日時または予告実行日時）の順序に従って双方向のエッジを一方向に変更する方法（図２２の1303）や、完全グラフになっている部分に限ってノードを日時データの順序に並び替える方法がある。これらの方法で双方向のエッジを一方向に変換したあとは、実施例１に記載した整形処理を適用可能である。ワークフロー生成プログラム81のこれ以降の処理は、実施例１のワークフロー生成プログラムの処理（S121以降）と同じである。
【０１１４】
以上のようにして、ワークフロー推薦プログラム82は、他の構成情報との関係がデータ定義に含まれない構成情報についても、操作予告履歴から関係を発見することができる。この発見した関係に基づいてワークフローの推薦を行うことで、推薦されるワークフローの精度は従来技術より高くなる。
【０１１５】
また、データベース上のデータ操作がトランザクション処理として行われた場合は、そのトランザクション処理に関する情報を予告操作履歴の代替としても良い。例えば、同一トランザクション処理で行われた複数のデータ操作について、データベース接続ソフトウェア91が、予告登録日時（列5107）から予告実行ユーザ（列5112）までの値が同じ操作予告履歴を作成する。この方法を用いることで、運用管理者が明示的に予告を作成する場合に比べて精度は下がるが、データ定義に頼らずに構成情報同士の関係を発見することができる。
【０１１６】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
【０１１７】
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１８】
更に、上述した各構成、機能、処理部等は、それらの一部又は全部を実現するプログラムを作成することによりソフトウェアで実現する場合を中心に説明したが、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。
【符号の説明】
【０１１９】
1  管理ネットワーク
11  サーバ
111  プロセッサ
112  データパス
113  ネットワークインタフェース
114  メモリ
115  記憶装置
116  入出力部(I/O)
117  プログラム
2  物理的な通信回線
3  構成管理データベース
3000  データ定義
3100  ユーザ情報
3200  顧客情報
3300  顧客−VM情報
3400  VM情報
3500  監視設定
3600  ファイアウォール設定
4  ワークフローデータベース
4000  ワークフローデータ
5  履歴データベース
5000  操作履歴
5100  操作予告履歴
6  推薦データベース
6000  推薦データ
7  ワークフロー管理サーバ
71  ワークフロー表示プログラム
72  ワークフロー実行プログラム
8  ワークフロー生成サーバ
81  ワークフロー生成プログラム
82  ワークフロー推薦プログラム
9  管理者端末
91  データベース接続ソフトウェア
92  Webブラウザ。
【図１Ａ】
2014048673.tif 000003
【図１Ｂ】
2014048673.tif 000004
【図２】
2014048673.tif 000005
【図３】
2014048673.tif 000006
【図４】
2014048673.tif 000007
【図５】
2014048673.tif 000008
【図６】
2014048673.tif 000009
【図７】
2014048673.tif 000010
【図８】
2014048673.tif 000011
【図９】
2014048673.tif 000012
【図１０】
2014048673.tif 000013
【図１１】
2014048673.tif 000014
【図１２】
2014048673.tif 000015
【図１３】
2014048673.tif 000016
【図１４】
2014048673.tif 000017
【図１５Ａ】
2014048673.tif 000018
【図１５Ｂ】
2014048673.tif 000019
【図１５Ｃ】
2014048673.tif 000020
【図１６】
2014048673.tif 000021
【図１７】
2014048673.tif 000022
【図１８】
2014048673.tif 000023
【図１９】
2014048673.tif 000024
【図２０】
2014048673.tif 000025
【図２１】
2014048673.tif 000026
【図２２】
2014048673.tif 000027