以下、本発明の実施の形態を図面に基づいて詳細に説明する。実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。
また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
まず、本発明の理解を容易にするため、本発明の前提として検討したコンピュータシステムおよびこのコンピュータシステムを利用した作業内容の一例について以下に説明する。図1は、本発明の前提として検討したコンピュータシステムにおいて、そのハードウェア構成の一例を示す概略図である。図1において、PC100は、ディスプレイ101、キーボード102、マウス103、CPU104、ROM105、RAM106、通信装置107及び外部記憶装置110を含む。作業者121は、ディスプレイ101、キーボード102およびマウス103を通じてこのPC100を操作する。
ディスプレイ101は、PC100のオペレーティングシステム(OS)やAPの状態や結果を表示する。CPU104は、ROM105に格納されているBIOSやプログラム、または外部記憶装置110に格納されているプログラムを実行する。RAM106は、CPU104が実行する作業エリアとして、また、プログラムが利用するデータの一時的な格納場所として利用される。外部記憶装置110は、PC100において実行されるOS111と、1つまたは複数の既存APを格納する。図1の例では、既存APの例として表計算AP112と、WebブラウザAP113を格納している。通信装置107は、通信ネットワーク120に接続され、通信ネットワーク120を介して、Webサーバ130、ファイルサーバ150との間でデータの送受信をする。ディスプレイ101は、表計算AP112の実行インスタンスのウィンドウ191と、WebブラウザAP113の実行インスタンスのウィンドウ192を表示している。
PC170は、ディスプレイ171、キーボード172、マウス173、CPU174、ROM175、RAM176、通信装置177及び外部記憶装置180を含む。例えば、営業担当者122は、ディスプレイ171、キーボード172およびマウス173を通じてこのPC170を操作する。
ディスプレイ171は、PC170のOSやAPの状態や結果を表示する。CPU174は、ROM175に格納されているBIOSやプログラム、または外部記憶装置180に格納されているプログラムを実行する。RAM176は、CPU174が実行する作業エリアとして、また、プログラムが利用するデータの一時的な格納場所として利用される。外部記憶装置180は、PC170において実行されるOS181と、1つまたは複数の既存APを格納する。図1の例では、既存APの例として表計算AP182を格納している。通信装置177は、通信ネットワーク120に接続され、通信ネットワーク120を介して、ファイルサーバ150との間でデータの送受信を行う。ディスプレイ171は、表計算AP182の実行インスタンスのウィンドウ193を表示している。
Webサーバ130は、ディスプレイ131、キーボード132、マウス133、CPU134、ROM135、RAM136、通信装置137及び外部記憶装置140を含む。ディスプレイ131は、Webサーバ130のOSやAPの状態や結果を表示する。CPU134は、ROM135に格納されているBIOSやプログラム、または外部記憶装置140に格納されているプログラムを実行する。RAM136は、CPU134が実行する作業エリアとして、また、プログラムが利用するデータの一時的な格納場所として利用される。
外部記憶装置140は、Webサーバ130において実行されるOS141と、発注WebシステムAP142を格納する。また、発注WebシステムAPの発注入力画面のWebページデータ143を格納している。以下では、同データを参照するURLは“http://www.hitachi.co.jp/order/input.html”であるものとする。通信装置137は、通信ネットワーク120に接続され、通信ネットワーク120を介して、PC100との間でデータの送受信を行う。
ファイルサーバ150は、ディスプレイ151、キーボード152、マウス153、CPU154、ROM155、RAM156、通信装置157及び外部記憶装置160を含む。ディスプレイ151は、ファイルサーバ150のOSやAPの状態や結果を表示する。CPU154は、ROM155に格納されているBIOSやプログラム、または外部記憶装置160に格納されているプログラムを実行する。RAM156は、CPU154が実行する作業エリアとして、また、プログラムが利用するデータの一時的な格納場所として利用される。
外部記憶装置160は、ファイルサーバ150において実行されるOS161と、ファイルサーバAP162を格納する。通信装置157は、通信ネットワーク120に接続され、通信ネットワーク120を介して、PC100およびPC170との間でデータの送受信を行う。外部記憶装置160は、表計算AP用のデータファイル、発注依頼書_日立太郎(発注依頼書データ)163を格納する。発注依頼書_日立太郎163は、営業担当者122がPC170において、表計算AP182の実行インスタンスのウィンドウ193、キーボード172およびマウス173を通じて、PC170および表計算AP182を操作することにより作成し、ファイルサーバ150に格納したファイルである。
図2は、図1における表計算AP112とWebブラウザAP113を実行するPC100の機能ブロック図である。PC100の機能200には、表計算AP112の実行インスタンス210と、WebブラウザAP113の実行インスタンス220が含まれる。表計算AP112の実行インスタンス210は、処理中のファイルのデータを保持するための内部データバッファ211を含む。WebブラウザAP113の実行インスタンス220は、当該実行インスタンスで発生するイベントと処理中のWebページのデータを保持するための内部データバッファ221を含む。
図3Aと図3Bは、図2における表計算APの実行インスタンス210の機能を説明する説明図である。図3Aは、表計算APの実行インスタンス210が保持する内部データバッファ211の一例の説明図である。図3Aは、表計算APの実行インスタンス210が、通信ネットワーク120を介して、ファイルサーバ150が保持するファイル、発注依頼書_日立太郎163を読み込み、当該ファイルのデータを内部データバッファ211に保持する状況を表している。表計算APの実行インスタンス210は、ファイル“発注依頼書_日立太郎”のデータを、例えば図3Aに示すような木構造で格納する。
図3Aにおいて、四角形は要素を表し、角丸四角形は要素の属性を表す。各要素は0個以上の属性と、0個以上の要素を子として持つ。木構造の根に位置するFILE要素320はname属性321、SHEET要素330及びSHEET要素340を持つ。FILE要素320のname属性の値は“発注依頼書_日立太郎”である。SHEET要素330はname属性331、CELL要素350、CELL要素360、・・・を持つ。尚、SHEET要素330のname属性331は“発注内容”である。CELL要素350はrow属性351、column属性352及びvalue属性353を持つ。尚、CELL要素350のrow属性351の値は1、column属性352の値は1、value属性353の値は“発注者名”である。図3Aにおけるその他の箇所も同様であり、詳細な説明は省略する。尚、この例では表計算APの実行インスタンスの内部データバッファのデータ構造として木構造を示したが、本実施の形態はこれに限定されるものではない。
図3Bは、表計算APの実行インスタンス210が表示するウィンドウ191の一例を示す説明図である。図3Bは、表計算APの実行インスタンス210が、図3Aに示した内部データバッファ211に基づいて描画したウィンドウを表す。ウィンドウ191はファイル描画部品300を含む。ファイル描画部品300は、図3AにおけるFILE要素320に対応する。ファイル描画部品300は2つのシート描画部品301と302を含む。シート描画部品301と302は、それぞれ図3Aにおける二つのSHEET要素330と340に対応する。1つのシート描画部品は、複数の行と列で構成され、行番号と列番号で一意に指定されるセルに分割される。例えば、シート描画部品301の第1行目第2列目のセル311は、図3AにおけるCELL要素360に対応する。このように、表計算APの実行インスタンス210は、内部データバッファ211に保持するデータに基づいて、ウィンドウ191を描画する。
図4Aと図4Bは、図2におけるWebブラウザAPの実行インスタンス220の機能を説明する説明図である。図4Aは、WebブラウザAPの実行インスタンス220が保持する内部データバッファ221の一例の説明図である。作業者121がキーボード102、マウス103を通じて、WebブラウザAPの実行インスタンス220に、URL“http://www.hitachi.co.jp/order.html”のWebページを開くよう指示すると、WebブラウザAPの実行インスタンス220は、Webサーバ130が実行する発注WebシステムAP142の実行インスタンスと通信し、発注入力画面のWebページのデータ143をダウンロードし、当該データを内部データバッファ221に格納する。図4Aは、発注入力画面のWebページのデータ143を内部データバッファ221に保持する状況を表している。WebブラウザAPの実行インスタンス220は、発注入力画面のWebページのデータを、例えば図4Aに示すような木構造で格納する。
図4Aにおいて、四角形は要素を表し、角丸四角形は要素の属性を表す。各要素は0個以上の属性と、0個以上の要素を子として持つ。木構造の根に位置するHTML要素400はHEAD要素401及びBODY要素403を持つ。HEAD要素401はTITLE要素402を、BODY要素403はFORM要素404をそれぞれ持つ。FORM要素404はmethod属性405、action属性406、P要素410、・・・、P要素470及びP要素480を持つ。P要素410はINPUT要素411を持ち、INPUT要素411はtype属性412、name属性413及びvalue属性414を持つ。尚、INPUT要素411のtype属性412の値は“text”、name属性413の値は“product_code”、value属性414の値はNULLである。図4Aにおけるその他の箇所も同様であり、詳細な説明は省略する。尚、この例ではWebブラウザAPの実行インスタンスの内部データバッファのデータ構造として木構造を示したが、本実施の形態はこれに限定されるものではない。
図4Bは、WebブラウザAPの実行インスタンス220が表示するウィンドウ192の一例を示す説明図である。図4Bは、WebブラウザAPの実行インスタンス220が、図4Aに示した内部データバッファ221に基づいて描画したウィンドウを表す。ウィンドウ192はボディ描画部品490を含む。ボディ描画部品490は、図4AにおけるBODY要素に対応する。ボディ描画部品490は6つのテキスト入力描画部品491,492,493,494,495,497と、チェックボックス描画部品496と、1つのボタン描画部品498を持つ。テキスト入力描画部品491,492,493,494,495,497は、それぞれ図4AにおけるINPUT要素411,421,431,441,451,471に対応する。チェックボックス描画部品496は、図4AにおけるINPUT要素461に対応する。ボタン描画部品498は図4AのINPUT要素481に対応する。このように、WebブラウザAPの実行インスタンス220は、内部データバッファに保持するデータに基づいて、ウィンドウ192を描画する。
以上のようなコンピュータシステムを用いて、作業者121が、例えば次のようなS1からS9までの手順で作業を行っているとする。この作業のトリガーは、営業担当者122から作業者121への電話やFAX等による連絡とし、この連絡の中で、営業担当者122は、作業者121に発注入力を依頼したい案件のファイル名を指定する。
《手順S1a》
作業者121は、表計算APのウィンドウ191を参照しながら、キーボード102及びマウス103を通じて表計算APの実行インスタンス210を操作し、営業担当者122が指定したファイルを開いてウィンドウ191に表示する。
《手順S2a》
作業者121は、WebブラウザAPのウィンドウ192を参照しながら、キーボード102及びマウス103を通じてWebブラウザAPの実行インスタンス220を操作し、Webサーバ130が実行する発注WebシステムAP142の実行インスタンスにログインし、発注入力画面のWebページのデータ143を開いてウィンドウ192に表示する。
《手順S3a》
作業者121は、表計算APのウィンドウ191を参照しながら、キーボード102及びマウス103を通じて、製品コード、すなわち、表計算APのウィンドウ191のセル313の値を、WebブラウザAPのウィンドウ192のテキスト入力描画部品491に入力する(同時に、当該入力値は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素411のvalue属性414に格納される)。
《手順S4a》
作業者121は、表計算APのウィンドウ191を参照しながら、キーボード102及びマウス103を通じて、製品名、すなわち、表計算APのウィンドウ191のセル314の値を、WebブラウザAPのウィンドウ192のテキスト入力描画部品492に入力する(同時に、当該入力値は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素421のvalue属性424に格納される)。ただし、図3Bの314のように、営業担当者122が当該項目の入力を省略していた場合、作業者121は、製品カタログを参照し、製品コード(セル313の値)に対応する製品名を探し出し、それをWebブラウザAPのウィンドウ192のテキスト入力描画部品492に入力する。
《手順S5a》
作業者121は、表計算APのウィンドウ191を参照しながら、キーボード102及びマウス103を通じて、数量、すなわち、表計算APのウィンドウ191のセル315の値を、WebブラウザAPのウィンドウ192のテキスト入力描画部品493に入力する(同時に、当該入力値は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素431のvalue属性434に格納される)。
《手順S6a》
作業者121は、表計算APのウィンドウ191を参照しながら、キーボード102及びマウス103を通じて、納期、すなわち、表計算APのウィンドウ191のセル316の値を、WebブラウザAPのウィンドウ192のテキスト入力描画部品494に入力する(同時に、当該入力値は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素441のvalue属性444に格納される)。
《手順S7a》
作業者121は、表計算APのウィンドウ191を参照しながら、キーボード102及びマウス103を通じて、金額、すなわち、表計算APのウィンドウ191のセル317の値を、WebブラウザAPのウィンドウ192のテキスト入力描画部品495に入力する(同時に、当該入力値は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素451のvalue属性454に格納される)。
《手順S8a》
作業者121は、表計算APのウィンドウ191の特記事項、すなわち、表計算APのウィンドウ191のセル318を参照し、承認者を追加するかどうかを判断する。承認者を追加する必要があると判断した場合には、作業者121はキーボード102及びマウス103を通じて、WebブラウザAPのウィンドウ192のチェックボックス描画部品496を選択し、テキスト入力描画部品497に、追加する承認者の氏名を入力する(同時に、当該入力値は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素481のvalue属性484に格納される)。ただし、セル318のように具体的な氏名が記載されていない場合には、作業者121は、例えば製造第2部の部長が国分寺花子である、と言う知識に基づいて、テキスト入力描画部品497に、追加する承認者の氏名、国分寺花子を入力する。
《手順S9a》
作業者121は、キーボード102及びマウス103を通じてWebブラウザAPのウィンドウ192のボタン描画部品498をクリックして、入力したデータをWebサーバ130に送信するよう、WebブラウザAPの実行インスタンス220に指示する(同時に、WebブラウザAPの実行インスタンス220は、WebブラウザAPの実行インスタンス220の内部データバッファ221のINPUT要素481に対するマウスクリックに紐付けられた動作、すなわち、FORM要素404で定義されたデータ送信の動作を実行する)。
尚、この例では、チェックボックス描画部品496が選択されて、テキスト入力描画部品497が空欄のまま、ボタン描画部品498をクリックしてデータ送信を実行すると、Webサーバ130が実行する発注WebシステムAP142の実行インスタンスで障害が発生することが知られているとする。また、上記コンピュータシステムと作業の手順は、以降に説明する本発明の実施の形態の効果を訴求するために挙げた一例に過ぎず、本実施の形態は上記コンピュータシステムと作業の手順に限定されるものではない。
ここで、上記作業に、特許文献1〜6および非特許文献1,2の技術を適用することを検討する。まず、特許文献1〜3の技術の適用について検討する。特許文献1〜3の技術は、対象となるAP、すなわち、表計算APとWebブラウザAPに専用の機能を造り込む必要があるが、表計算APやWebブラウザAPは、一般に市販のパッケージ製品であり、手を加えるのは不可能である。従って、特許文献1〜3の技術を適用することは困難である。
次に、特許文献4〜6および非特許文献1,2の技術の適用について検討する。手順S1aにおいて、作業者121は、電話やFAXなど電子化されていない情報を利用して、PC100を操作する必要がある。すなわち、手順S1aは知識作業であるので、手順S1aのバッチ処理化は困難である。手順S2aは、ログインIDやパスワードの入力などの手順が固定された一連の操作であるため、手順S2aのバッチ処理化は可能である。しかし、ログインIDやパスワード入力が不要になることはセキュリティ上大きな問題であるため、手順S2aのバッチ処理化は適切ではない。
手順S3a、S5a、S6a、S7aは単にデータを表計算APからWebブラウザAPにコピーする、手順が固定された一連の操作である。すなわち、上記手順は単純作業であるので、上記手順のバッチ処理化は可能である。手順S4aは、製品カタログのデータベース化により、手順が固定された一連の操作に帰着する。すなわち、手順S4aは単純作業であるので、手順S4aのバッチ処理化は可能である。
手順S8aにおいて、作業者121は、表計算APのウィンドウ191の特記事項、すなわち、表計算APのウィンドウ191のセル318に書かれた文章を読んで、承認者を追加するかどうかを判断する。さらに、製造第2部の部長の氏名が国分寺花子である、と言う作業者121の知識を利用する必要がある。すなわち、手順S8aは知識作業であるので、手順S8aのバッチ処理化は困難である。手順S9aは、単にボタンをクリックするだけの単純作業であるので、バッチ処理化は可能である。
このように特許文献4〜6および非特許文献1,2の技術により各単純作業をバッチ処理に置き換えた場合、作業者121は、バッチ処理と知識作業の節目毎に、作業の進捗に照らし合わせて、適切なバッチ処理を選択し、バッチ処理実行の操作を行う必要がある。従って、上記技術を導入した場合でも、作業者121にとっては、バッチ処理の選択・実行などの新たな作業が発生し、同時に、バッチ処理の誤選択・未実行などの新たなミスが発生する余地が生まれるという問題点がある。
以上の説明では、手順数が少ない作業を例として取り上げているが、現実の定型業務の現場では、作業者は、バッチ処理化の対象である単純作業と、作業者の知識や経験に基づいて行う知識作業との間を、何度も行き来しながらPC作業を遂行しており、上記問題点はより深刻である。そこで、以上のような従来のコンピュータシステムと作業を例として、以下に説明する本発明の実施の形態を用いることで上記問題点の解決を図る。
図5は、本発明の一実施の形態によるコンピュータシステムにおいて、そのハードウェア構成の一例を示す概略図である。図5に示すコンピュータシステムは、図1で述べたPC100に、本実施の形態の主要な特徴である操作支援プログラム114が導入された構成例となっている。それ以外の構成要素に関しては図1と同様であるため詳細な説明は省略する。
図6は、図5のコンピュータシステムにおいて、そのPC100の機能の一例を示すブロック図である。図6に示すPC100の機能200は、図2に示したPC100の機能200に、さらに操作支援プログラム114を実行するための各種機能が加わったものとなっている。すなわち、操作支援プログラム114は、図6に示すように、共有データバッファ機能230、データ読み出し機能241、データ書き込み機能242、制御ルール保持機能250、割り込み機能260、制御ルール適用機能270、変換テーブル保持機能280、データ変換機能243、警告表示機能244、アプリケーション起動機能245、ログ機能290を含む。
共有データバッファ機能230は、PC100が実行する複数APの実行インスタンス間で共有するデータを一時的に保持するための共有データバッファ231の記憶領域を確保する。図6では例として、共有データバッファ231は、Buf[0]232からBuf[4]236までの5つのバッファを保持している状況を示す。制御ルール保持機能250は、予め、PC100が実行するAPの実行インスタンスを制御する条件セットと命令セットを含む制御ルールを1つまたは複数保持する。図6では例として、制御ルール保持機能250は、第1の制御ルール251、第2の制御ルール254、第3の制御ルール257を保持する状況を示しているが、勿論3つに限定されるものではない。
変換テーブル保持機能280は、所与のデータを別のデータに変換する変換テーブル281を予め保持する。割り込み機能260は、表計算APの実行インスタンス210の処理、またはWebブラウザAPの実行インスタンス220の処理で発生するイベントをトリガーに、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270の動作が完了後、元の処理(割り込み前に実行されていた処理)を再開する。ここで、イベントとは、APの実行インスタンスの処理で、何が起きたかを示すプログラムメッセージであり、イベントの識別子や、イベントが発生する処理やタイミングは、予め、OSやAPに実装されている。
本実施の形態の中では、例として、表計算AP112に実装されている複数のイベントのうち、識別子が“FILE_OPEN_COMPLETE”であるイベントを利用する。このイベントは、実行インスタンスがファイルを開く処理を完了する直前に発生する。尚、このイベントが発生した時点で、当該ファイルのデータは、既に表計算APの実行インスタンス210の内部データバッファ211に読み込まれている。
また、本実施の形態の中では、例として、WebブラウザAP113に実装されている複数のイベントのうち、次の2つのイベントを利用する。まず、識別子が“URL_OPEN_COMPLETE”であるイベントは、実行インスタンスがURLを開く処理を完了する直前に発生する。尚、このイベントが発生した時点で、当該URLのWebページのデータは、既にWebブラウザAPの実行インスタンス220の内部データバッファ221に読み込まれている。次に、識別子が“ON_MOUSE_CLICK”であるイベントは、実行インスタンスがマウスクリックに関連付けられた処理を開始する直前に発生する。
ここで、APの実行インスタンスの処理で発生するイベントをトリガーに、当該処理に割り込んで任意のユーザ関数を実行させる技術として、例えば、PC100のオペレーティングシステムがWindows(登録商標)の場合、メッセージフック技術、COM(Component Object Model)技術、API(Application Program Interface)フック技術等が知られている。割り込み機能260はこのような技術を利用して実現するが、詳細な実装方法の説明は省略する。メッセージフック技術に関しては、例えば「URL:http://msdn2.microsoft.com/en-us/library/ms632589.aspx」(参考文献1)に、COM技術に関しては、例えば「URL:http://www.microsoft.com/com/default.mspx」(参考文献2)に記載されている。また、APIフック技術に関しては、例えば「“Advanced Windows(登録商標)”、Jeffrey Richter著、Microsoft Press」(参考文献3)に記載されている。尚、ここでは、メッセージブック技術、COM技術、APIフック技術について述べたが、本実施の形態はこれらの公知技術に限定されるものではない。
制御ルール適用機能270は、割り込み機能260が割り込んだイベントに関する情報(以下、イベント情報)を取得し、当該イベント情報が、制御ルール保持機能250の保持するいずれかの制御ルールの条件を満たすか否かを判定する。ここで、どの制御ルールの条件も満たさない場合には、直ちに割り込み機能260に復帰する。一方、いずれかの制御ルールの条件を満たす場合には、当該制御ルールの命令に従って、データ読み出し機能241、データ書き込み機能242、データ変換機能243、警告表示機能244、アプリケーション起動機能245のいずれか又はその組合せを、1回または複数回動作させた後に、割り込み機能260に復帰する。
データ読み出し機能241は、制御ルール適用機能270からの指示に従って、APの実行インスタンスの内部データバッファからデータを読み出し、当該データを共有データバッファ231に書き込む。例えば、データ読み出し機能241は、表計算APの実行インスタンス210の内部データバッファ211からデータを読み出し、当該データを共有データバッファ231に書き込む。
データ書き込み機能242は、制御ルール適用機能270からの指示に従って、共有データバッファ231からデータを読み出し、当該データをAPの実行インスタンスの内部データバッファに書き込む。例えば、データ書き込み機能242は、制御ルール適用機能270からの指示に従って、共有データバッファ231からデータを読み出し、WebブラウザAPの実行インスタンス220の内部データバッファ221に当該データを書き込む。
データ変換機能243は、制御ルール適用機能270からの指示に従って、共有データバッファ231からデータを読み出し、当該データを変換テーブル281に従って変換し、当該変換されたデータを、共有データバッファ231に書き込む。警告表示機能244は、制御ルール適用機能270からの指示に従って、警告ウィンドウをディスプレイに表示し、割り込み機能260が割り込んだ処理をキャンセルする。アプリケーション起動機能245は、制御ルール適用機能270からの指示に従って、PC100の外部記憶装置110に格納された各種APの実行インスタンスを新規に起動する。ログ機能290は、制御ルール適用機能270の動作に関する履歴情報をログに記録する。
図7A、図7B、図7Cは、それぞれ、図6の制御ルール適用機能270が取得するイベント情報の第1の例500、第2の例510、第3の例520の説明図である。イベント情報は以下に例示するように、1つまたは複数の小項目から構成され、また、イベント情報の各小項目は項目名とそれに対応する内容から構成される。ここで、項目名とは、制御ルール適用機能270が取得したイベントに関する各情報の名称であり、本実施の形態では、例として、以下の5つを扱う。
(1)イベントの識別子:対応する内容は、イベントを識別する文字列を表す。
(2)アプリケーション名:対応する内容は、イベントが発生した実行インスタンスのアプリケーションの名前を表す。
(3)ファイル名:対応する内容は、イベントが発生した実行インスタンスで処理中だったファイルの名前を表す。
(4)URL:対応する内容は、イベントが発生した実行インスタンスで処理中だったWebページのデータのURLを表す。
(5)HTML要素名:対応する内容は、イベントが発生したHTML要素の名前を表す。
図7Aに示すイベント情報500は、表計算APの実行インスタンス210の処理でイベントが発生した際に、制御ルール適用機能270が取得した情報の例である。イベント情報500は501、502、503の3つの小項目から構成され、各小項目は項目名504と、当該項目名に対応する内容505から構成される。小項目501は、イベントの識別子が“FILE_OPEN_COMPLETE”であることを表す。小項目502は、アプリケーション名が“表計算AP”であることを表す。小項目503は、ファイル名が“発注依頼書_日立太郎”であることを表す。すなわち、イベント情報500は、当該イベントが、表計算APの実行インスタンスにおいて、ファイル“発注依頼書_日立太郎”を開く処理が完了する直前に発生したことを表す。
図7Bに示すイベント情報510と図7Cに示すイベント情報520は、WebブラウザAPの実行インスタンス220の処理でイベントが発生した際に、制御ルール適用機能270が取得した情報の例である。イベント情報510は511、512、513の3つの小項目から構成され、各小項目は項目名514と、当該項目名に対応する内容515から構成される。小項目511は、イベントの識別子が“URL_OPEN_COMPLETE”であることを表す、小項目512は、アプリケーション名が“WebブラウザAP”であることを表す。小項目513は、URLが“http://www.hitachi.co.jp/order.html”であることを表す。すなわち、イベント情報510は、当該イベントが、WebブラウザAPの実行インスタンスにおいて、URL“http://www.hitachi.co.jp/order.html”を開く処理が完了する直前に発生したことを表す。
イベント情報520は521、522、523、524の4つの小項目から構成され、各小項目は項目名525と、当該項目名に対応する内容526から構成される。小項目521は、イベントの識別子が“ON_MOUSE_CLICK”であることを表す。小項目522は、アプリケーション名が“WebブラウザAP”であることを表す。小項目523は、URLが“http://www.hitachi.co.jp/order.html”であることを表す。小項目524は、HTML要素名が“order”であることを表す。すなわち、イベント情報520は、当該イベントが、WebブラウザAPの実行インスタンスにおいて、URL“http://www.hitachi.co.jp/order.html”のHTML要素“order”へのマウスクリックに関連付けされた処理が開始される直前に発生したことを表す。
尚、本実施の形態では、上記3つのイベントを例として扱うが、本実施の形態は、勿論これに限定されるものではない。一般にOSや各APには、数十から数百種類のイベントが実装されており、本実施の形態の操作支援プログラム114は、以降の説明からも明らかとなるが、それらすべてのイベントに対応することができる。なお、イベントの種類や発生条件については、例えば、前述した参考文献1〜3などに記載されている。
図9は、図6の変換テーブル281の一例を示す説明図である。変換テーブル281は、複数のレコード(行)から構成され、各レコードはキー(変換前のデータ)701と、それに対応する値(変換後のデータ)702から構成され、キー701と値702は、それぞれ、製品コードとそれに対応する製品名を表す。
図8A、図8B、図8Cは、それぞれ、図6の第1の制御ルール251、第2の制御ルール254、第3の制御ルール257の一例を示す説明図である。制御ルールは条件セットと命令セットから構成される。条件セットは1つまたは複数の小条件から構成され、各小条件は項目名とそれに対応する内容から構成される。ここで、条件セットの項目名の定義は、図7A〜図7Cで述べたイベント情報の項目名の定義と同じである。命令セットは1つまたは複数の小命令から構成され、各小命令は命令名と小命令に対する2つの引数から構成される。ここで、命令名とは、制御ルール適用機能270に対する命令の名称であり、本実施の形態では、例として、以下の5つを扱う。
(1)READ:この命令により、制御ルール適用機能270は、データ読み出し機能241を動作させ、割り込み機能260が割り込んだ実行インスタンスの内部データバッファからデータを読み出し、当該読み出したデータを共有データバッファ231に書き出す。ここで、READの第1引数は、データの読み出し元を表し、割り込み機能260が割り込んだ実行インスタンスの内部データバッファにおける、特定のバッファを表す。また第2引数は、当該読み込んだデータの書き込み先を表し、共有データバッファ231における、特定のバッファを表す。
(2)WRITE:この命令により、制御ルール適用機能270は、データ書き込み機能242を動作させ、共有データバッファ231からデータを読み出し、当該読み出したデータを、割り込み機能260が割り込んだ実行インスタンスの内部データバッファに書き込む。ここで、WRITEの第1引数は、データの読み出し元を表し、共有データバッファにおける特定のバッファを表す。また第2引数は、当該読み込んだデータの書き込み先を表し、割り込み機能260が割り込んだ実行インスタンスの内部データバッファにおける、特定のバッファを表す。
(3)TRANSLATE:この命令により、制御ルール適用機能270は、データ変換機能243を動作させ、共有データバッファ231からデータを読み出し、当該読み出したデータを変換テーブル281に従って変換し、当該変換されたデータを、共有データバッファ231に書き込む。ここで、TRANSLATEの第1引数は、データの読み出し元を表し、共有データバッファ231の特定のバッファを表す。また第2引数は、データの書き込み先を表し、共有データバッファ231の特定のバッファを表す。
(4)ALERT:この命令により、制御ルール適用機能270は、第1引数の論理式を評価し、評価結果が真であった場合のみ、警告表示機能244を動作させ、割り込み機能260が割り込んだ実行インスタンスの処理をキャンセルし、後述する警告ウィンドウ194をディスプレイに表示する。ここでALERTの第1引数は、制御ルール適用機能270が警告表示機能244を動作させるか否かを判断するための論理式である。第2引数は、警告ウィンドウ194に表示される文字列を表す。
また、READ、WRITE、TRANSLATEの引数として利用される、読み出し先のバッファ、または書き込み先のバッファを指定する方法として、本実施の形態では、以下の4つを扱う。
(1)SHEET(name=X).CELL(row=R,column=C).value:この指定方法は、表計算APの実行インスタンスが内部データバッファに格納しているファイルのデータにおける、シート名がXであるシートの、第R行、第C列のセルのvalue属性を格納するバッファを表す。
(2)INPUT(name=X).value:この指定方法は、WebブラウザAPの実行インスタンスが内部データバッファに格納しているWebページのデータにおける、名前がXであるINPUT要素のvalue属性を格納するバッファを表す。
(3)INPUT(name=X).checked:この指定方法は、WebブラウザAPの実行インスタンスが内部データバッファに格納しているWebページのデータにおける、名前がXであるINPUT要素のchecked属性を格納するバッファを表す。
(4)Buf[X]:この指定方法は、共有データバッファ231内の第X番のバッファを表す。
制御ルール適用機能270が取得したイベント情報が、条件セットの全ての小条件を満たす場合、制御ルール適用機能270は、命令セットの全ての小命令を順に実行する。
図8Aに示す第1の制御ルール251は、条件セット252と命令セット253から構成される。条件セット252は601、602、603の3つの小条件から構成され、各小条件は項目名604と当該項目名に対応する内容605から構成される。小条件601は、制御ルール適用機能270が取得したイベント情報について、イベントの識別子が“FILE_OPEN_COMPLETE”に一致することを要請する。小条件602は、アプリケーション名が“表計算AP”に一致することを要請する。小条件603は、ファイル名が“発注依頼書*”に一致することを要請する。ここで記号*は、0文字以上の任意の文字列を表すメタキャラクタであり、例えば、“発注依頼書_日立太郎”は“発注依頼書*”に一致すると判定される。
命令セット253は、611、612、613、614、615の5つの小命令から構成され、各小命令は命令名616と、当該小命令に対する617、618の2つの引数から構成される。制御ルール適用機能270が取得したイベント情報が、条件セット252の601、602、603の3つの小条件を全て満たす場合、制御ルール適用機能270は、命令セット253の611、612、613、614、615の5つの小命令を順に実行する。
小命令611により、制御ルール適用機能270は、表計算APの実行インスタンスが内部データバッファに格納しているファイルのデータにおける、シート“発注内容”の第3行第2列のセルのvalue属性を格納しているバッファからデータを読み出し、当該データを共有データバッファ231内の第0番のバッファ232に書き込む。小命令612により、制御ルール適用機能270は、共有データバッファ231内の第0番のバッファ232からデータを読み出し、当該読み出したデータを、変換テーブル281に従って変換し、当該変換されたデータを、共有データバッファ231内の第1番のバッファ233に書き込む。
小命令613により、制御ルール適用機能270は、表計算APの実行インスタンスが内部データバッファに格納しているファイルのデータにおける、シート“発注内容”の第5行第2列のセルのvalue属性を格納しているバッファからデータを読み出し、当該データを共有データバッファ231内の2番目のバッファ234に書き込む。小命令614により、制御ルール適用機能270は、表計算APの実行インスタンスが内部データバッファに格納しているファイルのデータにおける、シート“発注内容”の第6行第2列のセルのvalue属性を格納しているバッファからデータを読み出し、当該データを共有データバッファ231内の3番目のバッファ235に書き込む。小命令615により、制御ルール適用機能270は、表計算APが内部データバッファに格納しているファイルのデータにおける、シート“発注内容”の第7行第2列のセルのvalue属性を格納しているバッファからデータを読み出し、当該データを共有データバッファ231内の4番目のバッファ236に書き込む。
図8Bに示す第2の制御ルール254は、条件セット255と命令セット256から構成される。条件セット255は621、622、623の3つの小条件から構成され、各小条件は項目名624と当該項目名に対応する内容625から構成される。小条件621は、制御ルール適用機能270が取得したイベント情報について、イベントの識別子が“URL_OPEN_COMPLETE”に一致することを要請する。小条件622は、アプリケーション名が“WebブラウザAP”に一致することを要請する。小条件623は、URLが“http://www.hitachi.co.jp/order.html”に一致することを要請する。
命令セット256は、631、632、633、634、635の5つの小命令からなり、各小命令は命令名636と、当該小命令に対する637、638の2つの引数からなる。制御ルール適用機能270が取得したイベント情報が、条件セット255の621、622、623の3つの小条件を全て満たす場合には、制御ルール適用機能270は、命令セット256の631、632、633、634、635の5つの小命令を順に実行する。
小命令631により、制御ルール適用機能270は、共有データバッファ231内の第0番のバッファ232からデータを読み出し、WebブラウザAPの実行インスタンスの内部データバッファに格納するWebページのデータにおける、名前が“product_code”のINPUT要素のvalue属性のバッファに、当該読み出したデータを書き込む。小命令632により、制御ルール適用機能270は、共有データバッファ231内の第1番のバッファ233からデータを読み出し、WebブラウザAPの実行インスタンスの内部データバッファに格納するWebページのデータにおける、名前が“product_name”のINPUT要素のvalue属性のバッファに、当該読み出したデータを書き込む。
小命令633により、制御ルール適用機能270は、共有データバッファ231内の第2番のバッファ234からデータを読み出し、WebブラウザAPの実行インスタンスの内部データバッファに格納するWebページのデータにおける、名前が“quantity”のINPUT要素のvalue属性のバッファに、当該読み出したデータを書き込む。小命令634により、制御ルール適用機能270は、共有データバッファ231内の第3番のバッファ235からデータを読み出し、WebブラウザAPの実行インスタンスの内部データバッファに格納するWebページのデータにおける、名前が“delivery_date”のINPUT要素のvalue属性のバッファに、当該読み出したデータを書き込む。小命令635により、制御ルール適用機能270は、共有データバッファ231内の第4番のバッファ236からデータを読み出し、WebブラウザAPの実行インスタンスの内部データバッファに格納するWebページのデータにおける、名前が“price”のINPUT要素のvalue属性のバッファに、当該読み出したデータを書き込む。
図8Cに示す第3の制御ルール257は、条件セット258と命令セット259から構成される。条件セット258は641、642、643、644の4つの小条件から構成され、各小条件は項目名645と当該項目名に対応する内容646から構成される。小条件641は、制御ルール適用機能270が取得したイベント情報について、イベントの識別子が“ON_MOUSE_CLICK”に一致することを要請する。小条件642は、アプリケーション名が“WebブラウザAP”に一致することを要請する。小条件643は、URLが“http://www.hitachi.co.jp/order.html”に一致することを要請する。小条件644は、HTML要素名が“order”に一致することを要請する。
命令セット259は、651、652、653の3つの小命令から構成され、各小命令は命令名656と、当該小命令に対する657、658の2つの引数からなる。制御ルール適用機能270が取得したイベント情報が、条件セット258の641、642、643、644の4つの小条件を全て満たす場合には、制御ルール適用機能270は、命令セット259の651、652、653の3つの小命令を順に実行する。
小命令651により、制御ルール適用機能270は、WebブラウザAPの実行インスタンスが内部データバッファに格納しているWebページのデータにおける、名前が“add_acknowledger”のINPUT要素のvalue属性のバッファからデータを読み出し、当該データを共有データバッファ231内の第0番のバッファ232に書き込む。小命令652により、制御ルール適用機能270は、WebブラウザAPの実行インスタンスが内部データバッファに格納しているWebページのデータにおける、名前が“acknowledger”のINPUT要素のvalue属性のバッファからデータを読み出し、当該データを共有データバッファ231内の第1番のバッファ233に書き込む。
小命令653により、制御ルール適用機能270は、第1引数657の論理式(Buf[0]==“true”)AND(Buf[1]==NULL)、すなわち、「共有データバッファ231の第0番バッファに格納された値が“true”であり、かつ共有データバッファ231の第1番バッファに格納された値がNULLである」の真偽を評価する。ここで、評価結果が真の場合、警告表示機能244を動作させ、割り込み機能260が割り込んだ処理をキャンセルし、“追加する承認者の氏名が未記入です”と記した警告ウィンドウ194をディスプレイに表示する。
図10は、図6の制御ルール適用機能270の処理の一例を表すフローチャートである。尚、図10において、制御ルール保持機能250が保持する制御ルールの数をN、第I番目の制御ルールにおける条件セットの小条件数をM[I]、命令セットの小命令数をL[I]と記す。また、第I番目の制御ルールの条件セットにおける、第J番目の小条件をCnd[I,J]、第K番目の小命令をCom[I,K]と記す。
処理810は、割り込み機能260が割り込んだイベントに関する情報を取得する。処理820は、処理810で取得したイベント情報が、第1番目の制御ルールから第N番目の制御ルールのいずれかの条件セットを満たすかどうかを判定する。処理820内において、処理821は、変数Iを0で初期化する。処理822は、変数Iに1を加算する。処理823は、変数IがN+1未満かどうか、すなわち、第I番目の制御ルールが存在するかどうかを判定する。処理830は、当該イベント情報が、第I番目の制御ルールの条件セットの全小条件を満たすかどうかを判定する。
処理830内において、処理831は、変数Jを0で初期化する。処理832は、変数Jに1を加算する。処理833は、当該イベント情報が、Cnd[I,J]を満たすかどうかを判定する。処理834は、変数JがM[I]と等しいかどうか、すなわち、第I番目の制御ルールにおいて、第J番目の小条件が最後の小条件かどうかを判定する。この判定結果を満たした場合、第I番目の制御ルール内に含まれる全ての条件セットを満たしたことになり、処理840へ移行する。一方、この判定結果を満たさない場合は、処理833を介して次の制御ルール内に含まれる条件セットの判定に移行する。
処理840は、第I番目の制御ルールの命令セットの全小命令を順に実行する。処理840において、処理841は、変数Kを0で初期化する。処理842は、変数Kに1を加算する。処理843は、小命令Com[I,K]を実行する。処理844は、変数KがL[I]に等しいかどうか、すなわち、第I番目の制御ルールにおいて、第K番目の小命令が最後の小命令かどうかを判定する。
図15は、図6のログ機能290が記録したログ291の一例を示す説明図である。ログ291の各レコードは、710から718までのカラムを含む。カラム710は、制御ルール適用機能270がイベント情報を取得した時刻、または制御ルール適用機能270が命令を実行した時刻を表す。カラム711は、制御ルール適用機能270が取得したイベント情報のイベント識別子を表す。カラム712は、制御ルール適用機能270が取得したイベント情報のアプリケーション名を表す。カラム713は、制御ルール適用機能270が取得したイベント情報のファイル名、またはURLを表す。
カラム714は、制御ルール適用機能270が取得したイベント情報のHTML要素名を表す。カラム715は、制御ルール適用機能270が実行した命令について、当該命令が属する制御ルールの番号を表す。カラム716は、制御ルール適用機能270が実行した命令について、当該命令の名前を表す。カラム717は、制御ルール適用機能270が実行した命令について、カラム716の命令名がREADの場合には読み出した値を、命令名がWRITEの場合には書き込んだ値を、命令名がTRANSLATEの場合には変換前の値を、命令名がALERTの場合には警告画面に表示する文字列を表す。カラム718は、制御ルール適用機能270が実行した命令について、カラム716の命令名がREADの場合にはデータの読み出し元を、命令名がWRITEの場合にはデータの書き込み先を、命令名がTRANSLATEの場合には変換後の値を表す。
このように、ログ機能290は、制御ルール適用機能270が取得したイベント情報と、制御ルールに従って命令を実行した場合には、その処理内容に関する情報を、時系列データとしてログに記録する。これにより、作業者121の操作によってPC100で動作する各APがどのように動作し、操作支援プログラム114がどのようなタイミングでどのように支援を実施したかを記録する事ができる。
次に、前述した図1のコンピュータシステムを用いた場合の作業者121の作業内容(《手順S1a》〜《手順S9a》)と対応させて、本実施の形態となる操作支援プログラム114を備えた図5のコンピュータシステムを用いた場合の作業者121の作業内容の一例について以下に説明する。
《手順S1b》
作業者121がPC100を用いて手順S1aの操作を行うと、表計算APの実行インスタンス210ではファイルを開く処理が実行され、その過程で各種のイベントが発生する。実行インスタンス210の処理でイベントが発生する度に、割り込み機能260は、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270の動作が完了後、元の処理(割り込み前に実行されていた処理)を再開する。制御ルール適用機能270は、当該処理からイベント情報を取得し、当該イベント情報が、制御ルール251,254,257のいずれかに適合しない限り、直ちに割り込み機能260に復帰する。
表計算APの実行インスタンス210において、ファイルを開く処理が完了する直前にイベントが発生すると、割り込み機能260は、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270は、当該処理からイベント情報を取得する。この時に取得したイベント情報は、前述した図7Aのイベント情報500と同じである。尚、先に述べたように、当該イベントが発生した時点で、表計算APの実行インスタンス210の内部データバッファ211は、ファイル“発注依頼書_日立太郎”のデータを格納している。この時点での、表計算APの実行インスタンス210の内部データバッファ211の状態は、前述した図3Aと同じである。また、表計算APの実行インスタンス210が表示するウィンドウ191は、前述した図3Bと同じである。
制御ルール適用機能270は、イベント情報500が、第1の制御ルール251の条件セット252の全小条件を満たすか否かを判断する。イベント情報500の小項目501は条件セット252の小条件601を満たし、かつ、イベント情報500の小項目502は条件セット252の小条件602を満たし、かつ、イベント情報500の小項目503は条件セット252の小条件603を満たす。よって、イベント情報500は、制御ルール251の条件セット252の全小条件を満たすので、制御ルール適用機能270は、制御ルール251の命令セット253の全小命令を順に実行する。
命令セット253の小命令611により、制御ルール適用機能270は、表計算APの実行インスタンスが内部データバッファ211に格納しているファイルのデータにおける、シート“発注内容”の第3行第2列のセルのvalue属性を格納しているバッファからデータ“AW37W5U”を読み出し、当該データを共有データバッファ231内の第0番のバッファ232に書き込む。命令セット253の小命令612により、制御ルール適用機能270は、共有データバッファ231内の第0番のバッファ232からデータ“AW37W5U”を読み出し、当該読み出したデータを、変換テーブル281に従って変換し、当該変換されたデータ“Prius Type W”を、共有データバッファ231内の第1番のバッファ233に書き込む。
命令セット253の小命令613により、制御ルール適用機能270は、表計算APの実行インスタンスが内部データバッファ211に格納しているファイルのデータにおける、シート“発注内容”の第5行第2列のセルのvalue属性を格納しているバッファからデータ“1台”を読み出し、当該データを共有データバッファ231内の2番目のバッファ234に書き込む。命令セット253の小命令614により、制御ルール適用機能270は、表計算APの実行インスタンスが内部データバッファ211に格納しているファイルのデータにおける、シート“発注内容”の第6行第2列のセルのvalue属性を格納しているバッファからデータ“2007/02/14”を読み出し、当該データを共有データバッファ231内の3番目のバッファ235に書き込む。
命令セット253の小命令615により、制御ルール適用機能270は、表計算APが内部データバッファ211に格納しているファイルのデータにおける、シート“発注内容”の第7行第2列のセルのvalue属性を格納しているバッファからデータ“¥320,000円”を読み出し、当該データを共有データバッファ231内の4番目のバッファ236に書き込み、制御ルール適用機能270は、割り込み機能260に復帰する。制御ルール適用機能270の動作が完了後、割り込み機能260は元の処理(割り込み前に行われていた処理)を再開し、表計算APの実行インスタンス210のファイルを開く処理が完了する。
図11は、表計算APの実行インスタンス210によるファイルを開く処理が完了した時点での、共有データバッファ231の説明図である。この時点で、表計算APの内部データバッファ211が格納するファイル“発注依頼書_日立太郎”のデータの一部が、共有データバッファ231にコピーされている。すなわち、共有データバッファ231において、第0番のバッファ232はデータ“AW37W5U”を格納し、第1番のバッファ233はデータ“Prius Type W”を格納し、第2番のバッファ234はデータ“1台”を格納し、第3番のバッファ235はデータ“2007/02/14”を格納し、第4番のバッファ236はデータ“¥320,000円”を格納している。
尚、操作支援プログラム114によるPC100の上記動作は一瞬であるため、作業者121には、従来通り、手順S1aを行ったようにしか感じられない。
《手順S2b》
続いて、作業者121が手順S2aの操作を行うと、WebブラウザAPの実行インスタンス220ではWebページを開く処理が実行され、その過程で各種のイベントが発生する。実行インスタンス220の処理でイベントが発生する度に、割り込み機能260は、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270の動作が完了後、元の処理(割り込み前に実行されていた処理)を再開する。制御ルール適用機能270は、当該処理からイベント情報を取得し、当該イベント情報が、制御ルール251,254,257のいずれかに適合しない限り、直ちに割り込み機能260に復帰する。
WebブラウザAPの実行インスタンス220において、Webページを開く処理が完了する直前にイベントが発生すると、割り込み機能260は、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270は、当該処理からイベント情報を取得する。この時に取得したイベント情報は、前述した図7Bのイベント情報510と同じである。尚、先に述べたように、当該イベントが発生した時点で、WebブラウザAPの実行インスタンス220の内部データバッファ221は、URL“http://www.hitachi.co.jp/order.html”のWebページのデータ143を格納している。この時点での、WebブラウザAPの実行インスタンス220の内部データバッファ221の状態は図4Aと同じである。また、WebブラウザAPの実行インスタンス220が表示するウィンドウ192は、前述した図4Bと同じである。
制御ルール適用機能270は、イベント情報510が、第1の制御ルール251の条件セット252の全小条件を満たすか否かを判断する。イベント情報510の小項目511は条件セット252の小条件601を満たさないので、制御ルール適用機能270は、イベント情報510が、第2の制御ルール254の条件セット255の全小条件を満たすか否かを判断する。イベント情報510の小項目511は条件セット255の小条件621を満たし、かつ、イベント情報510の小項目512は条件セット255の小条件622を満たし、かつ、イベント情報510の小項目513は条件セット255の小条件623を満たす。よって、イベント情報510は、第2の制御ルール254の条件セット255の全小条件を満たすので、制御ルール適用機能270は、第2の制御ルール254の命令セット256の全小命令を順に実行する。
命令セット256の小命令631により、制御ルール適用機能270は、共有データバッファ231内の第0番のバッファ232からデータ“AW37W5U”を読み出し、当該データを、WebブラウザAPの実行インスタンスが内部データバッファ221に格納しているWebページのデータにおける、名前が“product_code”のINPUT要素のvalue属性のバッファ414に書き込む。命令セット256の小命令632により、制御ルール適用機能270は、共有データバッファ231内の第1番のバッファ233からデータ“Prius Type W”を読み出し、当該データを、WebブラウザAPの実行インスタンスが内部データバッファ221に格納しているWebページのデータにおける、名前が“product_name”のINPUT要素のvalue属性のバッファ424に書き込む。
命令セット256の小命令633により、制御ルール適用機能270は、共有データバッファ231内の第2番のバッファ234からデータ“1台”を読み出し、当該データを、WebブラウザAPの実行インスタンスが内部データバッファ221に格納しているWebページのデータにおける、名前が“quantity”のINPUT要素のvalue属性のバッファ434に書き込む。命令セット256の小命令634により、制御ルール適用機能270は、共有データバッファ231内の第3番のバッファ235からデータ“2007/02/14”を読み出し、当該データを、WebブラウザAPの実行インスタンスが内部データバッファ221に格納しているWebページのデータにおける、名前が“delivery_date”のINPUT要素のvalue属性のバッファ444に書き込む。
命令セット256の小命令635により、制御ルール適用機能270は、共有データバッファ231内の第4番のバッファ236からデータ“¥320,000円”を読み出し、当該データを、WebブラウザAPの実行インスタンスが内部データバッファ221に格納しているWebページのデータにおける、名前が“price”のINPUT要素のvalue属性のバッファ454に書き込み、その後、割り込み機能260に復帰する。制御ルール適用機能270の動作が完了後、割り込み機能260は元の処理(割り込み前に行われていた処理)を再開し、WebブラウザAPの実行インスタンス220のURLを開く処理が完了する。
図12Aは、WebブラウザAPの実行インスタンス220によるURLを開く処理が完了した時点での、WebブラウザAPの実行インスタンス220の内部データバッファ221の説明図である。この時点で、共有データバッファ231が格納するデータが、WebブラウザAPの内部データバッファ221にコピーされている。すなわち、WebブラウザAPの実行インスタンス220の内部データバッファ221において、INPUT要素411のvalue属性のバッファ414はデータ“AW37W5U”を格納し、INPUT要素421のvalue属性のバッファ424はデータ“Prius Type W”を格納し、INPUT要素431のvalue属性のバッファ434はデータ“1台”を格納し、INPUT要素441のvalue属性のバッファ444はデータ“2007/02/14”を格納し、INPUT要素451のvalue属性のバッファ454はデータ“¥320,000円”を格納している。
図12Bは、WebブラウザAPの実行インスタンス220によるURLを開く処理が完了した時点での、WebブラウザAPの実行インスタンス220が表示するウィンドウ192の説明図である。この時点で、ウィンドウ192は、WebブラウザAPの内部データバッファ221のデータに基づいて描画されている。すなわち、ウィンドウ192において、テキスト入力描画部品491には、データ“AW37W5U”が描画され、テキスト入力描画部品492には、データ“Prius Type W”が描画され、テキスト入力描画部品493には、データ“1台”が描画され、テキスト入力描画部品494には、データ“2007/02/14”が描画され、テキスト入力描画部品495には、データ“¥320,000円”が描画されている。
尚、操作支援プログラム114によるPC100の上記動作は一瞬であるため、作業者121には、従来通り、作業手順S2aを行ったようにしか感じられないが、この時点で、既に従来の作業手順S3aから手順S7aまでが完了している。このように、本実施の形態による操作支援プログラム114を導入したPC100は、表計算APの実行インスタンス210とWebブラウザAPの実行インスタンス220で発生するイベントをトリガーに従来の作業手順S3aから手順S7aまでの作業を自動実行することにより、作業者121の操作を支援することができる。
《手順S3bから手順S7b》
この時点で、既に手順S3aから手順S7aは完了しているため、作業者121は、直ちに手順S8aの操作を開始することができ、結果として業務効率が著しく向上する。
《手順S8b》
先に述べたように、手順S8aは知識作業であるため、作業者121は自身の知識等に基づいて手順S8aの操作を行う。ここで、作業者121は、チェックボックス描画部品496にチェックを入れ、誤ってテキスト入力描画部品497に承認者の氏名を入力し忘れた状態で作業を完了したものとする。
図13Aは、作業者121が、手順S8bの操作を完了した時点での、WebブラウザAPの実行インスタンス220の内部データバッファ221の説明図である。図12Aとの違いは、INPUT要素461のchecked属性464が“false”から“true”になっている点である。INPUT要素471のvalue属性474がNULLであること、すなわち、氏名が未記入であることに留意されたい。図13Bは、作業者121が、手順S8bの操作を完了した時点での、WebブラウザAPの実行インスタンス220が表示するウィンドウ192の説明図である。図12Bとの違いは、チェックボックス描画部品496にチェックが入っている点である。テキスト入力描画部品497が空欄であること、すなわち、氏名が未記入であることに留意されたい。
すなわち、この状態で、作業者121が手順S9aを実行すると、従来のコンピュータシステムならば、Webサーバ130が実行する発注WebシステムAP142の実行インスタンスで障害が発生し、復旧が完了まで業務が停止するため、業務効率は大幅にさがってしまう。しかし、本実施の形態による操作支援プログラムを導入したPC100は、以下のように動作し、作業者121のミスを検知し、障害を未然に防ぐことができる。
《手順S9b》
作業者121が手順9aの操作を行うと、WebブラウザAPの実行インスタンス220では、マウスクリックの処理が実行され、その過程で各種のイベントが発生する。実行インスタンス220の処理でイベントが発生する度に、割り込み機能260は、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270の動作が完了後、元の処理(割り込み前に実行されていた処理)を再開する。制御ルール適用機能270は、当該処理からイベント情報を取得し、当該イベント情報が、制御ルール251,254,257のいずれかに適合しない限り、直ちに割り込み機能260に復帰する。
WebブラウザAPの実行インスタンス220において、マウスクリックに関連付けられた処理が開始される直前にイベントが発生すると、割り込み機能260は、当該処理に割り込んで、制御ルール適用機能270を動作させ、制御ルール適用機能270は、当該処理からイベント情報を取得する。この時に取得したイベント情報は、図7Cのイベント情報520となる。
制御ルール適用機能270は、イベント情報520が、第1の制御ルール251の条件セット252の全小条件を満たすか否かを判断する。イベント情報520の小項目521は条件セット252の小条件601を満たさないので、制御ルール適用機能270は、イベント情報520が、第2の制御ルール254の条件セット255の全小条件を満たすか否かを判断する。イベント情報520の小項目521は条件セット255の小条件621を満たさないので、制御ルール適用機能270は、イベント情報520が、第3の制御ルール257の条件セット258の全小条件を満たすか否かを判断する。
イベント情報520の小項目521は条件セット258の小条件641を満たし、かつ、イベント情報520の小項目522は条件セット258の小条件642を満たし、かつ、イベント情報520の小項目523は条件セット258の小条件643を満たし、かつ、イベント情報520の小項目524は条件セット258の小条件644を満たす。よって、イベント情報520は、第3の制御ルール257の条件セット258の全小条件を満たすので、制御ルール適用機能270は、第3の制御ルール257の命令セット259の全小命令を順に実行する。
命令セット259の小命令651により、制御ルール適用機能270は、WebブラウザAPの実行インスタンス220が内部データバッファ221に格納しているWebページのデータにおける、名前が“add_acknowledger”のINPUT要素461のchecked属性のバッファ464からデータ“true”を読み出し、当該データを共有データバッファ231内の第0番のバッファ232に書き込む。命令セット259の小命令652により、制御ルール適用機能270は、WebブラウザAPの実行インスタンス220が内部データバッファ221に格納しているWebページのデータにおける、名前が“acknowledger”のINPUT要素471のvalue属性のバッファ474からデータ“NULL”を読み出し、当該データを共有データバッファ231内の第1番のバッファ233に書き込む。
命令セット259の小命令653により、制御ルール適用機能270は、第1引数657の論理式(Buf[0]==“true”)AND(Buf[1]==NULL)、すなわち、「共有データバッファ231の第0番バッファ232に格納された値が“true”であり、かつ共有データバッファ231の第1番バッファ233に格納された値がNULLである」を真であると評価し、警告表示機能244を動作させ、割り込み機能260が割り込んだ処理をキャンセルし、“追加する承認者の氏名が未記入です”と記した警告ウィンドウ194をディスプレイに表示する。制御ルール適用機能270の動作が完了後、割り込み機能260は元の処理(割り込み前に行われていた処理)を再開するが、当該処理がキャンセルされているため、WebブラウザAPの実行インスタンス220はマウスクリックの処理をキャンセルする。
図14は、WebブラウザAPの実行インスタンスにおける、マウスクリックの処理がキャンセルされた時点での、警告表示機能244が表示する警告ウィンドウ194の説明図である。この時点で、WebブラウザAPの実行インスタンスの状態は、作業者121が手順S9bを開始する直前の状態に戻っている。
尚、操作支援プログラム114によるPC100の上記動作は一瞬であるため、作業者121には、従来通り、作業手順S9aを行ったところ、ミスを指摘する警告ウィンドウが表示され、ボタン描画部品498のクリックがキャンセルされたように見える。このように、本実施の形態による操作支援プログラム114を導入したPC100は、WebブラウザAPの実行インスタンス220で発生するイベントをトリガーに、従来の手順S9aにおける作業者121のミスの有無を自動的にチェックすることにより、作業者121の操作を支援することができる。
以上、本発明者よりなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。