(57)【特許請求の範囲】
【請求項１】
管理端末と接続し、オペレータや機器のスケジュールを決定するスケジュール決定装置であって、
前記管理端末からシナリオの実行要求を受け付け、前記実行要求の受付に応答して、オペレーションシナリオを定義したシナリオ定義テーブルを参照して、前記実行要求に対応する前記シナリオを構成する複数のオペレーションの各々の開始予定時刻と終了予定時刻を決定し、複数の前記オペレーションを実行するオペレータ及び機器のスケジュールを格納する領域を、各々オペレータスケジュール管理テーブルおよび機器スケジュール管理テーブルに設け、決定した前記開始予定時刻と前記終了予定時刻を満足する、複数の前記オペレーションを実行するオペレータ及び機器のスケジュールを仮確保し、仮確保した前記オペレータ及び機器のスケジュールを各々前記オペレータスケジュール管理テーブル及び機器スケジュール管理テーブルに格納し、仮確保した前記スケジュールによる複数の前記オペレーションの前記終了予定時刻が、前記実行要求に含まれるデッドライン時刻を満足するとき、前記オペレータスケジュール管理テーブル及び機器スケジュール管理テーブルの、仮確保した前記オペレータ及び前記機器の前記スケジュールを確保状態に変更し、前記実行要求を受け付けたことを示すメッセージと確保状態に変更した前記スケジュールを前記管理端末に表示する実行スケジュール管理部、並びに
前記管理端末から前記オペレータの拘束時間の表示要求を受け付け、前記表示要求の受付に応答して、前記オペレータスケジュール管理テーブルから前記オペレータの、前記スケジュールを含むスケジュールを取得し、取得したスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションをグループ化し、グループ化した前記オペレーションの中で、最も開始予定時刻が早いオペレーションの開始予定時刻から最も終了予定時刻が遅いオペレーションの終了予定時刻までの時間を前記オペレータの前記拘束時間として求め、求めた前記拘束時間を前記管理端末に表示するスケジュール評価部を有し、
前記実行スケジュール管理部は、前記管理端末から前記オペレータのスケジュールの変更要求を受け付け、前記変更要求の受付に応答して、前記オペレータスケジュール管理テーブルから前記オペレータのスケジュールを取得し、取得したスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションをグループ化し、グループ化した前記オペレーションの中でスケジュールを調整可能なオペレーションがあるとき、調整可能な前記オペレーションのスケジュールを再スケジュールし、再スケジュールした前記オペレーションを含むグループの、最も開始予定時刻が早いオペレーションの開始予定時刻から最も終了予定時刻が遅いオペレーションの終了予定時刻までの時間を前記オペレータの新たな拘束時間として求め、前記新たな拘束時間が前記スケジュール評価部が求めた前記拘束時間より短いとき、前記新たな拘束時間及び再スケジュールしたスケジュールを含む前記オペレータのスケジュールを前記管理端末に表示することを特徴とするスケジュール決定装置。
【請求項２】
前記実行スケジュール管理部は、取得した前記オペレータのスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションによるグループ化の前に、前記オペレータのスケジュールの、オペレーション間の類似度が高いオペレーションによりグループ化することを特徴とする請求項１に記載のスケジュール決定装置。
【請求項３】
前記実行スケジュール管理部は、複数の前記オペレーションを実行する各オペレータとして、前記オペレーションと類似したオペレーションを実行した履歴があるオペレータを選択することを特徴とする請求項１に記載のスケジュール決定装置。
【請求項４】
前記実行スケジュール管理部は、前記オペレーションと類似したオペレーションを実行した履歴があるオペレータが複数の場合、類似した前記オペレーションの平均実行時間が最も短いオペレータを選択することを特徴とする請求項３に記載のスケジュール決定装置。
【請求項５】
管理端末と接続したスケジュール決定装置が、オペレータや機器のスケジュールを決定する方法であって、前記スケジュール決定装置は、
前記管理端末からシナリオの実行要求を受け付け、前記実行要求の受付に応答して、オペレーションシナリオを定義したシナリオ定義テーブルを参照して、前記実行要求に対応する前記シナリオを構成する複数のオペレーションの各々の開始予定時刻と終了予定時刻を決定し、複数の前記オペレーションを実行するオペレータ及び機器のスケジュールを格納する領域を、各々オペレータスケジュール管理テーブルおよび機器スケジュール管理テーブルに設け、決定した前記開始予定時刻と前記終了予定時刻を満足する、複数の前記オペレーションを実行するオペレータ及び機器のスケジュールを仮確保し、仮確保した前記オペレータ及び機器のスケジュールを各々前記オペレータスケジュール管理テーブル及び機器スケジュール管理テーブルに格納し、仮確保した前記スケジュールによる複数の前記オペレーションの前記終了予定時刻が、前記実行要求に含まれるデッドライン時刻を満足するとき、前記オペレータスケジュール管理テーブル及び機器スケジュール管理テーブルの、仮確保した前記オペレータ及び前記機器の前記スケジュールを確保状態に変更し、前記実行要求を受け付けたことを示すメッセージと確保状態に変更した前記スケジュールを前記管理端末に表示し、
前記管理端末から前記オペレータの拘束時間の表示要求を受け付け、前記表示要求の受付に応答して、前記オペレータスケジュール管理テーブルから前記オペレータの、前記スケジュールを含むスケジュールを取得し、取得したスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションをグループ化し、グループ化した前記オペレーションの中で、最も開始予定時刻が早いオペレーションの開始予定時刻から最も終了予定時刻が遅いオペレーションの終了予定時刻までの時間を前記オペレータの前記拘束時間として求め、求めた前記拘束時間を前記管理端末に表示し、
前記管理端末から前記オペレータのスケジュールの変更要求を受け付け、前記変更要求の受付に応答して、前記オペレータスケジュール管理テーブルから前記オペレータのスケジュールを取得し、取得したスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションをグループ化し、グループ化した前記オペレーションの中でスケジュールを調整可能なオペレーションがあるとき、調整可能な前記オペレーションのスケジュールを再スケジュールし、再スケジュールした前記オペレーションを含むグループの、最も開始予定時刻が早いオペレーションの開始予定時刻から最も終了予定時刻が遅いオペレーションの終了予定時刻までの時間を前記オペレータの新たな拘束時間として求め、前記新たな拘束時間が前記スケジュール評価部が求めた前記拘束時間より短いとき、前記新たな拘束時間及び再スケジュールしたスケジュールを含む前記オペレータのスケジュールを前記管理端末に表示することを特徴とするスケジュール決定方法。
【請求項６】
前記スケジュール決定装置は、取得した前記オペレータのスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションによるグループ化の前に、前記オペレータのスケジュールの、オペレーション間の類似度が高いオペレーションによりグループ化することを特徴とする請求項５に記載のスケジュール決定方法。
【請求項７】
前記スケジュール決定装置は、複数の前記オペレーションを実行する各オペレータとして、前記オペレーションと類似したオペレーションを実行した履歴があるオペレータを選択することを特徴とする請求項５に記載のスケジュール決定方法。
【請求項８】
前記スケジュール決定装置は、前記オペレーションと類似したオペレーションを実行した履歴があるオペレータが複数の場合、類似した前記オペレーションの平均実行時間が最も短いオペレータを選択することを特徴とする請求項７に記載のスケジュール決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドサービス運用のために、オペレータが実行する手作業のオペレーションやソフトウェアが実行するオペレーションの実行スケジュールを決定するスケジュール決定装置及び決定方法に関するものである。
【背景技術】
【０００２】
クラウドサービス運用のためには、運用管理コスト（OPEX）の低減が不可欠であり、オペレータがいかに効率よくサービス運用するかが鍵となっている。クラウドサービス運用では、サービスを受ける顧客の要望に応じて、クラウドサービスを構成するインフラのいくつかの定型的な運用作業フロー（運用定型フロー）に従ってオペレータが作業する。オペレータを統括する管理者がオペレータにクラウドサービスの運用作業フローを割当てる。オペレータは、管理者から割当てられた運用作業フローに従って作業する。オペレータが同時に複数の運用作業フローを割当てられることもある。【０００３】
このような運用作業フローは複数のオペレーション（（オペレーションは、さらに複数のタスクに細分されることもある。）から構成される一連の処理となっていて、オペレータは各オペレーションに対応する管理ソフトを順次呼び出して実行するのが通常である。最近では、ITの運用管理コスト低減や操作ミス低減を目的として、このような運用作業フローを極力自動実行する傾向にある。このような自動実行を支援する代表的な技術としてはRun Book Automation(RBA)がある。【０００４】
また、特許文献１では、業務プロセスを自動化するために業務手順をワークフローとして定義して、ワークフロー制御装置によりワークフローを構成する各手続を順序実行する内容を開示している。上記に挙げたRBA技術は、特許文献１が示す業務プロセスの自動実行技術を運用管理のオペレーションに適用したものとも見ることができる。【０００５】
さらに、特許文献２では、機器とその作業者のスケジュールを管理する技術を開示している。機器の利用占有時間や作業者の作業時間をずらして、機器の利用占有時間の重複がないようにスケジュール調整する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2009-80581公報
【特許文献２】特開2006-285784公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
運用定型フローが示す一連のオペレーションには、承認タスク、目視確認タスク、及びAPIが提供されておらずGUIを介して作業するしかないタスクが必ず存在するので、RBAでも、運用定型フローも完全自動実行は難しい。このような人の作業（承認、目視確認、GUIを介した作業）を必要とするタスク（手作業タスク）があるときに、順次作業が割り当てられると、オペレータ（承認タスクについては承認者）を人手作業で拘束するので、オペレータは他のオペレーションなどの作業ができなくなる。そこで、オペレータを拘束する時間を短縮するオペレーション実行スケジュール決定装置及び決定方法が必要となる。
【課題を解決するための手段】
【０００８】
開示するスケジュール決定装置は、管理端末と接続した管理サーバによって実現される。管理サーバは、管理端末からシナリオの実行要求を受け付け、シナリオを構成するオペレーションの開始予定時刻と終了予定時刻を決定し、これらの時刻を満足するオペレーションを実行するオペレータ及び機器のスケジュールを確保し、確保したスケジュールによるオペレーションの終了予定時刻が、実行要求に含まれるデッドライン時刻を満足するとき、確保したスケジュールを管理端末に表示する実行スケジュール管理部、並びに、管理端末からオペレータの拘束時間の表示要求を受け付け、オペレータのスケジュールを取得し、取得したスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションをグループ化し、グループ化したオペレーションの中で、最も開始予定時刻が早いオペレーションの開始予定時刻から最も終了予定時刻が遅いオペレーションの終了予定時刻までの時間をオペレータの拘束時間として求めて、管理端末に表示するスケジュール評価部を有し、実行スケジュール管理部は、管理端末からオペレータのスケジュールの変更要求を受け付け、オペレータのスケジュールを取得し、取得したスケジュールのオペレーションの開始予定時刻が所定時間内のオペレーションをグループ化し、グループ化したオペレーションの中でスケジュールを調整可能なオペレーションがあるとき、調整可能なオペレーションを再スケジュールし、再スケジュールしたオペレーションを含むグループの、最も開始予定時刻が早いオペレーションの開始予定時刻から最も終了予定時刻が遅いオペレーションの終了予定時刻までの時間をオペレータの新たな拘束時間として求め、新たな拘束時間がスケジュール評価部が求めた拘束時間より短いとき、新たな拘束時間及び再スケジュールしたスケジュールを含むオペレータのスケジュールを管理端末に表示する。
【発明の効果】
【０００９】
本発明によれば、オペレータを拘束する時間を短縮するオペレーション実行スケジュールを決定できる。
【図面の簡単な説明】
【００１０】
【図１】オペレーションの実行スケジュールを決定する管理サーバとその管理対象を示すシステム構成図である。
【図２】シナリオ定義テーブルの一例を示す図である。
【図３】シナリオインスタンステーブルの一例を示す図である。
【図４】オペレータスケジュール管理テーブルの一例を示す図である。
【図５】機器スケジュール管理テーブルの一例を示す図である。
【図６】シナリオ実行要求を受け付けたときの実行スケジュール管理部による処理を示すフロー図である。
【図７】実行スケジュール評価部がオペレータの拘束時間を算出する処理を示す図である。
【図８】実行スケジュール管理部によるオペレータの拘束時間を短縮するように再スケジューリングする処理を示す図である。
【図９】実行スケジュール管理部によるオペレーションの要求先決定とそのスケジュールを仮確保する処理を示すフロー図である。
【図１０】要求先条件を満たすオペレータを特定する第１の処理例の処理フロー図である。
【図１１】要求先条件を満たすオペレータを特定する第２の処理例の処理フロー図である。
【図１２】要求先条件を満たすオペレータを特定する第３の処理例の処理フロー図である。
【図１３】要求先条件を満たすオペレータを特定する第４の処理例の処理フロー図である。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態を説明する。本実施形態では、オペレータの手作業タスクを含む複数のオペレーションから構成されるオペレーションシナリオの実行要求に応答して、手作業を含むオペレーションの実行順序と実行タイミングを調整してオペレーションの実行順序と実行タイミングを決定する。この決定において、実行開始時刻の近い手作業タスクを含むオペレーションをグループ化し、各グループ内でオペレーションの、最も早い開始時刻から最も遅い終了時刻までの時間をオペレータの拘束時間とし、この拘束時間が短くなるように実行タイミングと実行順序に決定する。
【００１２】
図１は、オペレーションの実行スケジュールを決定する管理サーバとその管理対象を示すシステム構成図である。管理サーバは、スケジュール決定装置として機能する。本システムは、管理サーバ１０１と管理端末１０２が、管理用ＩＰネットワーク１０７を介して接続されている。管理サーバ１０１は、管理用ＩＰネットワーク１０７を介して管理対象のサーバやストレージ装置などクラウドサービスを提供するための機器に接続しているが図示を省略する。
【００１３】
管理サーバ１０１は、オペレーションの実行順序や実行タイミングを決定するスケジューリングを行う。管理サーバ１０１は、一般的な計算機で構成でき、中央演算装置１１１、主記憶装置１１２、外部記憶装置１１３を備えている。
【００１４】
主記憶装置１１２には、実行スケジュール評価部１３０と、実行スケジュール管理部１３１と、オペレータスケジュール管理部１３２と、機器スケジュール管理部１３３と、シナリオ実行部１３４とが格納され、中央演算装置１１１に読み込まれることにより各処理部の機能を実行する。
【００１５】
実行スケジュール評価部１３０は、オペレーションのスケジュールを評価する。具体的には、現在の手作業タスクを含むオペレーションのスケジュールに基づいて、オペレータの拘束時間を算出し、現在のスケジュールを評価する。
【００１６】
実行スケジュール管理部１３１は、オペレータ（役割に応じて、オペレータ、承認者、管理者などと呼ばれるが、総称してオペレータと呼ぶ。）のスケジュールや機器のスケジュールを管理する。実行スケジュール管理部１３１は、管理端末１０２からのオペレーションシナリオ（以下、シナリオ）の実行要求の受け付けや、管理端末１０２からのオペレーションの再スケジュール要求を受け付けて、オペレータの拘束時間が短くなるように再スケジュールする。拘束時間は、実行スケジュール評価部１３０が算出する。具体的な処理ステップについては後述する。
【００１７】
オペレータスケジュール管理部１３２は、オペレータのスケジュールを管理する。オペレータのスケジュールには、シナリオにかかわるオペレータの手作業タスクを含むオペレーションスケジュールの他に、シナリオに関係ない打合せスケジュールなども含まれる。オペレータスケジュール管理部１３２は、オペレータのスケジュールを管理し、オペレータのスケジュール情報を表示したり、オペレータのスケジュール変更要求を受け付けたりする。
【００１８】
機器スケジュール管理部１３３は、機器の利用スケジュールを管理する。機器の利用スケジュールには、機器管理ソフトウェアへ登録されたタスクスケジュールも含まれる。
【００１９】
シナリオ実行部１３４は、管理端末１０２から実行要求のあったシナリオを順次実行する。シナリオ実行部１３４は、シナリオを構成する各オペレーションを順次実行していく。オペレーションが機器への自動実行タスクであれば、機器へタスクの実行要求を発行する。オペレーションが人手のタスクであれば、該当するオペレータに対して実行要求を示す通知を行う。
【００２０】
外部記憶装置１１３には、シナリオ定義テーブル２００と、シナリオインスタンステーブル３００と、オペレータスケジュール管理テーブル４００と、機器スケジュール管理テーブル５００とを備えている。
【００２１】
シナリオ定義テーブル２００は、シナリオの内容を定義したテーブルである。シナリオは、一連のオペレーションを予め定義したものである。シナリオには、少なくとも一つのオペレーションを含む。
【００２２】
図２は、シナリオ定義テーブル２００の一例を示す図である。シナリオ定義テーブル２００の各レコードは、シナリオの定義情報を示す。あるシナリオを構成するオペレーションが複数あるとき、オペレーションを実行する順番にレコードを登録する。各図中の「♯」は識別子を示す。シナリオ定義テーブル２００は、シナリオテンプレート識別子２０１と、シナリオ内容２０２と、オペレーション識別子２０３と、要求先条件２０４と、要求オペレーション内容２０５とから構成されている。
【００２３】
シナリオテンプレート識別子２０１は、シナリオの識別子である。シナリオ内容２０２は、シナリオの内容である。オペレーション識別子２０３は、シナリオを構成する各オペレーションの識別子である。要求先条件２０４は、オペレーションの要求先の条件情報である。管理ソフトの実行を要求するオペレーションであれば、その管理ソフトを特定する情報である。人手によるオペレーションであれば、実行するオペレータを特定する情報である。要求オペレーション内容２０５は、オペレーションの内容である。
【００２４】
シナリオインスタンステーブル３００は、管理端末１０２からのシナリオの実行要求に対応して、そのシナリオの実行状態や実行スケジュールを記憶するテーブルである。管理端末１０２から実行要求されたシナリオを、シナリオ定義テーブル２００を参照して、シナリオインスタンステーブル３００にエントリ登録する。
【００２５】
図３は、シナリオインスタンステーブル３００の一例を示す図である。シナリオインスタンステーブル３００は、シナリオ３０１、オペレーション識別子３０５、要求先３０６、実行状態３０７、及び時刻３０８を含む構成である。シナリオ３０１には、シナリオインスタンス識別子３０２と、シナリオテンプレート識別子３０３と、シナリオ内容３０４を含んでいる。時刻３０８は、実行するオペレーション３０５の、開始予定時刻３０９と、終了予定時刻３１０と、開始実績時刻３１１と、終了実績時刻３１２と、シナリオデッドライン時刻３１３を含んでいる。
【００２６】
シナリオ３０１は、シナリオを表す内容である。シナリオインスタンス識別子３０２は、シナリオインスタンスを識別する識別子である。シナリオテンプレート識別子３０３は、シナリオインスタンスの元のシナリオ定義を識別する識別子である。シナリオ内容３０４は、シナリオインスタンスで実行するシナリオの内容である。オペレーション識別子３０５は、シナリオインスタンスを構成するオペレーションを識別する識別子である。
【００２７】
たとえば、管理端末１０２から実行要求されたシナリオの内容が「仮想サーバデプロイ」であるならば、実行要求されたシナリオにシナリオインスタンス識別子３０２として「SI1」を付し、シナリオ定義テーブル２００を参照して、「仮想サーバデプロイ」に対応するシナリオテンプレート識別子２０１「ST1」、シナリオ内容２０２「仮想サーバデプロイ」、及びオペレーション識別子２０３「OP1、OP2、・・、OP5」のそれぞれを、シナリオインスタンステーブル３００のシナリオテンプレート識別子３０３、シナリオ内容３０４、及びオペレーション識別子３０５とする。
【００２８】
要求先３０６は、オペレーション識別子３０５で特定されるオペレーションの実行を要求する要求先である。オペレーションの実行を要求する要求先は、具体的な管理ソフトウェアを特定する情報や具体的に手作業するオペレータを特定する情報である。
【００２９】
実行状態３０７は、オペレーション識別子３０５で特定されるオペレーションの実行状態である。オペレーションの実行状態には、受付完、スケジュール調整中、スケジュール仮確保済み、スケジュール本確保済み、実行中、実行完了などの実行状態がある。
【００３０】
受付完状態とは、管理サーバ１０１が管理端末１０２からシナリオの実行要求を受け付け、シナリオの各オペレーションの実行を要求する要求先３０６や開始予定時刻３０９や終了予定時刻３１０が未定の状態を示す。スケジュール調整中状態とは、シナリオの各オペレーションの実行を要求する要求先３０６や開始予定時刻３０９や終了予定時刻３１０を決定する処理を実行中の状態を示す。
【００３１】
スケジュール仮確保済み状態とは、シナリオの各オペレーションの一貫したスケジュールを確保中で、各オペレーションを実行するオペレータやオペレーションの実行に必要な機器（オペレーションの対象機器）のスケジュールを仮押さえした状態である。たとえば、シナリオ３０１のあるオペレーション３０５について要求先３０６や開始予定時刻３０９や終了予定時刻３１０が決定したが、そのシナリオ３０１を構成する他のオペレーション３０５について要求先３０６や開始予定時刻３０９や終了予定時刻３１０が未定の状態を示す。要求先３０６を示すオペレータやオペレーションの対象機器も開始予定時刻３０９から終了予定時刻３１０までの間、オペレーションを実行するためにスケジュールが確保される。
【００３２】
スケジュール本確保済み状態とは、シナリオのスケジュールを確保できた状態を示す。シナリオを構成する各オペレーションについて、要求先３０６と開始予定時刻３０９と予定終了時刻３１０が決定した状態を示す。要求先を示すオペレータやオペレーションの対象機器のも開始予定時刻３０９から終了予定時刻３１０までの間、オペレーションを実行するためにスケジュールが確保されている。スケジュール本確保済み状態では、シナリオのオペレーションの実行を開始していない。
【００３３】
実行中状態とは、ナリオに従ったオペレーションの実行を開始し、実行中の状態であることを示す。実行完了状態とは、シナリオの各オペレーションの実行が終了した状態であることを示す。
【００３４】
時刻３０８は、オペレーションの実行予定スケジュールや実行実績スケジュール情報である。開始予定時刻３０９は、オペレーションの実行を開始する予定時刻である。終了予定時刻３１０は、オペレーションの実行を終了する予定時刻である。開始実績時刻３１１は、オペレーションの実行を開始した時刻である。終了実績時刻３１２は、オペレーションの実行を終了した時刻である。シナリオデッドライン時刻３１３は、管理端末１０２からシナリオの実行要求に伴って、その終了時刻に期限が設けられた場合に、指定された期限情報である。
【００３５】
シナリオインスタンステーブル３００及びシナリオ定義テーブル２００を用いたシナリオ実行部１３４の処理を簡単に説明する。シナリオ実行部１３４は、シナリオインスタンステーブル３００のインスタンスごとに、テンプレート識別子３０３とオペレーション識別子３０５とで識別されるオペレーションを順次実行していく。テンプレート識別子３０３とオペレーション識別子３０５に対応する、シナリオ定義テーブル２００のシナリオテンプレート識別子２０１とオペレーション識別子２０３が示す要求オペレーション内容２０５で定義されたオペレーションおよびタスクの実行を制御する。シナリオ実行部１３４は、シナリオインスタンステーブル３００の要求先３０６にオペレーションの実行要求を発行する。オペレーションが管理ソフトや機器へのオペレーションである場合には、管理ソフトや機器に対してオペレーションの実行要求を発行する。一方、オペレーションが人手の作業である場合には、要求先３０６のオペレータに対して作業を依頼するメールを送信したり、作業を依頼するメッセージやイベント情報を送信することでオペレーションの実行を要求する。。オペレーションを実行開始したときに、開始実績時刻３１１としてオペレーションを開始した時刻を記憶する。オペレーションが終了するのを検出すると、終了実績時刻３１２としてオペレーションが終了した時刻を記憶する。そして、実行状態３０７を実行完了状態に変更し、そのオペレーションに後続するオペレーションを実行開始する。このようにして、シナリオインスタンスに属する一連のオペレーションをすべて実行完了したら、シナリオインスタンスの実行完了となる。
【００３６】
オペレータスケジュール管理テーブル４００は、オペレータの作業のスケジュールを記憶するテーブルである。
【００３７】
図４は、オペレータスケジュール管理テーブル４００の一例を示す図である。オペレータスケジュール管理テーブル４００は、管理者識別子４０１、オペレータ名４０２、チーム４０３、ロール４０４、権限４０５、開始時刻４０６、終了時刻４０７、予定内容４０８、関連オペレーション４０９、確保状態４１０、及び調整可否４１１を含んでいる。
【００３８】
管理者識別子４０１は、オペレータなどを識別する識別子である。オペレータ名４０２は、オペレータの名前情報であるチーム４０３は、オペレータの属するチームやグループなどの所属情報である。ロール４０４は、オペレータのロール情報である権限４０５は、オペレータが有する権限情報である
開始時刻４０６は、オペレータの予定の開始予定時刻である終了時刻４０７は、オペレータの予定の終了予定時刻である。予定内容４０８は、オペレータの予定の内容情報である
関連オペレーション４０９は、オペレータの予定が、第１管理サーバ１０１が実行要求したオペレーションのスケジューリングによって登録されているとき、そのオペレーションの識別子情報である。
【００３９】
確保状態４１０は、オペレータのスケジュールが調整中または他のスケジュールが入らないように確保された状態であって、シナリオのスケジュール調整中に一時的に確保された状態、またはシナリオのスケジュール調整が完了して予約（開始時刻４０６、終了時刻４０７、予定内容４０８及び関連オペレーション４０９）が確保された状態であることを示す状態情報である。スケジュール調整中または確保状態にない場合には、確保状態４１０はNull（空）である。スケジュール調整中に一時的に確保された状態である場合には、状態情報は仮確保状態を示す。また、スケジュール調整完了済みで予約が確保されている場合には、状態情報は本確保状態を示す。
【００４０】
調整可否４１１は、そのオペレータのスケジュールの実行時刻（開始時刻４０６及び／又は終了時刻４０７）の変更が可能か否かを示す。Trueなら調整可能を示し、Falseなら調整不可能を示す。すでに実行が完了した予約は、調整できないためFalseになる。
【００４１】
機器スケジュール管理テーブル５００は、機器や機器を管理する管理ソフトに実行要求されたオペレーションのスケジュール情報を記憶するテーブルである。
【００４２】
図５は、機器スケジュール管理テーブル５００の一例を示す図である。機器スケジュール管理テーブル５００は、オペレーション要求先識別子５０１、機器識別子５０２、タスク識別子５０３、タスク内容５０４、実行状態５０５、開始時刻５０６、終了時刻５０７、関連オペレーション５０８、確保状態５０９、及び調整可否５１０を含んでいる。
【００４３】
オペレーション要求先識別子５０１は、管理サーバ１０１の実行スケジュール管理部１３１や機器スケジュール管理部１３３がオペレーションの要求先（シナリオインスタンステーブル３００の要求先３０６）として決定した機器や管理ソフトを識別する識別子である。
【００４４】
機器識別子５０２は、オペレーションを構成するタスクを実行する機器の識別子である。オペレーション要求先識別子５０１で識別される管理ソフトや機器が、タスクの実際の実行先とした機器等があるとき、その機器の識別子である。オペレーション要求先識別子５０１に要求されるオペレーションは、少なくとも一つのタスクから構成され、そのタスクを実行する機器の識別子が機器識別子５０２である。
【００４５】
タスク識別子５０３は、オペレーションを構成するタスクの識別子である。タスク内容５０４は、オペレーションを構成するタスクの内容である。実行状態５０５は、オペレーションを構成するタスクの実行状態である。タスクの実行状態には、未実行、実行中、実行完了などの状態がある。
【００４６】
開始時刻５０６は、オペレーションを構成するタスクの実行開始時刻である。終了時刻５０７は、オペレーションを構成するタスクの実行終了時刻である。
【００４７】
関連オペレーション５０８は、タスクがシナリオ実行部１３４から実行要求されたオペレーションを構成するタスクであれば、そのオペレーションを特定するシナリオインスタンステーブル３００のオペレーション識別子３０５である。
【００４８】
確保状態５０９は、機器のスケジュールが調整中または他のスケジュールが入らないように確保された状態であって、シナリオのスケジュール調整中に一時的に確保された状態、またはシナリオのスケジュール調整が完了して予約（開始時刻５０６、終了時刻５０７、及び関連オペレーション５０８）が確保された状態であることを示す状態情報である。スケジュール調整中または確保状態にない場合には、確保状態５０９はNull（空）である。スケジュール調整中に一時的に確保された状態である場合には、状態情報は仮確保状態を示す。また、スケジュール調整完了済みで予約が確保されている場合には、状態情報は本確保状態を示す。
【００４９】
調整可否５１０は、その機器のスケジュールの実行時刻（開始時刻５０６及び／又は終了時刻５０７）の変更が可能か否かを示す。Trueなら調整可能を示し、Falseなら調整不可能を示す。すでに実行が完了したタスクについては、調整できないためFalseになる。
【００５０】
図６は、管理端末１０２からオペレーションシナリオ実行要求（以下、シナリオ実行要求）を受け付けたときの実行スケジュール管理部１３１の処理を示すフロー図である。
【００５１】
（１）シナリオ実行要求を受け付ける（ステップ６０１）。
シナリオ実行要求には、実行するシナリオの内容を特定するためのシナリオテンプレート識別子、シナリオの実行が完了しなければならない時刻を指定したデッドライン情報を含んでいる。
【００５２】
（２）シナリオ実行要求からシナリオ情報を取得する（ステップ６０２）。
ステップ６０１で受け付けたシナリオ実行要求からシナリオテンプレート識別子を取得する。このシナリオテンプレート識別子にもとづきシナリオ定義テーブル２００のシナリオテンプレート識別子２０１を検索し、シナリオテンプレート識別子が一致するレコードを特定する。この特定したレコードに、シナリオ実行要求のあったンシナリオの定義内容を記憶している。このシナリオ定義より、シナリオを構成するオペレーション（オペレーション識別子２０３および要求オペレーション内容２０５）やオペレーションの要求先の条件情報（要求先条件２０４）を取得する。
【００５３】
（３）シナリオインスタンスを生成して登録する（ステップ６０３）。
シナリオインスタンステーブル３００に、シナリオ実行要求に対応する新たなシナリオ３０１のレコードを生成する。シナリオインスタンス識別子３０２にはレコードを識別するための一意な識別子を設定する。  そのレコードにステップ６０２で特定したシナリオ定義テーブル２００のレコードの情報を設定する。テンプレート識別子３０３には、ステップ６０２で特定したレコードのシナリオテンプレート識別子２０１を設定する。シナリオ内容３０４には、ステップ６０２で特定したシナリオ内容２０２を設定する。オペレーション番号３０５には、ステップ６０２で特定したレコードのオペレーション識別子２０３を設定する。
【００５４】
実行状態３０７には、受付完状態を設定する。要求先３０６、開始予定時刻３０９、終了予定時刻３１０、開始実績時刻３１１、および終了実績時刻３１２には、何も設定しない。デッドライン時刻３１３には、ステップ６０１で受け付けたシナリオ実行要求に含まれるデッドライン情報としての時刻を設定する。
【００５５】
（４）設定したシナリオ３０１を構成するオペレーション３０５に関してステップ６０５とステップ６０６を実行する（ステップ６０４）。オペレーション３０５が複数の場合は、それらの各々に関して実行する。
【００５６】
（５）各オペレーションの開始予定時刻３０９と終了予定時刻３１０を算出する（ステップ６０５）。
ステップ６０３で生成したシナリオインスタンステーブル３００の新たなシナリオ３０１を構成するオペレーション識別子３０５で識別されるオペレーションを表すレコードを特定し、そのレコードのオペレーションの開始予定時刻３０９と終了予定時刻３１０を設定する。
【００５７】
オペレーションの開始予定時刻３０９は、シナリオ３０１の最初のオペレーションであれば、現在時刻を設定する。シナリオ３０１の２番目以降のオペレーションであれば、直前のオペレーションの終了予定時刻以降の時刻をそのオペレーションの開始予定時刻３０９とする。もし、後述するステップ６０６においてオペレーションのスケジュール仮確保が失敗して再度ステップ６０５を実行する場合には、仮確保が失敗したオペレーションの開始予定時刻や終了予定時刻とは異なる時刻を開始予定時刻や終了予定時刻とする。オペレーションの終了予定時刻３１０は、オペレーションの実行時間を、そのオペレーション開始予定時刻３０９に加算することにより算出する。
【００５８】
オペレーションの終了予定時刻３１０の算出に用いる実行時間は、過去に同一または類似のオペレーションを実行した実行履歴から推定する。同一オペレーションの実行履歴から推定する処理を示す。ステップ６０４において処理の対象となるオペレーションに対応するレコードをシナリオインスタンステーブル３００から特定し、そのオペレーション識別子３０５を特定する。シナリオインスタンステーブル３００の各オペレーション識別子３０５が、特定したオペレーション識別子と同一であり、実行状態３０７が完了状態のレコードを検索する。検索してヒットしたレコードの終了実績時刻３１２と開始実績時刻３１１との差分から、過去に実行された同一オペレーションの実行時間を算出する。過去に実行された同一オペレーションが複数の場合には、算出した各実行時間の平均値や最大値などの統計値を算出して、オペレーションの実行時間としてもよい。
【００５９】
（６）シナリオ３０１を構成するオペレーションの要求先３０６を特定し、特定した要求先３０６のスケジュールを仮確保する（ステップ６０６）。本ステップの詳細は、図９を用いて後述する。
シナリオ３０１のオペレーションを実行するオペレータまたは機器を決定し、オペレーションの開始予定時刻３０９から終了予定時刻３１０までをオペレーションを実行するための時間として、決定したオペレータまたは機器のスケジュールを確保する。シナリオ３０１を構成するオペレーションのスケジュール（実体としては、オペレーションを実行するオペレータまたは機器のスケジュール）を確保できたならば、スケジュールは未確定という意味での仮確保という形でスケジュールを確保する。シナリオ３０１を構成するすべてのオペレーションのスケジュールを仮確保できたならば、シナリオ３０１のスケジュールを確保できたとして、シナリオ３０１を構成する各オペレーションのスケジュールを本確保したことに変更する。
【００６０】
（７）ステップ６０４からステップ６０６の処理でシナリオ３０１を構成する各オペレーションを実行する要求先３０６を決定できたかを判定する（ステップ６０７）。
判定の結果、各オペレーションを実行する要求先３０６を決定できた場合は、ステップ６０８に進む。ひとつでも要求先３０６を決定できなかったオペレーションがある場合には、ステップ６１８に進む。
【００６１】
本ステップの各オペレーションを実行する要求先３０６を決定できたかの判定は、シナリオインスタンステーブル３００におけるステップ６０３で生成したシナリオインスタンスのレコードに記憶されたすべてのオペレーションについて実行状態３０７がスケジュール仮確保済み状態になったかを判定する。
【００６２】
（８）シナリオ３０１の終了予定時刻３１０が、シナリオ３０１に要求されたデッドライン３１３を満たしているか判定する（ステップ６０８）。
ステップ６０３で生成したシナリオインスタンスのレコードに記憶されたすべてのオペレーションについて終了予定時刻３１０を参照し、デッドライン３１３の時刻と比較する。比較した結果、デッドライン３１３の時刻よりも終了予定時刻３１０の最も遅い時刻の方が早ければデッドラインを満たしていると判定する。終了予定時刻３１０の最も遅い時刻の方がデッドライン３１３の時刻よりも遅ければデッドラインを満たしていないと判定する。
【００６３】
（９）ステップ６０８の判定結果がYES（デッドラインを満たしている）の場合は、ステップ６１１に進む。判定結果がNO（デッドラインを満たしていない）の場合は、ステップ６１８に進む（ステップ６０９）。
【００６４】
（１０）シナリオ実行要求を受け付けた旨のメッセージを管理端末１０２に表示して終了する（ステップ６１１）。
ステップ６０３で生成したシナリオインスタンスのレコードに記憶されたすべてのオペレーションについて、実行状態３０７をスケジュール本確保済み状態に変更する。本確保済み状態に変更後にステップ６０１の要求元である管理端末１０２に対してシナリオ実行要求を受け付けた旨のメッセージを表示する。
【００６５】
（１１）ステップ６０７やステップ６０９の判定の結果、NOの場合は、後述する（Ａ）（Ｂ）の全候補を判定済みか判定する（ステップ６１８）。
ステップ６０３で生成したシナリオインスタンスのレコードに記載されたすべてのオペレーションについて、実行状態３０７をスケジュール調整中状態に変更する。また、要求先３０６、オペレーションの開始予定時刻３０９および終了予定時刻３１０を初期化して未記入に戻す。
【００６６】
（１２）ステップ６１８の判定の結果がYESの場合はステップ６２０に進む。この場合、シナリオ３０１を構成するオペレーション３０５の要求先３０６がないか、あっても要求先３０６のスケジュールが確保できず、シナリオ３０１の実行要求を受け付けられないことを示す。
【００６７】
ステップ６１８の判定の結果がNOの場合はステップ６１２に進む（ステップ６１９）。この場合、シナリオ３０１を構成するオペレーション３０５の要求先３０６が他にあるか、オペレーション３０５を実行する候補の機器やオペレータのスケジュールを調整すれば、オペレーション３０５を実行できるようになる可能性がある。
【００６８】
（１３）シナリオ実行要求を受け付けられない旨のエラーメッセージを管理端末１０２に表示して終了する（ステップ６２０）。
【００６９】
（１４）ステップ６１９の判定の結果、NOの場合、オペレーション３０５を実行可能な他の要求先候補（A）があるか判定する（ステップ６１２）。
ステップ６０２で取得した、オペレーション３０５の要求先の条件情報にもとづき、オペレーション３０５は実行をオペレータに要求するものか、実行を機器に要求するものかを判定する。
【００７０】
オペレーション３０５がオペレータに要求するものである場合、ステップ６０２で取得した要求先の条件を満足する、チーム４０３、ロール４０４、および権限４０５のオペレータ名４０２を、オペレータスケジュール管理テーブル４００から検索する。すでにステップ６０４からステップ６０６の処理を実行していないレコードがあるかを判定することにより実行可能な他の要求先候補（A）があるかを判定する。
【００７１】
オペレーション３０５が機器に実行要求するものである場合、ステップ６０２で取得した要求先の条件を満足する、オペレーション要求先識別子５０１を、機器スケジュール管理テーブルを検索して特定する。
【００７２】
（１５）ステップ６１２の判定の結果がYESの場合、ステップ６１４に進む。NOの場合、ステップ６１５に進む（ステップ６１３）。
【００７３】
（１６）オペレーションの他の要求先を特定し、ステップ６０５に進む（ステップ６１４）。
ステップ６１２で特定した要求先候補のうちから一つ選択して、ステップ６０４に進み、以降の処理で特定する要求先の候補とする。
【００７４】
（１７）ステップ６１３の判定の結果、NOの場合、機器やオペレータのスケジュール調整候補（B）はあるか判定する（ステップ６１５）。
機器のスケジュール調整可否は、調整対象のスケジュールが機器のスケジュールであれば、機器スケジュール管理テーブル５００の調整可否５１０がTrueであるかにより判定する。調整可否５１０がTrueであれば、時刻調整が可能なスケジュールである。
調整対象のスケジュールがオペレータのスケジュールであれば、オペレータスケジュール管理テーブル４００の調整可否４１１がTrueであるかにより判定する。調整可否４１１がTrueであれば、スケジュール調整可能なオペレーションである。
【００７５】
（１８）ステップ６１５の判定の結果がYESの場合、ステップ６１７に進み、NOの場合、ステップ６１８に進む（ステップ６１６）。
【００７６】
（１９）機器やオペレータの他のスケジュールを調整してステップ６０４に進む（ステップ６１７）。
ステップ６１７のスケジュールの再調整は、ステップ６１５で調整可能と判定した再調整対象のオペレーションが属するシナリオ３０１をシナリオインスタンステーブル３００から特定し、そのシナリオ３０１を構成する全オペレーションのスケジュールを再調整する。再調整対象のオペレーションに対して、ステップ６０４からステップ６０６までと同様の処理を実行し、再調整前の開始予定時刻３０９から再調整前の終了予定時刻３１０の時間帯を除外した時間帯のスケジュールの確保を試みる。
ステップ６１７でスケジュールの再調整ができなければ、ステップ６０６以降のステップ６０７で全要求先を決定できず、ステップ６１９の判定結果としてシナリオ実行要求を受け付けられないことになる。
【００７７】
図７は、オペレータの拘束時間表示要求に対応して、実行スケジュール評価部１３０がオペレータの拘束時間を算出し、表示する処理を示すフロー図である。実行スケジュール評価部１３０は、拘束時間表示要求を受け付けた時点におけるスケジュールに基づいて、オペレータの拘束時間を算出する。
【００７８】
（１）管理端末１０２からオペレータの拘束時間の表示要求を受け付ける（ステップ７０１）。
表示要求には、拘束時間を表示する対象のオペレータを特定するオペレータ識別情報を含む。
【００７９】
（２）表示要求の対象のオペレータのスケジュール情報を取得する（ステップ７０２）。
オペレータスケジュール管理テーブル４００の管理者識別子４０１を検索し、表示要求に含まれるオペレータ識別情報と一致した管理者識別子４０１のレコードのスケジュール情報（開始時刻４０６、終了時刻４０７、予定内容４０８）を取得する。オペレータ識別情報と一致する管理者識別子４０１が複数ある場合、それぞれに対応するレコードごとにスケジュール情報を取得する。個々のレコードがオペレーションに対応している。
【００８０】
（３）スケジューリングされた複数オペレーションをグループ化する（ステップ７０３）。
時間的に近接するオペレーションをグループ化して、グループ化したオペレーションに関して拘束時間を算出する。オペレーションのグループ化は、たとえば、実行スケジュール評価部１３０が時間の閾値を持ち、開始時刻４０６が、現在時刻から閾値の時間以内であれば一つのグループとし、閾値の時間を超えていれば異なるグループとする。
また、他のグループ化の方法として次のようにしても良い。あるオペレーションの終了時刻４０７から、近接する他のオペレーションの開始時刻４０６までの時間が閾値の時間以下であれば、あるオペレーションと他のオペレーションを同一グループとし、閾値の時間よりも長ければ異なるグループとする。
【００８１】
（４）グループ内で最も開始時刻の早いオペレーションの開始予想時刻と最も終了時刻の遅いオペレーションの終了予想時刻の差分からオペレータ拘束時間を算出する（ステップ７０４）。
グループ化したオペレーションに相当するオペレータスケジュール管理テーブル４００のレコードをすべて検索し、グループ内のオペレーションの最も早い開始時刻４０６から最も遅い終了時刻４０７までの時間をオペレータ拘束時間とする。
このように、対象のオペレータの近接したオペレーションをグループ化して、グループ内のオペレーションの最も早い開始時刻４０６から最も遅い終了時刻４０７までの時間を拘束時間とする。このようにすることで、近接していない（閾値の時間を超えている）オペレーション間の時間、すなわちオペレータの自由時間をオペレーション実行のための拘束時間として加算することを防止できる。
【００８２】
グループごとに算出されたこれらの拘束時間を、オペレータの拘束時間の表示要求に対応するものとする。また、これらの拘束時間の最大値、平均値、最小値、または所定の評価式に従って算出した評価値（たとえば５段階評価）を拘束時間の指標として算出してもよい。これらの指標の選択は、オペレータの拘束時間の表示要求の仕方（パラメータなど）に基づけばよい。
【００８３】
（５）オペレータの拘束時間を管理端末１０２に出力する（ステップ７０５）。
【００８４】
図８は、オペレータの拘束時間を短縮するために、実行スケジュール管理部１３１がオペレータのオペレーションを再スケジュール（スケジュール変更）する処理を示すフロー図である。
【００８５】
（１）オペレータの拘束時間の短縮を要求するスケジュール変更要求を管理端末１０２から受付ける（ステップ８０１）。
スケジュール変更要求メッセージは、拘束時間短縮する対象のオペレータを特定する識別情報であるオペレータ識別情報を含む。
【００８６】
（２）スケジュール情報を取得する（ステップ８０２）。
オペレータスケジュール管理テーブル４００の管理者識別子４０１を検索し、スケジュール変更要求に含まれるオペレータ識別子情報一致したが管理者識別子４０１のレコードのスケジュール情報（開始時刻４０６、終了時刻４０７、予定内容４０８）を取得する。オペレータ識別情報と一致する管理者識別子４０１が複数ある場合、それぞれに対応するレコードごとにスケジュール情報を取得する。
【００８７】
（３）スケジューリングされた複数オペレーションをグループ化する（ステップ８０３）。
ステップ７０３と同様にオペレーションをグループ化する。
【００８８】
つづく、ステップ８０４からステップ８０８では、スケジュール変更要求で指定されたオペレータの最も短い拘束時間を算出する。調整可能なスケジュール候補それぞれでオペレータの拘束時間を算出し、算出した拘束時間がいままで算出した拘束時間よりも短ければ新たに算出した拘束時間を一時的に内部で記憶することで、最も短い拘束時間を算出する。
【００８９】
（４）グループ内で最も開始時刻の早いオペレーションの開始予想時刻と最も終了時刻の遅いオペレーションの終了予想時刻の差分からオペレータ拘束時間（A）を算出する（ステップ８０４）。
ステップ７０４と同様に拘束時間を算出する。具体的には、グループ内のオペレーションで最も早い開始時刻４０６最も遅い終了時刻４０７の差分をオペレータ拘束時間（A）とする。
【００９０】
（５）記憶しているオペレータ拘束時間（B）よりも、算出したオペレータ拘束時間（A）が短いかを判定する（ステップ８０５）。
ステップ８０５では、後述するステップ８０７で実行スケジュール管理部１３１が一時的に内部で記憶しているオペレータ拘束時間（B）よりも、新たに算出したオペレータ拘束時間（A）が短いかを判定する。はじめてステップ８０５を実行する場合、オペレータ拘束時間（B）は記憶されていないため、ここでの判定はYESと判定する。
【００９１】
（６）ステップ８０５の判定の結果、YESの場合ステップ８０７に進む。NOの場合、ステップ８０８に進む（ステップ８０６）。
ステップ８０５の判定がYESの場合は、より短い拘束時間（新たに算出したオペレータ拘束時間（A）のスケジュール候補があったことを示している。NOの場合は、一時記憶しているオペレータ拘束時間（B）の方が、新たに算出したオペレータ拘束時間（A）より短いことを示している。
【００９２】
（７）スケジューリング情報（C）とそのときの算出したオペレータ拘束時間（A）を記憶する（ステップ８０７）。
新たに算出したオペレータ拘束時間（A）がより短い拘束時間であるため、新たに算出したオペレータ拘束時間（A）をオペレータ拘束時間（B）として、そのスケジュール調整候補（開始時刻４０６、終了時刻４０７、予定内容４０８）をスケジューリング情報（C）として実行スケジュール管理部１３１が内部に一時的に記憶する。
【００９３】
（８）グループ内でオペレータのスケジュールを調整可能な他のスケジュール調整候補があるか判定する（ステップ８０８）。
オペレータスケジュール管理テーブル４００を参照して、スケジュールの調整候補があるかを判定する。
【００９４】
（９）ステップ８０８の判定の結果、YESならば、ステップ８１１に進み、NOならば、ステップ８１０に進む（ステップ８１０）。
YESの場合は、ステップ８０８で判定した他のスケジュール調整候補の拘束時間を評価するために、ステップ８１１に進む。NOの場合は、全てのスケジュール調整候補の拘束時間を評価したとして、ステップ８１０に進む。
【００９５】
（１０）グループ内でオペレータのスケジュールを再スケジュールしてステップ８０４に進む（ステップ８１１）。
ステップ８１１では、グループに属する調整可能なスケジュールをそのグループ内でスケジュール変更した変更スケジュール候補を求め、その変更スケジュール候補で後続するステップ８０４以降のステップを実行する。
【００９６】
（１１）ステップ８０９の判定でNOならば、記憶している拘束時間（B）とそのときのスケジュール情報（C)を出力する（ステップ８１０）。
【００９７】
実行スケジュール管理部１３１が内部で記憶している拘束時間（B）とスケジューリング情報（C）を管理端末１０２に出力し、管理端末１０２からのスケジュール変更の確定要求を待つ。
【００９８】
（１２）スケジュール変更の確定要求を受け付けたか判定する（ステップ８１２）。
【００９９】
（１３）ステップ８１２の判定の結果、YESならステップ８１４に進む。NOならステップ８１５に進む（ステップ８１３）。
ステップ８１２のスケジュール確定要求を待つ処理の中で、スケジュール確定要求を受付けたらステップ８１４に進む。スケジュール変更をキャンセルするメッセージを受付けたらステップ８１３に進む。何もメッセージがない場合は確定要求メッセージを待つ。
【０１００】
（１４）スケジュール情報（C)にもとづき、オペレータのスケジュールを変更する（ステップ８１４）。
実行スケジュール管理部１３１が内部で記憶しているスケジューリング情報（C)で変更オペレータスケジュール管理テーブル４００の内容を更新する。
【０１０１】
（１５）オペレータのスケジュールを変更した旨のメッセージを管理端末１０２に出力する（ステップ８１５）
図９は、実行スケジュール管理部１３１によるオペレーションを実行する要求先（オペレータや機器）の決定と、要求先（オペレータや機器）のスケジュールを仮確保する処理を示すフロー図である。図６のステップ６０６をサブルーチンとして処理する場合を例に説明する。
【０１０２】
（１）オペレーションの要求先決定要求を受け付ける（ステップ９０１）。
オペレーションの要求先決定要求には、要求先３０６を決定する対象のオペレーションを識別するオペレーション識別情報３０５と、スケジュール確保する要求先を３０６特定するための条件情報（要求先条件２０４）と、確保しようとするスケジュールの開始予定時刻３０９と、確保しようとするスケジュールの終了予定時刻３１０を含む。
【０１０３】
要求先条件２０４には、要求先決定対象のオペレータが実行するオペレーションか、機器が自動実行するオペレーションかを示す要求先の種別情報を含む。
さらに、要求先条件２０４には、オペレータが実行するオペレーションの場合、オペレータが属するチームを特定する条件情報、オペレータのロールまたは権限を特定する条件情報などを含む。オペレーションを複数のオペレータにより実行する場合には、オペレータごとにオペレータに求められるチームを特定する条件情報、ロール、権限を特定する条件情報を含む。以降、このようなオペレータごとの条件情報を構成員条件と呼ぶ。要求先条件には、ひとつ以上の構成員条件から構成されているものとする。
また、要求対象が機器である場合には、機器を操作するタスクの要求先となるオペレーション要求先を特定する条件情報などを含む。
【０１０４】
（２）オペレーションの識別子、要求先条件、開始予定時刻、終了予定時刻を特定する（ステップ９０２）。
オペレーションの要求先決定要求に含むオペレーション識別子３０５、要求先条件２０４と開始予定時刻３０９と終了予定時刻３１０を取得する。
【０１０５】
（３）オペレーションの要求先の種別を判定する（ステップ９０３）。
要求先条件２０４を満足するオペレーションの要求先３０６が機器であればステップ９１５に進む。要求先３０６がオペレータであればステップ９０４に進む。
【０１０６】
（４）オペレーションの要求先３０６として指定されているオペレータが複数人の場合は、ステップ９０５に進む。指定されているオペレータが一人である場合はステップ９１７に進む。（ステップ９０４）。
【０１０７】
（５）オペレーションの要求先３０６として指定されたオペレータ集合を構成する各オペレータに対して、ステップ９０６からステップ９０９までを実行する（ステップ９０５）。
【０１０８】
ステップ９０２で取得した要求先条件２０４に含まれるオペレータの構成員条件をひとつずつ取得して、ステップ９０６からステップ９０９までのステップを実行する。
【０１０９】
（６）要求先条件２０４をみたすオペレータを特定する（ステップ９０６）。本ステップの処理の詳細を、図１０、図１１、図１２、図１３を用いて後述する。
【０１１０】
特定した構成員条件にもとづいて、要求先条件２０４を満たすオペレータを特定する。
【０１１１】
（７）オペレーションの予定開始時間から予定終了時間まで、特定した人のスケジュールを仮確保する（ステップ９０７）。
ステップ９０６で特定したオペレータ名４０２をもとにオペレータスケジュール管理テーブル４００を検索し、確保状態４１０を「仮確保状態」とした新たなレコードを追加する。新たに追加したレコードの開始時刻４０６をステップ９０２で取得した開始予定時刻３０９とし、終了時刻４０７をステップ９０２で取得した終了予定時刻３１０とする。
【０１１２】
（８）構成員条件に対してステップ９０６からステップ９０８までの処理を実行済みであれば、ステップ９１０に進む。実行済みでなければ、ステップ９０９に進む（ステップ９０８）。
ステップ９０５で取得したすべての構成員条件に対してオペレータを特定するステップ９０６からステップ９０９の処理を実行したらステップ９１０に進む。そうでなければステップ９０９に進む。
【０１１３】
（９）次の構成員条件を特定して、ステップ９０６以下の処理を実行する（ステップ９０９）。
ステップ９０５で取得した構成員条件でステップ９０６からステップ９０９の処理を実行していない構成員条件を特定する。
【０１１４】
（１０）オペレーションの要求先条件２０４で指定された全構成員（オペレータ）のスケジュールを仮確保できたか判定し、全構成員のスケジュールを仮確保できた場合はステップ９１２に進む。仮確保できない構成員（オペレータ）があった場合にはステップ９１１に進む（ステップ９１０）。
すべての構成員条件に対して、ステップ９０６とステップ９０７の処理を実行して仮確保状態のレコードの追加に成功した場合には、ステップ９１２に進む。そうでない場合には、ステップ９１１に進む。
【０１１５】
（１１）確保できなかった構成員（オペレータ）がいる場合には、確保に失敗したものとして、仮確保したスケジュールを開放し、ステップ９２２に進む（ステップ９１１）。
オペレータスケジュール管理テーブル４００から、ステップ９０７で追加したレコードを削除することにより、仮確保したスケジュールを開放する。
【０１１６】
（１２）全構成員のスケジュールを仮確保できた場合には、チームやグループなど複数人のオペレータが同時にオペレーションを実行するスケジュールを確保できたとして、その複数人のオペレータをオペレーションの要求先として決定し（ステップ９１２）、仮確保したスケジュールを確保扱いにする（ステップ９１３）。
ステップ９０２で取得したオペレーション識別子３０５をもとに、シナリオインスタンステーブル３００に記憶したオペレーションに相当するレコードを特定する。そのレコードの要求先３０６に仮確保したオペレータの識別情報を記憶する。また、レコードの開始予定時刻３０９にステップ９０２で取得した開始予定時刻を、レコードの終了予定時刻３１０にステップ９０２で取得した終了予定時刻を記憶する。
【０１１７】
（１３）最後に決定したオペレータ、確保したスケジュール、確保成功した旨を本サブルーチンの呼び出し元に応答して終了する（ステップ９１４）。
【０１１８】
（１４）ステップ９０３にて、オペレーションの要求先が機器であると判定した場合には、要求先条件２０４を満たす機器を特定する（ステップ９１５）。
機器スケジュール管理テーブル５００を検索し、ステップ９０２で取得した要求先条件２０４に合致する機器を特定する。
【０１１９】
（１５）オペレーションの開始予定時刻から終了予定時刻まで、特定した機器のスケジュールを仮確保し、ステップ９１３に進む（ステップ９１６）。
ステップ９１５で特定した機器を機器スケジュール管理テーブル５００に新たなレコードを追加し、開始時刻５０６と終了時刻５０７をそれぞれステップ９０２で取得した開始予定時刻３０９と終了予定時刻３１０とする。また、確保状態５０９を仮確保状態とする。
【０１２０】
（１６）ステップ９０４でオペレータが一人であると判定した場合には、要求先条件２０４を満たすオペレータを特定する（ステップ９１７）。本ステップの処理の詳細を、ステップ９０６と同様に、図１０、図１１、図１２、図１３を用いて後述する。
【０１２１】
（１７）オペレーションの予定開始時間から予定終了時間まで、特定した人のスケジュールを仮確保する（ステップ９１８）。
ステップ９１７で特定したオペレータ名４０２をもとにオペレータスケジュール管理テーブル４００を検索し、確保状態４１０を「仮確保状態」とした新たなレコードを追加する。新たに追加したレコードの開始時刻４０６をステップ９０２で取得した開始予定時刻とし、終了時刻４０７をステップ９０２で取得した終了予定時刻とする。
【０１２２】
（１８）ステップ９１８でスケジュールを仮確保できたか判定する（ステップ９１９）。確保できた場合にはステップ９２０に進み、確保できなかった場合にはステップ９２２に進む。
ステップ９０２で取得した要求先条件２０４に対してオペレータを特定するステップ９１７からステップ９１８の処理を実行したらステップ９２０に進む。そうでなければステップ９２２に進む。
【０１２３】
（１９）ステップ９１９で確保できたと判定した場合、確保したオペレータをオペレーションの要求先として決定する（ステップ９２０）。
ステップ９０２で取得したオペレーション識別子３０５をもとに、シナリオインスタンステーブル３００のレコードを特定する。そのレコードの要求先３０６を仮確保したオペレータを識別情報とする。また、レコードの開始予定時刻３０９にステップ９０２で取得した開始予定時刻３０９とし、レコードの終了予定時刻３１０をステップ９０２で取得した終了予定時刻３１０とする。
【０１２４】
（２０）ステップ９２０で決定したオペレータと、確保したスケジュール、確保成功した旨を本サブルーチン処理フローの呼び出し元に応答して終了する（ステップ９２１）。
【０１２５】
（２１）ステップ９１１およびステップ９１９で、スケジュールを確保できなかったと判定した場合、オペレーションのスケジュール確保に失敗した旨をサブルーチン呼び出し元に応答して終了する（ステップ９２２）。
【０１２６】
（２２）ステップ９１６を処理後、スケジュールを仮確保できたか判定する（ステップ９２３）。確保できたと判定した場合にはステップ９２４に進む。確保できなかったと判定した場合にはステップ９２６に進む（ステップ９２３）。
【０１２７】
（２３）ステップ９２３で確保できたと判定した場合、確保した機器をオペレーション要求先として決定する（ステップ９２４）。
ステップ９１５で特定した機器をもとに機器スケジュール管理テーブル５００を検索し、確保状態５０９を「仮確保状態」とした新たなレコードを追加する。新たに追加したレコードの開始時刻５０６をステップ９０２で取得した開始予定時刻３０９とし、終了時刻５０７をステップ９０２で取得した終了予定時刻とする。
【０１２８】
（２４）決定した機器、確保したスケジュール、確保に成功した旨を本サブルーチンの呼出し元に応答して終了する（ステップ９２５）。
【０１２９】
２５）ステップ９２３で確保できなかったと判定した場合には、確保失敗した旨を本サブルーチン呼び出し元に応答して終了する（ステップ９２６）。
【０１３０】
図１０は、ステップ９０６の要求先条件を満たすオペレータを特定する第１の処理例の処理フロー図である。この処理によって、あらかじめ指定したオペレーションの特徴という指標に基づいてオペレーション間の類似性の高いオペレーションを同じオペレータに作業を割当てることができる。これにより、オペレータは同じような作業を連続して実施できるのでオペレータの負担を軽減できる。
【０１３１】
（１）要求のあったオペレーションの特徴を抽出する（ステップ１００１）。
オペレーションの特徴を、シナリオ定義テーブル２００に定義された要求オペレーション内容２０５やオペレーションに求められるスキルや習熟度をもとにして抽出する。図示していないが、外部記憶装置１１３にあらかじめ記憶された、オペレーションの内容とそのオペレーションのカテゴリ、オペレーションに求められるスキル、習熟度、利用するソフトウェア(または利用Webサイト)の対応テーブル（オペレーション特徴テーブル）を参照し、要求のあったオペレーションに関するカテゴリ情報、スキル情報、習熟度情報、利用ソフトウェア(または利用Webサイト)といったオペレーションの特徴情報を取得する。
【０１３２】
（２）抽出したオペレーションの特徴を指標にして、要求のあったオペレーションと所定時間（所定時間過去から現在まで）内の実行履歴を持つ各オペレーションとの類似度を算出する（ステップ１００２）。
オペレータスケジュール管理テーブル４００の終了時刻４０７が所定時間以内の過去の時刻が格納れたレコードの関連オペレーション４０９を参照し、該当するオペレーションの定義内容をシナリオ定義テーブル２００のシナリオテンプレート識別子２０１とオペレーション識別子２０３とから特定する。該当するオペレーションの定義内容をシナリオ定義テーブル２００の要求オペレーション内容２０５の値をキーにして、ステップ１００１で説明したオペレーション特徴テーブルを参照して、オペレーションの属するカテゴリ情報、スキル情報、習熟度情報といったオペレーションの特徴情報を取得する。これら取得した過去の特徴情報と、ステップ１００１で取得した特徴情報との類似度を算出する。類似度の算出は、たとえば、外部記憶装置１１３にあらかじめ記憶されているカテゴリ間の距離を示すスコアを算出し、距離が違いものほど高い類似度として算定する。また、スキル情報については、スキルの有無からスコアを算定し、スコアが近いものほど高い類似度として算定する。習熟度については、習熟度を表す指標が近いものほど高い類似度として算定する。また、利用ソフトウェア(利用Webサイト)が同じか否か、またはその利用機能や利用サイト、利用ページが同じか否かの判定からスコアを計算し類似度を総合的に算定する。このように算定したカテゴリの類似度、スキルの類似度、習熟度、利用ソフトウェア(または利用サイト)の類似度から総合的な類似度をあらかじめ決められた算出式により算出する。
【０１３３】
（３）各オペレーションのオペレータを参照し、オペレータごとに類似度を集計する（ステップ１００３）。
オペレータスケジュール管理テーブル４００の管理者識別子欄４０１が一致するオペレーションごとに、ステップ１００２で算出した類似度をグループ化して合計することにより集計する。
【０１３４】
（４）集計した類似度の値が最も大きいオペレータをオペレーション要求先として決定する（ステップ１００４）。
【０１３５】
つづいて、要求先条件を満たすオペレータを特定する第２の処理例について説明する。第２の処理例では、オペレータの手作業タスクを含む複数タスクから構成されるオペレーションの実行要求が投入されると、各手作業タスクを含む全タスクの実行順序と実行タイミングを調整して、手作業タスクを実施するオペレータの割当てと各タスクの実行順序と実行タイミングを決定する。この決定において、作業の連続性・作業内容を勘案して手作業タスクを実施するオペレータを決定し、実行開始時刻の近い手作業タスクをグループ化し、各グループ内でもっとも開始時刻の早いタスクの実行開始時刻と実行終了時刻の最も遅いタスクの実行終了時刻との時間差からオペレータの拘束時間を算出し、この拘束時間が短くなるように実行タイミングと実行順序を決定する処理例を示す。ここで、作業の連続性・作業内容を勘案するとは、あるオペレーションの実行先オペレータを（作業可能な）複数オペレータの中から決定する場合に、同一シナリオインスタンスに属する他のオペレーションと同じオペレータに積極的に割り当てるように決定することで、シナリオインスタンス内での連続性を満たすようにするということである。
【０１３６】
図１１は、ステップ９０６の要求先条件を満たすオペレータを特定する第２の処理例の処理フロー図である。この処理によって、同一シナリオインスタンスで定義されたオペレーションを積極的に同じオペレータに割り当てることができる。
【０１３７】
（１）要求のあったオペレーションの属するシナリオインスタンスを特定する（ステップ１１０１）。
【０１３８】
オペレーションの特徴の抽出は、図１０のステップ１００１と同様である。
【０１３９】
（２）シナリオインスタンスを構成する他のオペレーションについて、実行するオペレータが決まっていればそのオペレータを集計し、オペレータ集合として特定する（ステップ１１０２）。
シナリオインスタンステーブル３００のシナリオインスタンス識別子３０２を検索し、ステップ１１０１で取得したシナリオインスタンス識別子と一致するレコードの集合を特定し、それらのレコードの要求先３０６のオペレータを特定してオペレータ集合とする。
（３）オペレータ集合のうち、もっとも多いオペレータ（要求先３０６のオペレータとして最も多く現れるオペレータ）を要求のあったオペレーションの要求先として決定して、本サブルーチンの処理を終了する（ステップ１１０３）
ステップ１１０２で取得したオペレータ集合に属するオペレータごとにオペレーション数を集計する。オペレーション数の最も多かったオペレータをオペレーションの要求先として決定する。なお、このとき、オペレータスケジュール管理テーブル４００のチーム４０３、ロール４０４、権限４０５を参照して、要求先条件２０４に合致するオペレータ（管理者識別子４０１）に絞り込んだうえで、オペレーション数の最も多かったオペレータをオペレーションの要求先として決定してもよい。
【０１４０】
つづいて、要求先条件を満たすオペレータを特定する第３の処理例について説明する。第３の処理例では、オペレータの手作業タスクを含む複数タスクから構成されるオペレーションの実行要求が投入されると、各手作業タスクを含む全タスクの実行順序と実行タイミングを調整して、手作業タスクを実施するオペレータの割当てと各タスクの実行順序と実行タイミングを決定する。この決定において、手作業タスク実施に求められるスキルとタスクを実施するオペレータのスキルとを勘案して手作業タスクを実施するオペレータを決定し、実行開始時刻の近い手作業タスクをグループ化し、各グループ内でもっとも開始時刻の早いタスクの実行開始時刻と実行終了時刻の最も遅いタスクの実行終了時刻との時間差からオペレータの拘束時間を算出し、この拘束時間が短くなるように実行タイミングと実行順序を決定する処理例を示す。
【０１４１】
図１２は、ステップ９０６の要求先条件を満たすオペレータを特定する第３の処理例の処理フロー図である。この処理によって、オペレータがオペレーションを作業するスキルを勘案して、オペレーションをオペレータに割り当てることができる。これにより、オペレータのオペレーション習熟度、オペレーションの処理スピードに基づいてオペレータに作業を割当てることができる。
【０１４２】
（１）要求のあったオペレーションの特徴を抽出する（ステップ１２０１）。
オペレーションの特徴の抽出は、図１０のステップ１００１と同様である。
【０１４３】
（２）抽出したオペレーションの特徴をもとづき、オペレーションの実行履歴にある類似の特徴を有するオペレーション集合を取得する（ステップ１２０２）。
オペレータスケジュール管理テーブル４００の終了時刻欄４０７にあらじめ設定されたある一定時間以内の過去の時刻が格納れたレコードの関連オペレーション４０９を参照し、該当するオペレーションの定義内容をシナリオ定義テーブル２００のシナリオテンプレート識別子欄２０１とオペレーション識別子欄２０３とから特定する。該当するオペレーションの定義内容をシナリオ定義テーブル２００の要求オペレーション内容欄２０５の値をキーにして、ステップ１００１で説明したオペレーション特徴テーブルを参照して、オペレーションの属するカテゴリや利用ソフトウェア（または利用サイト）を取得する。これら取得した過去の特徴情報と、ステップ１００１で取得した特徴情報との類似度を算出する。類似度の算出は、たとえば、外部記憶装置１１３にあらかじめ記憶されているカテゴリ間の距離を示すスコアを算出し、距離が違いものほど高い類似度として算定する。このように算定したスキルの類似度、習熟度の類似度から総合的な類似度をあらかじめ決められた算出式により算出する。そして、あらかじめ外部記憶装置１１３に記憶された類似度の閾値を超過した類似度を有するオペレーションを特定し、オペレーション集合して取得する。
【０１４４】
（３）取得した類似のオペレーション集合に属する各オペレーションの時間を取得し、そのオペレータごとに平均実行時間を集計する（ステップ１２０３）。
シナリオインスタンステーブル３００の開始実績時刻３１１から終了実績時刻３１までの時間をオペレーションの実行時間とする。
【０１４５】
（４）平均実行時間の最も短いオペレータをオペレーションの要求先として決定する（ステップ１２０４）。
【０１４６】
オペレーションの実行時間の実績のうち、平均実行時間が短いオペレータほど習熟したオペレータであるとして、平均実行時間の短いオペレータを要求先として決定する。
【０１４７】
図１３は、ステップ９０６の要求先条件を満たすオペレータを特定する第４の処理例の処理フロー図である。この処理によって、オペレータが最近実行したオペレーションと同じオペレーションを割当てることができるようになる。これによって、オペレータは類似作業を連続して実施できるようになり、結果として単純作業の繰り返しになり、作業時間を短縮できたり、作業の切り替え負担を減らせたりできる。また、たとえば、同じ管理ソフトや同じ管理ソフトのタスクというレベルでの特徴をベースに類似度を判定することによって、オペレータは同じ管理ソフトに集中して作業することができるようになるし、新たにマニュアルや文書を調べたりすることなく過去のノウハウや経験を活かして作業できるようになる。
【０１４８】
（１）要求のあったオペレーションの特徴を特定する（ステップ１３０１）。
オペレーションの特徴の抽出は、図１０のステップ１００１と同様である。
（２）各オペレータのスケジュールを取得し、要求のあったオペレーションの開始予定時刻から遡り、直近で実行する所定数のオペレーション集合をオペレータごとに特定する（ステップ１３０２）。
ステップ１３０１で要求のあったオペレーションの開始予定時刻３０９を取得する。
オペレータスケジュール管理テーブル４００の開始時刻４０６を検索し、ステップ１３０１で要求のあったオペレーションの開始予定時刻３０９よりも所定時間以前からの時刻のレコードの関連オペレーション４０９のオペレーション識別子を、管理者識別子４０１（オペレータ）ごとに集計する。
【０１４９】
（３）特定した特徴を指標として、特定したオペレーション集合の各オペレーションと要求のあったオペレーションとの類似度を集計して、オペレータごとに算出する（ステップ１３０３）。
該当するオペレーションの定義内容をシナリオ定義テーブル２００のシナリオテンプレート識別子２０１とオペレーション識別子２０３とから特定する。該当するオペレーションの定義内容をシナリオ定義テーブル２００の要求オペレーション内容２０５の値をキーにして、オペレーション特徴テーブルを参照して、オペレーションの属するカテゴリ情報、スキル情報、習熟度情報といったオペレーションの特徴情報を取得する。これら取得した過去の特徴情報と、ステップ１００１で取得した特徴情報との類似度を算出する。類似度の算出は、たとえば、外部記憶装置１１３にあらかじめ記憶されているカテゴリ間の距離を示すスコアを算出し、距離が違いものほど高い類似度として算定する。また、スキル情報については、スキルの有無からスコアを算定し、スコアが近いものほど高い類似度として算定する。習熟度については、習熟度を表す指標が近いものほど高い類似度として算定する。また、利用ソフトウェア(利用Webサイト)が同じか否か、またはその利用機能や利用サイト、利用ページが同じか否かの判定からスコアを計算し類似度を総合的に算定する。このように算定したカテゴリの類似度、スキルの類似度、習熟度、利用ソフトウェア(または利用サイト)の類似度から総合的な類似度をあらかじめ決められた算出式により算出する。
【０１５０】
（４）集計した類似度の最も高いオペレータをオペレーションの要求先として決定する（ステップ１３０４）。
【０１５１】
本実施形態によれば、オペレータを拘束する時間を短縮するオペレーション実行スケジュールを決定できる。
【符号の説明】
【０１５２】
１０１：管理サーバ、１０２：管理端末、１１１：中央演算装置、１１２：主記憶装置、１１３：外部記憶装置、１３０：実行スケジュール評価部、１３１：実行スケジュール管理部、１３２：オペレータスケジュール管理部、１３３：機器スケジュール管理部、１３４：シナリオ実行部、２００：シナリオ定義テーブル、３００：シナリオインスタンステーブル、４００：オペレータスケジュール管理テーブル、５００：機器スケジュール管理テーブル。
【図１】
0006039791.tif 000002
【図２】
0006039791.tif 000003
【図３】
0006039791.tif 000004
【図４】
0006039791.tif 000005
【図５】
0006039791.tif 000006
【図６】
0006039791.tif 000007
【図７】
0006039791.tif 000008
【図８】
0006039791.tif 000009
【図９】
0006039791.tif 000010
【図１０】
0006039791.tif 000011
【図１１】
0006039791.tif 000012
【図１２】
0006039791.tif 000013
【図１３】
0006039791.tif 000014