(57)【特許請求の範囲】
【請求項１】
前段にあたる１以上のジョブが実行されたことを条件として後段にあたる１以上のジョブが実行されるように依存関係が定められた複数のジョブにより実現される命令を複合命令として、ユーザによる複合命令の入力を検出する複合命令取得部と、
前記複合命令が入力されたとき前記複数のジョブを所定の準備領域に登録する準備登録部と、
前記複数のジョブの依存関係を定めるジョブ関係情報を参照して前記複数のジョブのうち実行可能な状態にあるジョブを特定し、前記特定したジョブを前記準備領域から所定の待機領域に登録変更する待機登録部と、
前記待機領域に登録されているジョブから実行対象となるジョブを選択し、前記選択したジョブを実行させる実行制御部と、を備え、
前記準備登録部は、ジョブの実行後、新たに実行可能な状態となったジョブを前記準備領域から前記待機領域に登録変更し、
第１のユーザにより第１の複合命令が入力された後、第２のユーザにより第２の複合命令が入力されたとき、
前記準備登録部は、第１の複合命令に基づく複数のジョブを前記準備領域に登録した後、第２の複合命令に基づく複数のジョブを第１の複合命令に基づく複数のジョブと同様、前記準備領域に登録し、
前記待機登録部は、第１の複合命令に基づく複数のジョブと第２の複合命令に基づく複数のジョブとを含む複数のジョブのうちから実行可能な状態にあるジョブを特定することを特徴とするジョブ管理装置。
【請求項２】
前記待機登録部が実行可能な状態にあるジョブを特定する処理と、前記実行制御部が実行対象となるジョブを選択する処理は、時間的に並行して実行されることを特徴とする請求項１に記載のジョブ管理装置。
【請求項３】
第１のユーザにより第１の複合命令が入力された後、第２のユーザにより第２の複合命令が入力された状況において、
前記待機登録部は、前記第１の複合命令に基づくジョブに優先して前記第２の複合命令に基づくジョブを前記準備領域から前記待機領域に登録変更可能であることを特徴とする請求項１または２に記載のジョブ管理装置。
【請求項４】
前記実行制御部は、前記第１の複合命令に基づくジョブに優先して前記第２の複合命令に基づくジョブを実行可能であることを特徴とする請求項３に記載のジョブ管理装置。
【請求項５】
前記待機登録部は、前記ジョブ関係情報を参照して、前段にあたるジョブが存在しないジョブ、または、前段にあたるジョブが実行済みのジョブを実行可能な状態にあると判定することを特徴とする請求項１から４のいずれかに記載のジョブ管理装置。
【請求項６】
前記複合命令に基づくジョブの実行状態を画面表示させる状態通知部、を更に備えることを特徴とする請求項１から５のいずれかに記載のジョブ管理装置。
【請求項７】
前記待機領域は、登録の古い順に実行対象となるジョブが選択されるキュー構造として構成されることを特徴とする請求項１から６のいずれかに記載のジョブ管理装置。
【請求項８】
前段にあたる１以上のジョブが実行されたことを条件として後段にあたる１以上のジョブが実行されるように依存関係が定められた複数のジョブにより実現される命令を複合命令として、ユーザによる複合命令の入力を検出する処理と、
前記複合命令が入力されたとき前記複数のジョブを所定の準備領域に登録する処理と、
前記複数のジョブの依存関係を定めるジョブ関係情報を参照して前記複数のジョブのうち実行可能な状態にあるジョブを特定し、前記特定したジョブを前記準備領域から所定の待機領域に登録変更する処理と、
前記待機領域に登録されているジョブから実行対象となるジョブを選択し、前記選択したジョブを実行させる処理と、
をコンピュータに実行させ、
前記登録する処理は、ジョブの実行後、新たに実行可能な状態となったジョブを前記準備領域から前記待機領域に登録変更し、
第１のユーザにより第１の複合命令が入力された後、第２のユーザにより第２の複合命令が入力されたとき、
前記登録する処理は、第１の複合命令に基づく複数のジョブを前記準備領域に登録した後、第２の複合命令に基づく複数のジョブを第１の複合命令に基づく複数のジョブと同様、前記準備領域に登録し、
前記登録変更する処理は、第１の複合命令に基づく複数のジョブと第２の複合命令に基づく複数のジョブとを含む複数のジョブのうちから実行可能な状態にあるジョブを特定することを特徴とするジョブ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、業務情報システムに関連し、特に、ジョブの実行効率を向上させるための技術、に関する。
【背景技術】
【０００２】
企業や公共施設などの運用を支える業務情報システム、いわゆるエンタープライズシステム（Enterprise System）は、今や、大小さまざまな組織の基盤となっている。業務情報システムは、ノード端末やデータベースから得られるデータを集計、蓄積、解析、加工した上でより付加価値の高い情報を出力することにより、複雑化する組織マネジメントを支えている。
【０００３】
業務情報システムは、ジョブ（Job）の集合体としてモデリングされることが多い。ジョブとは、データベースの更新処理や、各ノード端末から得られたデータに対する演算処理など、システムにおける基本的な実行単位である。業務情報システムによっては、ジョブの数は数千から時には数万にも及ぶ。
【０００４】
また、業務情報システムには、さまざまな「命令」が入力される。命令には、１つのジョブを実行するだけで完結する命令（以下、「単一命令」とよぶ）もあれば、複数のジョブが連続的に実行される命令（以下、「複合命令」とよぶ）もある。
【特許文献１】特開２００２−３５８２２４号公報
【特許文献２】特開２００６−２６８５０７号公報
【特許文献３】特開２００７−２６５０２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
更に、命令には、定期的に実行される命令（以下、「定期命令」とよぶ）もあれば、ユーザの指示等に基づき不定期的に実行される命令（以下、「不定期命令」とよぶ）もある。不定期命令をサポートする業務情報システムの場合、短期間に多くの不定期命令が入力されると、一時的に大量のジョブを実行する必要が生じるため、急激に処理負荷が上昇しやすい。特に、短期間に多くの複合命令が入力されると、このような問題が顕在化しやすい。
【０００６】
本発明は、上記課題に鑑みて完成された発明であり、その主たる目的は、命令、特に、複合命令が短期間に集中して入力される状況において、ジョブの処理効率を向上させるための技術、を提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある態様は、ジョブ管理装置に関する。
この装置は、ユーザから複合命令が入力されたとき、複合命令に関わる複数のジョブを準備領域に登録し、準備領域のジョブのうち実行可能な状態にあるジョブを準備領域から所定の待機領域に登録変更し、待機領域のジョブから実行対象となるジョブを選択して実行させる。ジョブの実行後に新たに実行可能な状態となったジョブは、準備領域から待機領域に登録変更される。
【０００８】
なお、以上に示した各構成要素の任意の組み合わせ、本発明を方法、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、複合命令が短期間に集中して入力される状況において、ジョブの処理効率を向上させやすくなる。
【発明を実施するための最良の形態】
【００１０】
図１は、資産管理業務の概要図である。
以下、資産管理業務を支援するための業務情報システムに基づいて、本発明の実施態様を説明する。本実施例における資産管理業務とは、顧客の資産を預かり、顧客に代わって資産を運用することにより、顧客から手数料収入を取得するビジネスである。資産運用部門のスタッフは、「フロントオフィス」と「バックオフィス」に大別される。
【００１１】
フロントオフィスは、金融市場の動向を分析し、資産の運用方針を決定する。バックオフィスは、フロントオフィスからの指示にしたがって、金融取引を執行する。たとえば、フロントオフィスのスタッフが、顧客Ａの勘定による株式Ｂの買い増しをバックオフィスに指示すると、バックオフィスのスタッフは、資産運用システム２００を介して、株式Ｂの買い注文を発行する。資産運用システム２００は、株式等の注文、運用成果の算出、顧客送付用レポートの作成といったさまざまなバックオフィス業務を支援するための業務情報システムである。
【００１２】
図２は、資産運用システム２００のハードウェア構成図である。
資産運用システム２００は、ジョブ管理装置１００、ジョブ実行装置群２２０および外部記憶装置２１０を含む。ジョブ管理装置１００、ジョブ実行装置群２２０および外部記憶装置２１０は通信ネットワークにより互いに接続されている。
ジョブ管理装置１００は、各ジョブをジョブ実行装置群２２０に実行させる。ジョブ実行装置群２２０は、複数のジョブ実行装置２０２を含む。各ジョブ実行装置２０２は、ジョブ管理装置１００から割り当てられたジョブを実行する。ジョブ管理装置１００は、あらかじめ定められた割当ルールに応じて、いずれかのジョブ実行装置２０２にジョブを割り当ててもよい。あるいは、各ジョブ実行装置２０２の処理負荷が平準化されるように、他のジョブ実行装置２０２よりも処理負荷が軽い状態にあるジョブ実行装置２０２に対して優先的にジョブを割り当ててもよい。
ジョブを構成するプログラムはあらかじめジョブ実行装置２０２が保持しておいてもよい。あるいは、ジョブ実行指示に際してジョブ管理装置１００からジョブ実行装置２０２にプログラムをダウンロードしてもよい。ジョブ実行装置２０２は、ジョブの実行状態をジョブ管理装置１００に適宜通知する。
【００１３】
外部記憶装置２１０は、業務のためのさまざまなデータを保存する。ジョブ実行装置２０２は、ジョブの実行に際して、外部記憶装置２１０とデータを送受する。また、ジョブ実行装置２０２は、外部記憶装置２１０から取得したデータや図示しない他のデータベース、ノード端末等から取得したデータに基づいてジョブを実行する。
【００１４】
まとめると、外部記憶装置２１０のデータを変数として、ジョブ実行装置２０２はさまざまなジョブを実行する。ジョブ管理装置２３０は、各ジョブの実行条件に基づいてジョブの実行タイミングを制御する。このように、外部記憶装置２１０から得られるデータに基づいて、複数のジョブがスケジュールにしたがって実行されることにより、資産運用システム２００全体の運用がなされている。
【００１５】
図３は、運用成果計算命令におけるジョブの依存関係を示す図である。
バックオフィスは、資産運用システム２００、より具体的にはジョブ管理装置１００にさまざまな命令を入力する。このうち、特定の顧客に関する運用成果の算出を指示するための命令（以下、「運用成果計算命令」とよぶ）は、複数のジョブが連携することにより実現される命令、すなわち、「複合命令」である。
【００１６】
運用成果計算命令は、以下の５つのジョブから構成される。
ジョブ１（Ｊ１）：外部記憶装置２１０から取得した顧客による株式の取引を、取引履歴の形式にフォーマット変換する。
ジョブ２（Ｊ２）：株式の属性情報を外部記憶装置２１０（ファイル等）から取得して、外部記憶装置２１０（データベース等）に記録する。属性情報とは、企業合併における株式交換や株式分割等に基づく株式銘柄の属性変更を示す情報である。
ジョブ３（Ｊ３）：ジョブ１で取得した取引履歴を参照し、保有銘柄の口数と平均取得単価を計算する。また、ジョブ２で取得した属性情報を参照し、保有銘柄に発生した事象に基づいて、保有銘柄の口数や平均取得単価を補正する。
ジョブ４（Ｊ４）：保有銘柄の時価情報を外部記憶装置２１０（ファイル等）から取得して、外部記憶装置２１０（データベース等）に記録する。
ジョブ５（Ｊ５）：ジョブ３で計算された保有銘柄の口数と平均取得単価、ジョブ４で取得された時価情報に基づいて、顧客資産を時価評価し、運用成果ファイルを生成する。
バックオフィスは、生成された運用成果ファイルをフロントオフィス等に送信する。運用成果計算命令にしたがって上記５つのジョブが連続的に実行される処理を「運用成果計算処理」とよぶ。
以下、運用成果計算処理のように、複合命令にしたがって複数のジョブが連続的に実行される処理のことを「複合処理」とよぶ。
【００１７】
ジョブ５は、ジョブ３とジョブ４が完了したことを条件として実行される。以下、「ジョブＡの実行完了」を実行開始条件とするジョブＢのことを、ジョブＡの「後行ジョブ」とよぶ。また、ジョブＡのことをジョブＢの「先行ジョブ」とよぶ。同図の場合、ジョブ３やジョブ４は、ジョブ５にとって先行ジョブである。また、ジョブ１とジョブ２は、ジョブ３にとって先行ジョブである。
【００１８】
ジョブ管理装置１００は、ジョブの依存関係とジョブの実行状況に応じて、各ジョブの実行可否を判定しながら、実行可能なジョブをジョブ実行装置２０２に次々と実行させる。同図によれば、ジョブ１、ジョブ２およびジョブ４には、先行ジョブがない。このため、ジョブ１、ジョブ２およびジョブ４はいつでも実行開始可能である。以下、このような先行ジョブを持たないジョブのことを「先頭ジョブ」とよぶ。
【００１９】
図４は、図３に示したジョブの依存関係を設定するジョブ関係情報２４０のデータ構造図である。
ジョブ関係情報２４０において、対象ジョブ欄２５４は、図３に示したジョブ１〜５の５つのジョブを示す。先行ジョブ欄２５６は、対象ジョブ欄２５４に示す各ジョブの先行ジョブを示す。同図によれば、ジョブ１、ジョブ２、ジョブ４に先行ジョブはない。このため、これらのジョブは先頭ジョブである。ジョブ３の先行ジョブはジョブ１とジョブ２である。また、ジョブ４の先行ジョブはジョブ３とジョブ４である。ジョブ関係情報２４０においては、このような形式にてジョブ間の依存関係が定義されている。
【００２０】
ジョブ管理装置１００は、ジョブ関係情報２４０を参照することにより、先頭ジョブか、先行ジョブの全てが完了しているジョブを「実行可能な状態にあるジョブ」として選択し、ジョブ実行装置２０２に実行指示する。
【００２１】
複合命令の処理時間は、単一命令に比べると格段に長くなりやすい。このため、ジョブ管理装置１００は、「ユーザインタフェースに関する処理」と「ジョブの実行に関する処理」を非同期的に実行する。たとえば、運用成果計算命令が入力されると、ジョブ管理装置１００は、まず、運用成果計算処理をバックグラウンド処理として実行させる。たとえば、ジョブ１、ジョブ２、ジョブ３、ジョブ４、ジョブ５の順に実行可能なジョブから順次実行させる。運用成果計算処理をバックグラウンドで実行されるため、ジョブ１の開始後、新たな命令を受け付け可能となる。顧客Ａについて運用成果計算処理中に、顧客Ｂ、Ｃについての運用成果計算命令を入力することもできる。
【００２２】
以下においては、まず、図５から図７に関連して、複合処理の一般的な処理過程とその問題点について指摘する。そして、図８以降に関連して、本実施例における複合処理の処理方法について説明する。
【００２３】
図５は、複合処理の一般的な処理過程である第１方法を示すフローチャートである。
図５に示す複合処理方法を「第１方法」とよぶ。ここでは、２つの複合命令が連続入力されたとして説明する。まず、ジョブ管理装置１００は、ＵＩ（ユーザインタフェース）処理として複合命令を受信し（Ｓ１０）、この複合命令により実行すべきジョブを登録する（Ｓ１２）。運用成果計算処理であれば、上述したジョブ１〜５が登録される。ジョブ管理装置１００は、ＵＩ処理とは別プロセスとしてジョブ処理が実行される。ジョブ管理装置１００のＵＩ処理は、ジョブ処理に複合処理の実行を指示する（Ｓ１４）。ジョブ処理は、ＵＩ処理のバックグラウンド処理として実行されるため、Ｓ１４の指示後、ＵＩ処理は次の命令を受け付け可能となる。
【００２４】
新たな複合命令を受信すると（Ｓ１６）、この複合命令についてのジョブを登録し（Ｓ１８）、複合処理の実行を指示する（Ｓ２０）。以下、Ｓ１０にて受信された複合命令を「第１命令」、Ｓ１６にて受信された複合命令を「第２命令」とよぶことにする。ジョブ処理は、まず、第１命令に基づく複合処理を実行し（Ｓ３０）、複合処理が完了したとき、第１命令の入力者に完了通知する（Ｓ３２）。ジョブ処理は、次に、第２命令に基づく複合処理を実行し（Ｓ４０）、複合処理の完了後、第２命令の入力者に完了通知する（Ｓ４２）。
【００２５】
図６は、図５のＳ３０およびＳ４０における複合処理の詳細な処理過程を示すフローチャートである。
Ｓ１２やＳ１８で登録された、実行すべきジョブのうち、実行可能な状態にあるジョブが選択され（Ｓ４４）、選択されたジョブがジョブ実行装置２０２にて実行される（Ｓ４６）。複合処理が未完了であれば（Ｓ４８のＮ）、処理はＳ４４に戻り次に実行すべきジョブが選択される。複合処理が完了していれば（Ｓ４８のＹ）、図５のＳ３２やＳ４２に示したように複合処理の完了が通知される。
【００２６】
このような処理方法には、以下の問題点がある。
Ｄ１．複合命令を入力してから完了通知を受け取るまでの時間が過度に長くなりやすい。
第２命令の入力者は、第１命令に基づく複合処理を待たなければならない。図５では、第２命令に基づく複合処理（Ｓ４０）は、第１命令に基づく複合処理（Ｓ３０）が完了していなければ開始されない。第２命令以後にも連続して複合命令が入力された場合、最後の入力者が完了通知を受け取るまでの時間は非常に長くなる可能性がある。
Ｄ２．プログラムの可読性が悪い。
図６のＳ４４に示すように、「実行可能なジョブ（以下、「待機ジョブ」とよぶ）を特定する処理」と「実行対象となるジョブ（以下、「実行ジョブ」とよぶ）を特定する処理」が一体化されている。このため、プログラムコードのうち、「待機ジョブを特定する処理」の該当部分と「実行ジョブを特定する処理」の該当部分を判別しにくくなる。当初においては、両部分がコード上明快であっても、長年の保守作業の結果として、両部分が混在化する可能性がある。
【００２７】
図７は、複合処理の一般的な処理過程である第２方法を示すフローチャートである。
図７に示す複合処理方法を「第２方法」とよぶ。ここでも、２つの複合命令が連続して入力されたとして説明する。まず、ジョブ管理装置１００は、ＵＩ処理として複合命令（第１命令）を受信し（Ｓ１０）、この複合命令により実行すべきジョブを登録する（Ｓ１２）。ジョブ管理装置１００は、ＵＩ処理とは別プロセスとして第１ジョブ処理を起動する。ジョブ管理装置１００のＵＩ処理は、第１ジョブ処理に対し、第１命令についての複合処理の実行を指示する（Ｓ１４）。指示後、ＵＩ処理は次の命令を受け付け可能となる。第１ジョブ処理は、第１命令に基づく複合処理を開始する（Ｓ３０）。
【００２８】
ＵＩ処理として、新たな複合命令（第２命令）を受信すると（Ｓ１６）、この複合命令についてのジョブを登録する（Ｓ１８）。ジョブ管理装置１００は、ＵＩ処理や第１ジョブ処理とは別プロセスとして第２ジョブ処理を起動する。ジョブ管理装置１００のＵＩ処理は、第２ジョブ処理に第２命令についての複合処理の実行を指示する（Ｓ２０）。第２ジョブ処理は、第２命令に基づく複合処理を開始する（Ｓ４０）。複合処理（Ｓ３０、Ｓ４０）の処理内容は、図６に関連して説明した内容と同様である。
【００２９】
第１方法と異なり、第２方法においては、第１命令に基づく複合処理と第２命令に基づく複合処理を別々のプロセスとして同時並列的に実行している。第１ジョブ処理と第２ジョブ処理は、それぞれの複合処理が完了後にＵＩ処理に完了通知する（Ｓ３２、Ｓ４２）。
【００３０】
第２方法によれば、第２命令の入力者は、第１命令に基づく複合処理の完了を待たなくてもよい。このため、第１方法について指摘した問題点Ｄ１をある程度解決できる。ただし、短期間に大量の複合命令が入力されると、大量のジョブ処理が起動されることになり、ジョブ処理起動にともなうオーバーヘッドが大きくなる。また、問題点Ｄ２は残存する。
【００３１】
図８は、本実施例における複合処理の概要図である。
まず、本実施例においては、準備領域２６０と待機領域２７０という２つの記録領域を用意する。いずれの領域も、ジョブ、より具体的には、ジョブを一意に識別するためのジョブＩＤが一時的に登録される記録領域である。待機領域２７０は、ＦＩＦＯ（First-In First Out）を基本原則とするキュー構造の記録領域として形成される。
【００３２】
また、本実施例においては、主として、準備登録処理（Ｐ１）、待機登録処理（Ｐ２）、実行制御処理（Ｐ３）という３つの処理が同時並行的に実行される。
準備登録処理（Ｐ１）：バックオフィスから複合命令を受け付ける。複合命令により実行すべきジョブを準備領域２６０に登録する。このような「実行すべきジョブ」を「準備ジョブ」とよぶ。たとえば、顧客Ａについての運用成果計算命令Ａ、顧客Ｂについての運用成果計算命令Ｂ、顧客Ｃについての運用成果計算命令Ｃが入力されたとする。準備登録処理では、運用成果計算命令Ａに関連する準備ジョブ群２８０ａ、運用成果計算命令Ｂに関連する準備ジョブ群２８０ｂ、運用成果計算命令Ｃに関連する準備ジョブ群２８０ｃを準備領域２６０に登録する。準備登録処理はＵＩ処理と同一プロセスにて実行される。
【００３３】
待機登録処理（Ｐ２）：準備領域２６０に登録されている準備ジョブのうち、実行可能な状態にあるジョブを特定し、「待機ジョブ」として待機領域２７０に登録変更する。各準備ジョブ群２８０についてのジョブ関係情報２４０を参照することにより「待機ジョブ」が特定される。待機登録処理（Ｐ２）では、運用成果計算命令の入力順序に関係なく、待機ジョブを選択する。同図の場合、運用成果計算命令Ｂに関わるジョブ２と、運用成果計算命令Ａに関わるジョブ２、ジョブ４が待機ジョブとして準備領域２６０から待機領域２７０に移されている。
【００３４】
実行制御処理（Ｐ３）：待機領域２７０に登録されている待機ジョブを順番に抽出し、「実行ジョブ」としていずれかのジョブ実行装置２０２に実行させる。実行ジョブの実行が完了すると、準備登録処理（Ｐ１）や待機登録処理（Ｐ２）に完了通知する。
【００３５】
待機登録処理（Ｐ２）は、定期的に準備領域２６０をチェックし、準備ジョブが準備領域２６０に登録された順序に関係なく、実行可能な状態にある準備ジョブを待機ジョブとして選択する。準備領域２６０に準備ジョブが存在しない場合や、いずれの準備ジョブも待機ジョブとならない場合には、待機登録処理（Ｐ２）はスリープする。
実行制御処理（Ｐ３）も、定期的に待機領域２７０をチェックし、準備ジョブが準備領域２６０に登録された順序に関係なく、待機ジョブが待機領域２７０に登録された順序に基づいて、実行ジョブを選択する。待機領域２７０に待機ジョブが存在しない場合には、実行制御処理（Ｐ３）はスリープする。
このように、準備ジョブを登録する処理（Ｐ１）、待機ジョブを選択する処理（Ｐ２）、実行ジョブを選択する処理（Ｐ３）はそれぞれの役割が明確化されており、準備領域２６０や待機領域２７０の内容に基づいて緩やかに連携する構成となっている。
【００３６】
このような処理方法によれば、上述した問題点Ｄ１およびＤ２を解決できる。
待機登録処理（Ｐ２）は、複合命令の受信順序に関わらず、実行可能なジョブを待機ジョブとして選択する。たとえば、第１命令に関してジョブ３の実行に時間がかかり、その後行ジョブであるジョブ５が実行できない状態にあるときには、待機登録処理（Ｐ２）は、第２命令の準備ジョブの中から待機ジョブを選択すればよい。このため、第２命令に基づく複合処理は、第１命令に基づく複合処理の完了を待つ必要がない。
【００３７】
また、複合命令が短期間に集中した場合も、第２方法のように大量の「プロセス」を起動する必要はない。準備登録処理（Ｐ２）が大量の複合命令を受信しても、待機登録処理（Ｐ２）と実行制御処理（Ｐ３）が一つずつ待機ジョブや実行ジョブを選択し、大量の準備ジョブがシーケンシャルに実行される。すなわち、大量の準備ジョブの中から実行可能なジョブを逐次選択する方式であるため、複合命令が入力されるごとにプロセスを起動する必要がない。
【００３８】
「待機ジョブを特定する処理」と「実行ジョブを特定する処理」を、それぞれ待機登録処理（Ｐ２）、実行制御処理（Ｐ３）として、プログラム構造上、明確に分離することにより、各処理のコードが混在化しにくくなる。たとえば、待機ジョブを特定するためのアルゴリズムを変更する必要が発生しても、実行制御処理（Ｐ３）に対応するコードを変更する必要性が生じにくいため、可読性や保守性に優れた業務情報システムを実現しやすい。
【００３９】
図９は、ジョブ管理装置１００の機能ブロック図である。
ここに示す各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組み合わせによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００４０】
ジョブ管理装置１００は、ＵＩ（ユーザインタフェース）部１１０、データ処理部１２０およびデータ保持部１３０を含む。
ＵＩ部１１０は、バックオフィスからの入力処理やバックオフィスに対する情報表示のようなユーザインタフェース全般に関する処理を担当する。
データ処理部１２０は、ＵＩ部１１０やデータ保持部１３０、あるいは、ジョブ実行装置群２２０、外部記憶装置２１０等から取得されたデータをもとにして各種のデータ処理を実行する。データ処理部１２０は、ＵＩ部１１０とデータ保持部１３０の間のインタフェースの役割も果たす。
データ保持部１３０は、あらかじめ用意された各種の設定データや、データ処理部１２０から受け取ったデータを格納する。
【００４１】
ＵＩ部１１０：
ＵＩ部１１０は、命令受信部１１２と状態通知部１１４を含む。命令受信部１１２は、バックオフィスから各種命令を受信する。状態通知部１１４は、ジョブの実行状態をバックオフィスに通知する。実行状態の通知態様については、図１１に関連して後に詳述する。
【００４２】
データ保持部１３０：
データ保持部１３０は、準備ジョブ保持部１３２、待機ジョブ保持部１３４、ジョブ実行状態保持部１３６を含む。準備ジョブ保持部１３２は、準備領域２６０に対応する記録領域である。待機ジョブ保持部１３４は、待機領域２７０に対応する記録領域である。ジョブ実行状態保持部１３６は、各ジョブの実行状態を示す「実行状態情報」を保持する。
【００４３】
データ処理部１２０：
データ処理部１２０は、準備登録部１２２、待機登録部１２４および実行制御部１２６を含む。準備登録部１２２は、ＵＩ部１１０と同一プロセスにて、準備登録処理（Ｐ１）を実行する。待機登録部１２４は、待機登録処理（Ｐ２）を実行する。実行制御部１２６は、実行制御処理（Ｐ３）を実行する。
【００４４】
図１０は、複合処理の本実施例における処理過程を示すフローチャートである。
ここでも、２つの複合命令が連続して入力されたとして説明する。命令受信部１１２は複合命令（第１命令）を受信し（Ｓ１０）、準備登録部１２２は第１命令により実行すべきジョブを準備ジョブとして準備ジョブ保持部１３２に登録する（Ｓ１２）。命令受信部１１２は、更に複合命令（第２命令）を受信し（Ｓ１６）、準備登録部１２２は第２命令により実行すべきジョブも準備ジョブとして準備ジョブ保持部１３２に登録する（Ｓ１８）。
【００４５】
命令受信部１１２や準備登録部１２２とは別プロセスのループ処理として、待機登録部１２４は、Ｓ５０からＳ５４に示す待機登録処理（Ｐ２）を実行する。まず、待機登録部１２４は、準備ジョブ保持部１３２に準備ジョブがあるかを判定し（Ｓ５０）、準備ジョブが登録されていなければ（Ｓ５０のＮ）、所定時間、または、新たに準備ジョブが登録されるまでスリープする。準備ジョブが登録されていれば（Ｓ５０のＹ）、待機登録部１２４は、ジョブ関係情報を参照し、実行可能な準備ジョブがあるかを判定する（Ｓ５２）。実行可能な準備ジョブがあれば（Ｓ５２のＹ）、待機ジョブとして、準備ジョブ保持部１３２から待機ジョブ保持部１３４に登録変更させる（Ｓ５４）。実行可能な準備ジョブがなければ（Ｓ５２のＮ）、待機登録部１２４は、所定時間、または、新たに実行可能な準備ジョブが検出されるまでスリープする。
【００４６】
準備登録部１２２や待機登録部１２４とは別プロセスのループ処理として、実行制御部１２６は、Ｓ５６からＳ６４に示す実行制御処理（Ｐ３）を実行する。まず、実行制御部１２６は、待機ジョブ保持部１３４に待機ジョブがあるかを判定し（Ｓ５６）、待機ジョブが登録されていなければ（Ｓ５６のＮ）、所定時間、または、新たに待機ジョブが登録されるまでスリープする。待機ジョブが登録されていれば（Ｓ５６のＹ）、実行制御部１２６は、ＦＩＦＯ方式にて待機ジョブを１つ取り出し、ジョブ実行装置２０２に実行を指示する（Ｓ５８）。また、取り出した待機ジョブを待機ジョブ保持部１３４から登録抹消する（Ｓ６０）。このとき、ジョブ実行状態保持部１３６の実行状態情報を更新する。実行状態情報の更新により、待機登録部１２４は、新たに実行可能となる準備ジョブが検出するかもしれない。
【００４７】
ジョブの実行により、いずれかの複合処理が完了したときには（Ｓ６２のＹ）、その複合処理を依頼したユーザに複合処理の完了を通知する（Ｓ６４）。複合処理が完了していないときには（Ｓ６２のＮ）、Ｓ６４はスキップされ、処理はＳ５６に戻る。
このように３つの処理は、互いに非同期的に実行されつつも、準備領域２６０や待機領域２７０を介して連携動作している。
【００４８】
図１１は、状態通知画面２９０の画面図である。
状態通知部１１４は、複合命令の入力者が使用する端末に対して、状態通知画面２９０を画面表示させる。たとえば、バックオフィスのあるスタッフＡが、顧客Ｂのための運用成果計算命令をジョブ管理装置１００に入力したとき、状態通知部１１４は運用成果計算処理を構成するジョブ１〜５の依存関係を画面表示させる。そして、状態通知部１１４は、準備ジョブ保持部１３２と待機ジョブ保持部１３４の登録内容や、ジョブ実行状態保持部１３６の実行状態情報を参照しながら、適宜、状態通知画面２９０の表示内容を更新する。同図の場合、ジョブ１およびジョブ２は完了、ジョブ３は待機ジョブ、ジョブ４は実行ジョブ、ジョブ５は準備ジョブの状態にある。
状態通知画面２９０により、複合命令の入力者は、複合命令に関わるジョブの依存関係やその実行状況を画面上にて確認できる。
【００４９】
以上、実施例に基づいてジョブ管理装置１００を説明した。
ジョブ管理装置１００によれば、待機登録処理（Ｐ２）と実行制御処理（Ｐ３）をプログラム構造上、明確に分離できる。このため、短期間に多くの複合命令が入力されることにより一時的に大量のジョブを実行する必要が生じたときにも、これらのジョブをシーケンシャルに実行させやすい。また、プログラムの可読性を高める上でも有効である。数年、あるいは、数十年にわたって運用される業務情報システムにとって、プログラムの可読性は特に重要である。
【００５０】
待機登録処理と実行制御処理は同時並行的に実行されるため、ある複合命令を実行する上で、先行する複合命令の完了を待つ必要がない。また、短期間に大量の複合命令が入力された場合でも、第２方法のように大量のプロセスを起動する必要がないため、オーバーヘッドを抑制できる。待機登録処理と実行制御処理は別々のＣＰＵ上において実行されてもよい。
更に、ジョブの実行状態は、状態通知画面２９０において、適宜表示される。複合処理の依頼後も、ユーザは、複合処理の進捗状況を適宜確認できるため、自己の作業をスケジューリングしやすくなる。また、待機領域２７０をキュー構造として形成することにより、実行制御処理を単純化できる。
【００５１】
以上、本発明について実施例をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００５２】
【図１】資産管理業務の概要図である。
【図２】資産運用システムのハードウェア構成図である。
【図３】運用成果計算命令におけるジョブの依存関係を示す図である。
【図４】図３に示したジョブの依存関係を設定するジョブ関係情報のデータ構造図である。
【図５】複合処理の一般的な処理過程である第１方法を示すフローチャートである。
【図６】図５のＳ３０およびＳ４０における複合処理の詳細な処理過程を示すフローチャートである。
【図７】複合処理の一般的な処理過程である第２方法を示すフローチャートである。
【図８】本実施例における複合処理の概要図である。
【図９】ジョブ管理装置の機能ブロック図である。
【図１０】複合処理の本実施例における処理過程を示すフローチャートである。
【図１１】状態通知画面の画面図である。
【符号の説明】
【００５３】
１００  ジョブ管理装置、  １１０  ＵＩ部、  １１２  命令受信部、  １１４  状態通知部、  １２０  データ処理部、  １２２  準備登録部、  １２４  待機登録部、  １２６  実行制御部、  １３０  データ保持部、  １３２  準備ジョブ保持部、  １３４  待機ジョブ保持部、  １３６  ジョブ実行状態保持部、  ２００  資産運用システム、  ２０２  ジョブ実行装置、  ２１０  外部記憶装置、  ２２０  ジョブ実行装置群、  ２４０  ジョブ関係情報、  ２５４  対象ジョブ欄、  ２５６  先行ジョブ欄、  ２６０  準備領域、  ２７０  待機領域、  ２８０  準備ジョブ群、  ２９０  状態通知画面。
【図１】
0005133775.tif 000002
【図２】
0005133775.tif 000003
【図３】
0005133775.tif 000004
【図４】
0005133775.tif 000005
【図５】
0005133775.tif 000006
【図６】
0005133775.tif 000007
【図７】
0005133775.tif 000008
【図８】
0005133775.tif 000009
【図９】
0005133775.tif 000010
【図１０】
0005133775.tif 000011
【図１１】
0005133775.tif 000012