(57)【要約】【課題】ジョブの実行状況の監視を容易にする。【解決手段】情報処理装置１０は、記憶部１１と生成部１２とを有する。記憶部１１は、複数のジョブの実行順序情報を含むジョブ情報１３を記憶する。生成部１２は、ジョブ情報１３に基づき、複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出する。生成部１２は、前段ジョブの数および後段ジョブの数に基づいて、複数のジョブの中から選択されたジョブが選択的に表示されたグラフ１４を生成する。【選択図】図１
2014229183.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のジョブの実行順序情報を含むジョブ情報を取得し、
前記ジョブ情報に基づき、前記複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出し、
前記前段ジョブの数および前記後段ジョブの数に基づいて、前記複数のジョブの中から選択されたジョブが選択的に表示されたグラフを生成する、
処理を実行させるプログラム。
【請求項２】
前記選択されたジョブは、前記前段ジョブの数および前記後段ジョブの数の少なくとも一方が閾値以上であるジョブを含む、請求項１記載のプログラム。
【請求項３】
前記コンピュータに、前記グラフが表示される表示領域の大きさに基づいて前記閾値を決定する処理を更に実行させる、請求項２記載のプログラム。
【請求項４】
前記ジョブ情報は、前記複数のジョブの実行状況を示す情報を含み、
前記コンピュータに、実行中のジョブおよびエラーが発生したジョブの少なくとも一方を、前記グラフに表示するジョブとして追加する処理を更に実行させる、
請求項１乃至３の何れか一項に記載プログラム。
【請求項５】
前記ジョブ情報は、前記複数のジョブの開始条件を示す情報を含み、
前記コンピュータに、前段ジョブが終了したこと以外の所定の種類の開始条件が設定されたジョブを、前記グラフに表示するジョブとして追加する処理を更に実行させる、
請求項１乃至４の何れか一項に記載のプログラム。
【請求項６】
前記コンピュータに、
過去複数回の前記複数のジョブの実行時間を示す履歴情報を取得し、
前記履歴情報に基づき、実行時間の分散度を示す指標値が他の閾値以上であるジョブを、前記グラフに表示するジョブとして追加する処理を更に実行させる、
請求項１乃至５の何れか一項に記載のプログラム。
【請求項７】
コンピュータが実行するジョブ監視支援方法であって、
複数のジョブの実行順序情報を含むジョブ情報を取得し、
前記ジョブ情報に基づき、前記複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出し、
前記前段ジョブの数および前記後段ジョブの数に基づいて、前記複数のジョブの中から選択されたジョブが選択的に表示されたグラフを生成する、
ジョブ監視支援方法。
【請求項８】
複数のジョブの実行順序情報を含むジョブ情報を記憶する記憶部と、
前記ジョブ情報に基づき、前記複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出し、前記前段ジョブの数および前記後段ジョブの数に基づいて、前記複数のジョブの中から選択されたジョブが選択的に表示されたグラフを生成する生成部と、
を有する情報処理装置。
【請求項９】
複数のジョブの実行順序情報を含むジョブ情報を記憶する記憶装置と、
前記ジョブ情報に基づき、前記複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出し、前記前段ジョブの数および前記後段ジョブの数に基づいて、前記複数のジョブの中から選択されたジョブが選択的に表示されたグラフを生成する情報処理装置と、
を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム、ジョブ監視支援方法、情報処理装置およびシステムに関する。
【背景技術】
【０００２】
現在、繰り返し行われる定型的な作業（例えば、毎日行う業務上のルーチンワーク）を、コンピュータが実行するひと纏まりの処理（ジョブ）として定義しておき、コンピュータを利用して自動化することが一般的になっている。
【０００３】
複数のジョブがコンピュータに登録されているとき、それら複数のジョブは、予め定義された順序に従って連続的に実行されることがある。例えば、データベースから所定の条件を満たすレコードを抽出するジョブ、抽出されたレコードに含まれる値を集計するジョブ、集計結果を示す文書ファイルを生成するジョブが、連続して実行される。各ジョブは、例えば、１つ前のジョブが終了した後に開始される。あるジョブから分岐して、２以上の後続のジョブが並行して実行されることもある（分岐点）。また、２以上の先行のジョブ全てが終了するのを待って、あるジョブが開始されることもある（待ち合わせ点）。
【０００４】
ジョブを繰り返し実行していると（例えば、毎日実行していると）、普段よりコンピュータの負荷が大きい、普段よりデータが多い、参照するファイルの到着が普段より遅いなどの種々の理由によって、想定よりジョブの終了が大きく遅延してしまうときがある。また、ジョブの実行中に想定していないエラーが発生して、ジョブが異常終了してしまうときもある。そこで、ジョブの実行状況を、コンピュータのオペレータが監視することが好ましい。ジョブの監視を支援するため、複数のジョブの間の順序関係を表したグラフを生成し、グラフを用いてジョブの実行状況を可視化することが考えられる。
【０００５】
なお、複数の業務ジョブが実行されるジョブ処理装置上で実行監視ジョブを起動し、実行監視ジョブを用いてそれら複数の業務ジョブの実行状況を監視する業務ジョブ実行監視方法が提案されている。この実行監視ジョブは、各業務ジョブから実行開始時に生成される実行開始ファイルと実行終了時に生成される実行終了ファイルとを取得し、実行開始ファイルおよび実行終了ファイルに基づいて当該業務ジョブの遅延を判定する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２９５５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
グラフを用いてジョブの実行状況を可視化するにあたっては、監視するジョブ全体についての実行状況をオペレータが俯瞰できるように、グラフ全体またはグラフの大部分が１つの画面内に表示される方が好ましい。グラフの一部分のみが画面に表示されていると、オペレータは表示範囲を切り替えながらグラフの各部分を確認していくことになり、操作性や理解容易性に劣る。しかし、監視するジョブの数が増大すると、ジョブに対応するノードの全てを１つの画面内に収容することが困難になるという問題がある。
【０００８】
複数のジョブが監視に適した形式に階層化されている場合には、上位階層のジョブを１つのノードとして表現することで、グラフ全体を１つの画面内に収容することもできる。一方、ジョブが監視に適した形式に予め階層化されていない場合、そのようなジョブ群から階層化されたグラフを生成することは容易でない。
【０００９】
１つの側面では、本発明は、ジョブの実行状況の監視を容易にするプログラム、ジョブ監視支援方法、情報処理装置およびシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、コンピュータに以下の処理を実行させるプログラムが提供される。当該プログラムを実行するコンピュータは、複数のジョブの実行順序情報を含むジョブ情報を取得する。ジョブ情報に基づき、複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出する。前段ジョブの数および後段ジョブの数に基づいて、複数のジョブの中から選択されたジョブが選択的に表示されたグラフを生成する。
【００１１】
また、１つの態様では、コンピュータが実行するジョブ監視支援方法が提供される。
また、１つの態様では、記憶部と生成部とを有する情報処理装置が提供される。記憶部は、複数のジョブの実行順序情報を含むジョブ情報を記憶する。生成部は、ジョブ情報に基づき、複数のジョブそれぞれについて、当該ジョブに処理を引き渡す前段ジョブの数と当該ジョブから処理を引き継ぐ後段ジョブの数とを算出する。また、生成部は、前段ジョブの数および後段ジョブの数に基づいて、複数のジョブの中から選択されたジョブが選択的に表示されたグラフを生成する。
【００１２】
また、１つの態様では、記憶装置と情報処理装置とを有するシステムが提供される。
【発明の効果】
【００１３】
１つの側面では、ジョブの実行状況の監視が容易になる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態のシステムを示す図である。
【図３】クライアントのハードウェア例を示すブロック図である。
【図４】監視フロー画面の例を示す図である。
【図５】クライアントとジョブ管理サーバの機能例を示すブロック図である。
【図６】ジョブ情報テーブルの例を示す図である。
【図７】履歴情報テーブルの例を示す図である。
【図８】制御情報テーブルの例を示す図である。
【図９】グラフ生成の手順例を示すフローチャートである。
【図１０】初期設定の手順例を示すフローチャートである。
【図１１】粒度決定の手順例を示すフローチャートである。
【図１２】粒度に応じた監視ポイントの変化例を示す第１の図である。
【図１３】粒度に応じた監視ポイントの変化例を示す第２の図である。
【図１４】監視ポイント追加の手順例を示すフローチャートである。
【図１５】監視ポイントの追加例を示す図である。
【図１６】前後判定の手順例を示すフローチャートである。
【図１７】ノードの自動再配置の例を示す図である。
【図１８】粒度変更の手順例を示すフローチャートである。
【図１９】部分的な粒度変更の例を示す図である。
【図２０】アクティブ監視の手順例を示すフローチャートである。
【図２１】アクティブ監視モードの例を示す図である。
【図２２】クライアントとジョブ管理サーバの他の機能例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。
【００１６】
第１の実施の形態の情報処理装置１０は、複数のジョブの実行状況を監視することを支援する。情報処理装置１０は、オペレータが操作する端末装置としてのクライアントコンピュータでもよいし、サーバコンピュータであってもよい。ジョブは、情報処理装置１０で実行されていてもよいし、他のコンピュータで実行されていてもよい。
【００１７】
情報処理装置１０は、記憶部１１および生成部１２を有する。記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。生成部１２は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。生成部１２は、プログラムを実行するプロセッサであってもよい。ここで言う「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１８】
記憶部１１は、ジョブの実行順序情報を含むジョブ情報１３を記憶する。実行順序情報は、ジョブが開始される順序を示す情報であり、ジョブ間の依存関係を表していると言うこともできる。あるジョブの直前に、当該ジョブに処理を引き渡す前段ジョブが定義されていることがある。当該ジョブは、前段ジョブに依存していると言える。また、あるジョブの直後に、当該ジョブから処理を引き継ぐ後段ジョブが定義されていることがある。
【００１９】
各ジョブは、原則として前段ジョブが終了してから開始される。あるジョブに対して、複数の前段ジョブが定義されていることもある。その場合、例えば、当該ジョブは、複数の前段ジョブの終了を待ち合わせて開始される。このようなジョブは、待ち合わせ点であると言うこともできる。また、あるジョブに対して、複数の後段ジョブが定義されていることもある。その場合、例えば、当該ジョブが終了した後、複数の後段ジョブが並列に実行される。このようなジョブは、分岐点であると言うこともできる。
【００２０】
ここで、図１に示した例では、ジョブ情報１３にジョブＪ１〜Ｊ７の情報が含まれている。ジョブＪ１の後段ジョブはジョブＪ２〜Ｊ４である。ジョブＪ２の前段ジョブはジョブＪ１であり、後段ジョブはジョブＪ５である。ジョブＪ３の前段ジョブはジョブＪ１であり、後段ジョブはジョブＪ５である。ジョブＪ４の前段ジョブはジョブＪ１であり、後段ジョブはジョブＪ６である。ジョブＪ５の前段ジョブはジョブＪ２，Ｊ３であり、後段ジョブはジョブＪ７である。ジョブＪ６の前段ジョブはジョブＪ４であり、後段ジョブはジョブＪ７である。ジョブＪ７の前段ジョブはジョブＪ５，Ｊ６である。
【００２１】
生成部１２は、ジョブ情報１３に基づいて、複数のジョブの中から選択されたジョブが選択的に表示されたグラフ１４を生成する。グラフ１４は、選択されたジョブに対応するノードとノード間を結ぶリンクとを含む。グラフ１４に表示されるジョブは、ジョブ情報１３が示す複数のジョブの一部（サブセット）であることがある。グラフ１４に含まれるリンクは、選択されたジョブの実行順序を表す。グラフ１４には、ジョブ情報１３が示す全てのジョブが表示されるとは限らず、一部のジョブが省略されることがある。
【００２２】
グラフ１４を生成するにあたり、生成部１２は、複数のジョブそれぞれについて前段ジョブ数と後段ジョブ数を算出する。そして、生成部１２は、各ジョブの前段ジョブ数と後段ジョブ数に基づいて、複数のジョブの中からグラフ１４に表示するジョブを選択する。選択するジョブが、ジョブ情報１３が示すジョブの一部である場合、グラフ１４に表示するジョブを限定していると言える。例えば、生成部１２は、前段ジョブ数と後段ジョブ数の少なくとも一方が閾値以上であるジョブを選択する。生成されたグラフ１４は、情報処理装置１０に接続されたディスプレイに表示されてもよく、他のコンピュータに送信されて当該他のコンピュータに接続されたディスプレイに表示されてもよい。
【００２３】
ここで、図１に示した例では、ジョブＪ１の後段ジョブ数は３である。ジョブＪ２〜Ｊ４の前段ジョブ数は１であり、後段ジョブ数は１である。ジョブＪ５の前段ジョブ数は２であり、後段ジョブ数は１である。ジョブＪ６の前段ジョブ数は１であり、後段ジョブ数は１である。ジョブＪ７の前段ジョブ数は２である。例えば、生成部１２は、閾値＝２と設定し、ジョブＪ１，Ｊ５，Ｊ７を選択し、ジョブＪ２〜Ｊ４，Ｊ６を選択しない。この場合、生成部１２は、ジョブＪ１，Ｊ５，Ｊ７に対応するノードを含み、ジョブＪ２〜Ｊ４，Ｊ６に対応するノードが省略されたグラフ１４を生成する。
【００２４】
なお、生成部１２は、グラフ１４が表示される表示領域の大きさに応じて閾値を変更してもよい。例えば、生成部１２は、選択したジョブに対応するノードの全て（または大部分）が表示領域に収容できることを条件として、最小の整数を閾値に決定する。また、上記の説明ではジョブ情報１３が記憶部１１に記憶されているとしたが、生成部１２が他のコンピュータからジョブ情報１３を取得するようにしてもよい。
【００２５】
第１の実施の形態の情報処理装置１０によれば、各ジョブの前段ジョブ数と後段ジョブ数とに基づいて、複数のジョブの中から選択されたジョブが選択的にグラフ１４に表示される。これにより、コンピュータに登録されたジョブが多い場合であっても、グラフ１４に含まれるノード（可視化するジョブ）を減らすことが可能となり、複数のジョブを含む業務フロー全体の実行状況を画面上で俯瞰することが可能となる。
【００２６】
また、業務フローを監視する上で重要である可能性が高いジョブが監視ポイントとして自動的に設定され、有用性の高いグラフ１４が生成される。例えば、前段ジョブや後段ジョブが多いジョブを抽出することで、分岐点や待ち合わせ点など、遅延を監視する上で重要である可能性が高いジョブが監視ポイントとして設定される。また、ジョブが予め監視に適した形式に階層化されていない場合であっても、適切な監視ポイントが設定されたグラフ１４を生成できる。よって、ジョブの実行状況の監視が容易になる。
【００２７】
［第２の実施の形態］
図２は、第２の実施の形態のシステムを示す図である。
第２の実施の形態のシステムは、ジョブ実行サーバ３１，３２、クライアント１００およびジョブ管理サーバ２００を有する。ジョブ実行サーバ３１，３２、クライアント１００およびジョブ管理サーバ２００は、ネットワーク３３に接続されている。
【００２８】
ジョブ実行サーバ３１，３２は、プログラムによって予め定義されたジョブを実行するサーバコンピュータである。ジョブは、繰り返し行われる業務上の定型的な作業を、コンピュータが実行するひと纏まりの処理として定義したものである。１つのジョブは、例えば、１つのコマンドに対応する。ジョブは、所定のスケジュールに従って繰り返し（例えば、１日に１回）実行される。ネットワーク３３は、ＬＡＮ（Local Area Network）を含んでもよいし、インターネットなどの広域ネットワークを含んでもよい。
【００２９】
クライアント１００は、ユーザ（例えば、システムのオペレータ）が操作する端末装置としてのクライアントコンピュータである。クライアント１００は、ネットワーク３３を介してジョブ管理サーバ２００にアクセスし、ジョブ管理サーバ２００からジョブ管理に関するデータを取得する。そして、クライアント１００は、取得したデータに基づいて、ジョブ実行サーバ３１，３２によるジョブの実行状況を可視化したグラフを生成する。ユーザは、生成されたグラフを見てジョブの実行状況を監視する。ジョブの遅延や異常終了が確認された場合、ユーザは対応措置をとることができる。
【００３０】
ジョブ管理サーバ２００は、ジョブ開始のスケジュールや複数のジョブの順序関係、ジョブの進行状況などを管理するサーバコンピュータである。例えば、ジョブ管理サーバ２００は、予め定義されたスケジュールに従って、ジョブ実行サーバ３１，３２にジョブの開始を指示する。また、ジョブ管理サーバ２００は、ネットワーク３３を介してジョブ実行サーバ３１，３２から、ジョブの実行結果を示す情報を収集する。また、ジョブ管理サーバ２００は、ジョブ管理に関するデータをクライアント１００に提供する。
【００３１】
なお、クライアント１００は、第１の実施の形態の情報処理装置１０の一例である。上記では、ジョブを実行するジョブ実行サーバ３１，３２とジョブを管理するジョブ管理サーバ２００とを分けたが、ジョブ管理サーバ２００がジョブを実行してもよい。
【００３２】
図３は、クライアントのハードウェア例を示すブロック図である。
クライアント１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。ＣＰＵ１０１は、第１の実施の形態の生成部１２の一例であり、ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。
【００３３】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、クライアント１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００３４】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性メモリである。なお、クライアント１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３５】
ＨＤＤ１０３は、ＯＳ（Operating System）やアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、クライアント１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００３６】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、クライアント１００に接続されたディスプレイ４１に画像を出力する。ディスプレイ４１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００３７】
入力信号処理部１０５は、クライアント１００に接続された入力デバイス４２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス４２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、クライアント１００に、複数の種類の入力デバイスが接続されていてもよい。
【００３８】
媒体リーダ１０６は、記録媒体４３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体４３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体４３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３９】
通信インタフェース１０７は、ネットワーク３３に接続され、ネットワーク３３を介してジョブ実行サーバ３１，３２やジョブ管理サーバ２００と通信を行うインタフェースである。通信インタフェース１０７は、ケーブルで通信装置と接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００４０】
なお、クライアント１００は、媒体リーダ１０６を備えていなくてもよい。また、ディスプレイ４１や入力デバイス４２が、クライアント１００の筐体と一体に形成されていてもよい。ジョブ実行サーバ３１，３２およびジョブ管理サーバ２００も、クライアント１００と同様のハードウェアを用いて実現できる。ただし、ジョブ実行サーバ３１，３２やジョブ管理サーバ２００は、端末装置からネットワーク３３経由で制御される場合には、画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。
【００４１】
図４は、監視フロー画面の例を示す図である。
クライアント１００は、ジョブ管理サーバ２００から取得したデータに基づいて、図４に示すような監視フロー画面４４を生成しディスプレイ４１に表示する。
【００４２】
監視フロー画面４４には、監視フローとして、ジョブまたはジョブネットに対応するノードとジョブ間の実行順序に応じたリンクとを含むグラフ（有向グラフ）が表示される。ジョブネットは、複数のジョブが予め階層化されている場合に、下位階層のジョブ群を上位階層から見たものである。ジョブネットに対応するノードを展開する（下位方向へ階層を辿る）と、下位階層のジョブ群に対応する別のグラフが表示される。ただし、以下では説明を簡単にするために、１つのノードが１つのジョブに対応すると仮定する。
【００４３】
ノードには、ジョブの状態を示す情報が付加される。ジョブの状態には、例えば、正常終了、実行中、異常終了などが含まれる。ユーザは、監視フロー画面４４を見ることで、遅延しているジョブや異常終了したジョブがないか確認することができる。ただし、ジョブ実行サーバ３１，３２が実行し得る全てのジョブをグラフ上に表示しようとすると、ジョブの増加に伴って、グラフ全体を１つの画面に収めることが難しくなる。そこで、第２の実施の形態のクライアント１００は、複数のジョブの中から監視ポイントを選択し、選択した監視ポイントに限定してグラフ上に表示するようにする。
【００４４】
以下の説明では、ジョブ管理サーバ２００に登録されたジョブ群の例として、図４に示すようなジョブ１〜１３を含むジョブ群を考える。ジョブ群は、連続的に実行されるジョブの集合であって、１つの始点と１つの終点を含む。始点以外のジョブの前には、１つ前に実行されるべき１または２以上のジョブ（先行ジョブ）が存在する。終点以外のジョブの後には、１つ後に実行されるべき１または２以上のジョブ（後続ジョブ）が存在する。
【００４５】
あるジョブは、原則として先行ジョブが終了したことを受けて開始される。２以上の先行ジョブがある場合には、それらの先行ジョブが全て終了したことを受けて開始される。先行ジョブが２以上あるジョブは、待ち合わせ点と言うことができる。ただし、先行ジョブが終了したこと以外の開始条件が定義されているジョブもある。そのような開始条件には、開始時刻、所定のファイルの受け取り、所定のイベントの発生などが含まれ得る。また、２以上の後続ジョブがある場合には、それらの後続ジョブが並行して実行され得る。後続ジョブが２以上あるジョブは、分岐点と言うことができる。
【００４６】
ジョブ１は始点・分岐点であり、後続ジョブはジョブ２，４〜６である。ジョブ２の先行ジョブはジョブ１、後続ジョブはジョブ３である。ジョブ３の先行ジョブはジョブ２、後続ジョブはジョブ７である。ジョブ４，５の先行ジョブはジョブ１、後続ジョブはジョブ７である。ジョブ６は分岐点であり、先行ジョブはジョブ１、後続ジョブはジョブ７，８である。ジョブ７は待ち合わせ点であり、先行ジョブはジョブ３〜６、後続ジョブはジョブ９である。ジョブ８の先行ジョブはジョブ６、後続ジョブはジョブ９である。ジョブ９は待ち合わせ点・分岐点であり、先行ジョブはジョブ７，８、後続ジョブはジョブ１０〜１２である。ジョブ１０〜１２の先行ジョブはジョブ９、後続ジョブはジョブ１３である。ジョブ１３は待ち合わせ点・終点であり、先行ジョブはジョブ１０〜１２である。
【００４７】
なお、監視フロー画面４４の表示領域は、複数の区間に分割されている。１つの区画は、１つのノードを収容することができる。ノードの大きさは予め設定されており、ノードを収容できる区画の数は表示領域の大きさに応じて決まる。各区間は、座標によって特定することが可能である。例えば、監視フロー画面４４の横方向をｘ軸、縦方向をｙ軸とし、座標（ｘ，ｙ）によって複数の区間それぞれが特定される。
【００４８】
図５は、クライアントとジョブ管理サーバの機能例を示すブロック図である。
クライアント１００は、制御情報記憶部１１１、データ取得部１２１、操作検出部１２２、グラフ生成部１２３および表示制御部１２４を有する。制御情報記憶部１１１は、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実現できる。データ取得部１２１、操作検出部１２２、グラフ生成部１２３および表示制御部１２４は、ＣＰＵ１０１が実行するソフトウェアのモジュールとして実現できる。ただし、これらの機能の一部または全部を、ＡＳＩＣなどの専用の電子回路を用いて実現してもよい。
【００４９】
制御情報記憶部１１１は、グラフ生成部１２３の動作を制御するための制御情報を記憶する。制御情報には、ユーザによって指定された設定情報と、グラフ生成の過程で算出された中間情報とが含まれる。制御情報は、操作検出部１２２を介してグラフ生成部１２３に提供される。また、制御情報は、ユーザ操作またはグラフ生成部１２３からの応答に応じて、操作検出部１２２により更新される。制御情報の詳細は後述する。
【００５０】
データ取得部１２１は、グラフ生成部１２３からの要求に応じて、ネットワーク３３を介してジョブ管理サーバ２００にアクセスする。そして、データ取得部１２１は、ジョブ管理に関するデータをジョブ管理サーバ２００から取得し、グラフ生成部１２３に提供する。取得されるデータには、後述するようにジョブ情報と履歴情報とが含まれる。
【００５１】
操作検出部１２２は、監視フロー画面４４に対する入力デバイス４２を用いたユーザ操作を検出する。操作検出部１２２は、可視化を指示するユーザ操作が検出されると、グラフ生成部１２３にグラフ生成を要求する。このとき、操作検出部１２２は、制御情報記憶部１１１から制御情報を読み出してグラフ生成部１２３に提供する。そして、操作検出部１２２は、グラフ生成部１２３が生成したグラフを表示制御部１２４に提供する。
【００５２】
また、操作検出部１２２は、表示形態の変更を指示するユーザ操作が検出されると、変更後の表示形態に従ってグラフを再生成するようグラフ生成部１２３に要求し、新たなグラフを表示制御部１２４に提供する。また、操作検出部１２２は、設定変更のユーザ操作が検出されると、制御情報記憶部１１１に記憶された制御情報を更新する。操作検出部１２２は、グラフ生成部１２３からの応答に応じて制御情報を更新することもある。
【００５３】
グラフ生成部１２３は、操作検出部１２２からの要求に応じて、ジョブの実行状況を可視化したフラグを生成する。グラフ生成部１２３は、操作検出部１２２からグラフ生成が要求されると、ジョブ管理に関するデータをデータ取得部１２１に要求する。そして、グラフ生成部１２３は、データ取得部１２１から取得したデータと操作検出部１２２から提供された制御情報に基づいてグラフを生成し、操作検出部１２２に提供する。このとき、グラフ生成部１２３は、制御情報を適宜更新する。グラフ生成の詳細は後述する。
【００５４】
表示制御部１２４は、ディスプレイ４１に表示する画面を制御する。表示制御部１２４は、操作検出部１２２からグラフを取得すると、監視フロー画面４４の所定の表示領域にグラフを描画し、ディスプレイ４１に監視フロー画面４４を出力する。
【００５５】
ジョブ管理サーバ２００は、ジョブ情報記憶部２１１、履歴情報記憶部２１２およびデータ提供部２２１を有する。ジョブ情報記憶部２１１および履歴情報記憶部２１２は、ＲＡＭまたはＨＤＤに確保した記憶領域として実現できる。データ提供部２２１は、ＣＰＵが実行するソフトウェアのモジュールとして実現できる。ただし、これらの機能の一部または全部を、ＡＳＩＣなどの専用の電子回路を用いて実現してもよい。
【００５６】
ジョブ情報記憶部２１１は、ジョブの定義および今回の（例えば、各ジョブが１日１回実行される場合には今日の）ジョブの実行状況を示すジョブ情報を記憶する。ジョブの定義には、先行ジョブ・後続ジョブの関係や、先行ジョブが終了したこと以外の開始条件が含まれる。今回のジョブの実行状況には、開始時刻・終了時刻や、ジョブの状態（例えば、実行中・正常終了など）が含まれる。ジョブ情報の詳細は後述する。
【００５７】
履歴情報記憶部２１２は、過去所定回数の（例えば、各ジョブが１日１回実行される場合に過去１ヶ月間の）ジョブの実行状況を示す履歴情報を記憶する。過去のジョブの実行状況には、開始時刻・終了時刻が含まれる。履歴情報の詳細は後述する。
【００５８】
データ提供部２２１は、クライアント１００からの要求に応じて、ジョブ情報記憶部２１１からジョブ情報を読み出しクライアント１００に送信する。また、データ提供部２２１は、クライアント１００からの要求に応じて、履歴情報記憶部２１２から履歴情報を読み出しクライアント１００に送信する。データ提供部２２１は、ジョブ情報の要求と履歴情報の要求とをクライアント１００から別個に受け付け、ジョブ情報と履歴情報とを別個に送信してもよい。また、データ提供部２２１は、ジョブ情報と履歴情報を一緒に送信してもよい。以下の説明では、ジョブ情報と履歴情報とを別個に送信するものとする。
【００５９】
図６は、ジョブ情報テーブルの例を示す図である。
ジョブ情報テーブル２１３は、ジョブ情報記憶部２１１に記憶される。ジョブ情報テーブル２１３は、ジョブ番号、ジョブ名、コマンド、先行ジョブ数、先行ジョブ、状態、開始時刻、終了時刻、開始時刻条件、終了予定時刻および他の開始条件の項目を含む。
【００６０】
ジョブ番号は、ジョブを識別するための識別情報である。ジョブ名は、ユーザがジョブの内容を認識しやすいようにジョブに付与した名称である。ただし、ジョブ名としてジョブ番号を用いてもよい。コマンドの項目には、ジョブに対応するプログラムの実行ファイルのパスおよびファイル名が記載される。ジョブの開始条件が満たされると、この実行ファイルが起動される。先行ジョブ数の項目には、先行ジョブの数が記載される。始点の先行ジョブ数は０であり、始点以外のジョブの先行ジョブ数は１以上である。先行ジョブの項目には、１以上の先行ジョブのジョブ番号が記載される。
【００６１】
状態の項目には、ジョブの状態を示す情報が記載される。ジョブの状態には、待ち（未実行）・実行中・正常終了・異常終了が含まれる。開始時刻の項目には、待ち状態以外のジョブについて、当該ジョブが開始された時刻が記載される。終了時刻の項目には、正常終了または異常終了したジョブについて、当該ジョブが終了した時刻が記載される。
【００６２】
開始時刻条件の項目には、ジョブを開始すべき時刻が記載される。開始時刻条件が設定されている場合、先行ジョブが終了しても、その時刻になるまでジョブは開始されない。終了予定時刻の項目には、ユーザが想定するジョブの終了時刻が記載される。他の開始条件の項目には、先行ジョブの終了および開始時刻条件以外の開始条件が記載される。他の開始条件には、所定のファイルの到着や所定のイベントの発生が含まれる。他の開始条件が設定されている場合、先行ジョブが終了しても、その条件が満たされるまでジョブは開始されない。なお、開始時刻条件、終了予定時刻および他の開始条件は、ジョブによって設定されていることもあるし設定されていないこともある。
【００６３】
図７は、履歴情報テーブルの例を示す図である。
履歴情報テーブル２１４は、履歴情報記憶部２１２に記憶される。履歴情報記憶部２１２には、過去所定回数のジョブの実行状況が登録される。履歴情報テーブル２１４は、世代番号、ジョブ番号、ジョブ名、開始時刻および終了時刻の項目を含む。
【００６４】
世代番号は、複数回のジョブの実行を互いに区別するための識別情報である。例えば、ジョブが１日１回実行されるものである場合、世代番号によって昨日のジョブ実行と一昨日のジョブ実行とが区別される。なお、世代番号として日付を用いてもよい。ジョブ番号およびジョブ名は、ジョブ情報テーブル２１３に記載されたものと同様である。開始時刻の項目には、過去にジョブが実行されたときの開始時刻が記載される。終了時刻の項目には、過去にジョブが実行されたときの終了時刻が記載される。
【００６５】
なお、履歴情報テーブル２１４には、ジョブ情報テーブル２１３に記載されたコマンド、先行ジョブ数、先行ジョブ、状態、開始時刻条件、終了予定時刻および他の開始条件の一部または全部が含まれてもよい。また、１つの世代（１回のジョブ群の実行）毎に履歴情報テーブル２１４を分割し、履歴情報記憶部２１２に格納するようにしてもよい。
【００６６】
図８は、制御情報テーブルの例を示す図である。
制御情報テーブル１１２は、制御情報記憶部１１１に記憶される。制御情報テーブル１１２は、ユーザ指定ジョブ、画面サイズ、画面の区画数、粒度、空き区画数、空き区画の閾値、自動再配置、部分粒度およびアクティブ監視モードの項目を含む。
【００６７】
ユーザ指定ジョブの項目には、複数のジョブのうちユーザが監視ポイントに指定したジョブのジョブ番号が列挙される。ユーザが指定した監視ポイントは、表示領域の大きさにかかわらず固定的にグラフ上に表示される。画面サイズは、監視フロー画面４４内のグラフが表示される表示領域の大きさである。画面サイズは、クライアント１００に接続されたディスプレイ４１の解像度に応じて自動的に設定されるようにしてもよい。画面の区画数は、横方向および縦方向に配置できるノードの数を示す。画面の区画数は、予め設定されたノード１つあたりの大きさと画面サイズから算出できる。
【００６８】
粒度は、グラフ上に可視化するジョブを先行ジョブ数および後続ジョブ数に応じて限定するときに用いる閾値である。先行ジョブ数と後続ジョブ数の少なくとも一方が粒度以上であるジョブが、グラフ上に可視化される。空き区画数は、画面の区画数からグラフに含まれるノードの数を引いた値である。グラフに含まれるノードが画面の区画数より多い場合（グラフ全体を表示領域に収容できない場合）、空き区画数は負になる。空き区画の閾値は、画面の区画に対する空き区画の割合についての閾値である。粒度を決定した後の空き区画の割合が閾値以上ある場合、所定の条件を満たすジョブをグラフに追加する。
【００６９】
自動再配置の項目には、監視フロー画面４４上でノードの配置を自動調整するか否かを示すフラグが記載される。自動再配置がＯＦＦの場合、表示するノードを限定する前のノード間の相対的な位置関係が維持される。一方、自動再配置がＯＮの場合、残ったノードが元の位置関係と関係なく詰めて表示される。部分粒度は、ユーザが指定したグラフの一部分に適用する部分的な粒度である。全体の粒度とは異なる粒度をグラフの一部分に対して適用することで、当該部分のみ詳細化する（表示するノードを増やす）ことができる。
【００７０】
アクティブ監視モードの項目には、アクティブ監視モードでグラフを表示するか否かを示すフラグが記載される。アクティブ監視モードがＯＦＦの場合（通常モードの場合）、複数のジョブ全体を俯瞰できるように、始点および終点に対応するノードがグラフに含まれる。これに対し、アクティブ監視モードがＯＮの場合、可視化するジョブが実行中ジョブおよび異常終了ジョブの存在する範囲（アクティブエリア）に限定される。アクティブ監視モードでは、グラフに始点および終点に対応するノードが含まれるとは限らない。
【００７１】
図９は、グラフ生成の手順例を示すフローチャートである。
（Ｓ１０）データ取得部１２１は、ジョブ管理サーバ２００にアクセスし、ジョブ管理サーバ２００からジョブ情報（ジョブ情報テーブル２１３）を取得する。
【００７２】
（Ｓ１１）グラフ生成部１２３は、監視ポイントの初期設定を行う。ここで最初に設定される監視ポイントは、粒度ｎに関係なくグラフ上に固定的に表示されるジョブであり、ユーザ指定ジョブと始点のジョブと終点のジョブとを含む。
【００７３】
（Ｓ１２）グラフ生成部１２３は、グラフの全部または大部分が監視フロー画面４４の表示領域に収容されるように粒度ｎを決定する。例えば、グラフ生成部１２３は、粒度ｎを１から順に上げていき、監視ポイントの数が画面の区画数以下になるときの最小の粒度ｎを見つける。初期設定した監視ポイントに加えて、先行ジョブ数と後続ジョブ数の少なくとも一方が粒度ｎ以上であるジョブが監視ポイントに設定される。ここで設定される監視ポイントは、粒度ｎが１である場合を除き、分岐点および待ち合わせ点である。
【００７４】
（Ｓ１３）グラフ生成部１２３は、グラフ上に表示するジョブが少なくなり過ぎないように、ステップＳ１１，Ｓ１２で監視ポイントを設定した後の空き区画数に応じて、監視ポイントを追加する。追加の監視ポイントの候補には、開始時刻条件または終了予定時刻が設定されたジョブや、開始条件としてファイルの待ち合わせまたはイベントの待ち合わせが設定されたジョブが含まれる。また、追加の監視ポイントの候補には、過去複数回実行されたときの実行時間のばらつき（分散度）が大きいジョブが含まれる。
【００７５】
（Ｓ１４）グラフ生成部１２３は、ステップＳ１１〜Ｓ１３で設定された監視ポイントの実行タイミングの前後関係を判定する。これにより、設定された監視ポイントに対応するノードと、判定された前後関係に応じたリンクとを含むグラフが生成される。
【００７６】
（Ｓ１５）グラフ生成部１２３は、制御情報テーブル１１２において自動再配置がＯＮに設定されているか判断する。自動再配置＝ＯＮの場合はステップＳ１６に処理を進め、自動再配置＝ＯＦＦの場合はステップＳ１７に処理を進める。
【００７７】
（Ｓ１６）グラフ生成部１２３は、監視ポイントに対応するノードの配置を決定する。このとき、グラフ生成部１２３は、表示するノードを限定する前の元の位置関係にかかわらず、ノードを詰めて配置する。そして、ステップＳ１８に処理を進める。
【００７８】
（Ｓ１７）グラフ生成部１２３は、監視ポイントに対応するノードの配置を決定する。このとき、グラフ生成部１２３は、表示するノードを限定する前の元の相対的な位置関係を維持して、グラフを縮小する。例えば、ノードの大きさは変えず、グラフの全体または大部分が表示領域に収容されるようにリンクの長さを一定の倍率で縮小する。
【００７９】
（Ｓ１８）操作検出部１２２は、グラフ生成部１２３が生成したグラフを表示制御部１２４に提供する。表示制御部１２４は、グラフを監視フロー画面４４上に表示する。
図１０は、初期設定の手順例を示すフローチャートである。図１０に示すフローチャートの処理が、上記のステップＳ１１において実行される。
【００８０】
（Ｓ１１０）グラフ生成部１２３は、データ取得部１２１からジョブ情報テーブル２１３を取得し、ジョブ情報テーブル２１３に登録されているジョブを１つ選択する。
（Ｓ１１１）グラフ生成部１２３は、選択したジョブが、制御情報テーブル１１２にユーザ指定ジョブとして登録されているか判断する。ユーザ指定ジョブである場合はステップＳ１１５に処理を進め、それ以外の場合はステップＳ１１２に処理を進める。
【００８１】
（Ｓ１１２）グラフ生成部１２３は、選択したジョブが始点であるか、すなわち、先行ジョブ数が０であるか判断する。先行ジョブ数＝０の場合はステップＳ１１５に処理を進め、それ以外の場合（始点でない場合）はステップＳ１１３に処理を進める。
【００８２】
（Ｓ１１３）グラフ生成部１２３は、ジョブ情報テーブル２１３を参照して、ステップＳ１１０で選択したジョブを先行ジョブに含むジョブ（後続ジョブ）の数を算出する。
（Ｓ１１４）グラフ生成部１２３は、選択したジョブが終点であるか、すなわち、ステップＳ１１３で算出した後続ジョブ数が０であるか判断する。後続ジョブ数＝０の場合はステップＳ１１５に処理を進め、それ以外の場合はステップＳ１１６に処理を進める。
【００８３】
（Ｓ１１５）グラフ生成部１２３は、選択したジョブを監視ポイントに設定する。すなわち、ユーザ指定ジョブと始点のジョブと終点のジョブが監視ポイントに設定される。
（Ｓ１１６）グラフ生成部１２３は、ステップＳ１１０においてジョブ情報テーブル２１３に登録された全てのジョブを選択したか判断する。未選択のジョブがある場合はステップＳ１１０に処理を進め、全てのジョブを選択した場合は処理を終了する。
【００８４】
図１１は、粒度決定の手順例を示すフローチャートである。図１１に示すフローチャートの処理が、上記のステップＳ１２において実行される。
（Ｓ１２０）グラフ生成部１２３は、制御情報テーブル１１２に記載された画面サイズから画面の区画数、すなわち、監視フロー画面４４に表示可能なノードの数を算出する。例えば、グラフ生成部１２３は、表示領域の横の長さと縦の長さをそれぞれノードの一辺の長さで割り、横方向と縦方向に配置可能なノードの数を掛ける。
【００８５】
（Ｓ１２１）グラフ生成部１２３は、粒度ｎを仮に１に設定する。
（Ｓ１２２）グラフ生成部１２３は、ジョブ情報テーブル２１３に登録されたジョブの中から、先行ジョブ数がｎ未満でありかつ後続ジョブ数がｎ未満のジョブを検索する。後続ジョブ数は、例えば、上記のステップＳ１１３で算出したものを利用できる。
【００８６】
（Ｓ１２３）グラフ生成部１２３は、ステップＳ１２２で検索されたジョブのうち、上記のステップＳ１１で監視ポイントに設定されたもの（ユーザ指定ジョブ、始点のジョブおよび終点のジョブ）以外のジョブを、監視ポイントから除外する。なお、粒度ｎ＝１の場合は、ステップＳ１２２の条件に該当するジョブは存在しない。このため、粒度ｎ＝１のときは、ステップＳ１２２，Ｓ１２３の処理を実行しなくてもよい。
【００８７】
（Ｓ１２４）グラフ生成部１２３は、除外されずに残っているジョブの数が、ステップＳ１２０で算出した画面の区画数以下であるか判断する。すなわち、現在の粒度ｎを採用した場合にノードを表示領域に収容できるか判断する。条件を満たす場合はステップＳ１２７に処理を進め、条件を満たさない場合はステップＳ１２５に処理を進める。
【００８８】
（Ｓ１２５）グラフ生成部１２３は、残っているジョブが上記のステップＳ１１で監視ポイントに設定されたもののみであるか判断する。初期設定のジョブのみである場合はステップＳ１２７に処理を進め、それ以外の場合はステップＳ１２６に処理を進める。
【００８９】
（Ｓ１２６）グラフ生成部１２３は、粒度ｎを１つ増加させて（粒度ｎをインクリメントして）、ステップＳ１２２に処理を進める。
（Ｓ１２７）グラフ生成部１２３は、現在の粒度ｎを確定する。そして、グラフ生成部１２３は、初期設定の監視ポイントに加えて、先行ジョブ数と後続ジョブ数の少なくとも一方が粒度ｎ以上であるジョブを監視ポイントに設定する。ここで設定される監視ポイントは、粒度ｎ＝１である場合を除き、分岐点および待ち合わせ点である。
【００９０】
図１２は、粒度に応じた監視ポイントの変化例を示す第１の図である。
ここでは、図４で説明したジョブ１〜１３について、図１０，１１のフローチャートに従って監視ポイントを選択する場合を考える。なお、ユーザ指定ジョブは存在しない。ジョブ１，１３は、始点および終点であるため、固定的に監視ポイントに設定される。
【００９１】
粒度ｎ＝１のときは、ジョブ１〜１３の全てが監視ポイントとなる。グラフの表示領域に１３個のノードを収容できる場合、粒度ｎ＝１に決定される。粒度ｎ＝２のときは、ジョブ１〜１３のうちジョブ１，６，７，９，１３が監視ポイントになる。ジョブ２〜５，８，１０〜１２は、先行ジョブ数と後続ジョブ数が１であるため、監視ポイントから除外される。グラフの表示領域に５個のノードを収容できる場合、粒度ｎ＝２に決定される。
【００９２】
なお、後述するように、グラフ上の２つのノードを結ぶリンクには、２つのノードが示す監視ポイントの間に存在する省略されたジョブの数が記載される。省略されたジョブは、一方のノードから他方のノードへ至る全ての経路上に存在するジョブである。省略されたジョブがない場合、数字は記載されない。ジョブ１，７間には、４個のジョブ（ジョブ２〜５）が省略されている。ジョブ６，９間には、１個のジョブ（ジョブ８）が省略されている。ジョブ９，１３間には、３個のジョブ（ジョブ１０〜１２）が省略されている。
【００９３】
図１３は、粒度に応じた監視ポイントの変化例を示す第２の図である。
粒度ｎ＝３のときは、ジョブ１，７，９，１３が監視ポイントになる。ジョブ６は、先行ジョブ数が１で後続ジョブ数が２であるため、粒度ｎ＝３になると監視ポイントから除外される。グラフの表示領域に４個のノードを収容できる場合、粒度ｎ＝３に決定される。このとき、ジョブ１，７間には、５個のジョブ（ジョブ２〜６）が省略されている。ジョブ１，９間には、２個のジョブ（ジョブ６，８）が省略されている。
【００９４】
粒度ｎ＝４のときは、ジョブ１，７，１３が監視ポイントになる。ジョブ９は、先行ジョブ数が２で後続ジョブ数が３であるため、粒度＝４になると監視ポイントから除外される。グラフの表示領域に３個のノードを収容できる場合、粒度＝４に決定される。このとき、ジョブ１，１３間には、６個のジョブ（ジョブ６，８〜１２）が省略されている。ジョブ７，１３間には、４個のジョブ（ジョブ９〜１２）が省略されている。
【００９５】
粒度＝５のときは、ジョブ１，１３が監視ポイントになる。ジョブ７は、先行ジョブ数が４で後続ジョブ数が１であるため、粒度ｎ＝５になると監視ポイントから除外される。このとき、ジョブ１，１３間には、１１個のジョブ（ジョブ２〜１２）が省略されている。省略されずに残ったジョブは、初期設定のジョブのみである。このように、粒度を上げていくと、最終的には初期設定のジョブのみがグラフ上に表示されることになる。
【００９６】
図１４は、監視ポイント追加の手順例を示すフローチャートである。図１４に示すフローチャートの処理が、上記のステップＳ１３において実行される。
（Ｓ１３０）グラフ生成部１２３は、上記のステップＳ１２が終了した時点の空き区画の割合を算出する。例えば、グラフ生成部１２３は、画面の区画数からステップＳ１２までに設定した監視ポイントの数を引いて空き区画数を算出し、空き区画数を画面の区画数で割る。そして、グラフ生成部１２３は、空き区画の割合が制御情報テーブル１１２に記載された空き区画の閾値以上であるか判断する。条件を満たす場合はステップＳ１３１に処理を進め、条件を満たさない場合は処理を終了する。なお、空き区画の閾値は負の値でもよい。その場合、少数のノードが表示領域の外に出ることが許容される。
【００９７】
（Ｓ１３１）グラフ生成部１２３は、ジョブ情報テーブル２１３から、開始時刻条件および終了予定時刻の少なくとも一方が設定されたジョブを検索する。そして、グラフ生成部１２３は、検索されたジョブがまだ監視ポイントに設定されていない場合、当該ジョブを監視ポイントに追加する。なお、このようなジョブを監視ポイントに追加するのは、ユーザがその実行タイミングに注目しており遅延を監視することが好ましいからである。
【００９８】
（Ｓ１３２）グラフ生成部１２３は、ステップＳ１３１が終了した時点の空き区画の割合を算出し、空き区画の割合が閾値以上であるか判断する。条件を満たす場合はステップＳ１３３に処理を進め、条件を満たさない場合は処理を終了する。
【００９９】
（Ｓ１３３）グラフ生成部１２３は、ジョブ情報テーブル２１３から、開始条件としてファイルの待ち合わせまたはイベントの待ち合わせが設定されたジョブを検索する。そして、グラフ生成部１２３は、検索されたジョブがまだ監視ポイントに設定されていない場合、当該ジョブを監視ポイントに追加する。なお、このようなジョブを監視ポイントに追加するのは、先行ジョブが終了しても開始できないときがあり、遅延原因を特定する上でその遅延の有無を監視することが好ましいからである。
【０１００】
（Ｓ１３４）グラフ生成部１２３は、ステップＳ１３３が終了した時点の空き区画の割合を算出し、空き区画の割合が閾値以上であるか判断する。条件を満たす場合はステップＳ１３５に処理を進め、条件を満たさない場合は処理を終了する。
【０１０１】
（Ｓ１３５）データ取得部１２１は、ジョブ管理サーバ２００にアクセスし、ジョブ管理サーバ２００から履歴情報（履歴情報テーブル２１４）を取得する。
（Ｓ１３６）グラフ生成部１２３は、履歴情報テーブル２１４に基づいて、各ジョブの過去所定回数（例えば、過去１ヶ月分）の実行時間の分散度を算出する。分散度を表す指標として、例えば、統計学上の分散や標準偏差などを用いることができる。例えば、グラフ生成部１２３は、履歴情報テーブル２１４に記載された終了時刻と開始時刻の差から各回の実行時間を算出し、実行時間の分布を求める。なお、グラフ生成部１２３は、まだ監視ポイントに設定されていないジョブについてのみ分散度を算出してもよい。
【０１０２】
（Ｓ１３７）グラフ生成部１２３は、まだ監視ポイントに設定されていないジョブを、ステップＳ１３６で算出した分散度が大きい順に並べる。そして、グラフ生成部１２３は、分散度が大きい方から、ステップＳ１３３が終了した時点の空き区画数だけジョブを選択し、選択したジョブを監視ポイントに追加する。なお、このようなジョブを監視ポイントに追加するのは、他のジョブより遅延するリスクが大きいためである。
【０１０３】
図１５は、監視ポイントの追加例を示す図である。
ここでは、上記のステップＳ１２において粒度ｎ＝４に決定された場合を考える。前述のように、粒度ｎ＝４の場合、始点および終点であるジョブ１，１３に加えて、先行ジョブ数が４であるジョブ７が監視ポイントに設定される。その後、上記のステップＳ１３１，Ｓ１３３，Ｓ１３７の何れかにおいて、ジョブ６が監視ポイントに追加されたとする。
【０１０４】
すると、ジョブ１，６，７，１３がグラフ上に表示される。ジョブ１，７間には、４個のジョブ（ジョブ２〜５）が省略されている。ジョブ６，１３間には、５個のジョブ（ジョブ８〜１２）が省略されている。ジョブ７，１３間には、４個のジョブ（ジョブ９〜１２）が省略されている。粒度ｎを１つずつ上げていくと、ある時点で監視ポイントの候補が大きく減少して監視ポイントが少なくなり過ぎるおそれがある。そこで、上記のように監視ポイントを追加することで、グラフのノード数を適切な水準に調整できる。
【０１０５】
図１６は、前後判定の手順例を示すフローチャートである。図１６に示すフローチャートの処理が、上記のステップＳ１４において実行される。
（Ｓ１４０）グラフ生成部１２３は、監視ポイントを１つ選択する。
【０１０６】
（Ｓ１４１）グラフ生成部１２３は、ジョブ情報テーブル２１３を参照して、ステップＳ１４０で選択した監視ポイントの先行ジョブを列挙する。
（Ｓ１４２）グラフ生成部１２３は、省略ジョブリストを初期化する。すなわち、グラフ生成部１２３は、選択した監視ポイントに対応する空の省略ジョブリストを用意する。以下のステップＳ１４３〜Ｓ１４６は、先行ジョブ毎に再帰的に実行される。
【０１０７】
（Ｓ１４３）グラフ生成部１２３は、着目している先行ジョブが監視ポイントに設定されているか判断する。監視ポイントである場合はステップＳ１４６に処理を進め、監視ポイントでない（省略ジョブである）場合はステップＳ１４４に処理を進める。
【０１０８】
（Ｓ１４４）グラフ生成部１２３は、当該先行ジョブを省略ジョブリストに登録する。
（Ｓ１４５）グラフ生成部１２３は、ジョブ情報テーブル２１３を参照して、着目している先行ジョブの更に前の先行ジョブを列挙する。そして、グラフ生成部１２３は、新たに列挙した先行ジョブそれぞれについて、ステップＳ１４３〜Ｓ１４６の手続きを再帰的に呼び出す。このとき、現時点の省略ジョブリストを先行ジョブ毎にコピーする。
【０１０９】
（Ｓ１４６）グラフ生成部１２３は、着目している先行ジョブを、ステップＳ１４０で選択した監視ポイントの先行監視ポイントに決定する。そして、グラフ生成部１２３は、ステップＳ１４０で選択した監視ポイントから当該先行監視ポイントへ至る経路についてのステップＳ１４３〜Ｓ１４６の再帰処理を終了する。
【０１１０】
以上のステップＳ１４３〜Ｓ１４６を再帰的に実行することで、ステップＳ１４０で選択された監視ポイントに対して、１または２以上の先行監視ポイントが決定される。先行監視ポイントへ至るまでに辿った経路の数だけ省略ジョブリストが作成される。
【０１１１】
（Ｓ１４７）グラフ生成部１２３は、同じ先行監視ポイント毎に１または２以上の省略ジョブリストに登録されたジョブを集計し、省略ジョブ数を求める。
（Ｓ１４８）グラフ生成部１２３は、ステップＳ１４０において全ての監視ポイントを選択したか判断する。未選択の監視ポイントがある場合はステップＳ１４０に処理を進め、全ての監視ポイントを選択した場合は処理を終了する。このようにして、監視ポイント間の前後関係と２つの監視ポイントの間の省略ジョブ数を決定することができる。グラフ生成部１２３は、決定した前後関係と省略ジョブ数に基づいて、監視ポイントに対応するノードを含みリンクに省略ジョブ数が記載されたグラフを生成できる。
【０１１２】
図１７は、ノードの自動再配置の例を示す図である。
制御情報テーブル１１２に自動再配置＝ＯＮと記載されている場合、上記のステップＳ１６において監視ポイントに対応するノードが詰めて配置される。例えば、グラフ生成部１２３は、表示領域の左上の区画である座標（１，１）に、始点に対応するノードを配置する。また、グラフ生成部１２３は、後続の監視ポイントに対応するノードを、既にノードが配置された区画よりも右側（ｘ軸の正方向）に配置する。後続の監視ポイントが複数ある場合、グラフ生成部１２３は、２番目以降の後続の監視ポイントを１番目の後続の監視ポイントより下側（ｙ軸の正方向）に配置する。ただし、上記の配置方法は一例であり、グラフ生成部１２３は、グラフが見やすくなるように様々な配置方法を採用できる。
【０１１３】
次に、図９の手順例に従って監視フロー画面４４にグラフが表示された後、ユーザ操作に応じて表示形態を変更する例について説明する。
図１８は、粒度変更の手順例を示すフローチャートである。
【０１１４】
（Ｓ２０）操作検出部１２２は、監視フロー画面４４に対するユーザ操作を検出すると、当該ユーザ操作がグラフ全体の粒度を変更するものであるか判断する。全体の粒度を変更するユーザ操作としては、例えば、何れのリンクも選択せずにマウスのスクロールホイールを回転させる操作などが挙げられる。全体の粒度を変更する操作である場合はステップＳ２１に処理を進め、それ以外の場合はステップＳ２４に処理を進める。
【０１１５】
（Ｓ２１）グラフ生成部１２３は、ユーザ操作に応じて、制御情報テーブル１１２に記載された粒度ｎを更新する。例えば、グラフ生成部１２３は、スクロールホイールを特定の方向に回転させるユーザ操作が検出されたとき、粒度ｎを１つ減少（デクリメント）させる。粒度ｎが減少すると、グラフ上に表示されるノードの数が増加する。また、例えば、グラフ生成部１２３は、スクロールホイールを上記とは逆方向に回転させるユーザ操作が検出されたとき、粒度ｎを１つ増加（インクリメント）させる。
【０１１６】
（Ｓ２２）グラフ生成部１２３は、制御情報テーブル１１２に記載された部分粒度ｎｐを破棄する。例えば、グラフ生成部１２３は、部分粒度ｎｐを粒度ｎと一致させる。
（Ｓ２３）グラフ生成部１２３は、更新後の粒度ｎに基づいてグラフを生成する。グラフの生成は、図９と同様の手順で行うことができる。ただし、ステップＳ１２では、図１１の手順に従って粒度ｎを決定するのではなく、ステップＳ２１で決定された粒度ｎと各ジョブの先行ジョブ数および後続ジョブ数とを比較して、監視ポイントを選択する。粒度変更時のグラフ生成では、ステップＳ１３の処理（監視ポイントの追加）を行わないようにしてもよい。表示制御部１２４は、監視フロー画面４４の表示領域を再描画して、生成されたグラフが表示されるようにする。このとき、粒度変更後のグラフの全体を表示領域に収容できるとは限らない。そして、粒度変更の処理を終了する。
【０１１７】
（Ｓ２４）操作検出部１２２は、検出された監視フロー画面４４に対するユーザ操作がグラフの一部分の粒度を変更するものであるか判断する。グラフの一部分の粒度を変更するユーザ操作としては、例えば、１つのリンクを選択してマウスのスクロールホイールを回転させる操作などが挙げられる。一部分の粒度を変更する操作である場合はステップＳ２５に処理を進め、それ以外の場合は粒度変更の処理を終了する。
【０１１８】
（Ｓ２５）グラフ生成部１２３は、ユーザ操作に応じて、制御情報テーブル１１２に記載された部分粒度ｎｐを更新する。例えば、グラフ生成部１２３は、スクロールホイールを特定の方向に回転させるユーザ操作が検出されたとき、部分粒度ｎｐを１つ減少（デクリメント）させる。部分粒度ｎｐが減少すると、グラフ上に表示されるノードの数が増加する。また、例えば、グラフ生成部１２３は、スクロールホイールを上記とは逆方向に回転させるユーザ操作が検出されたとき、部分粒度ｎｐを１つ増加（インクリメント）させる。なお、部分粒度ｎｐの初期値は粒度ｎと同じである。
【０１１９】
（Ｓ２６）グラフ生成部１２３は、ジョブ情報テーブル２１３から、ユーザが選択した箇所の省略されたジョブを検索する。例えば、グラフ生成部１２３は、選択されたリンクの両端の監視ポイントの間に実行されるジョブを検索する。
【０１２０】
（Ｓ２７）グラフ生成部１２３は、更新後の部分粒度ｎｐに基づいて、選択された箇所に相当する部分グラフを生成する。部分グラフの生成は、ステップＳ２３と同様の手順で行うことができる。ただし、処理対象とするジョブが、ユーザが選択した箇所に属するもの（図９の手順によって当初省略されたジョブを含む）に限定される。表示制御部１２４は、監視フロー画面４４の表示領域を再描画して、生成された部分グラフを含むグラフが表示されるようにする。このとき、部分粒度変更後のグラフの全体を表示領域に収容できるとは限らない。そして、粒度変更の処理を終了する。
【０１２１】
図１９は、部分的な粒度変更の例を示す図である。
ここでは、最初にグラフが生成されたときの粒度ｎが３であるとする。前述のように、粒度ｎ＝３の場合は、ジョブ９，１３間に３個のジョブが省略される。ユーザは、ジョブ９，１３間に存在するジョブの実行状況を確認したい場合、ジョブ９，１３間のリンクを選択して部分粒度ｎｐを減少させる操作（例えば、マウスのスクロールホイールの回転）を行う。選択された箇所の部分粒度ｎｐが１に変更されると、ジョブ９，１３間に存在する省略されていたジョブ１０〜１２が、グラフ上に表示されるようになる。
【０１２２】
次に、アクティブ監視モードでのグラフ生成について説明する。
図２０は、アクティブ監視の手順例を示すフローチャートである。
ステップＳ３０〜Ｓ４０のうち、ステップＳ３０，Ｓ３４〜４０は、図９のグラフ生成におけるステップＳ１０，Ｓ１２〜Ｓ１８と同様であるため説明を省略する。
【０１２３】
（Ｓ３１）グラフ生成部１２３は、制御情報テーブル１１２にアクティブ監視モード＝ＯＮと記載されていることを確認する。すると、グラフ生成部１２３は、ジョブ情報テーブル２１３の中から制御情報テーブル１１２に登録されたユーザ指定ジョブを検索し、検索されたユーザ指定ジョブを監視ポイントに設定する。アクティブ監視モードでは、始点のジョブおよび終点のジョブは、監視ポイントに設定しなくてよい。
【０１２４】
（Ｓ３２）グラフ生成部１２３は、ジョブ情報テーブル２１３の中から実行中のジョブおよび異常終了したジョブを検索し、検索されたジョブを監視ポイントに設定する。
（Ｓ３３）グラフ生成部１２３は、ステップＳ３１，Ｓ３２で設定された監視ポイントに基づいて、ユーザ指定ジョブと実行中ジョブと異常終了ジョブとを含む最小の範囲（アクティブエリア）を判定する。例えば、グラフ生成部１２３は、ステップＳ３１，Ｓ３２で設定された監視ポイントの集合の中で最も早く実行される監視ポイントをアクティブエリアの先頭とし、最も遅く実行される監視ポイントをアクティブエリアの末尾とする。そして、グラフ上で上記の先頭と末尾の間に表示されるべきジョブ（先頭を示す縦線と末尾を示す縦線とに挟まれる範囲）をアクティブエリアに属するジョブとする。アクティブエリアには、始点のジョブおよび終点のジョブが含まれなくてもよい。以降、ステップＳ３４〜Ｓ４０の処理が、アクティブエリアに属するジョブに限定して実行される。
【０１２５】
図２１は、アクティブ監視モードの例を示す図である。
ここでは、ジョブ２が実行中でありジョブ８が異常終了したものとする。また、ユーザ指定ジョブは存在しないとする。すると、ジョブ２を先頭としジョブ８を末尾とするアクティブエリアが設定される。このアクティブエリアには、ジョブ２〜８が含まれる。
【０１２６】
アクティブ監視モードでは、アクティブエリアに属するジョブの中から監視ポイントが選択され、アクティブエリアの外にあるジョブからは監視ポイントが選択されない。監視フロー画面４４には、アクティブエリアが拡大されて表示されることになる。図２１の例の場合、始点および終点であるジョブ１，１３はグラフ上に表示されない。粒度ｎ＝２と決定された場合、アクティブエリアに属するジョブ２〜８のうち、ジョブ３〜５が省略されてジョブ２，６〜８が監視ポイントに設定される。この場合、監視フロー画面４４には、ジョブ２，６〜８に対応するノードを含むグラフが表示される。
【０１２７】
第２の実施の形態のシステムによれば、システムに登録されたジョブの一部分が自動的に選択され、監視フロー画面４４のグラフ上に表示するジョブが限定される。よって、システムに登録されたジョブが多い場合であっても、グラフに含まれるノードを減らすことができ、それらのジョブを含む業務フロー全体を１画面内で俯瞰することが可能となる。また、ジョブが予め監視に適した形式に階層化されていない場合であっても、監視ポイントが自動的に限定されて、理解容易なグラフが生成される。
【０１２８】
また、ジョブの実行状況を監視する上で重要である可能性が高いジョブが監視ポイントとして自動的に抽出され、有用性の高いグラフが生成される。例えば、先行ジョブが多い待ち合わせ点や後段ジョブが多い分岐点など、マイルストーンとなるジョブが抽出される。また、所定の種類の開始条件が設定されたジョブや実行時間のばらつきの大きいジョブなど、業務フローが遅延する原因となり得るジョブが抽出される。また、アクティブ監視モードを利用することで、実行中ジョブと異常終了ジョブを含むアクティブエリアに限定して拡大されたグラフを表示させることができる。通常モードのグラフとアクティブ監視モードのグラフを併用することで、ユーザによるジョブ監視が一層容易になる。
【０１２９】
［第３の実施の形態］
第３の実施の形態を説明する。前述の第２の実施の形態との違いを中心に説明し、第２の実施の形態と同様の事項については説明を省略する。前述の第２の実施の形態のシステムでは、クライアント１００がジョブ管理サーバ２００からジョブ情報や履歴情報を取得し、ジョブ監視用のグラフを生成することとした。これに対し、第３の実施の形態では、ジョブ管理サーバがクライアントからの要求に応じてジョブ監視用のグラフを生成する。
【０１３０】
図２２は、クライアントとジョブ管理サーバの他の機能例を示すブロック図である。
第３の実施の形態のシステムは、クライアント１００ａおよびジョブ管理サーバ２００ａを含む。クライアント１００ａは第２の実施の形態のクライアント１００に対応し、ジョブ管理サーバ２００ａは第２の実施の形態のジョブ管理サーバ２００に対応する。
【０１３１】
クライアント１００ａは、制御情報記憶部１１１、操作検出部１２２、表示制御部１２４およびグラフ取得部１２５を有する。第２の実施の形態のクライアント１００と異なり、クライアント１００ａはグラフ生成部１２３を有しない。
【０１３２】
グラフ取得部１２５は、操作検出部１２２からグラフ生成が要求されると、ジョブ管理サーバ２００ａに当該要求を転送する。このとき、グラフ取得部１２５は、制御情報記憶部１１１に記憶されていた制御情報（制御情報テーブル１１２）をジョブ管理サーバ２００ａに送信する。また、グラフ取得部１２５は、ジョブ管理サーバ２００ａからグラフの情報を取得すると、グラフを操作検出部１２２に提供する。これにより、ジョブ管理サーバ２００ａで生成されたグラフがディスプレイ４１に表示される。
【０１３３】
ジョブ管理サーバ２００ａは、ジョブ情報記憶部２１１、履歴情報記憶部２１２、グラフ生成部２２２およびグラフ提供部２２３を有する。
グラフ生成部２２２は、グラフ提供部２２３からグラフ生成が要求されると、ジョブ情報記憶部２１１に記憶されたジョブ情報テーブル２１３とクライアント１００ａから受信された制御情報とに基づいてグラフを生成する。グラフ生成部２２２は、履歴情報記憶部２１２に記憶された履歴情報テーブル２１４を参照することもある。グラフ生成部２２２によるグラフ生成の手順は、第２の実施の形態のグラフ生成部１２３が行うものと同様である。グラフ生成部２２２は、生成したグラフをグラフ提供部２２３に提供する。
【０１３４】
グラフ提供部２２３は、クライアント１００ａからグラフ生成の要求を受信すると、当該要求をグラフ生成部２２２に通知する。グラフ生成の要求には、制御情報記憶部１１１に記憶されていた制御情報が付加されている。また、グラフ提供部２２３は、グラフ生成部２２２で生成されたグラフの情報をクライアント１００ａに送信する。
【０１３５】
第３の実施の形態のシステムによれば、第２の実施の形態のシステムと同様の効果が得られる。更に、第３の実施の形態のシステムによれば、ジョブの実行状況の可視化がジョブ管理サーバ２００ａで行われるため、クライアント１００ａの負荷を抑制できる。また、クライアント１００ａにグラフ生成のためのソフトウェアモジュールを組み込んでおかなくてもよく、クライアント１００ａの構成を簡素化でき保守管理が容易になる。
【０１３６】
なお、前述のように、第１の実施の形態の情報処理は、情報処理装置１０にプログラムを実行させることで実現することができる。また、第２の実施の形態の情報処理は、クライアント１００およびジョブ管理サーバ２００にプログラムを実行させることで実現することができる。また、第３の実施の形態の情報処理は、クライアント１００ａおよびジョブ管理サーバ２００ａにプログラムを実行させることで実現することができる。
【０１３７】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体４３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムを複製して（インストールして）実行してもよい。
【符号の説明】
【０１３８】
１０  情報処理装置
１１  記憶部
１２  生成部
１３  ジョブ情報
１４  グラフ
Ｊ１〜Ｊ７  ジョブ
【図１】
2014229183.tif 000003
【図２】
2014229183.tif 000004
【図３】
2014229183.tif 000005
【図４】
2014229183.tif 000006
【図５】
2014229183.tif 000007
【図６】
2014229183.tif 000008
【図７】
2014229183.tif 000009
【図８】
2014229183.tif 000010
【図９】
2014229183.tif 000011
【図１０】
2014229183.tif 000012
【図１１】
2014229183.tif 000013
【図１２】
2014229183.tif 000014
【図１３】
2014229183.tif 000015
【図１４】
2014229183.tif 000016
【図１５】
2014229183.tif 000017
【図１６】
2014229183.tif 000018
【図１７】
2014229183.tif 000019
【図１８】
2014229183.tif 000020
【図１９】
2014229183.tif 000021
【図２０】
2014229183.tif 000022
【図２１】
2014229183.tif 000023
【図２２】
2014229183.tif 000024