(57)【特許請求の範囲】
【請求項１】
ワークフロークライアントと、外部データベースと前記ワークフロークライアントと通信可能でありワークフローデータベースの更新を行うワークフローサーバと、を備えたワークフローシステムであって、
前記ワークフローサーバは、
前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、
前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、
該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、
前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、
前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、
前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、
前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、
前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部と
を備えたことを特徴とするワークフローシステム。
【請求項２】
ワークフロークライアントと外部データベースと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバであって、
前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、
前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、
該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、
前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、
前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、
前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、
前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、
前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部と
を備えたことを特徴とするワークフローサーバ。
【請求項３】
前記ＳＱＬ発行部は、前記外部データベース操作指示に基づく処理を、前記ＳＱＬ生成部によって生成された前記ＳＱＬ文を実行し、前記ＳＱＬ文の全ての実行結果が成功である場合には、前記ＳＱＬ文の全ての実行結果をコミットして前記外部データベース操作指示を成功とし、前記ＳＱＬ文のうちのいずれかの実行結果がエラーである場合には、前記ＳＱＬ文のうち処理済みの前記ＳＱＬ文の処理結果をロールバックして前記外部データベース操作指示をエラーとする前記外部データベース操作指示のトランザクションとして発行し、
前記ＳＱＬ発行部は、更に前記トランザクションにおいて前記外部データベース参照操作により前記特定行からデータを取得した後、外部データベース編集操作により前記特定行を編集する前に前記特定行の更新が有る場合には、前記行チェック操作の結果としてエラーを返すことを特徴とする請求項２に記載のワークフローサーバ。
【請求項４】
前記配送指示データに基づく前記配送処理を、前記ワークフローデータベースに対する前記データ処理が成功した場合には成功としてコミットし、前記データ処理が失敗した場合にはエラーとしてロールバックするトランザクションとして発行し、前記配送処理がエラーである場合、前記ワークフローデータベースに対する前記配送処理のトランザクションをロールバックするとともに、前記外部データベースに対する前記外部データベース操作指示のトランザクションもロールバックすることを特徴とする請求項３に記載のワークフローサーバ。
【請求項５】
前記外部データベースに対する前記外部データベース操作指示がエラーであった場合、前記外部データベースに対する前記外部データベース操作指示のトランザクションをロールバックするとともに、前記ワークフローデータベースに対する前記配送処理のトランザクションもロールバックすることを特徴とする請求項３または請求項４のいずれか１項に記載のワークフローサーバ。
【請求項６】
ワークフロークライアントと、外部データベースと前記ワークフロークライアントと通信可能でありワークフローデータベースの更新を行うワークフローサーバと、を備えたワークフローシステムにおいて、前記外部データベースのデータへアクセスする方法であって、
前記ワークフローサーバの受信部が、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信ステップと、
前記ワークフローサーバの外部データベース操作指示解析部が、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析ステップと、
前記ワークフローサーバのＳＱＬ生成部が、前記外部データベース操作指示解析ステップにより解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成ステップと、
前記ワークフローサーバのＳＱＬ発行部が、前記ＳＱＬ生成ステップにより生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行ステップと、
前記ワークフローサーバの帳票フォーム表示データ取得部が、前記外部データベース参照操作に基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得ステップと、
前記ワークフローサーバの送信部が、前記帳票フォーム表示データ取得ステップにより前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信ステップと、
前記ワークフローサーバの判定部が、前記帳票フォーム表示データ取得ステップにより取得し前記送信ステップにより前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定ステップと、
前記ワークフローサーバの配送処理実行部が、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行ステップにより発行された結果が、前記判定ステップに基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定ステップに基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行ステップと
を備えたことを特徴とする方法。
【請求項７】
外部データベースとワークフロークライアントと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバにおいて、前記外部データベースのデータへアクセスする方法であって、
前記ワークフローサーバの受信部が、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信ステップと、
前記ワークフローサーバの外部データベース操作指示解析部が、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析ステップと、
前記ワークフローサーバのＳＱＬ生成部が、前記外部データベース操作指示解析ステップにより解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成ステップと、
前記ワークフローサーバのＳＱＬ発行部が、前記ＳＱＬ生成ステップにより生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行ステップと、
前記ワークフローサーバの帳票フォーム表示データ取得部が、前記外部データベース参照操作に基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得ステップと、
前記ワークフローサーバの送信部が、前記帳票フォーム表示データ取得ステップにより前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信ステップと、
前記ワークフローサーバの判定部が、前記帳票フォーム表示データ取得ステップにより取得し前記送信ステップにより前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定ステップと、
前記ワークフローサーバの配送処理実行部が、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行ステップにより発行された結果が、前記判定ステップに基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定ステップに基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行ステップと
を備えたことを特徴とする方法。
【請求項８】
ワークフロークライアントと、外部データベースと前記ワークフロークライアントと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバと、を備えたワークフローシステムで実行可能なプログラムであって、
前記ワークフローサーバを、
前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、
前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、
該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、
前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、
前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、
前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、
前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、
前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部と
して機能させることを特徴とするプログラム。
【請求項９】
ワークフロークライアントと外部データベースと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバで実行可能なプログラムであって、
前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、
前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、
該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、
前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、
前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、
前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、
前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、
前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部と
して機能させることを特徴とするプログラム。
【請求項１０】
請求項８又は請求項９に記載されたプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
サーバ・クライアント型システムにおいて、クライアントから非同期でデータを操作する際、操作指示に関する情報をクライアント側でキューに溜め込み、一括してデータベース側へ送信する技術が以前より存在している。また、排他資源に対する操作の逐次化を行うサーバ・クライアント型データ処理装置において、不揮発性メモリを用いて、排他制御のためのメッセージ送信の回数を減らし、処理の効率化を実現する技術が提案されている。この処理装置では、キューや排他制御の機構をデータベース・サーバ側に組み込む形で排他制御を実現している（例えば、特許文献１参照）。これらの技術は、サーバ・クライアント型システムの形態をなすワークフローシステムに対しても用いることが可能である。
【０００３】
【特許文献１】特開平４−２８６０４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来は、ワークフローシステムにおいて定義された業務を遂行する主体は、ユーザであった。このようなワークフローシステムは、単独の業務システム内で完結していた。そのため、ワークフローシステム外の業務システムについては、当該ワークフローシステムにおいて考慮する必要がなかった。
【０００５】
近年、企業において様々な業務プロセスがシステム化されている。また、ＩＴ（Information Technology）統制のニーズの高まりもあって、ワークフローシステムと周辺システムとのデータ連携が求められている。例えば、ワークフローの一工程として、外部ＤＢ内に存在するデータを読み込み、ワークフロー上での処理結果を外部ＤＢ上に反映させる等のデータ連携を行う、といった要件が存在する。そこで、ワークフローシステムにおける外部データとの連携では、次の点が重要になる。すなわち、ワークフローシステムでは、ワークフローユーザが入力を行う帳票において外部データを取得後、帳票入力等の操作を行った後で当該外部データの更新を行うことがある。この際、外部データの取得と更新との間に不特定の時間差が生じ得る。そのため、他のユーザや外部システムによって、このような外部データが更新されてしまう可能性がある。これを防ぐためには、あるユーザ又は外部システムによるデータ取得時に、ロックをかけておくか、又は重複更新を防ぐためのチェックを行う等の対策が必要となってくる。
【０００６】
また、ワークフローシステムの特性として、ワークフローの申請処理・承認処理・差戻し処理等が失敗した場合、外部データの更新を無効にしなければならない場合もあるという問題点が存在する。
【０００７】
しかしながら、操作対象データがワークフローシステム外に存在する場合、特許文献１に記載されたシステムを用いて排他制御を実現しようとすると、外部ＤＢの構造を変更する必要が生じるため、容易に実現できないケースが多い。
【０００８】
そこで、本発明は、上述の点に鑑みて、ワークフローシステムから外部のＤＢ内に存在するデータにアクセスする際、排他制御及び重複更新回避を容易に実現することが可能な機構を提供することを目的とする。また、本発明は、ワークフローシステムから外部のＤＢ内に存在するデータにアクセスする際、外部データ更新のトランザクションに配送処理を含めることが可能な機構を提供することを目的とする。
【課題を解決するための手段】
【０００９】
このような目的を達成するために、請求項１に記載の発明は、ワークフロークライアントと、外部データベースと前記ワークフロークライアントと通信可能でありワークフローデータベースの更新を行うワークフローサーバと、を備えたワークフローシステムであって、前記ワークフローサーバは、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部とを備えたことを特徴とする。  
また、請求項２に記載の発明は、ワークフロークライアントと外部データベースと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバであって、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部とを備えたことを特徴とする。  
また、請求項３に記載の発明は、請求項２に記載のワークフローサーバにおいて、前記ＳＱＬ発行部は、前記外部データベース操作指示に基づく処理を、前記ＳＱＬ生成部によって生成された前記ＳＱＬ文を実行し、前記ＳＱＬ文の全ての実行結果が成功である場合には、前記ＳＱＬ文の全ての実行結果をコミットして前記外部データベース操作指示を成功とし、前記ＳＱＬ文のうちのいずれかの実行結果がエラーである場合には、前記ＳＱＬ文のうち処理済みの前記ＳＱＬ文の処理結果をロールバックして前記外部データベース操作指示をエラーとする前記外部データベース操作指示のトランザクションとして発行し、前記ＳＱＬ発行部は、更に前記トランザクションにおいて前記外部データベース参照操作により前記特定行からデータを取得した後、外部データベース編集操作により前記特定行を編集する前に前記特定行の更新が有る場合には、前記行チェック操作の結果としてエラーを返すことを特徴とする。
【００１０】
また、請求項４に記載の発明は、請求項３に記載のワークフローサーバにおいて、前記配送指示データに基づく前記配送処理を、前記ワークフローデータベースに対する前記データ処理が成功した場合には成功としてコミットし、前記データ処理が失敗した場合にはエラーとしてロールバックするトランザクションとして発行し、前記配送処理がエラーである場合、前記ワークフローデータベースに対する前記配送処理のトランザクションをロールバックするとともに、前記外部データベースに対する前記外部データベース操作指示のトランザクションもロールバックすることを特徴とする。
【００１１】
また、請求項５に記載の発明は、請求項３または請求項４のいずれか１項に記載のワークフローサーバにおいて、前記外部データベースに対する前記外部データベース操作指示がエラーであった場合、前記外部データベースに対する前記外部データベース操作指示のトランザクションをロールバックするとともに、前記ワークフローデータベースに対する前記配送処理のトランザクションもロールバックすることを特徴とする。
【００１２】
また、請求項６に記載の発明は、ワークフロークライアントと、外部データベースと前記ワークフロークライアントと通信可能でありワークフローデータベースの更新を行うワークフローサーバと、を備えたワークフローシステムにおいて、前記外部データベースのデータへアクセスする方法であって、前記ワークフローサーバの受信部が、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信ステップと、前記ワークフローサーバの外部データベース操作指示解析部が、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析ステップと、前記ワークフローサーバのＳＱＬ生成部が、前記外部データベース操作指示解析ステップにより解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成ステップと、前記ワークフローサーバのＳＱＬ発行部が、前記ＳＱＬ生成ステップにより生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行ステップと、前記ワークフローサーバの帳票フォーム表示データ取得部が、前記外部データベース参照操作に基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得ステップと、前記ワークフローサーバの送信部が、前記帳票フォーム表示データ取得ステップにより前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信ステップと、前記ワークフローサーバの判定部が、前記帳票フォーム表示データ取得ステップにより取得し前記送信ステップにより前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定ステップと、前記ワークフローサーバの配送処理実行部が、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行ステップにより発行された結果が、前記判定ステップに基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定ステップに基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行ステップとを備えたことを特徴とする。
【００１３】
また、請求項７に記載の発明は、外部データベースとワークフロークライアントと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバにおいて、前記外部データベースのデータへアクセスする方法であって、前記ワークフローサーバの受信部が、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信ステップと、前記ワークフローサーバの外部データベース操作指示解析部が、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析ステップと、前記ワークフローサーバのＳＱＬ生成部が、前記外部データベース操作指示解析ステップにより解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成ステップと、前記ワークフローサーバのＳＱＬ発行部が、前記ＳＱＬ生成ステップにより生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行ステップと、前記ワークフローサーバの帳票フォーム表示データ取得部が、前記外部データベース参照操作に基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得ステップと、前記ワークフローサーバの送信部が、前記帳票フォーム表示データ取得ステップにより前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信ステップと、前記ワークフローサーバの判定部が、前記帳票フォーム表示データ取得ステップにより取得し前記送信ステップにより前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成ステップによって生成されたＳＱＬ文を、前記ＳＱＬ発行ステップによって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定ステップと、前記ワークフローサーバの配送処理実行部が、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行ステップにより発行された結果が、前記判定ステップに基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定ステップに基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行ステップとを備えたことを特徴とする。
【００１４】
また、請求項８に記載の発明は、ワークフロークライアントと、外部データベースと前記ワークフロークライアントと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバと、を備えたワークフローシステムで実行可能なプログラムであって、前記ワークフローサーバを、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部として機能させることを特徴とする。
【００１５】
また、請求項９に記載の発明は、ワークフロークライアントと外部データベースと通信可能であり、ワークフローデータベースの更新を行うワークフローサーバで実行可能なプログラムであって、前記ワークフロークライアントから送信された、前記外部データベースのデータを取得するための外部データベース参照操作を含む外部データベース操作指示を含む配送指示、または特定行からデータを取得した後、該特定行の更新の有無を確認する行チェック操作と、前記外部データベースのデータを編集する外部データベース編集操作とを含む外部データベース操作指示と、配送指示データとを含む配送指示を受信する受信部と、前記配送指示に含まれる前記外部データベース操作指示の内容を解析する外部データベース操作指示解析部と、該外部データベース操作指示解析部により解析された前記外部データベース操作指示の内容から、前記外部データベースに対するＳＱＬ文を生成するＳＱＬ生成部と、前記ＳＱＬ生成部により生成された前記ＳＱＬ文を前記外部データベースに対して発行するＳＱＬ発行部と、前記外部データベース参照操作に基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、前記ワークフロークライアントのユーザに提示する帳票フォームに表示するためのデータを取得する帳票フォーム表示データ取得部と、前記帳票フォーム表示データ取得部により前記外部データベースから取得された前記データを、前記ワークフロークライアントに送信する送信部と、前記帳票フォーム表示データ取得部により取得し前記送信部により前記ワークフロークライアントに送信した当該ワークフロークライアントにおける更新前のデータと前記行チェック操作とに基づき前記ＳＱＬ生成部によって生成されたＳＱＬ文を、前記ＳＱＬ発行部によって前記外部データベースに対して発行することにより、当該ＳＱＬ文の実行結果がエラーであるか否かを判定する判定部と、前記行チェック操作に基づき生成された前記ＳＱＬ文の前記ＳＱＬ発行部により発行された結果が、前記判定部に基づき成功であると判定された場合には、前記配送指示データに基づいてワークフローの配送処理を行って、前記ワークフローデータベースに対してデータ処理を行い、一方、当該判定部に基づきエラーであると判定された場合には、前記外部データベースに対する操作を実行せず、ワークフローの前記配送処理を行わない配送処理実行部として機能させることを特徴とする。
【００１７】
また、請求項１０に記載の発明は、コンピュータ読み取り可能な記録媒体であって、請求項８又は請求項９に記載されたプログラムを記録したことを特徴とする。
【００１８】
本明細書で用いられる「ユニット」という用語は、アプリケーション・フォームの入力チェック用のロジックや、上記フォームからのＤＢテーブルにおけるデータの更新、上記フォームへのデータの取込等のロジック等の１つ又は複数の命令を指す。
【００１９】
本明細書で用いられる「帳票」という用語は、一般的に用いられる発注書や請求書等の紙に記述されたものではなく、そのような発注書や請求書等を電子的な形態で保持したものを指す。この帳票には、入力用帳票、参照用帳票、及び出力用帳票等が含まれる。また、本明細書において、帳票フォームという用語も、帳票と同一の意味を有する。
【００２０】
本明細書で用いられる「配送処理」という用語は、ワークフローの申請処理・承認処理・差戻し処理等といった、コンピュータシステムを用いて実現される一連の処理を指す。具体的には、受注部門の担当者がある物品を受注して処理した後、出荷部門の担当者が引き継ぎ、発送処理を行うといったような、複数の人が連携して行う、作業者間の作業の流れを、コンピュータシステムを用いて実現する処理を指す。
【００２１】
本明細書で用いられる「外部データベース（ＤＢ）」という用語は、ワークフローシステムの外部に存在するデータベースを指す。
【００２２】
本明細書で用いられる「外部データ」という用語は、上記外部ＤＢ内に存在する各種のデータを指す。
【発明の効果】
【００２３】
本発明によれば、排他制御及び更新チェック機能により、複数のクライアントから同一の外部データを操作した場合でも、重複更新を回避することが可能になる。また、操作対象のデータがワークフローシステム外にある場合でも、外部ＤＢの構造を変更することなく、容易に重複更新を回避することが可能になる。例えば、外部ＤＢ内の備品管理テーブルと連携している備品貸出ワークフローで、備品の借用申請過程において上記テーブルの在庫数を更新する等の場合、複数のクライアントが同時に同じ備品に対して借用申請をするときでも、重複更新を回避することができる。
【００２４】
また、外部ＤＢ操作指示のキューイング開始時の外部データが、当該開始時と当該操作実行後とで同じ状態にあるかチェックできるので、複数のデータベースを対象にしている場合等、トランザクションスタックの問題である重複更新を回避することが可能になる。例えば、外部ＤＢ内の備品管理テーブルと連携している備品貸出ワークフローで、当該ワークフローシステム外にある備品管理システムから備品管理テーブルの在庫数が更新されたとする。その場合でも、ワークフロークライアントが備品管理テーブルの在庫数を更新操作した際に在庫数の不整合が生じる事態を防ぐことができる。
【００２５】
また、ワークフローシステム側で定義した一連の処理を、キューイングに関するトランザクションの１単位とできるため、ワークフローシステム側の配送処理をトランザクションに含めて、重複更新を回避することが可能になる。例えば、外部ＤＢ内の備品管理テーブルと連携している備品貸出ワークフローで、ワークフローの承認処理に失敗した場合には、備品管理テーブルの在庫数の更新をしないようにすることができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照しながら、本発明を適用可能な実施形態について詳細に説明する。
【００２７】
図１は、本発明を適用可能な例示的な一実施形態であるワークフローシステム１００を示す図である。図１において、ワークフローサーバ１０４は、ネットワーク１０３を介して、外部システムサーバ１０１及び外部データベース（ＤＢ）１０２と接続されていることを前提とする。
【００２８】
ワークフローシステム１００は、ワークフローサーバ１０４と、ワークフローデータベース（ＤＢ）１０５と、少なくとも１つのワークフロークライアント１０６とを含む。ワークフローシステム１００はまた、ワークフローで用いる帳票等の設計データ（以下、定義情報とも呼ぶ）を作成するための、少なくとも１つの帳票設計クライアント１０７も含む。これらワークフローサーバ１０４、ワークフローＤＢ１０５、ワークフロークライアント１０６、及び帳票設計クライアント１０７は、イントラネット１０８を介して接続されている。
【００２９】
ネットワーク１０３の構成は公知であるため、その詳細な説明は省略するが、ネットワーク１０３として、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イントラネット、又はインターネット等を利用することができる。また、イントラネット１０８は、企業内ネットワークを想定しているが、ネットワーク１０３と同様に、ＬＡＮ、ＷＡＮ、又はインターネット等を利用することができる。
【００３０】
ワークフローサーバ１０４は、ワークフロークライアント１０６からの要求に応じて、ワークフローＤＢ１０５にアクセスして、ワークフローＤＢ１０５におけるデータの処理及び管理を行う。ワークフローサーバ１０４は、必要に応じて、外部ＤＢ１０２に対してもアクセスしてデータ処理を行う。ワークフローサーバ１０４は、さらに必要があれば、外部ＤＢに対するデータ操作の結果（例えば、データ参照、データ更新、データ削除、及びこれらの処理結果の成否等）をワークフロークライアント１０６に送信する。なお、図１では、ワークフローサーバ１０４とワークフローＤＢ１０５とを別々のハードウェアとして示したが、ワークフローＤＢ１０５をワークフローサーバ１０４内に含めてもよい。
【００３１】
図２は、図１に示した外部システムサーバ１０１、外部ＤＢ１０２、ワークフローサーバ１０４、ワークフローＤＢ１０５、ワークフロークライアント１０６、及び帳票設計クライアント１０７のハードウェア構成の一例を示すブロック図である。
【００３２】
図２では、ＣＰＵ２０１、ＲＡＭ２０２、ＲＯＭ２０３、入力コントローラ２０５、出力コントローラ２０６、外部メモリコントローラ２０７、及び通信インターフェース（Ｉ／Ｆ）コントローラ２０８が、システムバス２０４を介して接続されている。
【００３３】
ＣＰＵ２０１は、これらＲＡＭ２０２やＲＯＭ２０３等の各デバイスを統括的に制御する。また、ＣＰＵ２０１は、ＲＯＭ２０３や外部メモリ２１１に記憶されているプログラムを読み出してＲＡＭ２０２にロードし、当該プログラムを実行する。従って、図示して後述する、ワークフローサーバ１０４及びワークフロークライアント１０６の、各種「・・・部」が行う処理を実際に実行するデバイスが、ワークフローサーバ１０４及びワークフロークライアント１０６のＣＰＵ２０１である。
【００３４】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア、及び一時待避領域等として機能する。ＲＯＭ２０３や、外部メモリコントローラ２０７に接続された外部メモリ２１１は、ＣＰＵ２０１の制御プログラムであるオペレーティングシステム（ＯＳ）や、各サーバ又は各クライアントの後述する各種機能を実現するためのプログラムを記憶している。
【００３５】
入力コントローラ２０５は、入力部２０９からの入力を制御する。ユーザは、例えば、入力部２０９を介して、コマンドや情報を入力することができる。この入力部２０９としては、特にサーバやクライアント等の端末が使用される場合、キーボード、マウス等のポインティングデバイスが挙げられる。また、印刷装置等が使用される場合、入力部２０９として、タッチパネル、ボタン、及びスイッチ等が挙げられる。しかしながら、入力部２０９は、上記に挙げたものに限定されるわけではない。
【００３６】
出力コントローラ２０６は、出力部２１０の表示を制御する。この出力部２１０としては、例えば、ＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）等が挙げられるが、これらに限定されるものではない。
【００３７】
外部メモリコントローラ２０７は、ブートプログラム、各種アプリケーション・プログラム、フォントデータ、ユーザファイル、編集ファイル、プリンタドライバ等を記憶している外部メモリ２１１へのアクセスを制御する。加えて、外部メモリコントローラ２０７は、各サーバ又は各クライアントの各種機能を実現するためのプログラム２１２、テーブル、及びパラメータ等を記憶している。この外部メモリ２１１としては、ハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）、ＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）、スマートメディア等が挙げられる。しかしながら、外部メモリ２１１は、上記に挙げたものに限定されるわけではない。
【００３８】
通信Ｉ／Ｆコントローラ２０８は、ネットワーク１０３、１０８を介して外部機器に対する通信制御処理を実行する。
【００３９】
なお、プログラム２１２は、実際にはハードウェアではなく、本発明を実現するための各種のプログラムである。このプログラム２１２は、外部メモリ２１１に記憶されており、ＣＰＵ２０１により、必要に応じてＲＡＭ２０２にロードされ実行される。
【００４０】
図３は、図１に示したワークフローサーバ１０４及びワークフローＤＢ１０５において実現される機能構成の一例を示すブロック図である。図３では、ワークフローＤＢ１０５がワークフローサーバ１０４内に存在するものとして示されているが、ワークフローＤＢ１０５は、ワークフローサーバ１０４とは別のハードウェアとすることができる。
【００４１】
ワークフローサーバ１０４は、入力処理部３０１、帳票定義指定部３０２、出力処理部３０３、外部ＤＢ操作指示解析部３０４、ＳＱＬ生成部３０５、ＳＱＬ発行部３０６、配送処理実行部３０７、及びＳＱＬキュー３２１を含む。
【００４２】
ワークフローＤＢ１０５は、帳票定義３１１、外部ＤＢ定義３１５、及び帳票データ３１６を含む。また、帳票定義３１１は、フォーム定義３１２、ユニット定義３１３、及び項目構成定義３１４を含む。
【００４３】
入力処理部３０１は、ワークフローサーバ１０４の入力コントローラ２０５又は通信Ｉ／Ｆコントローラ２０８からの入力情報を受け付ける処理を行う。また、入力処理部３０１は、受け付けた入力情報の内容に応じて、帳票定義指定部３０２、外部ＤＢ操作指示解析部３０４、及び配送処理実行部３０７に対する、予め定められたフォーマットを有する要求に、その入力情報を変換する。この入力情報には、帳票定義情報の要求と、外部ＤＢ操作指示の要求と、配送処理の要求と、この外部ＤＢ操作指示の要求及び配送処理の要求の組合せが含まれる。詳細には、入力処理部３０１は、受け付けた入力情報に帳票定義情報の要求が含まれる場合、帳票定義情報を取得するよう帳票定義指定部３０２に要求する。また、受け付けた入力情報に外部ＤＢ操作指示の要求が含まれる場合には、入力処理部３０１は、外部ＤＢに対する操作内容を解析するよう外部ＤＢ操作指示解析部３０４に要求する。また、受け付けた入力情報に配送処理の要求が含まれる場合には、入力処理部３０１は、配送処理を実行するよう配送処理実行部３０７に要求する。
【００４４】
帳票定義指定部３０２は、入力処理部３０１からの帳票定義情報の要求に応じて、帳票定義３１１から取得した帳票定義情報を出力処理部３０３に渡す。
【００４５】
出力処理部３０３は、帳票定義指定部３０２、ＳＱＬ発行部３０６、及び配送処理実行部３０７の処理結果を、出力コントローラ２０６又は通信Ｉ／Ｆコントローラ２０８に対して出力する。
【００４６】
外部ＤＢ操作指示解析部３０４は、入力処理部３０１からの外部ＤＢ操作指示の要求に応じて、予め定められたフォーマットを有する当該外部ＤＢ操作指示を解析する。解析した結果、外部ＤＢ操作指示解析部３０４は、その操作指示内に含まれる外部ＤＢを識別する情報（外部ＤＢ定義ＩＤ）を識別し、当該外部ＤＢ操作指示に含まれる外部ＤＢへの具体的な操作内容をＳＱＬ文に変換する要求をＳＱＬ生成部に渡す。外部ＤＢ操作指示の詳細については、図１６を参照して後述する。
【００４７】
ＳＱＬ生成部３０５は、外部ＤＢ操作指示解析部３０４からのＳＱＬ文への変換要求の内容に基づいてＳＱＬ文を生成し、そのＳＱＬ文をＳＱＬキュー３２１へ溜める。代替として、ＳＱＬ生成部３０５は、ＳＱＬ文をＳＱＬキュー３２１へ溜めずに、そのＳＱＬ文を直接ＳＱＬ発行部３０６へ渡してもよい。
【００４８】
ＳＱＬ発行部３０６は、ＳＱＬキュー３２１に溜められたＳＱＬ文、又はＳＱＬ生成部３０５から直接渡されたＳＱＬ文を、外部ＤＢ１０２に対して発行する。また、外部ＤＢの操作とともに、配送処理を実行する場合には、ＳＱＬ発行部３０６は、配送処理実行部３０７に対して、その旨を通知する。
【００４９】
配送処理実行部３０７は、入力処理部３０１又はＳＱＬ発行部３０６からの配送処理の要求に従って、帳票の配送処理を行い、配送処理の結果（例えば、申請が承認された、申請が否認された、配送が差し戻された等）を出力処理部３０３へ通知する。
【００５０】
次に、ワークフローサーバ１０４が扱うデータについて説明する。  
帳票定義３１１は、ワークフローで用いる帳票のテンプレートとなる定義情報を有している。帳票定義３１１は、後述するフォーム定義３１２、ユニット定義３１３、及び項目構成定義３１４を含む。
【００５１】
フォーム定義３１２は、帳票のデザインのテンプレートとなる定義情報を有している。特に重要なものとして、フォーム定義３１２は、項目構成定義３１４で定義されている項目の配置情報と、ユニット定義３１３で定義されているユニットの実行タイミングに関する情報とを有している。
【００５２】
ユニット定義３１３は、ユニットの実行タイミングに関する情報を有している。また、ユニット定義３１３は、配送処理や外部ＤＢに対する操作等、帳票起動時や帳票上に配置されたボタンのクリック等をトリガとして発せられる命令の内容と、その命令の実行順序とを規定している。その命令の内容としては、ワークフローサーバに対する要求だけでなく、帳票上（すなわち、ワークフロークライアント上）での計算処理等を含めることができる。ユニット定義３１３の構造については、図９を参照して後述する。
【００５３】
項目構成定義３１４は、帳票上で表示・入力するデータ項目の種類（例えば、テキスト欄、セレクトリスト、ラジオチェック等）、当該データ項目の配置情報、及び文字数等を規定したものである。
【００５４】
外部ＤＢ定義３１５は、外部ＤＢへ接続するために必要となる接続情報、データベース製品名等の情報を規定したものである。外部ＤＢ定義３１５の構造については、図８を参照して後述する。
【００５５】
帳票データ３１６は、ワークフローの運用時に、項目構成定義３１４に基づいてワークフロークライアントにより登録される実データである。
【００５６】
なお、ＳＱＬキュー３２１は、外部メモリ２１１内の記憶領域において実装される。
【００５７】
図４は、図１に示したワークフロークライアント１０６において実現される機能構成の一例を示す図である。
【００５８】
ワークフロークライアント１０６は、入力処理部４０１、帳票定義情報解析部４０２、出力処理部４０３、ユニット定義情報解析部４０４、キュー生成部４０５、要求発行部４０６、帳票定義情報４１１、及び外部データ操作指示キュー４２１を含む。帳票定義情報４１１は、ユニット定義情報４１２を少なくとも含む。
【００５９】
入力処理部４０１は、ワークフロークライアント１０６の入力コントローラ２０５又は通信Ｉ／Ｆコントローラ２０８からの入力情報を受け付ける処理を行う。また、入力処理部４０１は、受け付けた入力情報の内容に応じて、帳票定義情報解析部４０２及びユニット定義情報解析部４０４に渡される、予め定められたフォーマットを有する要求に、その入力情報を変換する。この入力情報には、ワークフローサーバ１０４からの帳票定義３１１と、ユニットの実行要求とが含まれる。詳細には、受け付けた入力情報が帳票定義３１１である場合、入力処理部４０１は、帳票定義解析部４０２に帳票定義３１１を渡す。一方、受け付けた入力情報がユニットの実行要求である場合、入力処理部４０１は、そのユニットのユニット識別子（ユニットＩＤ）をユニット定義情報解析部４０４に渡す。ユニットに関する詳細は、図９を参照して後述する。
【００６０】
帳票定義解析部４０２は、ワークフローサーバ１０４から入力処理部４０１を介して受信した帳票定義３１１の内容を解析する。解析した結果、帳票定義解析部４０２は、ワークフロークライアント１０６において、帳票フォームを表示したり稼働したりするために必要な情報である帳票定義情報４１１を生成する。この帳票定義情報４１１を生成する際に、帳票定義３１１に含まれるユニット定義３１３が、ユニット定義情報４１２としてワークフロークライアント１０６の帳票定義情報４１１内に含まれることになる。また、帳票定義情報解析部４０２は、初期化過程、すなわち、帳票フォームの起動時において実行されるユニットが指定されている場合には、そのユニットのユニットＩＤをユニット定義情報解析部４０４に渡す。
【００６１】
出力処理部４０３は、帳票定義解析部４０２又は要求発行部４０６の処理結果を、出力コントローラ２０６又は通信Ｉ／Ｆコントローラ２０８に対して出力する。
【００６２】
ユニット定義情報解析部４０４は、入力処理部４０１若しくは帳票定義情報解析部４０２からのユニットＩＤに対応するユニット定義情報、又はユニット定義情報４１２を解析する。解析した結果、ユニット定義情報４１２の内容に応じて、ユニット定義情報解析部４０４は、キュー生成部４０５へ外部ＤＢ操作指示を渡すか、又は要求発行部４０６に外部ＤＢ操作指示、配送指示等を送信する。
【００６３】
キュー生成部４０５は、ユニット定義情報解析部４０４の解析結果が外部ＤＢ操作指示であった場合、その外部ＤＢ操作指示を外部ＤＢ操作指示キュー４２１に溜める。また、キュー生成部４０５は、外部ＤＢ操作指示キュー４２１キューへ外部ＤＢ操作指示の溜め込みが終了した際、キュー生成処理が終了した旨を要求発行部４０６へ通知する。
【００６４】
要求発行部４０６は、出力処理部４０３を介して、ワークフローシステム１００における配送指示、単一の外部ＤＢ操作指示、又は外部ＤＢ操作指示キューに溜められた外部ＤＢ操作指示の実行指示をワークフローサーバ１０４に送信する。
【００６５】
次に、ワークフロークライアント１０６が扱うデータについて説明する。  
帳票定義情報４１１は、帳票定義３１１に含まれるデータのうち、当該帳票で用いる帳票定義である。ユニット定義情報４１２は、ユニット定義３１３のうち、当該帳票で用いるユニット定義である。外部ＤＢ操作指示キュー４２１は、ワークフローサーバに一括して送信する外部ＤＢ操作指示をキューとして溜めておくための領域である。なお、帳票定義情報４１１、ユニット定義情報４１２、及び外部ＤＢ操作指示キュー４２１は、外部メモリ２１１内の記憶領域において実装される。
【００６６】
図５は、本発明を適用可能な一実施形態に従ってワークフローを構築する場合の諸定義情報の一例を示す図である。
【００６７】
組織定義５０１は、ワークフローユーザ、ワークフローユーザが所属する部門及び役割（ロール）等を規定したものである。経路・プロセス定義５０２は、帳票の配送経路を規定したものである。帳票定義３１１、フォーム定義３１２、ユニット定義３１３、項目構成定義３１４、及び外部ＤＢ定義３１５については上記にて説明したため、省略することとする。図５において記されている「参照」という用語は、ある定義情報が、別の定義情報に関連付けられていることを意味する。
【００６８】
これらの定義情報は、設計担当者により帳票設計クライアント１０７を用いて作成され、次いで、ワークフローサーバ１０４を介してワークフローＤＢ１０５に記憶されるものである。
【００６９】
図６は、帳票設計クライアント１０７を用いて、本発明を適用可能な一実施形態に従ってワークフローを構築する場合の、定義情報作成手順の一例を示す図である。
【００７０】
まず、Ｓ６０１において、図５の組織定義５０１を作成する。次いで、Ｓ６０２において、図５の項目構成定義３１４を作成する。次に、Ｓ６０３において、図５の外部ＤＢ定義３１５を作成し、Ｓ６０４において、図５のフォーム定義３１２を作成する。ここで、Ｓ６０４と並行して、図５のユニット定義３１３も作成する（Ｓ６０５）。このフォーム定義情報には、フォーム起動時に動作させるユニットや、図７を参照して後述するＳ７０５の配送用ボタンのクリック時に動作させるユニットを含めることができる。次いで、Ｓ６０６において、図５の経路・プロセス定義５０２を作成する。これらの定義情報の作成が完了すると、Ｓ６０７において、ワークフローを稼動させることができる。
【００７１】
図７は、本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、ワークフローユーザ（ワークフロークライアント１０６）のワークフロー利用手順の一例を示す図である。
【００７２】
Ｓ７０１において、ワークフローユーザは、クライアント１０６において、ワークフローシステムのログイン画面（不図示）でユーザ名及びパスワードを入力する。それらユーザ名及びパスワードが、ワークフローＤＢ内に予め記憶されているユーザ名及びパスワードと一致した場合、ワークフローユーザは、ワークフローシステムにログインすることができる。それらユーザ名及びパスワードが、ワークフローＤＢ内に予め記憶されているユーザ名及びパスワードと一致しなかった場合、ログインに失敗した旨が表示され、再度ログイン画面が表示される。
【００７３】
ログインに成功すると、Ｓ７０２において、ワークフローユーザは、クライアント１０６において、帳票一覧画面（不図示）にアクセスすることができる。次いで、Ｓ７０３において、ワークフローユーザは、Ｓ７０２において表示された帳票一覧画面の中から、処理すべき帳票フォーム（例えば、図１０）を起動することができる。次に、Ｓ７０４において、ワークフローユーザは、Ｓ７０３において起動された帳票フォームに必要事項を入力する。必要事項が全て入力されると、Ｓ７０５において、ワークフローユーザは、起動された帳票フォームの配送用ボタンをクリックした後、ワークフローサーバ１０４において処理された配送の結果を、クライアント１０６上で見ることができる（Ｓ７０６）。
【００７４】
ワークフローユーザが続けて処理を行うことを望む場合、Ｓ７０２〜Ｓ７０６を繰り返し実行する。ワークフローユーザが処理を望まない場合は、クライアント１０６上のワークフローアプリケーション（不図示）に表示されたログアウトボタンをクリックする等して、ワークフローユーザは、ワークフローシステムからログアウトすることができる。
【００７５】
図８は、図３に示した外部ＤＢ定義３１５のデータ構造を示す図である。  
外部ＤＢ定義情報８００は、外部ＤＢ定義を識別するための外部ＤＢ定義ＩＤ８０１を含む。また、外部ＤＢ定義情報８００は、当該外部ＤＢへの接続情報８０２、当該外部ＤＢの種類８０３、及び操作を許可するユニット種別（例えば、後述する基本ユニットであることを示す識別情報等）８０４を含む。外部ＤＢの種類８０３としては、例えば、ＳＱＬＳｅｒｖｅｒやＯｒａｃｌｅ（登録商標）等のバージョン情報が挙げられる。さらに、外部ＤＢ定義情報８００は、当該外部ＤＢの対象テーブル名８０５、及び、１つ又は複数の対象列名８０６を含むが、外部ＤＢ定義情報８００には、前述した情報以外の情報を含めることもできる。
【００７６】
図９は、図３に示したユニット定義３１３のデータ構造を示す図である。  
図示するように、ユニット定義３１３として、基本ユニット９００（図９（ａ））と、外部ＤＢ操作系ユニット９１０（図９（ｂ））との少なくとも２種類が存在する。
【００７７】
基本ユニット定義情報９００は、ユニット種別９０１、ユニットＩＤ９０２、及び、１つ又は複数の命令９０３を含む。
【００７８】
ユニット種別９０１は、ユニットの種別（本実施形態では、基本ユニットであるか、又は後述する外部ＤＢ操作系ユニットにおける行ロック、行チェック、外部ＤＢ編集、及び外部ＤＢ参照の少なくとも５種類）を規定するものである。基本ユニット９００では、ユニットが基本ユニットであることを示す識別情報がユニット種別９０１に格納されている。
【００７９】
ユニットＩＤ９０２は、ユニットの識別子であり、この識別子は、各ユニット種別の中で一意である。
【００８０】
命令９０３は、ユニット実行、関数実行等の、操作命令情報が格納されている。関数には、配送処理の実行をワークフローサーバ１０４に要求する配送関数と、外部ＤＢ操作のトランザクションコミット及びロールバックの機能を有するコミット関数及びロールバック関数とが少なくとも存在する。また、命令９０３には、操作命令が後述する外部ＤＢ操作系ユニット９１０である場合、トランザクションに含めるか、即時実行を行うかを判定するための情報を含めることができる。
【００８１】
外部ＤＢ操作系ユニット定義情報９１０は、ユニット種別９１１、ユニットＩＤ９１２、外部ＤＢ定義ＩＤ９１３、編集操作種別詳細９１４、１つ又は複数の操作対象列９１５、１つ又は複数の取得対象列９１６、及び、１つ又は複数の抽出条件９１７を含む。
【００８２】
ユニット種別９１１は、ユニットの種別を規定するものである。種別の詳細については、後述する。
【００８３】
ユニットＩＤ９１２は、ユニットの識別子である。この識別子は、各ユニット種別の中で一意である。
【００８４】
外部ＤＢ定義ＩＤ９１３は、外部ＤＢ定義３１５のデータを識別するための情報である。
【００８５】
編集操作種別詳細９１４は、外部ＤＢに対する編集操作の種別、すなわち操作内容がレコードの挿入、更新、又は削除のうちのいずれであるかを規定したものである。
【００８６】
操作対象列９１５、取得対象列９１６、及び抽出条件９１７は、外部ＤＢに対する操作のために必要となる情報である。操作対象列９１５、取得対象列９１６、及び抽出条件９１７に対する値の設定の有無は、ユニット種別９１１及び編集操作種別詳細９１４の設定値によって異なる。
【００８７】
前述したユニット種別９１１に指定できる選択肢としては、行ロック、行チェック、外部ＤＢ編集、及び外部ＤＢ参照の少なくとも４種類が存在する。行ロックユニットは、外部ＤＢの指定したテーブルにおける指定した行をロックする命令を指示するためのものであって、この場合、抽出条件９１７を設定する必要がある。行チェックユニットは、外部ＤＢの指定したテーブルにおける指定した条件の行が存在するか否かを確認することによって更新の有無等をチェックするためのものでる。この場合もまた、抽出条件９１７を設定する必要がある。外部ＤＢ編集ユニットは、外部ＤＢに対して、挿入、更新、又は削除の操作を行うためのものである。この場合は、編集操作種別詳細９１４と、必要に応じて操作対象列９１５及び抽出条件９１７とを設定する必要がある。外部ＤＢ参照ユニットは、外部ＤＢ内に存在するデータを取得するためのものであって、この場合、取得対象列９１６及び抽出条件９１７を設定する必要がある。
【００８８】
図１０は、ワークフロークライアント１０６において用いられる、帳票フォーム１０００のイメージの一例を示す図である。帳票設計クライアント１０７を使用する設計者は、フォーム定義３１２を作成する過程（図６のＳ６０４）において、帳票フォーム１０００が開いたときに実行される基本ユニットを設定することができる。また、帳票設計クライアント１０７を使用する設計者は、上記過程において、ワークフローユーザが帳票フォーム上の（引当）ボタン１００１をクリックした際に実行される基本ユニットを設定することもできる。
【００８９】
図１１は、本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、帳票取得から外部データ更新に至るまでの一連の処理手順に関する一例を示すフローチャートである。本例では、帳票フォーム１０００を開いたときに（すなわち、帳票フォーム１０００の起動時に）、基本ユニットが実行されるよう設計されている場合を想定している。本処理の特徴的部分については、図１２〜図１４を参照して詳述する。
【００９０】
Ｓ１１０１において、ワークフローユーザ１１００は、ワークフロークライアント１０６へ帳票を要求して、帳票フォームを呼び出す。次いで、Ｓ１１０２において、ワークフロークライアント１０６は、帳票定義情報をワークフローサーバ１０４に要求する。このＳ１１０１及びＳ１１１２の処理は、図７のＳ７０３の処理に相当するものである。
【００９１】
次いで、Ｓ１１０３において、ワークフローサーバ１０４の帳票定義指定部３０２が、帳票定義３１１に含まれるデータをワークフローＤＢ１０５に要求する。その要求に応じて、Ｓ１１０４において、ワークフローサーバ１０４は、ワークフローＤＢ１０５から、帳票定義情報を取得する。次いで、Ｓ１１０５において、その帳票定義情報が、ワークフローサーバ１０４からワークフロークライアント１０６に送信される。
【００９２】
Ｓ１１０６〜Ｓ１１１２は、外部データの帳票への取込を行う処理を示している。これらの処理では、まず、ワークフロークライアント１０６において、帳票フォームの初期化（図１２におけるＳ１２０２及びＳ１２０３の処理に相当）が行われる（Ｓ１１０６）。次いで、ワークフロークライアント１０６が、外部データをワークフローサーバ１０４に要求する（Ｓ１１０７）。この要求に応じて、ワークフローサーバ１０４は、外部ＤＢ定義情報をワークフローＤＢ１０５に要求し（Ｓ１１０８）、ワークフローＤＢ１０５から外部ＤＢ定義情報を取得する（Ｓ１１０９）。次いで、ワークフローサーバ１０４が、外部データを外部ＤＢ１０２に要求し（Ｓ１１１０）、外部ＤＢ１０２から外部データを取得する（Ｓ１１１１）。そして、その外部データが、ワークフローサーバ１０４からワークフロークライアント１０６に送信される（Ｓ１１１２）。これらＳ１１０６〜Ｓ１１１２の処理の詳細については、図１２を参照して後述する。
【００９３】
Ｓ１１１３において、ユーザが帳票フォームにデータを入力した後、Ｓ１１１４において、ユーザが帳票フォーム上の配送実行ボタンをクリックすると、ワークフロークライアント１０６の入力処理部４０１が、そのクリック操作を検出して受け付ける。次いで、Ｓ１１１５において、ワークフロークライアント１０６のユニット定義情報解析部４０４が、ユニット情報を解析したり、キュー生成部４０５にキューを生成させたりする。Ｓ１１１５の詳細については、図１３を参照して後述する。
【００９４】
Ｓ１１１６において、ワークフロークライアント１０６は、配送指示をワークフローサーバ１０４に送信する。この配送指示には、外部ＤＢ操作指示キュー４２１内のデータが含まれる。次いで、Ｓ１１１７及びＳ１１１８において、ワークフローサーバ１０４は、ワークフローＤＢ１０５及び外部ＤＢ１０２のそれぞれに対して、トランザクションを開始するよう通知する。次いで、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４が、受信した外部ＤＢ操作指示キュー４２１内のデータを解析してＳＱＬ文を生成するために、外部ＤＢ定義情報（３１５、８００）をワークフローＤＢ１０５に要求する（Ｓ１１１９）。そして、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４は、ワークフローＤＢ１０５から外部ＤＢ定義情報を取得し（Ｓ１１２０）、当該外部ＤＢ定義情報を参照して、外部ＤＢの種類等を識別する。
【００９５】
Ｓ１１２１において、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４は、受信した外部ＤＢ操作指示キュー４２１内のデータを解析する。次いで、ワークフローサーバ１０４のＳＱＬ生成部３０５は、その解析結果と、Ｓ１１２０において取得した外部ＤＢ定義情報とに基づいて、ＳＱＬ文を生成しＳＱＬキュー３２１に格納する。次いで、Ｓ１１２２において、ワークフローサーバ１０４のＳＱＬ発行部３０６が、ＳＱＬキュー３２１に格納されたＳＱＬ文を発行する。そして、Ｓ１１２３において、ワークフローサーバ１０４は、外部ＤＢ１０２内に存在する外部データ（又は、存在することになる外部データ）に対する操作結果を、外部ＤＢ１０２から受信する。なお、Ｓ１１２２及びＳ１１２３は、ＳＱＬキュー３２１に溜められたキューの個数分だけ実施される。
【００９６】
Ｓ１１２４において、ワークフローサーバ１０４の配送処理実行部３０７が、前述の配送指示に従ってワークフローサーバ１０４内の配送処理を実行し、ワークフローＤＢ１０５内のデータを操作（更新等）する。
【００９７】
なお、配送処理を行うことなく（すなわち、Ｓ１１１７、Ｓ１１２４、及びＳ１１２５が行われずに）、外部ＤＢに対するトランザクションのみが指定されることもあり得る。その場合は、Ｓ１１１８〜Ｓ１１２３及びＳ１１２６の処理が行われる。
【００９８】
前述したＳ１１１９〜Ｓ１１２４までの全ての処理が成功した場合には、Ｓ１１２５において、Ｓ１１１７で開始したトランザクションをコミットし、かつＳ１１２６において、Ｓ１１１８で開始したトランザクションをコミットする。
【００９９】
次いで、Ｓ１１２７において、ワークフローサーバ１０４は、ワークフローＤＢ１０５及び／又は外部ＤＢ内に存在するデータ（若しくは、存在することになるデータ）に対する操作結果をワークフロークライアント１０６に送信する。そして、Ｓ１１２８において、ユーザは、その結果をワークフロークライアント１０６上で見ることができる。なお、Ｓ１１１６〜Ｓ１１２７の詳細については、図１４を参照して後述する。
【０１００】
図１２は、図１１に示した外部データの帳票への取込を行う処理（Ｓ１１０６〜Ｓ１１１２）の手順の一例を示すフローチャートである。この処理手順は従来技術を用いたものであるが、本発明を実施するための前提として必要なものである。なお、図１２において、Ｓ１２０１〜Ｓ１２０５及びＳ１２１５〜Ｓ１２１９がワークフロークライアント１０６における処理であり、Ｓ１２０６〜Ｓ１２１４がワークフローサーバ１０４における処理である。
【０１０１】
Ｓ１２０１において外部データの帳票への取込を行う処理が開始する。Ｓ１２０２で、ワークフロークライアント１０６の帳票定義情報解析部４０２が、予め定められたフォーマットを有する帳票定義情報４１１を取得し、その帳票定義情報４１１の内容を解析する。Ｓ１２０３では、ワークフロークライアント１０６の帳票定義情報解析部４０２が、Ｓ１２０２の解析結果に基づいて、帳票フォーム１０００の起動時に外部ＤＢのデータ参照を実行するユニットが設定されているか否かを確認する。当該ユニットが設定されていない場合、処理はＳ１２１９に進んで終了する。一方、当該ユニットが設定されている場合は、ワークフロークライアント１０６の帳票定義情報解析部４０２が、ユニット定義情報解析部４０４に当該ユニット（詳細には、そのユニットＩＤ）を渡す。これらＳ１２０２及びＳ１２０３の処理は、図１１のＳ１１０６の帳票フォームの初期化処理に相当する。
【０１０２】
Ｓ１２０４では、ワークフロークライアント１０６のユニット定義情報解析部４０４が、予め定められたフォーマットを有する、渡された外部ＤＢ参照ユニットの定義情報に基づいて、外部ＤＢ操作指示をする。外部ＤＢ操作指示のデータ構造については、図１６を参照して後述する。次いで、Ｓ１２０５において、ワークフロークライアント１０６の要求発行部４０６が、構築された外部ＤＢ操作指示をワークフローサーバ１０４に送信する。
【０１０３】
Ｓ１２０６において、ワークフローサーバ１０４の入力処理部３０１が、ワークフロークライアント１０６から外部ＤＢ操作指示を受信する。Ｓ１２０７では、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４が、受信した外部ＤＢ操作指示を入力処理部３０１から取得し、その内容を解析する。次いで、Ｓ１２０８において、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４は、取得した外部ＤＢ操作指示により指定された外部ＤＢ定義ＩＤを識別する。続いて、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４は、そのＩＤに対応する外部ＤＢ定義３１５を参照し、対象とする外部ＤＢ１０２への接続情報を取得する。次にＳ１２０９で、ワークフローサーバ１０４のＳＱＬ生成部３０５が、Ｓ１２０７における外部ＤＢ操作指示解析部３０４の解析の結果に基づいて、ＳＱＬ文を生成する。
【０１０４】
Ｓ１２１０において、ワークフローサーバ１０４のＳＱＬ発行部３０６は、Ｓ１２０８で取得した接続情報を用いて外部ＤＢ１０２に接続し、Ｓ１２０９で生成されたＳＱＬ文を当該外部ＤＢ１０２に対して発行する。次にＳ１２１１で、ワークフローサーバ１０４は、外部ＤＢ１０２で実行された上記ＳＱＬ文の結果を受信する。そして、Ｓ１２１２において、Ｓ１２１１のＳＱＬ文の実行結果がＳＱＬエラーであった場合にはＳ１２１３へ処理が進み、ＳＱＬエラーでなかった場合にはＳ１２１４へ処理が進む。
【０１０５】
Ｓ１２１３では、ワークフローサーバ１０４の出力処理部３０３が、ワークフロークライアント１０６にエラーメッセージを送信する。一方、Ｓ１２１４では、ワークフローサーバ１０４の出力処理部３０３が、ワークフロークライアント１０６にＳ１２１１で得られた結果データを送信する。
【０１０６】
Ｓ１２１５では、ワークフロークライアント１０６が、Ｓ１２１３又はＳ１２１４でワークフローサーバ１０４から送信された結果を受信する。次いで、Ｓ１２１６において、受信した結果が、外部ＤＢ１０２から取得されたデータ（すなわち、外部データ）であるか否かが判定される。受信した結果が外部データであった場合、Ｓ１２１７において、取得された外部データが、帳票定義情報解析部４０２及びユニット定義情報解析部４０４を介して、外部ＤＢ参照ユニットにより指定された帳票上の指定箇所に表示される。一方、受信した結果がエラーメッセージであった場合は、Ｓ１２１８において、エラーメッセージを表示する等、エラー処理が行われる。最後にＳ１２１９で、この処理は終了する。
【０１０７】
図１３は、図１１に示した、外部ＤＢ操作指示をキューに溜め込む（Ｓ１１１５）処理の手順の一例を示すフローチャートである。これらの処理では、ワークフロークライアント１０６において、外部ＤＢに対する操作指示を外部ＤＢ操作指示キュー４２１に溜め、配送指示とともにワークフローサーバ１０４へ送信するための準備を行う。
【０１０８】
Ｓ１３０１で処理が開始し、Ｓ１３０２において、ワークフロークライアント１０６の入力処理部４０１が、ユニットの実行指示を受け付ける。
【０１０９】
次のＳ１３０３からＳ１３０８までの処理は、実行対象となっている基本ユニット９００で指定されている全命令について、指定された順番で各命令に対して各処理を行うことを示している。すなわち、基本ユニット定義情報９００で指定されている１行目の命令に対する処理から開始し、最終行の命令に対する処理で終了する。
【０１１０】
Ｓ１３０４では、ワークフロークライアント１０６のユニット定義情報解析部４０４が、基本ユニット９００の命令中で指定された内容を解析する。次いで、Ｓ１３０５では、Ｓ１３０４の解析結果を受けて、当該命令をトランザクションに含めるか否かが判定される。
【０１１１】
Ｓ１３０５で、当該命令をトランザクションに含めると判定された場合、Ｓ１３０６で、トランザクションに含める対象となっているユニット定義情報、及び帳票上のデータに基づいて、外部ＤＢ操作指示を生成し、外部ＤＢ操作指示キュー４２１に格納する。外部ＤＢ操作指示の構造については、図１６を参照し、キュー生成の具体例については、図１８を参照して後述する。それに対し、Ｓ１３０５で、当該命令をトランザクションに含めないと判定された場合、Ｓ１３０７で、外部ＤＢ定義３１５から取得した外部ＤＢ定義情報とともに、外部ＤＢ操作指示が、ワークフロークライアント１０６から、ワークフロークサーバ１０４に送信される。ここまでは、ワークフロークライアント１０６が実行する処理であるが、次に示す処理は、実際には、ワークフローサーバ１０４が実行する処理と
なる。上記外部ＤＢ操作指示が送信されると、ワークフロークサーバ１０４のＳＱＬ生成部３０５は、外部ＤＢ操作指示解析部３０４を介して解析された外部ＤＢ操作指示に対応するＳＱＬ文を生成する。ここで、そのＳＱＬ文は、ワークフロークサーバ１０４のＳＱＬキュー３２１へは溜められず、直接ＳＱＬ発行部３０６に渡される。そして、ワークフロークサーバ１０４のＳＱＬ発行部３０６が、１つのトランザクションとして、生成されたＳＱＬ文を外部ＤＢに対して発行する。
【０１１２】
上述したように、実行対象となっている基本ユニット９００で指定されている全命令について、繰り返しＳ１３０３からＳ１３０８までの処理を行う。最終行の命令に対する処理を終えると、最後にＳ１３０９でこれらの処理が終了する。
【０１１３】
図１４は、図１１に示した、ワークローサーバ側で外部ＤＢ操作指示を処理する手順（Ｓ１１１６〜Ｓ１１２７）の一例を示すフローチャートである。
【０１１４】
Ｓ１４０１において、ワークフローサーバ１０４の入力指示部３０１が、ワークフロークライアント１０６からの配送指示を受信すると、処理が開始する。Ｓ１４０２で、その配送指示が、ワークフローサーバ１０４の入力指示部３０１から外部ＤＢ操作指示解析部３０４に渡される。配送指示の構造については、図１５を参照して後述する。次に、Ｓ１４０３において、トランザクション（ワークフローＤＢ及び外部ＤＢに対しての両方を含む）を開始する。
【０１１５】
Ｓ１４０４〜Ｓ１４１７で、配送指示内に含まれている外部ＤＢ操作指示の全てについて、指定された順番で各外部ＤＢ操作指示の内容を解析する。すなわち、配送指示内に含まれている１行目の外部ＤＢ操作指示から解析を開始し、最終行の外部ＤＢ操作指示で解析を終了する。具体的な解析は、以下に記載するとおりである。
【０１１６】
Ｓ１４０５では、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４が、配送指示内に含まれている各外部ＤＢ操作指示の内容を解析する。その際、外部ＤＢ操作指示解析部３０４は、外部ＤＢ操作指示内の予め定められた位置に配置された外部ＤＢ定義ＩＤ１６０３をキーにして、外部ＤＢ定義を取得する。
【０１１７】
次に、Ｓ１４０６において、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４は、外部ＤＢ操作指示内の予め定められた位置に配置された、外部ＤＢ操作指示の種別を判定する。例えば、外部ＤＢ操作指示の種別が行ロックと判定された場合はＳ１４０７に進み、行チェックと判定された場合はＳ１４０８に進み、編集と判定された場合はＳ１４０９に進む。なお、図１４では、種別が、行ロック、行チェック、及び外部ＤＢ編集である３つの場合を示したが、ワークフローサーバ１０４のＳＱＬ生成部３０５が対応可能な操作種別であれば、他の操作であってもよい。
【０１１８】
次いで、Ｓ１４０７では、ワークフローサーバ１０４の外部ＤＢ操作指示解析部３０４は、外部ＤＢ操作指示内の予め定められた位置に配置された、ＤＢの種類を判定する。例えば、ＤＢの種類がＳＱＬＳｅｒｖｅｒであると判定された場合はＳ１４１０に進み、ＤＢの種類がＯｒａｃｌｅ（登録商標）と判定された場合はＳ１４１１に進む。同様に、Ｓ１４０８又はＳ１４０９においてもＤＢの種類が判定される。ＤＢの種類がＳＱＬＳｅｒｖｅｒと判定された場合は、Ｓ１４１２又はＳ１４１４に進み、ＤＢの種類がＯｒａｃｌｅ（登録商標）と判定された場合は、Ｓ１４１３又はＳ１４１５に進む。
【０１１９】
次に、前述したＳ１４１０〜Ｓ１４１５では、ワークフローサーバ１０４のＳＱＬ生成部３０５が、操作種別及びＤＢの種類に応じたＳＱＬ文を生成する。図１４では、ＤＢとして、ＳＱＬＳｅｒｖｅｒ及びＯｒａｃｌｅ（登録商標）が例示されている。しかしながら、ＳＱＬ生成部３０５が対応可能なデータベース製品（例えば、ＤＢ２（登録商標）、ＭｙＳＱＬ（登録商標）等）であれば、ＤＢは他のＤＢであってもよい。
【０１２０】
具体的には、Ｓ１４１０では、ワークフローサーバ１０４のＳＱＬ生成部３０５は、ＳＱＬＳｅｒｖｅｒ用の行ロックを行うためのＳＱＬ文を生成する。Ｓ１４１１では、ワークフローサーバ１０４のＳＱＬ生成部３０５は、Ｏｒａｃｌｅ（登録商標）用の行ロックを行うためのＳＱＬ文を生成する。Ｓ１４１２では、ワークフローサーバ１０４のＳＱＬ生成部３０５は、ＳＱＬＳｅｒｖｅｒ用の行チェックを行うためのＳＱＬ文を生成する。Ｓ１４１３では、ワークフローサーバ１０４のＳＱＬ生成部３０５は、Ｏｒａｃｌｅ（登録商標）用の行チェックを行うためのＳＱＬ文を生成する。Ｓ１４１４では、ワークフローサーバ１０４のＳＱＬ生成部３０５は、ＳＱＬＳｅｒｖｅｒ用のデータ更新を行うためのＳＱＬ文を生成する。Ｓ１４１５では、ワークフローサーバ１０４のＳＱＬ生成部３０５は、Ｏｒａｃｌｅ（登録商標）用のデータ更新を行うためのＳＱＬ文を生成する。次いで、Ｓ１４１６において、ワークフローサーバ１０４のＳＱＬ生成部３０５は、生成したＳＱＬ文をＳＱＬキュー３２１に溜める。なお、本実施形態では、このキューイングは、ＦＩＦＯ方式としているが、ＬＩＦＯ方式であってもよい。
【０１２１】
上述したように、配送指示内に含まれている外部ＤＢ操作指示の全てについて、各外部ＤＢ操作指示の内容を解析し、対応するＳＱＬ文を作成し、そのＳＱＬ文をキューに溜め終えると、処理はＳ１４１８に進む。
【０１２２】
次のＳ１４１８〜Ｓ１４２２では、ワークフローサーバ１０４のＳＱＬ生成部３０５が、ＳＱＬキュー３２１に溜められたＳＱＬ文を外部ＤＢに対して発行する。より詳細には、Ｓ１４１９において、ワークフローサーバ１０４のＳＱＬ生成部３０５は、ＳＱＬキュー３２１に溜められたＳＱＬ文を外部ＤＢに対して発行する。例えば、ＳＱＬ文が行ロックに対応する場合、抽出条件（以下で図１６を参照して詳述する）に指定した行に対してロックをかけるＳＱＬ文を発行し、その行に対する排他制御が開始される。
【０１２３】
次いで、Ｓ１４２０では、Ｓ１４１９のＳＱＬ文を実行した結果、ＳＱＬエラーが発生したか否かが判定される。Ｓ１４２０において、ＳＱＬエラーが発生した場合、処理はＳ１４２６に進み、Ｓ１４０３で開始したトランザクションをロールバックする。なお、この際、配送指示が設定されている場合には、外部ＤＢにおけるトランザクションをロールバックするとともに、ワークフローＤＢにおけるトランザクションもロールバックする。
一方、Ｓ１４２０において、ＳＱＬ文の実行が成功した場合、処理はＳ１４２１に進む。Ｓ１４２１では、一例として、発行したＳＱＬ文が行チェックに対応するものである場合の処理を示している。すなわち、発行したＳＱＬ文が行チェックに対応するものであり、かつそのＳＱＬ文の実行の結果により、外部ＤＢにおいて参照される行が存在するか否かが判定される。Ｓ１４２１において、結果レコード件数が０件である、すなわち、外部ＤＢにおいて参照される行が存在しない場合、上記と同様に、処理はＳ１４２６に進み、Ｓ１４０３で開始したトランザクションをロールバックする。なお、この際も、配送指示が設定されている場合には、外部ＤＢにおけるトランザクションをロールバックするとともに、ワークフローＤＢにおけるトランザクションもロールバックする。
【０１２４】
このようにして、ワークフローサーバ１０４のＳＱＬ生成部３０５が、ＳＱＬキュー３２１に溜められたＳＱＬ文を外部ＤＢに対して発行し、かつ全てのＳＱＬ文の処理が成功に終わると、処理はＳ１４２３に進む。
【０１２５】
Ｓ１４２３では、配送処理を行う。すなわち、ワークフロークライアント１０６からの指示に基づいて、ワークフローサーバ１０４が、ワークフローＤＢ１０５に対してデータの更新操作を指示する。このＳ１４２３の処理は、従来のワークフローシステムと同様のものであるため、その詳細については省略することとする。なお、ワークフローの配送指示が設定されていない場合は、当該Ｓ１４２３及びＳ１４２４はスキップされる。
【０１２６】
Ｓ１４２４の配送処理でエラーが発生した場合には、Ｓ１４２６に進み、Ｓ１４０３で開始したトランザクションをロールバックする。配送処理でのエラーとは、ワークフローシステムのエラーや配送の差し戻しなどを含むものである。この際、外部ＤＢに対する操作指示が設定されている場合には、ワークフローＤＢにおけるトランザクションをロールバックするとともに、外部ＤＢにおけるトランザクションもロールバックする。Ｓ１４２４において配送が成功した場合は、Ｓ１４２５に進み、ワークフローＤＢにおけるトランザクションをコミットするとともに、外部ＤＢにおけるトランザクションもコミットする。
【０１２７】
Ｓ１４２５のトランザクションコミットによって、ワークフローＤＢ（配送処理）及び外部ＤＢへのデータ更新等が確定し、外部ＤＢ操作指示に外部ＤＢの行ロックが含まれている場合には、その行ロックが解除される。なお、前述したＳ１４２６のトランザクションのロールバックでも、行ロックがなされている場合は、その行ロックが解除される。
【０１２８】
次いで、Ｓ１４２７において、ワークフローサーバ１０４の出力処理部３０３に対して結果が送信され、さらに、ワークフロークライアント１０６に当該結果が通知される。最後に、Ｓ１４２８で処理が終了する。
【０１２９】
図１５は、ワークフロークライアント１０６からワークフローサーバ１０４へ渡される配送指示１５００のデータ構造を示す図である。  
配送指示１５００は、配送指示データ１５０１、帳票データ１５０２、及び外部ＤＢ操作指示キュー１５０３を含む。
【０１３０】
配送指示データ１５０１は、申請、承認、差戻し等の配送指示を示す識別情報を含む。帳票データ１５０２は、ワークフローサーバ１０６の帳票データ３１６に格納されることになる、帳票フォーム上の設定値等の情報を含む。外部ＤＢ操作指示キュー１５０３は、図１３のＳ１３０１〜Ｓ１３０９で生成される外部ＤＢ操作指示のキューである。なお、配送指示データ１５０１を指定せず（すなわち、帳票データ１５０２も指定せず）、外部ＤＢ操作指示キュー１５０３のみをワークフローサーバ１０４へ渡すこともできる。
【０１３１】
図１６は、外部ＤＢ操作指示１６００のデータ構造の詳細を示す図である。図１６は、図９（ｂ）に基づくものであり、図１５の外部ＤＢ操作指示キュー１５０３における各々の外部ＤＢ操作指示の詳細を示している。
【０１３２】
外部ＤＢ操作指示１６００は、ユニット種別１６０１、編集操作種別詳細１６０２、外部ＤＢ定義ＩＤ１６０３、１つ又は複数の取得対象列１６０４、１つ又は複数の操作対象列・設定値のセット１６０５、及び、１つ又は複数の条件式１６０６を含む。ユニット種別１６０１は、図９（ｂ）のユニット種別９１１に対応し、編集操作種別詳細１６０２は、図９（ｂ）の編集操作種別詳細９１４に対応し、外部ＤＢ定義ＩＤ１６０３は、図９（ｂ）の外部ＤＢ定義ＩＤ９１３に対応するものである。さらに、取得対象列１６０４は、図９（ｂ）の取得対象列９１６に対応し、操作対象列・設定値のセット１６０５は、図９（ｂ）の操作対象列９１５に対応し、条件式１６０６は、図９（ｂ）の抽出条件９１７に対応するものである。
【０１３３】
ユニット種別１６０１、編集操作種別詳細１６０２、外部ＤＢ定義ＩＤ１６０３、及び取得対象列１６０４のそれぞれには、外部ＤＢ操作指示の基になる外部ＤＢ操作系ユニット９１０（図９（ｂ））における対応する項目のそれぞれの設定値が格納される。
【０１３４】
操作対象列・設定値のセット１６０５には、外部ＤＢ操作系ユニット９１０（図９（ｂ））の操作対象列９１５で指定した操作対象列のうち、設定値については、操作対象列９１５で指定した帳票上の項目に入力されている値を設定する。条件式１６０６についても、外部ＤＢ操作系ユニット９１０（図９（ｂ））の抽出条件９１７で指定した抽出条件のうち、値については、抽出条件９１７で指定した帳票上の項目に入力されている値を設定する。帳票フォーム上（図１０）の値を反映する具体例については、図１８を参照して後述する。
【０１３５】
図１７は、ワークフロークライアント１０６において、選択された外部ＤＢ操作指示を
外部ＤＢ操作指示キュー４２１に溜める例を示す図である。
基本ユニット１７０１に設定された命令（図９の９０３と同様）のうち、トランザクシ
ョンに含める設定がされているものがキュー１７０２に溜められる。この処理は、図１３
のＳ１３０６に相当するものである。
【０１３６】
図１８は、ワークフロークライアント１０６において、外部ＤＢ操作指示としての行ロック、行チェック、及び外部ＤＢ編集の各ユニットについて、帳票フォーム（１０００、１８１０）におけるデータを取得してキュー１８２０に溜める際の具体例を示している。
【０１３７】
図１８において、行ロックユニット１８０２については、条件式に設定されている品目ＩＤとして、帳票フォーム１８１０における品目ＩＤ１８１１の値（＝００１４）を反映し、行ロック操作指示１８２２として外部ＤＢ操作指示キュー１８２０に溜める。行チェックユニット１８０３については、条件式に設定されている在庫数として帳票フォーム１８１０における在庫数１８１２の値（＝５）を反映し、行チェック操作指示１８２３として外部ＤＢ操作指示キュー１８２０に溜める。外部ＤＢ編集ユニット１８０４については、操作対象列の設定値に設定されている引当後在庫数として帳票フォーム１８１０における引当後在庫数１８１４の値（＝２）を反映する。また、条件式に設定されている品目ＩＤとして帳票フォーム１８１０における品目ＩＤ１８１１の値（＝００１４）も反映する。そして、外部ＤＢ編集操作指示１８２４として外部ＤＢ操作指示キュー１８２０に溜める。
【０１３８】
図１９は、行ロック指示及び行チェック指示のそれぞれについて、操作指示内容と生成されるＳＱＬ文との例示的な関係を示している。
【０１３９】
（実施例１）  
図２０は、行ロック機能及び行チェック機能を外部ＤＢ操作のトランザクションに組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示している。
【０１４０】
この例では、外部ＤＢは、物品の在庫を管理する在庫データベースとする。詳細には、ワークフロークライアント２００１及び２００２の帳票フォームには、品目ＩＤと帳票フォーム起動時の在庫数とが表示される。また、ワークフローユーザが引当数を入力すると、帳票フォーム（ワークフロークライアント）上で在庫数を新たに算出し、配送処理時に在庫データベース上に、その新たな在庫数を反映させるものである。ここで、ワークフロークライアントＡ２００１及びワークフロークライアントＢ２００２はともに、カメラの在庫を引き当てようとしていると仮定する。
【０１４１】
ワークフロークライアントＡ２００１は、帳票フォームを呼び出して、外部データを要求し（Ｓ２０１１、Ｓ２０１２）、ワークフローサーバ・ＤＢ２００３を介して、外部ＤＢ２００４から在庫データを取得する（Ｓ２０１３、Ｓ２０１４）。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は３００個である。
【０１４２】
その後、ワークフロークライアントＢ２００２も、帳票フォームを呼び出して、外部データを要求し（Ｓ２０１５、Ｓ２０１６）、ワークフローサーバ・ＤＢ２００３を介して、外部ＤＢ２００４から在庫データを取得する（Ｓ２０１７、Ｓ２０１８）。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は３００個である。
【０１４３】
次に、ワークフロークライアントＢ２００２は、引当数として２００を入力し、新たな在庫数が１００（＝３００−２００）となった帳票フォーム上で配送実行ボタンをクリックする。すると、外部ＤＢ操作指示がキューイングされる（Ｓ２０１９）。次にＳ２０２０で、「行ロック条件：品目＝カメラ」、「行チェック条件：品目＝カメラ  ＡＮＤ  在庫数＝３００」、「更新指示：更新値・・・在庫数＝３００、条件・・・品目＝カメラ」という指示が、ワークフローサーバ・ＤＢ２００３に送信される。上記の指示により、ワークフローＤＢ２００３及び外部ＤＢ２００４に対するトランザクションが開始される（Ｓ２０２１）。
【０１４４】
次いで、図１１〜図１４を参照して説明したように、ワークフローサーバ２００３のＳＱＬ生成部３０５が、上記指示に含まれる外部ＤＢ操作指示に対応するＳＱＬ文を生成する（Ｓ２０２２）。このＳＱＬ文には、行ロック、行チェック、及びデータ更新に関するＳＱＬ文が含まれている。次いで、ワークフローサーバ２００３のＳＱＬ発行部３０６が、外部ＤＢ２００４に対して、行ロック、行チェック、及びデータ更新に関するＳＱＬ文を発行する（Ｓ２０２３、Ｓ２０２４、及びＳ２０２５）。Ｓ２０２３の行ロック操作により、外部ＤＢ２００４の在庫データベースにおいて、「品目＝カメラ」である行に対して、行ロックが適用される。従って、トランザクションが終了するＳ２０２７までは、他のワークフロークライアントや外部システムからの外部データの更新を防ぐことが可能となる。Ｓ２０２５が終了した時点では、外部ＤＢにおけるカメラの在庫数は、１００個となる。次いで、Ｓ２０２６において、ワークフローサーバ・ＤＢ２００３において、配送処理が実行される（すなわち、ワークフローＤＢ２００３のデータが更新される）。そして、ワークフローＤＢ２００３及び外部ＤＢ２００４に対するトランザクションがコミットされ（Ｓ２０２７）、外部ＤＢ２００４において、行ロックが解放されて、データ更新（カメラ在庫数＝１００）が確定する。最後に、Ｓ２０２８において、ワークフロークライアントＢ２００２に、データの更新が成功した旨の通知がなされる。
【０１４５】
一方、上記トランザクションの間に、ワークフロークライアントＡ２００１が引当数として１００を入力し、新たな在庫数が２００（＝３００−１００）となった帳票フォーム上で配送実行ボタンをクリックしたとする。すると、外部ＤＢ操作指示がキューイングされる（Ｓ２０２９）。次にＳ２０３０で、「行ロック条件：品目＝カメラ」、「行チェック条件：品目＝カメラ  ＡＮＤ  在庫数＝３００」、「更新指示：更新値・・・在庫数＝２００、条件・・・品目＝カメラ」という指示が、ワークフローサーバ・ＤＢ２００３に送信される。ここで、この指示の送信は、Ｓ２０２７のトランザクションコミット後になされたものと仮定する。上記の指示により、ワークフローＤＢ２００３及び外部ＤＢ２００４に対するトランザクションが開始される（Ｓ２０３１）。
【０１４６】
次いで、図１１〜図１４を参照して説明したように、ワークフローサーバ２００３のＳＱＬ生成部３０５が、上記指示に含まれる外部ＤＢ操作指示に対応するＳＱＬ文を生成する（Ｓ２０３１）。このＳＱＬ文には、行ロック、行チェック、及びデータ更新に関するＳＱＬ文が含まれている。次いで、ワークフローサーバ２００３のＳＱＬ発行部３０６が、外部ＤＢ２００４に対して、行ロック、行チェック、及びデータ更新に関するＳＱＬ文を発行しようとする。ここで、行ロック処理（Ｓ２０３３）は成功するが、Ｓ２０３４において行チェックを行った際、在庫数がデータ取得時の３００個から１００個に変動しているため、その行チェックは失敗に終わる（結果レコード件数が０の状態となる）。そして、Ｓ２０３５において、トランザクションがロールバックされ、最後にＳ２０３６で、ワークフロークライアントＡ２００１に、処理の失敗通知が送信される。
【０１４７】
従って、本実施例によれば、複数のクライアントによる外部データの重複更新を回避することが可能となる。なお、ワークフロークライアントＡ２００２による外部データの更新操作が仮に外部システムによるものであったとしても、同様に重複更新を回避することが可能である。
【０１４８】
（実施例２）  
図２１は、行ロック機能を外部データ取得時に組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示している。
【０１４９】
この例でも、外部ＤＢは、物品の在庫を管理する在庫データベースとする。詳細には、ワークフロークライアント２１０１及び２１０２の帳票フォームには、品目ＩＤと帳票フォーム起動時の在庫数とが表示される。また、ワークフローユーザが引当数を入力すると、帳票フォーム（ワークフロークライアント）上で在庫数を新たに算出し、配送処理時に在庫データベース上に、その新たな在庫数を反映させるものである。ここで、ワークフロークライアントＡ２１０１及びワークフロークライアントＢ２１０２はともに、カメラの在庫を引き当てようとしていると仮定する。
【０１５０】
ワークフロークライアントＡ２１０１は、帳票フォームを呼び出して、外部データを要求し（Ｓ２１１１、Ｓ２１１２）、ワークフローサーバ・ＤＢ２１０３を介して、外部ＤＢ２１０４から在庫データを取得する（Ｓ２１１３、Ｓ２１１４）。本実施例では、ワークフロークライアントＡ２１０１が、Ｓ２１１２において、「品目＝カメラ」の行に対して行ロックをかける要求もするという点で、実施例１と異なる。但し、本実施例では、更新に対するロックをかけるだけで、参照についてはロックをかけないものとする。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は３００個である。
【０１５１】
その後、ワークフロークライアントＢ２１０２も、帳票フォームを呼び出して、外部データを要求し（Ｓ２１１５、Ｓ２１１６）、ワークフローサーバ・ＤＢ２１０３を介して、外部ＤＢ２１０４から在庫データを取得する（Ｓ２１１７、Ｓ２１１８）。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は３００個である。なお、Ｓ２１１２において、ワークフロークライアントＡ２１０１が、参照についてもロックをかけるか、又は、Ｓ２１１５において、ワークフロークライアントＢ２１０２からもロックをかけるような場合、このステップでエラーとなる。
【０１５２】
次に、ワークフロークライアントＢ２１０２は、引当数として２００を入力し、新たな在庫数が１００（＝３００−２００）となった帳票フォーム上で配送実行ボタンをクリックする。すると、外部ＤＢ操作指示がキューイングされる（Ｓ２１１９）。次にＳ２１２０で、「更新指示：更新値・・・在庫数＝１００、条件・・・品目＝カメラ」という指示が、ワークフローサーバ・ＤＢ２１０３に送信される。上記の指示により、ワークフローＤＢ２１０３及び外部ＤＢ２１０４に対するトランザクションが開始される（Ｓ２１２１）。
【０１５３】
次いで、図１１〜図１４を参照して説明したように、ワークフローサーバ２１０３のＳＱＬ生成部３０５が、上記指示に含まれる外部ＤＢ操作指示に対応するＳＱＬ文を生成する（Ｓ２１２２）。このＳＱＬ文には、データ更新に関するＳＱＬ文が含まれている。次いで、ワークフローサーバ２１０３のＳＱＬ発行部３０６が、外部ＤＢ２１０４に対して、データ更新に関するＳＱＬ文を発行しようとする（Ｓ２１２３）。しかしながら、外部ＤＢ２１０４の在庫データベースにおいて、ワークフロークライアントＡ２１０１の行ロック操作（Ｓ２１１２）により、「品目＝カメラ」である行に対して、行ロックが適用されている。従って、ワークフロークライアントＢ２１０２による外部ＤＢの更新は失敗に終わり、ワークフロークライアントＢ２１０２の配送指示によるワークフローＤＢ２１０３及び外部ＤＢ２１０４に対するトランザクションはロールバックされる（Ｓ２１２４）。そして、その失敗結果が、ワークフロークライアントＢ２１０２に対して通知される（Ｓ２１２５）。
【０１５４】
一方、上記トランザクションの間に、ワークフロークライアントＡ２１０１が引当数として１００を入力し、新たな在庫数が２００（＝３００−１００）となった帳票フォーム上で配送実行ボタンをクリックしたとする。すると、外部ＤＢ操作指示がキューイングされる（Ｓ２１２６）。次にＳ２１２７で、「更新指示：更新値・・・在庫数＝２００、条件・・・品目＝カメラ」という指示が、ワークフローサーバ・ＤＢ２１０３に送信される。ここで、この指示の送信は、Ｓ２１２４のトランザクションロールバック後になされたものと仮定する。上記の指示により、ワークフローＤＢ２１０３及び外部ＤＢ２１０４に対するトランザクションが開始される（Ｓ２１２８）。
【０１５５】
次いで、図１１〜図１４を参照して説明したように、ワークフローサーバ２１０３のＳＱＬ生成部３０５が、上記指示に含まれる外部ＤＢ操作指示に対応するＳＱＬ文を生成する（Ｓ２１２９）。このＳＱＬ文には、データ更新に関するＳＱＬ文が含まれている。次いで、ワークフローサーバ２１０３のＳＱＬ発行部３０６が、外部ＤＢ２１０４に対して、データ更新に関するＳＱＬ文を発行する（Ｓ２１３０）。その結果、外部ＤＢ内のデータが更新され、Ｓ２１３０が終了した時点では、外部ＤＢにおけるカメラの在庫数は、２００個となる。次いで、Ｓ２１３１において、ワークフローサーバ・ＤＢ２１０３において、配送処理が実行される（すなわち、ワークフローＤＢ２１０３のデータが更新される）。そして、ワークフローＤＢ２１０３及び外部ＤＢ２１０４に対するトランザクションがコミットされ（Ｓ２１３２）、外部ＤＢ２１０４において、行ロックが解放されて、データ更新（カメラ在庫数＝２００）が確定する。最後に、Ｓ２１３３において、ワークフロークライアントＡ２１０１に、データの更新が成功した旨の通知がなされる。
【０１５６】
従って、本実施例によれば、ワークフローシステムから外部ＤＢにアクセスする際に、排他制御を実現することが可能となり、さらに、行ロックのユニットを設定する箇所を変更することで、排他制御のルールを柔軟に設定することが可能となる。
【０１５７】
（その他の実施形態）  
本発明に係る方法は、各種コンピュータ、通信装置等の各種周辺機器、及びコンピュータによって動作するソフトウェアプログラムによって実現可能である。このソフトウェアプログラムは、コンピュータ読み取り可能な記録媒体や通信回線を介して配布可能である。
【０１５８】
以上説明したように、本発明によれば、排他制御及び更新チェック機能により、複数のクライアントから同一の外部データを操作した場合でも、重複更新を回避することが可能になる。また、操作対象のデータがワークフローシステム外にある場合でも、外部ＤＢの構造を変更することなく、容易に重複更新を回避することが可能になる。
【０１５９】
また、外部ＤＢ操作指示のキューイング開始時の外部データが、当該開始時と当該操作実行後とで同じ状態にあるかチェックできるので、複数のデータベースを対象にしている場合等、トランザクションスタックの問題である重複更新を回避することが可能になる。
【０１６０】
また、ワークフローシステム側で定義した一連の処理を、キューイングに関するトランザクションの１単位とできるため、ワークフローシステム側の配送処理をトランザクションに含めて、重複更新を回避することが可能になる。
【図面の簡単な説明】
【０１６１】
【図１】本発明を適用可能な例示的な一実施形態であるワークフローシステムを示す図である。
【図２】図１に示した各サーバ、クライアント、及びデータベースのハードウェア構成の一例を示すブロック図である。
【図３】図１に示したワークフローサーバ及びワークフローＤＢにおいて実現される機能構成の一例を示す図である。
【図４】図１に示したワークフロークライアントにおいて実現される機能構成の一例を示す図である。
【図５】本発明を適用可能な一実施形態に従ってワークフローを構築する場合の諸定義情報の一例を示す図である。
【図６】帳票設計クライアントを用いて、本発明を適用可能な一実施形態に従ってワークフローを構築する場合の、定義情報作成手順の一例を示す図である。
【図７】本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、ワークフローユーザ（ワークフロークライアント）のワークフロー利用手順の一例を示す図である。
【図８】図３に示した外部ＤＢ定義のデータ構造を示す図である。
【図９】図３に示したユニット定義のデータ構造を示す図であり、（ａ）は基本ユニット定義のデータ構造を示し、（ｂ）は外部ＤＢ操作系ユニット定義のデータ構造を示す図である。
【図１０】ワークフロークライアントにおいて用いられる、帳票フォームのイメージの一例を示す図である。
【図１１】本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、帳票取得から外部データ更新に至るまでの一連の処理手順に関する一例をフローチャートである。
【図１２】図１１に示した外部データの帳票への取込を行う処理の手順の一例を示すフローチャートである。
【図１３】図１１に示した、外部ＤＢ操作指示をキューに溜め込む処理の手順の一例を示すフローチャートである。
【図１４】図１１に示した、ワークローサーバ側で外部ＤＢ操作指示を処理する手順の一例を示すフローチャートである。
【図１５】ワークフロークライアントからワークフローサーバへ渡される配送指示のデータ構造を示す図である。
【図１６】外部ＤＢ操作指示のデータ構造の詳細を示す図である。
【図１７】ワークフロークライアントにおいて、選択された外部ＤＢ操作指示を外部ＤＢ操作指示キューに溜める例を示す図である。
【図１８】ワークフロークライアントにおいて、外部ＤＢ操作指示としての行ロック、行チェック、及び外部ＤＢ編集の各ユニットについて、帳票フォームにおけるデータを取得して外部ＤＢ操作指示キューに溜める際の具体例を示す図である。
【図１９】行ロック指示及び行チェック指示のそれぞれについて、操作指示内容と生成されるＳＱＬ文との例示的な関係を示す図である。
【図２０】行ロック機能及び行チェック機能を外部ＤＢ操作のトランザクションに組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示す図である。
【図２１】行ロック機能を外部データ取得時に組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示す図である。
【符号の説明】
【０１６２】
１００  ワークフローシステム
１０１  外部システムサーバ
１０２  外部データベース（ＤＢ）
１０３  ネットワーク
１０４  ワークフローサーバ
１０５  ワークフローデータベース（ＤＢ）
１０６  ワークフロークライアント
１０７  帳票設計クライアント
１０８  ネットワーク
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ＲＯＭ
２０５  入力コントローラ
２０６  出力コントローラ
２０７  外部メモリコントローラ
２０８  通信インターフェース（Ｉ／Ｆ）コントローラ
２０９  入力部
２１０  出力部
２１１  外部メモリ
２１２  プログラム
３０１  入力処理部
３０２  帳票定義指定部
３０３  出力処理部
３０４  外部ＤＢ操作指示解析部
３０５  ＳＱＬ生成部
３０６  ＳＱＬ発行部
３０７  配送処理実行部
３１１  帳票定義
３１２  フォーム定義
３１３  ユニット定義
３１４  項目構成定義
３１５  外部ＤＢ定義
３１６  帳票データ
３２１  ＳＱＬキュー
４０１  入力処理部
４０２  帳票定義情報解析部
４０３  出力処理部
４０４  ユニット定義情報解析部
４０５  キュー生成部
４０６  要求発行部
４１１  帳票定義情報
４１２  ユニット定義情報
４２１  外部ＤＢ操作指示キュー
【図１】
0005357443.tif 000002
【図２】
0005357443.tif 000003
【図３】
0005357443.tif 000004
【図４】
0005357443.tif 000005
【図５】
0005357443.tif 000006
【図６】
0005357443.tif 000007
【図７】
0005357443.tif 000008
【図８】
0005357443.tif 000009
【図９】
0005357443.tif 000010
【図１０】
0005357443.tif 000011
【図１１】
0005357443.tif 000012
【図１２】
0005357443.tif 000013
【図１３】
0005357443.tif 000014
【図１４】
0005357443.tif 000015
【図１５】
0005357443.tif 000016
【図１６】
0005357443.tif 000017
【図１７】
0005357443.tif 000018
【図１８】
0005357443.tif 000019
【図１９】
0005357443.tif 000020
【図２０】
0005357443.tif 000021
【図２１】
0005357443.tif 000022