JP2009252189A - ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体 - Google Patents

ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体 Download PDF

Info

Publication number
JP2009252189A
JP2009252189A JP2008102939A JP2008102939A JP2009252189A JP 2009252189 A JP2009252189 A JP 2009252189A JP 2008102939 A JP2008102939 A JP 2008102939A JP 2008102939 A JP2008102939 A JP 2008102939A JP 2009252189 A JP2009252189 A JP 2009252189A
Authority
JP
Japan
Prior art keywords
external
workflow
sql
client
operation instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008102939A
Other languages
English (en)
Other versions
JP5357443B2 (ja
JP2009252189A5 (ja
Inventor
Masahiko Sase
雅彦 佐瀬
Hiroyasu Abe
裕康 阿部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon IT Solutions Inc
Original Assignee
Canon Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Software Inc filed Critical Canon Software Inc
Priority to JP2008102939A priority Critical patent/JP5357443B2/ja
Publication of JP2009252189A publication Critical patent/JP2009252189A/ja
Publication of JP2009252189A5 publication Critical patent/JP2009252189A5/ja
Application granted granted Critical
Publication of JP5357443B2 publication Critical patent/JP5357443B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ワークフローシステムから外部のDB内に存在するデータにアクセスする際、排他制御及び重複更新回避を容易に実現することが可能な機構を提供する。
【解決手段】本ワークフローシステムは、クライアントでは、外部DBへの操作命令を解析するユニット定義情報解析部と、解析された操作命令から外部DB操作指示のキューを生成するキュー生成部と、操作指示のキューを溜め込む外部DB操作指示キューと、操作指示の要求をサーバに発行する要求発行部とを備え、サーバでは、クライアントから発行された操作指示を解析する外部DB操作指示解析部と、解析された操作指示から外部DBに対するSQL文を生成するSQL生成部と、生成されたSQL文を溜め込むSQLキューと、SQLキューに溜め込まれたSQL文を外部DBに発行するSQL発行部と、SQL文が実行されるとともに、ワークフローの配送処理を行う配送処理実行部とを備える。
【選択図】図4

Description

本発明は、ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体に関する。
サーバ・クライアント型システムにおいて、クライアントから非同期でデータを操作する際、操作指示に関する情報をクライアント側でキューに溜め込み、一括してデータベース側へ送信する技術が以前より存在している。また、排他資源に対する操作の逐次化を行うサーバ・クライアント型データ処理装置において、不揮発性メモリを用いて、排他制御のためのメッセージ送信の回数を減らし、処理の効率化を実現する技術が提案されている。この処理装置では、キューや排他制御の機構をデータベース・サーバ側に組み込む形で排他制御を実現している(例えば、特許文献1参照)。これらの技術は、サーバ・クライアント型システムの形態をなすワークフローシステムに対しても用いることが可能である。
特開平4−286044号公報
従来は、ワークフローシステムにおいて定義された業務を遂行する主体は、ユーザであった。このようなワークフローシステムは、単独の業務システム内で完結していた。そのため、ワークフローシステム外の業務システムについては、当該ワークフローシステムにおいて考慮する必要がなかった。
近年、企業において様々な業務プロセスがシステム化されている。また、IT(Information Technology)統制のニーズの高まりもあって、ワークフローシステムと周辺システムとのデータ連携が求められている。例えば、ワークフローの一工程として、外部DB内に存在するデータを読み込み、ワークフロー上での処理結果を外部DB上に反映させる等のデータ連携を行う、といった要件が存在する。そこで、ワークフローシステムにおける外部データとの連携では、次の点が重要になる。すなわち、ワークフローシステムでは、ワークフローユーザが入力を行う帳票において外部データを取得後、帳票入力等の操作を行った後で当該外部データの更新を行うことがある。この際、外部データの取得と更新との間に不特定の時間差が生じ得る。そのため、他のユーザや外部システムによって、このような外部データが更新されてしまう可能性がある。これを防ぐためには、あるユーザ又は外部システムによるデータ取得時に、ロックをかけておくか、又は重複更新を防ぐためのチェックを行う等の対策が必要となってくる。
また、ワークフローシステムの特性として、ワークフローの申請処理・承認処理・差戻し処理等が失敗した場合、外部データの更新を無効にしなければならない場合もあるという問題点が存在する。
しかしながら、操作対象データがワークフローシステム外に存在する場合、特許文献1に記載されたシステムを用いて排他制御を実現しようとすると、外部DBの構造を変更する必要が生じるため、容易に実現できないケースが多い。
そこで、本発明は、上述の点に鑑みて、ワークフローシステムから外部のDB内に存在するデータにアクセスする際、排他制御及び重複更新回避を容易に実現することが可能な機構を提供することを目的とする。また、本発明は、ワークフローシステムから外部のDB内に存在するデータにアクセスする際、外部データ更新のトランザクションに配送処理を含めることが可能な機構を提供することを目的とする。
このような目的を達成するために、請求項1に記載の発明は、外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えるサーバ・クライアント型のワークフローシステムにおける、前記ワークフローサーバであって、前記ワークフロークライアントから送信された、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示の内容を解析する外部DB操作指示解析部と、該外部DB操作指示解析部により解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するSQL生成部と、該SQL生成部により生成された前記SQL文を溜め込むSQLキューと、該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するSQL発行部であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するSQL発行部と、前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う配送処理実行部とを備えたことを特徴とする。
また、請求項2に記載の発明は、請求項1に記載のワークフローサーバにおいて、前記外部DBに対する前記SQL文の実行結果がSQLエラーであった場合、前記外部DBに対するトランザクションをロールバックするとともに、前記ワークフローDBに対するトランザクションもロールバックすることを特徴とする。
また、請求項3に記載の発明は、請求項1に記載のワークフローサーバにおいて、前記ワークフローDBに対するデータ処理が失敗した場合、前記ワークフローDBに対するトランザクションをロールバックするとともに、前記外部DBに対するトランザクションもロールバックすることを特徴とする。
また、請求項4に記載の発明は、外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムであって、前記ワークフロークライアントは、該ワークフロークライアントに入力された前記外部DBに対する操作命令の内容を解析するユニット定義情報解析部と、該ユニット定義情報解析部により解析された前記外部DBに対する前記操作命令から、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示のキューを生成するキュー生成部と、該キュー生成部により生成された前記外部DB操作指示のキューを溜め込む外部DB操作指示キューと、該外部DB操作指示キューに溜め込まれた前記外部DB操作指示の要求を、前記ワークフローサーバに対して発行する要求発行部とを備え、前記ワークフローサーバは、前記ワークフロークライアントの前記要求発行部から発行された、前記予め定められたフォーマットを有する外部DB操作指示の内容を解析する外部DB操作指示解析部と、該外部DB操作指示解析部により解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するSQL生成部と、該SQL生成部により生成された前記SQL文を溜め込むSQLキューと、該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するSQL発行部であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するSQL発行部と、前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う配送処理実行部とを備えたことを特徴とする。
また、請求項5に記載の発明は、外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスする方法であって、前記ワークフローサーバの外部DB操作指示解析部が、前記ワークフロークライアントから送信された、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析するステップと、前記ワークフローサーバのSQL生成部が、前記解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するステップと、前記ワークフローサーバの前記SQL生成部が、前記生成されたSQL文をSQLキューに溜め込むステップと、前記ワークフローサーバのSQL発行部が、前記SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するステップであって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するステップと、前記外部DBに対する前記SQL文が実行されるとともに、前記ワークフローサーバの配送処理実行部が、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行うステップとを含むことを特徴とする。
また、請求項6に記載の発明は、外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスする方法であって、前記ワークフロークライアントのユニット定義情報解析部が、該ワークフロークライアントに入力された前記外部DBに対する操作命令の内容を解析するステップと、前記ワークフロークライアントのキュー生成部が、前記解析された前記外部DBに対する前記操作命令から、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を生成するステップと、前記ワークフロークライアントの前記キュー生成部が、前記生成された前記外部DB操作指示のキューを外部DB操作指示キューに溜め込むステップと、前記ワークフロークライアントの要求発行部が、前記外部DB操作指示キューに溜め込まれた前記外部DB操作指示の要求を、前記ワークフローサーバに対して発行するステップと、前記ワークフローサーバの外部DB操作指示解析部が、前記ワークフロークライアントの前記要求発行部から発行された、前記予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析するステップと、前記ワークフローサーバのSQL生成部が、前記解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するステップと、前記ワークフローサーバの前記SQL生成部が、前記生成されたSQL文をSQLキューに溜め込むステップと、前記ワークフローサーバのSQL発行部が、前記SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するステップであって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するステップと、前記外部DBに対する前記SQL文が実行されるとともに、前記ワークフローサーバの配送処理実行部が、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行うステップとを含むことを特徴とする。
また、請求項7に記載の発明は、外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスするためのプログラムであって、前記ワークフロークライアントから送信された、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析する手順と、該解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成する手順と、該生成されたSQL文をSQLキューに溜め込む手順と、該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行する手順であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行する手順と、前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う手順とを前記ワークフローサーバに実行させることを特徴とする。
また、請求項8に記載の発明は、外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスするためのプログラムであって、入力された前記外部DBに対する操作命令の内容を解析する手順と、該解析された前記外部DBに対する前記操作命令から、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を生成する手順と、該生成された前記外部DB操作指示のキューを外部DB操作指示キューに溜め込む手順と、前記外部DB操作指示キューに溜め込まれた前記外部DB操作指示の要求を、前記ワークフローサーバに対して発行する手順とを前記ワークフロークライアントに実行させ、前記発行された、前記予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析する手順と、該解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成する手順と、該生成されたSQL文をSQLキューに溜め込む手順と、該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行する手順であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行する手順と、前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う手順とを前記ワークフローサーバに実行させることを特徴とする。
また、請求項9に記載の発明は、コンピュータ読み取り可能な記録媒体であって、請求項7又は8に記載のプログラムを記録したことを特徴とする。
本明細書で用いられる「ユニット」という用語は、アプリケーション・フォームの入力チェック用のロジックや、上記フォームからのDBテーブルにおけるデータの更新、上記フォームへのデータの取込等のロジック等の1つ又は複数の命令を指す。
本明細書で用いられる「帳票」という用語は、一般的に用いられる発注書や請求書等の紙に記述されたものではなく、そのような発注書や請求書等を電子的な形態で保持したものを指す。この帳票には、入力用帳票、参照用帳票、及び出力用帳票等が含まれる。また、本明細書において、帳票フォームという用語も、帳票と同一の意味を有する。
本明細書で用いられる「配送処理」という用語は、ワークフローの申請処理・承認処理・差戻し処理等といった、コンピュータシステムを用いて実現される一連の処理を指す。具体的には、受注部門の担当者がある物品を受注して処理した後、出荷部門の担当者が引き継ぎ、発送処理を行うといったような、複数の人が連携して行う、作業者間の作業の流れを、コンピュータシステムを用いて実現する処理を指す。
本明細書で用いられる「外部データベース(DB)」という用語は、ワークフローシステムの外部に存在するデータベースを指す。
本明細書で用いられる「外部データ」という用語は、上記外部DB内に存在する各種のデータを指す。
本発明によれば、排他制御及び更新チェック機能により、複数のクライアントから同一の外部データを操作した場合でも、重複更新を回避することが可能になる。また、操作対象のデータがワークフローシステム外にある場合でも、外部DBの構造を変更することなく、容易に重複更新を回避することが可能になる。例えば、外部DB内の備品管理テーブルと連携している備品貸出ワークフローで、備品の借用申請過程において上記テーブルの在庫数を更新する等の場合、複数のクライアントが同時に同じ備品に対して借用申請をするときでも、重複更新を回避することができる。
また、外部DB操作指示のキューイング開始時の外部データが、当該開始時と当該操作実行後とで同じ状態にあるかチェックできるので、複数のデータベースを対象にしている場合等、トランザクションスタックの問題である重複更新を回避することが可能になる。例えば、外部DB内の備品管理テーブルと連携している備品貸出ワークフローで、当該ワークフローシステム外にある備品管理システムから備品管理テーブルの在庫数が更新されたとする。その場合でも、ワークフロークライアントが備品管理テーブルの在庫数を更新操作した際に在庫数の不整合が生じる事態を防ぐことができる。
また、ワークフローシステム側で定義した一連の処理を、キューイングに関するトランザクションの1単位とできるため、ワークフローシステム側の配送処理をトランザクションに含めて、重複更新を回避することが可能になる。例えば、外部DB内の備品管理テーブルと連携している備品貸出ワークフローで、ワークフローの承認処理に失敗した場合には、備品管理テーブルの在庫数の更新をしないようにすることができる。
以下、図面を参照しながら、本発明を適用可能な実施形態について詳細に説明する。
図1は、本発明を適用可能な例示的な一実施形態であるワークフローシステム100を示す図である。図1において、ワークフローサーバ104は、ネットワーク103を介して、外部システムサーバ101及び外部データベース(DB)102と接続されていることを前提とする。
ワークフローシステム100は、ワークフローサーバ104と、ワークフローデータベース(DB)105と、少なくとも1つのワークフロークライアント106とを含む。ワークフローシステム100はまた、ワークフローで用いる帳票等の設計データ(以下、定義情報とも呼ぶ)を作成するための、少なくとも1つの帳票設計クライアント107も含む。これらワークフローサーバ104、ワークフローDB105、ワークフロークライアント106、及び帳票設計クライアント107は、イントラネット108を介して接続されている。
ネットワーク103の構成は公知であるため、その詳細な説明は省略するが、ネットワーク103として、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、イントラネット、又はインターネット等を利用することができる。また、イントラネット108は、企業内ネットワークを想定しているが、ネットワーク103と同様に、LAN、WAN、又はインターネット等を利用することができる。
ワークフローサーバ104は、ワークフロークライアント106からの要求に応じて、ワークフローDB105にアクセスして、ワークフローDB105におけるデータの処理及び管理を行う。ワークフローサーバ104は、必要に応じて、外部DB102に対してもアクセスしてデータ処理を行う。ワークフローサーバ104は、さらに必要があれば、外部DBに対するデータ操作の結果(例えば、データ参照、データ更新、データ削除、及びこれらの処理結果の成否等)をワークフロークライアント106に送信する。なお、図1では、ワークフローサーバ104とワークフローDB105とを別々のハードウェアとして示したが、ワークフローDB105をワークフローサーバ104内に含めてもよい。
図2は、図1に示した外部システムサーバ101、外部DB102、ワークフローサーバ104、ワークフローDB105、ワークフロークライアント106、及び帳票設計クライアント107のハードウェア構成の一例を示すブロック図である。
図2では、CPU201、RAM202、ROM203、入力コントローラ205、出力コントローラ206、外部メモリコントローラ207、及び通信インターフェース(I/F)コントローラ208が、システムバス204を介して接続されている。
CPU201は、これらRAM202やROM203等の各デバイスを統括的に制御する。また、CPU201は、ROM203や外部メモリ211に記憶されているプログラムを読み出してRAM202にロードし、当該プログラムを実行する。従って、図示して後述する、ワークフローサーバ104及びワークフロークライアント106の、各種「・・・部」が行う処理を実際に実行するデバイスが、ワークフローサーバ104及びワークフロークライアント106のCPU201である。
RAM202は、CPU201の主メモリ、ワークエリア、及び一時待避領域等として機能する。ROM203や、外部メモリコントローラ207に接続された外部メモリ211は、CPU201の制御プログラムであるオペレーティングシステム(OS)や、各サーバ又は各クライアントの後述する各種機能を実現するためのプログラムを記憶している。
入力コントローラ205は、入力部209からの入力を制御する。ユーザは、例えば、入力部209を介して、コマンドや情報を入力することができる。この入力部209としては、特にサーバやクライアント等の端末が使用される場合、キーボード、マウス等のポインティングデバイスが挙げられる。また、印刷装置等が使用される場合、入力部209として、タッチパネル、ボタン、及びスイッチ等が挙げられる。しかしながら、入力部209は、上記に挙げたものに限定されるわけではない。
出力コントローラ206は、出力部210の表示を制御する。この出力部210としては、例えば、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等が挙げられるが、これらに限定されるものではない。
外部メモリコントローラ207は、ブートプログラム、各種アプリケーション・プログラム、フォントデータ、ユーザファイル、編集ファイル、プリンタドライバ等を記憶している外部メモリ211へのアクセスを制御する。加えて、外部メモリコントローラ207は、各サーバ又は各クライアントの各種機能を実現するためのプログラム212、テーブル、及びパラメータ等を記憶している。この外部メモリ211としては、ハードディスク(HD)やフロッピー(登録商標)ディスク(FD)、PCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)、スマートメディア等が挙げられる。しかしながら、外部メモリ211は、上記に挙げたものに限定されるわけではない。
通信I/Fコントローラ208は、ネットワーク103、108を介して外部機器に対する通信制御処理を実行する。
なお、プログラム212は、実際にはハードウェアではなく、本発明を実現するための各種のプログラムである。このプログラム212は、外部メモリ211に記憶されており、CPU201により、必要に応じてRAM202にロードされ実行される。
図3は、図1に示したワークフローサーバ104及びワークフローDB105において実現される機能構成の一例を示すブロック図である。図3では、ワークフローDB105がワークフローサーバ104内に存在するものとして示されているが、ワークフローDB105は、ワークフローサーバ104とは別のハードウェアとすることができる。
ワークフローサーバ104は、入力処理部301、帳票定義指定部302、出力処理部303、外部DB操作指示解析部304、SQL生成部305、SQL発行部306、配送処理実行部307、及びSQLキュー321を含む。
ワークフローDB105は、帳票定義311、外部DB定義315、及び帳票データ316を含む。また、帳票定義311は、フォーム定義312、ユニット定義313、及び項目構成定義314を含む。
入力処理部301は、ワークフローサーバ104の入力コントローラ205又は通信I/Fコントローラ208からの入力情報を受け付ける処理を行う。また、入力処理部301は、受け付けた入力情報の内容に応じて、帳票定義指定部302、外部DB操作指示解析部304、及び配送処理実行部307に対する、予め定められたフォーマットを有する要求に、その入力情報を変換する。この入力情報には、帳票定義情報の要求と、外部DB操作指示の要求と、配送処理の要求と、この外部DB操作指示の要求及び配送処理の要求の組合せが含まれる。詳細には、入力処理部301は、受け付けた入力情報に帳票定義情報の要求が含まれる場合、帳票定義情報を取得するよう帳票定義指定部302に要求する。また、受け付けた入力情報に外部DB操作指示の要求が含まれる場合には、入力処理部301は、外部DBに対する操作内容を解析するよう外部DB操作指示解析部304に要求する。また、受け付けた入力情報に配送処理の要求が含まれる場合には、入力処理部301は、配送処理を実行するよう配送処理実行部307に要求する。
帳票定義指定部302は、入力処理部301からの帳票定義情報の要求に応じて、帳票定義311から取得した帳票定義情報を出力処理部303に渡す。
出力処理部303は、帳票定義指定部302、SQL発行部306、及び配送処理実行部307の処理結果を、出力コントローラ206又は通信I/Fコントローラ208に対して出力する。
外部DB操作指示解析部304は、入力処理部301からの外部DB操作指示の要求に応じて、予め定められたフォーマットを有する当該外部DB操作指示を解析する。解析した結果、外部DB操作指示解析部304は、その操作指示内に含まれる外部DBを識別する情報(外部DB定義ID)を識別し、当該外部DB操作指示に含まれる外部DBへの具体的な操作内容をSQL文に変換する要求をSQL生成部に渡す。外部DB操作指示の詳細については、図16を参照して後述する。
SQL生成部305は、外部DB操作指示解析部304からのSQL文への変換要求の内容に基づいてSQL文を生成し、そのSQL文をSQLキュー321へ溜める。代替として、SQL生成部305は、SQL文をSQLキュー321へ溜めずに、そのSQL文を直接SQL発行部306へ渡してもよい。
SQL発行部306は、SQLキュー321に溜められたSQL文、又はSQL生成部305から直接渡されたSQL文を、外部DB102に対して発行する。また、外部DBの操作とともに、配送処理を実行する場合には、SQL発行部306は、配送処理実行部307に対して、その旨を通知する。
配送処理実行部307は、入力処理部301又はSQL発行部306からの配送処理の要求に従って、帳票の配送処理を行い、配送処理の結果(例えば、申請が承認された、申請が否認された、配送が差し戻された等)を出力処理部303へ通知する。
次に、ワークフローサーバ104が扱うデータについて説明する。
帳票定義311は、ワークフローで用いる帳票のテンプレートとなる定義情報を有している。帳票定義311は、後述するフォーム定義312、ユニット定義313、及び項目構成定義314を含む。
フォーム定義312は、帳票のデザインのテンプレートとなる定義情報を有している。特に重要なものとして、フォーム定義312は、項目構成定義314で定義されている項目の配置情報と、ユニット定義313で定義されているユニットの実行タイミングに関する情報とを有している。
ユニット定義313は、ユニットの実行タイミングに関する情報を有している。また、ユニット定義313は、配送処理や外部DBに対する操作等、帳票起動時や帳票上に配置されたボタンのクリック等をトリガとして発せられる命令の内容と、その命令の実行順序とを規定している。その命令の内容としては、ワークフローサーバに対する要求だけでなく、帳票上(すなわち、ワークフロークライアント上)での計算処理等を含めることができる。ユニット定義313の構造については、図9を参照して後述する。
項目構成定義314は、帳票上で表示・入力するデータ項目の種類(例えば、テキスト欄、セレクトリスト、ラジオチェック等)、当該データ項目の配置情報、及び文字数等を規定したものである。
外部DB定義315は、外部DBへ接続するために必要となる接続情報、データベース製品名等の情報を規定したものである。外部DB定義315の構造については、図8を参照して後述する。
帳票データ316は、ワークフローの運用時に、項目構成定義314に基づいてワークフロークライアントにより登録される実データである。
なお、SQLキュー321は、外部メモリ211内の記憶領域において実装される。
図4は、図1に示したワークフロークライアント106において実現される機能構成の一例を示す図である。
ワークフロークライアント106は、入力処理部401、帳票定義情報解析部402、出力処理部403、ユニット定義情報解析部404、キュー生成部405、要求発行部406、帳票定義情報411、及び外部データ操作指示キュー421を含む。帳票定義情報411は、ユニット定義情報412を少なくとも含む。
入力処理部401は、ワークフロークライアント106の入力コントローラ205又は通信I/Fコントローラ208からの入力情報を受け付ける処理を行う。また、入力処理部401は、受け付けた入力情報の内容に応じて、帳票定義情報解析部402及びユニット定義情報解析部404に渡される、予め定められたフォーマットを有する要求に、その入力情報を変換する。この入力情報には、ワークフローサーバ104からの帳票定義311と、ユニットの実行要求とが含まれる。詳細には、受け付けた入力情報が帳票定義311である場合、入力処理部401は、帳票定義解析部402に帳票定義311を渡す。一方、受け付けた入力情報がユニットの実行要求である場合、入力処理部401は、そのユニットのユニット識別子(ユニットID)をユニット定義情報解析部404に渡す。ユニットに関する詳細は、図9を参照して後述する。
帳票定義解析部402は、ワークフローサーバ104から入力処理部401を介して受信した帳票定義311の内容を解析する。解析した結果、帳票定義解析部402は、ワークフロークライアント106において、帳票フォームを表示したり稼働したりするために必要な情報である帳票定義情報411を生成する。この帳票定義情報411を生成する際に、帳票定義311に含まれるユニット定義313が、ユニット定義情報412としてワークフロークライアント106の帳票定義情報411内に含まれることになる。また、帳票定義情報解析部402は、初期化過程、すなわち、帳票フォームの起動時において実行されるユニットが指定されている場合には、そのユニットのユニットIDをユニット定義情報解析部404に渡す。
出力処理部403は、帳票定義解析部402又は要求発行部406の処理結果を、出力コントローラ206又は通信I/Fコントローラ208に対して出力する。
ユニット定義情報解析部404は、入力処理部401若しくは帳票定義情報解析部402からのユニットIDに対応するユニット定義情報、又はユニット定義情報412を解析する。解析した結果、ユニット定義情報412の内容に応じて、ユニット定義情報解析部404は、キュー生成部405へ外部DB操作指示を渡すか、又は要求発行部406に外部DB操作指示、配送指示等を送信する。
キュー生成部405は、ユニット定義情報解析部404の解析結果が外部DB操作指示であった場合、その外部DB操作指示を外部DB操作指示キュー421に溜める。また、キュー生成部405は、外部DB操作指示キュー421キューへ外部DB操作指示の溜め込みが終了した際、キュー生成処理が終了した旨を要求発行部406へ通知する。
要求発行部406は、出力処理部403を介して、ワークフローシステム100における配送指示、単一の外部DB操作指示、又は外部DB操作指示キューに溜められた外部DB操作指示の実行指示をワークフローサーバ104に送信する。
次に、ワークフロークライアント106が扱うデータについて説明する。
帳票定義情報411は、帳票定義311に含まれるデータのうち、当該帳票で用いる帳票定義である。ユニット定義情報412は、ユニット定義313のうち、当該帳票で用いるユニット定義である。外部DB操作指示キュー421は、ワークフローサーバに一括して送信する外部DB操作指示をキューとして溜めておくための領域である。なお、帳票定義情報411、ユニット定義情報412、及び外部DB操作指示キュー421は、外部メモリ211内の記憶領域において実装される。
図5は、本発明を適用可能な一実施形態に従ってワークフローを構築する場合の諸定義情報の一例を示す図である。
組織定義501は、ワークフローユーザ、ワークフローユーザが所属する部門及び役割(ロール)等を規定したものである。経路・プロセス定義502は、帳票の配送経路を規定したものである。帳票定義311、フォーム定義312、ユニット定義313、項目構成定義314、及び外部DB定義315については上記にて説明したため、省略することとする。図5において記されている「参照」という用語は、ある定義情報が、別の定義情報に関連付けられていることを意味する。
これらの定義情報は、設計担当者により帳票設計クライアント107を用いて作成され、次いで、ワークフローサーバ104を介してワークフローDB105に記憶されるものである。
図6は、帳票設計クライアント107を用いて、本発明を適用可能な一実施形態に従ってワークフローを構築する場合の、定義情報作成手順の一例を示す図である。
まず、S601において、図5の組織定義501を作成する。次いで、S602において、図5の項目構成定義314を作成する。次に、S603において、図5の外部DB定義315を作成し、S604において、図5のフォーム定義312を作成する。ここで、S604と並行して、図5のユニット定義313も作成する(S605)。このフォーム定義情報には、フォーム起動時に動作させるユニットや、図7を参照して後述するS705の配送用ボタンのクリック時に動作させるユニットを含めることができる。次いで、S606において、図5の経路・プロセス定義502を作成する。これらの定義情報の作成が完了すると、S607において、ワークフローを稼動させることができる。
図7は、本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、ワークフローユーザ(ワークフロークライアント106)のワークフロー利用手順の一例を示す図である。
S701において、ワークフローユーザは、クライアント106において、ワークフローシステムのログイン画面(不図示)でユーザ名及びパスワードを入力する。それらユーザ名及びパスワードが、ワークフローDB内に予め記憶されているユーザ名及びパスワードと一致した場合、ワークフローユーザは、ワークフローシステムにログインすることができる。それらユーザ名及びパスワードが、ワークフローDB内に予め記憶されているユーザ名及びパスワードと一致しなかった場合、ログインに失敗した旨が表示され、再度ログイン画面が表示される。
ログインに成功すると、S702において、ワークフローユーザは、クライアント106において、帳票一覧画面(不図示)にアクセスすることができる。次いで、S703において、ワークフローユーザは、S702において表示された帳票一覧画面の中から、処理すべき帳票フォーム(例えば、図10)を起動することができる。次に、S704において、ワークフローユーザは、S703において起動された帳票フォームに必要事項を入力する。必要事項が全て入力されると、S705において、ワークフローユーザは、起動された帳票フォームの配送用ボタンをクリックした後、ワークフローサーバ104において処理された配送の結果を、クライアント106上で見ることができる(S706)。
ワークフローユーザが続けて処理を行うことを望む場合、S702〜S706を繰り返し実行する。ワークフローユーザが処理を望まない場合は、クライアント106上のワークフローアプリケーション(不図示)に表示されたログアウトボタンをクリックする等して、ワークフローユーザは、ワークフローシステムからログアウトすることができる。
図8は、図3に示した外部DB定義315のデータ構造を示す図である。
外部DB定義情報800は、外部DB定義を識別するための外部DB定義ID801を含む。また、外部DB定義情報800は、当該外部DBへの接続情報802、当該外部DBの種類803、及び操作を許可するユニット種別(例えば、後述する基本ユニットであることを示す識別情報等)804を含む。外部DBの種類803としては、例えば、SQLServerやOracle(登録商標)等のバージョン情報が挙げられる。さらに、外部DB定義情報800は、当該外部DBの対象テーブル名805、及び、1つ又は複数の対象列名806を含むが、外部DB定義情報800には、前述した情報以外の情報を含めることもできる。
図9は、図3に示したユニット定義313のデータ構造を示す図である。
図示するように、ユニット定義313として、基本ユニット900(図9(a))と、外部DB操作系ユニット910(図9(b))との少なくとも2種類が存在する。
基本ユニット定義情報900は、ユニット種別901、ユニットID902、及び、1つ又は複数の命令903を含む。
ユニット種別901は、ユニットの種別(本実施形態では、基本ユニットであるか、又は後述する外部DB操作系ユニットにおける行ロック、行チェック、外部DB編集、及び外部DB参照の少なくとも5種類)を規定するものである。基本ユニット900では、ユニットが基本ユニットであることを示す識別情報がユニット種別901に格納されている。
ユニットID902は、ユニットの識別子であり、この識別子は、各ユニット種別の中で一意である。
命令903は、ユニット実行、関数実行等の、操作命令情報が格納されている。関数には、配送処理の実行をワークフローサーバ104に要求する配送関数と、外部DB操作のトランザクションコミット及びロールバックの機能を有するコミット関数及びロールバック関数とが少なくとも存在する。また、命令903には、操作命令が後述する外部DB操作系ユニット910である場合、トランザクションに含めるか、即時実行を行うかを判定するための情報を含めることができる。
外部DB操作系ユニット定義情報910は、ユニット種別911、ユニットID912、外部DB定義ID913、編集操作種別詳細914、1つ又は複数の操作対象列915、1つ又は複数の取得対象列916、及び、1つ又は複数の抽出条件917を含む。
ユニット種別911は、ユニットの種別を規定するものである。種別の詳細については、後述する。
ユニットID912は、ユニットの識別子である。この識別子は、各ユニット種別の中で一意である。
外部DB定義ID913は、外部DB定義315のデータを識別するための情報である。
編集操作種別詳細914は、外部DBに対する編集操作の種別、すなわち操作内容がレコードの挿入、更新、又は削除のうちのいずれであるかを規定したものである。
操作対象列915、取得対象列916、及び抽出条件917は、外部DBに対する操作のために必要となる情報である。操作対象列915、取得対象列916、及び抽出条件917に対する値の設定の有無は、ユニット種別911及び編集操作種別詳細914の設定値によって異なる。
前述したユニット種別911に指定できる選択肢としては、行ロック、行チェック、外部DB編集、及び外部DB参照の少なくとも4種類が存在する。行ロックユニットは、外部DBの指定したテーブルにおける指定した行をロックする命令を指示するためのものであって、この場合、抽出条件917を設定する必要がある。行チェックユニットは、外部DBの指定したテーブルにおける指定した条件の行が存在するか否かを確認することによって更新の有無等をチェックするためのものでる。この場合もまた、抽出条件917を設定する必要がある。外部DB編集ユニットは、外部DBに対して、挿入、更新、又は削除の操作を行うためのものである。この場合は、編集操作種別詳細914と、必要に応じて操作対象列915及び抽出条件917とを設定する必要がある。外部DB参照ユニットは、外部DB内に存在するデータを取得するためのものであって、この場合、取得対象列916及び抽出条件917を設定する必要がある。
図10は、ワークフロークライアント106において用いられる、帳票フォーム1000のイメージの一例を示す図である。帳票設計クライアント107を使用する設計者は、フォーム定義312を作成する過程(図6のS604)において、帳票フォーム1000が開いたときに実行される基本ユニットを設定することができる。また、帳票設計クライアント107を使用する設計者は、上記過程において、ワークフローユーザが帳票フォーム上の(引当)ボタン1001をクリックした際に実行される基本ユニットを設定することもできる。
図11は、本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、帳票取得から外部データ更新に至るまでの一連の処理手順に関する一例を示すフローチャートである。本例では、帳票フォーム1000を開いたときに(すなわち、帳票フォーム1000の起動時に)、基本ユニットが実行されるよう設計されている場合を想定している。本処理の特徴的部分については、図12〜図14を参照して詳述する。
S1101において、ワークフローユーザ1100は、ワークフロークライアント106へ帳票を要求して、帳票フォームを呼び出す。次いで、S1102において、ワークフロークライアント106は、帳票定義情報をワークフローサーバ104に要求する。このS1101及びS1112の処理は、図7のS703の処理に相当するものである。
次いで、S1103において、ワークフローサーバ104の帳票定義指定部302が、帳票定義311に含まれるデータをワークフローDB105に要求する。その要求に応じて、S1104において、ワークフローサーバ104は、ワークフローDB105から、帳票定義情報を取得する。次いで、S1105において、その帳票定義情報が、ワークフローサーバ104からワークフロークライアント106に送信される。
S1106〜S1112は、外部データの帳票への取込を行う処理を示している。これらの処理では、まず、ワークフロークライアント106において、帳票フォームの初期化(図12におけるS1202及びS1203の処理に相当)が行われる(S1106)。次いで、ワークフロークライアント106が、外部データをワークフローサーバ104に要求する(S1107)。この要求に応じて、ワークフローサーバ104は、外部DB定義情報をワークフローDB105に要求し(S1108)、ワークフローDB105から外部DB定義情報を取得する(S1109)。次いで、ワークフローサーバ104が、外部データを外部DB102に要求し(S1110)、外部DB102から外部データを取得する(S1111)。そして、その外部データが、ワークフローサーバ104からワークフロークライアント106に送信される(S1112)。これらS1106〜S1112の処理の詳細については、図14を参照して後述する。
S1113において、ユーザが帳票フォームにデータを入力した後、S1104において、ユーザが帳票フォーム上の配送実行ボタンをクリックすると、ワークフロークライアント106の入力処理部401が、そのクリック操作を検出して受け付ける。次いで、S1115において、ワークフロークライアント106のユニット定義情報解析部404が、ユニット情報を解析したり、キュー生成部405にキューを生成させたりする。S1115の詳細については、図13を参照して後述する。
S1116において、ワークフロークライアント106は、配送指示をワークフローサーバ104に送信する。この配送指示には、外部DB操作指示キュー421内のデータが含まれる。次いで、S1117及びS1118において、ワークフローサーバ104は、ワークフローDB105及び外部DB102のそれぞれに対して、トランザクションを開始するよう通知する。次いで、ワークフローサーバ104の外部DB操作指示解析部304が、受信した外部DB操作指示キュー421内のデータを解析してSQL文を生成するために、外部DB定義情報(315、800)をワークフローDB105に要求する(S1119)。そして、ワークフローサーバ104の外部DB操作指示解析部304は、ワークフローDB105から外部DB定義情報を取得し(S1120)、当該外部DB定義情報を参照して、外部DBの種類等を識別する。
S1121において、ワークフローサーバ104の外部DB操作指示解析部304は、受信した外部DB操作指示キュー421内のデータを解析する。次いで、ワークフローサーバ104のSQL生成部305は、その解析結果と、S1120において取得した外部DB定義情報とに基づいて、SQL文を生成しSQLキュー321に格納する。次いで、S1122において、ワークフローサーバ104のSQL発行部306が、SQLキュー321に格納されたSQL文を発行する。そして、S1123において、ワークフローサーバ104は、外部DB102内に存在する外部データ(又は、存在することになる外部データ)に対する操作結果を、外部DB102から受信する。なお、S1122及びS1122は、SQLキュー321に溜められたキューの個数分だけ実施される。
S1124において、ワークフローサーバ104の配送処理実行部307が、前述の配送指示に従ってワークフローサーバ104内の配送処理を実行し、ワークフローDB105内のデータを操作(更新等)する。
なお、配送処理を行うことなく(すなわち、S1117、S1124、及びS1125が行われずに)、外部DBに対するトランザクションのみが指定されることもあり得る。その場合は、S1118〜S1123及びS1126の処理が行われる。
前述したS1119〜S1124までの全ての処理が成功した場合には、S1125において、S1117で開始したトランザクションをコミットし、かつS1126において、S1118で開始したトランザクションをコミットする。
次いで、S1127において、ワークフローサーバ104は、ワークフローDB105及び/又は外部DB内に存在するデータ(若しくは、存在することになるデータ)に対する操作結果をワークフロークライアント106に送信する。そして、S1128において、ユーザは、その結果をワークフロークライアント106上で見ることができる。なお、S1116〜S1127の詳細については、図14を参照して後述する。
図12は、図11に示した外部データの帳票への取込を行う処理(S1106〜S1112)の手順の一例を示すフローチャートである。この処理手順は従来技術を用いたものであるが、本発明を実施するための前提として必要なものである。なお、図12において、S1201〜S1205及びS1215〜S1219がワークフロークライアント106における処理であり、S1206〜S1214がワークフローサーバ104における処理である。
S1201において外部データの帳票への取込を行う処理が開始する。S1202で、ワークフロークライアント106の帳票定義情報解析部402が、予め定められたフォーマットを有する帳票定義情報411を取得し、その帳票定義情報411の内容を解析する。S1203では、ワークフロークライアント106の帳票定義情報解析部402が、S1202の解析結果に基づいて、帳票フォーム1000の起動時に外部DBのデータ参照を実行するユニットが設定されているか否かを確認する。当該ユニットが設定されていない場合、処理はS1219に進んで終了する。一方、当該ユニットが設定されている場合は、ワークフロークライアント106の帳票定義情報解析部402が、ユニット定義情報解析部404に当該ユニット(詳細には、そのユニットID)を渡す。これらS1202及びS1203の処理は、図11のS1106の帳票フォームの初期化処理に相当する。
S1204では、ワークフロークライアント106のユニット定義情報解析部404が、予め定められたフォーマットを有する、渡された外部DB参照ユニットの定義情報に基づいて、外部DB操作指示をする。外部DB操作指示のデータ構造については、図16を参照して後述する。次いで、S1205において、ワークフロークライアント106の要求発行部406が、構築された外部DB操作指示をワークフローサーバ104に送信する。
S1206において、ワークフローサーバ104の入力処理部301が、ワークフロークライアント106から外部DB操作指示を受信する。S1207では、ワークフローサーバ104の外部DB操作指示解析部304が、受信した外部DB操作指示を入力処理部301から取得し、その内容を解析する。次いで、S1208において、ワークフローサーバ104の外部DB操作指示解析部304は、取得した外部DB操作指示により指定された外部DB定義IDを識別する。続いて、ワークフローサーバ104の外部DB操作指示解析部304は、そのIDに対応する外部DB定義315を参照し、対象とする外部DB102への接続情報を取得する。次にS1209で、ワークフローサーバ104のSQL生成部305が、S1207における外部DB操作指示解析部304の解析の結果に基づいて、SQL文を生成する。
S1210において、ワークフローサーバ104のSQL発行部306は、S1208で取得した接続情報を用いて外部DB102に接続し、S1209で生成されたSQL文を当該外部DB102に対して発行する。次にS1211で、ワークフローサーバ104は、外部DB102で実行された上記SQL文の結果を受信する。そして、S1212において、S1211のSQL文の実行結果がSQLエラーであった場合にはS1213へ処理が進み、SQLエラーでなかった場合にはS1214へ処理が進む。
S1213では、ワークフローサーバ104の出力処理部303が、ワークフロークライアント106にエラーメッセージを送信する。一方、S1214では、ワークフローサーバ104の出力処理部303が、ワークフロークライアント106にS1211で得られた結果データを送信する。
S1215では、ワークフロークライアント106が、S1213又はS1214でワークフローサーバ104から送信された結果を受信する。次いで、S1216において、受信した結果が、外部DB102から取得されたデータ(すなわち、外部データ)であるか否かが判定される。受信した結果が外部データであった場合、S1217において、取得された外部データが、帳票定義情報解析部402及びユニット定義情報解析部404を介して、外部DB参照ユニットにより指定された帳票上の指定箇所に表示される。一方、受信した結果がエラーメッセージであった場合は、S1218において、エラーメッセージを表示する等、エラー処理が行われる。最後にS1219で、この処理は終了する。
図13は、図11に示した、外部DB操作指示をキューに溜め込む(S1115)処理の手順の一例を示すフローチャートである。これらの処理では、ワークフロークライアント106において、外部DBに対する操作指示を外部DB操作指示キュー421に溜め、配送指示とともにワークフローサーバ104へ送信するための準備を行う。
S1301で処理が開始し、S1302において、ワークフロークライアント106の入力処理部401が、ユニットの実行指示を受け付ける。
次のS1303からS1308までの処理は、実行対象となっている基本ユニット900で指定されている全命令について、指定された順番で各命令に対して各処理を行うことを示している。すなわち、基本ユニット定義情報900で指定されている1行目の命令に対する処理から開始し、最終行の命令に対する処理で終了する。
S1304では、ワークフロークライアント106のユニット定義情報解析部404が、基本ユニット900の命令中で指定された内容を解析する。次いで、S1305では、S1304の解析結果を受けて、当該命令をトランザクションに含めるか否かが判定される。
S1305で、当該命令をトランザクションに含めると判定された場合、S1306で、トランザクションに含める対象となっているユニット定義情報、及び帳票上のデータに基づいて、外部DB操作指示を生成し、外部DB操作指示キュー421に格納する。外部DB操作指示の構造については、図16を参照し、キュー生成の具体例については、図18を参照して後述する。それに対し、S1305で、当該命令をトランザクションに含めないと判定された場合、S1307で、外部DB定義315から取得した外部DB定義情報とともに、外部DB操作指示が、ワークフロークライアント106から、ワークフロークサーバ104に送信される。ここまでは、ワークフロークライアント106が実行する処理であるが、次に示す処理は、実際には、ワークフローサーバ104が実行する処理となる。上記外部DB操作指示が送信されると、ワークフロークサーバ104のSQL生成部305は、外部DB操作指示解析部304を介して解析された外部DB操作指示に対応するSQL文を生成する。ここで、そのSQL文は、ワークフロークサーバ104のSQLキュー321へは溜められず、直接SQL発行部306に渡される。そして、ワークフロークサーバ104のSQL発行部305が、1つのトランザクションとして、生成されたSQL文を外部DBに対して発行する。
上述したように、実行対象となっている基本ユニット900で指定されている全命令について、繰り返しS1303からS1308までの処理を行う。最終行の命令に対する処理を終えると、最後にS1309でこれらの処理が終了する。
図14は、図11に示した、ワークローサーバ側で外部DB操作指示を処理する手順(S1116〜S1127)の一例を示すフローチャートである。
S1401において、ワークフローサーバ104の入力指示部301が、ワークフロークライアント106からの配送指示を受信すると、処理が開始する。S1402で、その配送指示が、ワークフローサーバ104の入力指示部301から外部DB操作指示解析部304に渡される。配送指示の構造については、図15を参照して後述する。次に、S1403において、トランザクション(ワークフローDB及び外部DBに対しての両方を含む)を開始する。
S1404〜S1417で、配送指示内に含まれている外部DB操作指示の全てについて、指定された順番で各外部DB操作指示の内容を解析する。すなわち、配送指示内に含まれている1行目の外部DB操作指示から解析を開始し、最終行の外部DB操作指示で解析を終了する。具体的な解析は、以下に記載するとおりである。
S1405では、ワークフローサーバ104の外部DB操作指示解析部304が、配送指示内に含まれている各外部DB操作指示の内容を解析する。その際、外部DB操作指示解析部304は、外部DB操作指示内の予め定められた位置に配置された外部DB定義ID1603をキーにして、外部DB定義を取得する。
次に、S1406において、ワークフローサーバ104の外部DB操作指示解析部304は、外部DB操作指示内の予め定められた位置に配置された、外部DB操作指示の種別を判定する。例えば、外部DB操作指示の種別が行ロックと判定された場合はS1407に進み、行チェックと判定された場合はS1408に進み、編集と判定された場合はS1409に進む。なお、図14では、種別が、行ロック、行チェック、及び外部DB編集である3つの場合を示したが、ワークフローサーバ104のSQL生成部305が対応可能な操作種別であれば、他の操作であってもよい。
次いで、S1407では、ワークフローサーバ104の外部DB操作指示解析部304は、外部DB操作指示内の予め定められた位置に配置された、DBの種類を判定する。例えば、DBの種類がSQLServerであると判定された場合はS1410に進み、DBの種類がOracle(登録商標)と判定された場合はS1411に進む。同様に、S1408又はS1409においてもDBの種類が判定される。DBの種類がSQLServerと判定された場合は、S1412又はS1414に進み、DBの種類がOracle(登録商標)と判定された場合は、S1413又はS1415に進む。
次に、前述したS1410〜S1415では、ワークフローサーバ104のSQL生成部305が、操作種別及びDBの種類に応じたSQL文を生成する。図14では、DBとして、SQLServer及びOracle(登録商標)が例示されている。しかしながら、SQL生成部305が対応可能なデータベース製品(例えば、DB2(登録商標)、MySQL(登録商標)等)であれば、DBは他のDBであってもよい。
具体的には、S1410では、ワークフローサーバ104のSQL生成部305は、SQLServer用の行ロックを行うためのSQL文を生成する。S1411では、ワークフローサーバ104のSQL生成部305は、Oracle(登録商標)用の行ロックを行うためのSQL文を生成する。S1412では、ワークフローサーバ104のSQL生成部305は、SQLServer用の行チェックを行うためのSQL文を生成する。S1413では、ワークフローサーバ104のSQL生成部305は、Oracle(登録商標)用の行チェックを行うためのSQL文を生成する。S1414では、ワークフローサーバ104のSQL生成部305は、SQLServer用のデータ更新を行うためのSQL文を生成する。S1415では、ワークフローサーバ104のSQL生成部305は、Oracle(登録商標)用のデータ更新を行うためのSQL文を生成する。次いで、S1416において、ワークフローサーバ104のSQL生成部305は、生成したSQL文をSQLキュー321に溜める。なお、本実施形態では、このキューイングは、FIFO方式としているが、LIFO方式であってもよい。
上述したように、配送指示内に含まれている外部DB操作指示の全てについて、各外部DB操作指示の内容を解析し、対応するSQL文を作成し、そのSQL文をキューに溜め終えると、処理はS1418に進む。
次のS1418〜S1422では、ワークフローサーバ104のSQL生成部305が、SQLキュー321に溜められたSQL文を外部DBに対して発行する。より詳細には、S1419において、ワークフローサーバ104のSQL生成部305は、SQLキュー321に溜められたSQL文を外部DBに対して発行する。例えば、SQL文が行ロックに対応する場合、抽出条件(以下で図16を参照して詳述する)に指定した行に対してロックをかけるSQL文を発行し、その行に対する排他制御が開始される。
次いで、S1420では、S1419のSQL文を実行した結果、SQLエラーが発生したか否かが判定される。S1420において、SQLエラーが発生した場合、処理はS1426に進み、S1403で開始したトランザクションをロールバックする。なお、この際、配送指示が設定されている場合には、外部DBにおけるトランザクションをロールバックするとともに、ワークフローDBにおけるトランザクションもロールバックする。 一方、S1420において、SQLエラーが発生した場合、処理はS1421に進む。S1421では、一例として、発行したSQL文が行チェックに対応するものである場合の処理を示している。すなわち、発行したSQL文が行チェックに対応するものであり、かつそのSQL文の実行の結果により、外部DBにおいて参照される行が存在するか否かが判定される。S1421において、結果レコード件数が0件である、すなわち、外部DBにおいて参照される行が存在しない場合、上記と同様に、処理はS1426に進み、S1403で開始したトランザクションをロールバックする。なお、この際も、配送指示が設定されている場合には、外部DBにおけるトランザクションをロールバックするとともに、ワークフローDBにおけるトランザクションもロールバックする。
このようにして、ワークフローサーバ104のSQL生成部305が、SQLキュー321に溜められたSQL文を外部DBに対して発行し、かつ全てのSQL文の処理が成功に終わると、処理はS1423に進む。
S1423では、配送処理を行う。すなわち、ワークフロークライアント106からの指示に基づいて、ワークフローサーバ104が、ワークフローDB105に対してデータの更新操作を指示する。このS1423の処理は、従来のワークフローシステムと同様のものであるため、その詳細については省略することとする。なお、ワークフローの配送指示が設定されていない場合は、当該S1423及びS1424はスキップされる。
S1424の配送処理でエラーが発生した場合には、S1426に進み、S1403で開始したトランザクションをロールバックする。配送処理でのエラーとは、ワークフローシステムのエラーや配送の差し戻しなどを含むものである。この際、外部DBに対する操作指示が設定されている場合には、ワークフローDBにおけるトランザクションをロールバックするとともに、外部DBにおけるトランザクションもロールバックする。S1424において配送が成功した場合は、S1425に進み、ワークフローDBにおけるトランザクションをコミットするとともに、外部DBにおけるトランザクションもコミットする。
S1425のトランザクションコミットによって、ワークフローDB(配送処理)及び外部DBへのデータ更新等が確定し、外部DB操作指示に外部DBの行ロックが含まれている場合には、その行ロックが解除される。なお、前述したS1426のトランザクションのロールバックでも、行ロックがなされている場合は、その行ロックが解除される。
次いで、S1427において、ワークフローサーバ104の出力処理部303に対して結果が送信され、さらに、ワークフロークライアント106に当該結果が通知される。最後に、S1428で処理が終了する。
図15は、ワークフロークライアント106からワークフローサーバ104へ渡される配送指示1500のデータ構造を示す図である。
配送指示1500は、配送指示データ1501、帳票データ1502、及び外部DB操作指示キュー1503を含む。
配送指示データ1501は、申請、承認、差戻し等の配送指示を示す識別情報を含む。帳票データ1502は、ワークフローサーバ106の帳票データ316に格納されることになる、帳票フォーム上の設定値等の情報を含む。外部DB操作指示キュー1503は、図13のS1301〜S1309で生成される外部DB操作指示のキューである。なお、配送指示データ1501を指定せず(すなわち、帳票データ1502も指定せず)、外部DB操作指示キュー1503のみをワークフローサーバ104へ渡すこともできる。
図16は、外部DB操作指示1600のデータ構造の詳細を示す図である。図16は、図9(b)に基づくものであり、図15の外部DB操作指示キュー1503における各々の外部DB操作指示の詳細を示している。
外部DB操作指示1600は、ユニット種別1601、編集操作種別詳細1602、外部DB定義ID1603、1つ又は複数の取得対象列1604、1つ又は複数の操作対象列・設定値のセット1605、及び、1つ又は複数の条件式1606を含む。ユニット種別1601は、図9(b)のユニット種別911に対応し、編集操作種別詳細1602は、図9(b)の編集操作種別詳細914に対応し、外部DB定義ID1603は、図9(b)の外部DB定義ID913に対応するものである。さらに、取得対象列1604は、図9(b)の取得対象列916に対応し、操作対象列・設定値のセット1605は、図9(b)の操作対象列915に対応し、条件式1606は、図9(b)の抽出条件917に対応するものである。
ユニット種別1601、編集操作種別詳細1602、外部DB定義ID1603、及び取得対象列1604のそれぞれには、外部DB操作指示の基になる外部DB操作系ユニット910(図9(b))における対応する項目のそれぞれの設定値が格納される。
操作対象列・設定値のセット1605には、外部DB操作系ユニット910(図9(b))の操作対象列915で指定した操作対象列のうち、設定値については、操作対象列915で指定した帳票上の項目に入力されている値を設定する。条件式1606についても、外部DB操作系ユニット910(図9(b))の抽出条件917で指定した抽出条件のうち、値については、抽出条件917で指定した帳票上の項目に入力されている値を設定する。帳票フォーム上(図10)の値を反映する具体例については、図18を参照して後述する。
図17は、ワークフロークライアント106において、選択された外部DB操作指示を外部DB操作指示キュー421に溜める例を示す図である。
基本ユニット1701に設定された命令(図9の903と同様)のうち、トランザクションに含める設定がされているものがキュー1702に溜められる。この処理は、図13のS1305に相当するものである。
図18は、ワークフロークライアント106において、外部DB操作指示としての行ロック、行チェック、及び外部DB編集の各ユニットについて、帳票フォーム(1000、1810)におけるデータを取得してキュー1820に溜める際の具体例を示している。
図18において、行ロックユニット1802については、条件式に設定されている品目IDとして、帳票フォーム1810における品目ID1811の値(=0014)を反映し、行ロック操作指示1821として外部DB操作指示キュー1820に溜める。行チェックユニット1802については、条件式に設定されている在庫数として帳票フォーム1810における在庫数1812の値(=5)を反映し、行ロック操作指示1822として外部DB操作指示キュー1820に溜める。外部DB編集ユニット1803については、操作対象列の設定値に設定されている引当後在庫数として帳票フォーム1810における引当後在庫数1814の値(=2)を反映する。また、条件式に設定されている品目IDとして帳票フォーム1810における品目ID1811の値(=0014)も反映する。そして、外部DB編集操作指示1823として外部DB操作指示キュー1820に溜める。
図19は、行ロック指示及び行チェック指示のそれぞれについて、操作指示内容と生成されるSQL文との例示的な関係を示している。
(実施例1)
図20は、行ロック機能及び行チェック機能を外部DB操作のトランザクションに組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示している。
この例では、外部DBは、物品の在庫を管理する在庫データベースとする。詳細には、ワークフロークライアント2001及び2002の帳票フォームには、品目IDと帳票フォーム起動時の在庫数とが表示される。また、ワークフローユーザが引当数を入力すると、帳票フォーム(ワークフロークライアント)上で在庫数を新たに算出し、配送処理時に在庫データベース上に、その新たな在庫数を反映させるものである。ここで、ワークフロークライアントA2001及びワークフロークライアントB2002はともに、カメラの在庫を引き当てようとしていると仮定する。
ワークフロークライアントA2001は、帳票フォームを呼び出して、外部データを要求し(S2011、S2012)、ワークフローサーバ・DB2003を介して、外部DB2003から在庫データを取得する(S2013、S2014)。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は300個である。
その後、ワークフロークライアントB2002も、帳票フォームを呼び出して、外部データを要求し(S2015、S2016)、ワークフローサーバ・DB2003を介して、外部DB2003から在庫データを取得する(S2017、S2018)。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は300個である。
次に、ワークフロークライアントB2002は、引当数として200を入力し、新たな在庫数が100(=300−200)となった帳票フォーム上で配送実行ボタンをクリックする。すると、外部DB操作指示がキューイングされる(S2019)。次にS2020で、「行ロック条件:品目=カメラ」、「行チェック条件:品目=カメラ AND 在庫数=300」、「更新指示:更新値・・・在庫数=300、条件・・・品目=カメラ」という指示が、ワークフローサーバ・DB2003に送信される。上記の指示により、ワークフローDB2003及び外部DB2004に対するトランザクションが開始される(S2021)。
次いで、図11〜図14を参照して説明したように、ワークフローサーバ2003のSQL生成部305が、上記指示に含まれる外部DB操作指示に対応するSQL文を生成する(S2022)。このSQL文には、行ロック、行チェック、及びデータ更新に関するSQL文が含まれている。次いで、ワークフローサーバ2003のSQL発行部306が、外部DB2004に対して、行ロック、行チェック、及びデータ更新に関するSQL文を発行する(S2023、S2024、及びS2025)。S2023の行ロック操作により、外部DB2004の在庫データベースにおいて、「品目=カメラ」である行に対して、行ロックが適用される。従って、トランザクションが終了するS2027までは、他のワークフロークライアントや外部システムからの外部データの更新を防ぐことが可能となる。S2025が終了した時点では、外部DBにおけるカメラの在庫数は、100個となる。次いで、S2026において、ワークフローサーバ・DB2003において、配送処理が実行される(すなわち、ワークフローDB2003のデータが更新される)。そして、ワークフローDB2003及び外部DB2004に対するトランザクションがコミットされ(S2027)、外部DB2004において、行ロックが解放されて、データ更新(カメラ在庫数=100)が確定する。最後に、S2028において、ワークフロークライアントB2002に、データの更新が成功した旨の通知がなされる。
一方、上記トランザクションの間に、ワークフロークライアントA2001が引当数として100を入力し、新たな在庫数が200(=300−100)となった帳票フォーム上で配送実行ボタンをクリックしたとする。すると、外部DB操作指示がキューイングされる(S2029)。次にS2030で、「行ロック条件:品目=カメラ」、「行チェック条件:品目=カメラ AND 在庫数=300」、「更新指示:更新値・・・在庫数=200、条件・・・品目=カメラ」という指示が、ワークフローサーバ・DB2003に送信される。ここで、この指示の送信は、S2027のトランザクションコミット後になされたものと仮定する。上記の指示により、ワークフローDB2003及び外部DB2004に対するトランザクションが開始される(S2031)。
次いで、図11〜図14を参照して説明したように、ワークフローサーバ2003のSQL生成部305が、上記指示に含まれる外部DB操作指示に対応するSQL文を生成する(S2031)。このSQL文には、行ロック、行チェック、及びデータ更新に関するSQL文が含まれている。次いで、ワークフローサーバ2003のSQL発行部306が、外部DB2004に対して、行ロック、行チェック、及びデータ更新に関するSQL文を発行しようとする。ここで、行ロック処理(S2033)は成功するが、S2034において行チェックを行った際、在庫数がデータ取得時の300個から100個に変動しているため、その行チェックは失敗に終わる(結果レコード件数が0の状態となる)。そして、S2035において、トランザクションがロールバックされ、最後にS2036で、ワークフロークライアントA2001に、処理の失敗通知が送信される。
従って、本実施例によれば、複数のクライアントによる外部データの重複更新を回避することが可能となる。なお、ワークフロークライアントA2002による外部データの更新操作が仮に外部システムによるものであったとしても、同様に重複更新を回避することが可能である。
(実施例2)
図21は、行ロック機能を外部データ取得時に組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示している。
この例でも、外部DBは、物品の在庫を管理する在庫データベースとする。詳細には、ワークフロークライアント2101及び2102の帳票フォームには、品目IDと帳票フォーム起動時の在庫数とが表示される。また、ワークフローユーザが引当数を入力すると、帳票フォーム(ワークフロークライアント)上で在庫数を新たに算出し、配送処理時に在庫データベース上に、その新たな在庫数を反映させるものである。ここで、ワークフロークライアントA2101及びワークフロークライアントB2102はともに、カメラの在庫を引き当てようとしていると仮定する。
ワークフロークライアントA2101は、帳票フォームを呼び出して、外部データを要求し(S2111、S2112)、ワークフローサーバ・DB2103を介して、外部DB2104から在庫データを取得する(S2113、S2114)。本実施例では、ワークフロークライアントA2101が、S2112において、「品目=カメラ」の行に対して行ロックをかける要求もするという点で、実施例1と異なる。但し、本実施例では、更新に対するロックをかけるだけで、参照についてはロックをかけないものとする。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は300個である。
その後、ワークフロークライアントB2102も、帳票フォームを呼び出して、外部データを要求し(S2115、S2116)、ワークフローサーバ・DB2103を介して、外部DB2104から在庫データを取得する(S2117、S2118)。すると、帳票フォームが起動されて、その在庫データが、帳票フォーム上の予め定義された位置に表示される。この例では、取得した在庫データは、カメラ在庫数であり、その数は300個である。なお、S2112において、ワークフロークライアントA2101が、参照についてもロックをかけるか、又は、S2115において、ワークフロークライアントB2102からもロックをかけるような場合、このステップでエラーとなる。
次に、ワークフロークライアントB2102は、引当数として200を入力し、新たな在庫数が100(=300−200)となった帳票フォーム上で配送実行ボタンをクリックする。すると、外部DB操作指示がキューイングされる(S2119)。次にS2120で、「更新指示:更新値・・・在庫数=100、条件・・・品目=カメラ」という指示が、ワークフローサーバ・DB2003に送信される。上記の指示により、ワークフローDB2103及び外部DB2104に対するトランザクションが開始される(S2121)。
次いで、図11〜図14を参照して説明したように、ワークフローサーバ2103のSQL生成部305が、上記指示に含まれる外部DB操作指示に対応するSQL文を生成する(S2122)。このSQL文には、データ更新に関するSQL文が含まれている。次いで、ワークフローサーバ2103のSQL発行部306が、外部DB2104に対して、データ更新に関するSQL文を発行しようとする(S2123)。しかしながら、外部DB2104の在庫データベースにおいて、ワークフロークライアントA2101の行ロック操作(S2122)により、「品目=カメラ」である行に対して、行ロックが適用されている。従って、ワークフロークライアントB2102による外部DBの更新は失敗に終わり、ワークフロークライアントB2102の配送指示によるワークフローDB2103及び外部DB2104に対するトランザクションはロールバックされる(S2124)。そして、その失敗結果が、ワークフロークライアントB2102に対して通知される(S2125)。
一方、上記トランザクションの間に、ワークフロークライアントA2101が引当数として100を入力し、新たな在庫数が200(=300−100)となった帳票フォーム上で配送実行ボタンをクリックしたとする。すると、外部DB操作指示がキューイングされる(S2126)。次にS2127で、「更新指示:更新値・・・在庫数=200、条件・・・品目=カメラ」という指示が、ワークフローサーバ・DB2103に送信される。ここで、この指示の送信は、S2124のトランザクションロールバック後になされたものと仮定する。上記の指示により、ワークフローDB2103及び外部DB2104に対するトランザクションが開始される(S2128)。
次いで、図11〜図14を参照して説明したように、ワークフローサーバ2103のSQL生成部305が、上記指示に含まれる外部DB操作指示に対応するSQL文を生成する(S2129)。このSQL文には、データ更新に関するSQL文が含まれている。次いで、ワークフローサーバ2103のSQL発行部306が、外部DB2104に対して、データ更新に関するSQL文を発行する(S2130)。その結果、外部DB内のデータが更新され、S2130が終了した時点では、外部DBにおけるカメラの在庫数は、200個となる。次いで、S2131において、ワークフローサーバ・DB2103において、配送処理が実行される(すなわち、ワークフローDB2103のデータが更新される)。そして、ワークフローDB2103及び外部DB2104に対するトランザクションがコミットされ(S2132)、外部DB2104において、行ロックが解放されて、データ更新(カメラ在庫数=200)が確定する。最後に、S2133において、ワークフロークライアントA2101に、データの更新が成功した旨の通知がなされる。
従って、本実施例によれば、ワークフローシステムから外部DBにアクセスする際に、排他制御を実現することが可能となり、さらに、行ロックのユニットを設定する箇所を変更することで、排他制御のルールを柔軟に設定することが可能となる。
(その他の実施形態)
本発明に係る方法は、各種コンピュータ、通信装置等の各種周辺機器、及びコンピュータによって動作するソフトウェアプログラムによって実現可能である。このソフトウェアプログラムは、コンピュータ読み取り可能な記録媒体や通信回線を介して配布可能である。
以上説明したように、本発明によれば、排他制御及び更新チェック機能により、複数のクライアントから同一の外部データを操作した場合でも、重複更新を回避することが可能になる。また、操作対象のデータがワークフローシステム外にある場合でも、外部DBの構造を変更することなく、容易に重複更新を回避することが可能になる。
また、外部DB操作指示のキューイング開始時の外部データが、当該開始時と当該操作実行後とで同じ状態にあるかチェックできるので、複数のデータベースを対象にしている場合等、トランザクションスタックの問題である重複更新を回避することが可能になる。
また、ワークフローシステム側で定義した一連の処理を、キューイングに関するトランザクションの1単位とできるため、ワークフローシステム側の配送処理をトランザクションに含めて、重複更新を回避することが可能になる。
本発明を適用可能な例示的な一実施形態であるワークフローシステムを示す図である。 図1に示した各サーバ、クライアント、及びデータベースのハードウェア構成の一例を示すブロック図である。 図1に示したワークフローサーバ及びワークフローDBにおいて実現される機能構成の一例を示す図である。 図1に示したワークフロークライアントにおいて実現される機能構成の一例を示す図である。 本発明を適用可能な一実施形態に従ってワークフローを構築する場合の諸定義情報の一例を示す図である。 帳票設計クライアントを用いて、本発明を適用可能な一実施形態に従ってワークフローを構築する場合の、定義情報作成手順の一例を示す図である。 本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、ワークフローユーザ(ワークフロークライアント)のワークフロー利用手順の一例を示す図である。 図3に示した外部DB定義のデータ構造を示す図である。 図3に示したユニット定義のデータ構造を示す図であり、(a)は基本ユニット定義のデータ構造を示し、(b)は外部DB操作系ユニット定義のデータ構造を示す図である。 ワークフロークライアントにおいて用いられる、帳票フォームのイメージの一例を示す図である。 本発明を適用可能な例示的な一実施形態であるワークフローシステムにおいて、帳票取得から外部データ更新に至るまでの一連の処理手順に関する一例をフローチャートである。 図11に示した外部データの帳票への取込を行う処理の手順の一例を示すフローチャートである。 図11に示した、外部DB操作指示をキューに溜め込む処理の手順の一例を示すフローチャートである。 図11に示した、ワークローサーバ側で外部DB操作指示を処理する手順の一例を示すフローチャートである。 ワークフロークライアントからワークフローサーバへ渡される配送指示のデータ構造を示す図である。 外部DB操作指示のデータ構造の詳細を示す図である。 ワークフロークライアントにおいて、選択された外部DB操作指示を外部DB操作指示キューに溜める例を示す図である。 ワークフロークライアントにおいて、外部DB操作指示としての行ロック、行チェック、及び外部DB編集の各ユニットについて、帳票フォームにおけるデータを取得して外部DB操作指示キューに溜める際の具体例を示す図である。 行ロック指示及び行チェック指示のそれぞれについて、操作指示内容と生成されるSQL文との例示的な関係を示す図である。 行ロック機能及び行チェック機能を外部DB操作のトランザクションに組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示す図である。 行ロック機能を外部データ取得時に組み込んだ形態で本発明を実施したワークフローシステムにおける、当該システムの利用の一実施例を示す図である。
符号の説明
100 ワークフローシステム
101 外部システムサーバ
102 外部データベース(DB)
103 ネットワーク
104 ワークフローサーバ
105 ワークフローデータベース(DB)
106 ワークフロークライアント
107 帳票設計クライアント
108 ネットワーク
201 CPU
202 RAM
203 ROM
205 入力コントローラ
206 出力コントローラ
207 外部メモリコントローラ
208 通信インターフェース(I/F)コントローラ
209 入力部
210 出力部
211 外部メモリ
212 プログラム
301 入力処理部
302 帳票定義指定部
303 出力処理部
304 外部DB操作指示解析部
305 SQL生成部
306 SQL発行部
307 配送処理実行部
311 帳票定義
312 フォーム定義
313 ユニット定義
314 項目構成定義
315 外部DB定義
316 帳票データ
321 SQLキュー
401 入力処理部
402 帳票定義情報解析部
403 出力処理部
404 ユニット定義情報解析部
405 キュー生成部
406 要求発行部
411 帳票定義情報
412 ユニット定義情報
421 外部DB操作指示キュー

Claims (9)

  1. 外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えるサーバ・クライアント型のワークフローシステムにおける、前記ワークフローサーバであって、
    前記ワークフロークライアントから送信された、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示の内容を解析する外部DB操作指示解析部と、
    該外部DB操作指示解析部により解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するSQL生成部と、
    該SQL生成部により生成された前記SQL文を溜め込むSQLキューと、
    該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するSQL発行部であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するSQL発行部と、
    前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う配送処理実行部と
    を備えたことを特徴とするワークフローサーバ。
  2. 前記外部DBに対する前記SQL文の実行結果がSQLエラーであった場合、前記外部DBに対するトランザクションをロールバックするとともに、前記ワークフローDBに対するトランザクションもロールバックすることを特徴とする請求項1に記載のワークフローサーバ。
  3. 前記ワークフローDBに対するデータ処理が失敗した場合、前記ワークフローDBに対するトランザクションをロールバックするとともに、前記外部DBに対するトランザクションもロールバックすることを特徴とする請求項1に記載のワークフローサーバ。
  4. 外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムであって、
    前記ワークフロークライアントは、
    該ワークフロークライアントに入力された前記外部DBに対する操作命令の内容を解析するユニット定義情報解析部と、
    該ユニット定義情報解析部により解析された前記外部DBに対する前記操作命令から、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示のキューを生成するキュー生成部と、
    該キュー生成部により生成された前記外部DB操作指示のキューを溜め込む外部DB操作指示キューと、
    該外部DB操作指示キューに溜め込まれた前記外部DB操作指示の要求を、前記ワークフローサーバに対して発行する要求発行部と
    を備え、
    前記ワークフローサーバは、
    前記ワークフロークライアントの前記要求発行部から発行された、前記予め定められたフォーマットを有する外部DB操作指示の内容を解析する外部DB操作指示解析部と、
    該外部DB操作指示解析部により解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するSQL生成部と、
    該SQL生成部により生成された前記SQL文を溜め込むSQLキューと、
    該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するSQL発行部であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するSQL発行部と、
    前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う配送処理実行部と
    を備えたことを特徴とするワークフローシステム。
  5. 外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスする方法であって、
    前記ワークフローサーバの外部DB操作指示解析部が、前記ワークフロークライアントから送信された、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析するステップと、
    前記ワークフローサーバのSQL生成部が、前記解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するステップと、
    前記ワークフローサーバの前記SQL生成部が、前記生成されたSQL文をSQLキューに溜め込むステップと、
    前記ワークフローサーバのSQL発行部が、前記SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するステップであって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するステップと、
    前記外部DBに対する前記SQL文が実行されるとともに、前記ワークフローサーバの配送処理実行部が、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行うステップと
    を含むことを特徴とする方法。
  6. 外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスする方法であって、
    前記ワークフロークライアントのユニット定義情報解析部が、該ワークフロークライアントに入力された前記外部DBに対する操作命令の内容を解析するステップと、
    前記ワークフロークライアントのキュー生成部が、前記解析された前記外部DBに対する前記操作命令から、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を生成するステップと、
    前記ワークフロークライアントの前記キュー生成部が、前記生成された前記外部DB操作指示のキューを外部DB操作指示キューに溜め込むステップと、
    前記ワークフロークライアントの要求発行部が、前記外部DB操作指示キューに溜め込まれた前記外部DB操作指示の要求を、前記ワークフローサーバに対して発行するステップと、
    前記ワークフローサーバの外部DB操作指示解析部が、前記ワークフロークライアントの前記要求発行部から発行された、前記予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析するステップと、
    前記ワークフローサーバのSQL生成部が、前記解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成するステップと、
    前記ワークフローサーバの前記SQL生成部が、前記生成されたSQL文をSQLキューに溜め込むステップと、
    前記ワークフローサーバのSQL発行部が、前記SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行するステップであって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行するステップと、
    前記外部DBに対する前記SQL文が実行されるとともに、前記ワークフローサーバの配送処理実行部が、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行うステップと
    を含むことを特徴とする方法。
  7. 外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスするために、
    前記ワークフロークライアントから送信された、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析する手順と、
    該解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成する手順と、
    該生成されたSQL文をSQLキューに溜め込む手順と、
    該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行する手順であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行する手順と、
    前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う手順と
    を前記ワークフローサーバに実行させるためのプログラム。
  8. 外部データベース(DB)と連携可能な、少なくとも1つのワークフロークライアントと少なくとも1つのワークフローサーバと少なくとも1つのワークフローDBとを備えたサーバ・クライアント型のワークフローシステムにおいて、前記外部DB内のデータへアクセスするために、
    入力された前記外部DBに対する操作命令の内容を解析する手順と、
    該解析された前記外部DBに対する前記操作命令から、前記外部DBに対する、外部データを取得するための外部DB参照操作と、行チェック操作及び行ロック操作のうちの少なくとも一方と、外部DB編集操作とを含む、予め定められたフォーマットを有する外部DB操作指示を生成する手順と、
    該生成された前記外部DB操作指示のキューを外部DB操作指示キューに溜め込む手順と、
    前記外部DB操作指示キューに溜め込まれた前記外部DB操作指示の要求を、前記ワークフローサーバに対して発行する手順と
    を前記ワークフロークライアントに実行させ、
    前記発行された、前記予め定められたフォーマットを有する外部DB操作指示を受信して、該外部DB操作指示の内容を解析する手順と、
    該解析された前記外部DB操作指示の内容から、前記外部DBに対するSQL文を生成する手順と、
    該生成されたSQL文をSQLキューに溜め込む手順と、
    該SQLキューに溜め込まれた前記SQL文を前記外部DBに対して発行する手順であって、前記外部DB参照操作に対応するSQL文の発行により取得される結果である外部データを前記ワークフロークライアント上で表示させるために、前記行チェック操作、前記行ロック操作、及び前記外部DB編集操作に対応するSQL文の発行に先立って、前記外部DB参照操作に対応する前記SQL文を発行する手順と、
    前記外部DBに対する前記SQL文が実行されるとともに、ワークフローの配送処理を行って、前記ワークフローDBに対してデータ処理を行う手順と
    を前記ワークフローサーバに実行させるためのプログラム。
  9. 請求項7又は8に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2008102939A 2008-04-10 2008-04-10 ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体 Expired - Fee Related JP5357443B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008102939A JP5357443B2 (ja) 2008-04-10 2008-04-10 ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008102939A JP5357443B2 (ja) 2008-04-10 2008-04-10 ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体

Publications (3)

Publication Number Publication Date
JP2009252189A true JP2009252189A (ja) 2009-10-29
JP2009252189A5 JP2009252189A5 (ja) 2011-08-25
JP5357443B2 JP5357443B2 (ja) 2013-12-04

Family

ID=41312785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008102939A Expired - Fee Related JP5357443B2 (ja) 2008-04-10 2008-04-10 ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP5357443B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414762A (zh) * 2013-07-23 2013-11-27 中国联合网络通信集团有限公司 云备份方法和装置
JP2015225561A (ja) * 2014-05-29 2015-12-14 株式会社日立製作所 申請データの有効性確認方法およびプログラム
US10885016B2 (en) 2016-09-06 2021-01-05 Kabushiki Kaisha Toshiba System, client device, server device, and program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08153068A (ja) * 1994-11-28 1996-06-11 Toshiba Corp ワークフローシステム
JP2000348111A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体
JP2002278760A (ja) * 2001-03-22 2002-09-27 Nec System Technologies Ltd 電子帳票プログラム作成システム、電子帳票プログラム作成方法、および、電子帳票プログラム作成プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08153068A (ja) * 1994-11-28 1996-06-11 Toshiba Corp ワークフローシステム
JP2000348111A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体
JP2002278760A (ja) * 2001-03-22 2002-09-27 Nec System Technologies Ltd 電子帳票プログラム作成システム、電子帳票プログラム作成方法、および、電子帳票プログラム作成プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND199700840001; 木村博文: 'SQLデータベースはじめの一歩 Part1 データベース基礎概論' Inside Windows 第4巻 第1号, 19980101, pp.17〜31, ソフトバンク株式会社 *
JPN6012061177; 木村博文: 'SQLデータベースはじめの一歩 Part1 データベース基礎概論' Inside Windows 第4巻 第1号, 19980101, pp.17〜31, ソフトバンク株式会社 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414762A (zh) * 2013-07-23 2013-11-27 中国联合网络通信集团有限公司 云备份方法和装置
JP2015225561A (ja) * 2014-05-29 2015-12-14 株式会社日立製作所 申請データの有効性確認方法およびプログラム
US10885016B2 (en) 2016-09-06 2021-01-05 Kabushiki Kaisha Toshiba System, client device, server device, and program

Also Published As

Publication number Publication date
JP5357443B2 (ja) 2013-12-04

Similar Documents

Publication Publication Date Title
Hicks Hacking the Cis-tem
US8150746B2 (en) Global account reconciliation tool
US8831967B2 (en) Workflow management using a to-do list
TW200813867A (en) Customer-configurable workflow system
JP5452030B2 (ja) 統合ログ生成装置及び統合ログ生成プログラム及び記録媒体
US10089313B2 (en) Conversion of data integration system files
WO2016060547A1 (en) Emulating manual system of filing using electronic document and electronic file
US20170228356A1 (en) System Generator Module for Electronic Document and Electronic File
JP5357443B2 (ja) ワークフローサーバ、ワークフローシステム、ワークフローシステムにおいて外部データへアクセスする方法及びそのプログラム、並びにそのプログラムを記録した記録媒体
CN111026758B (zh) 电子券发放方法和装置
US20170235757A1 (en) Electronic processing system for electronic document and electronic file
EP2343658A1 (en) Federation as a process
JP2011215924A (ja) 分散処理装置、分散処理プログラムおよび分散処理方法
CN103348316A (zh) 访问权限管理系统和方法
US20080235066A1 (en) Task management device, task management method, and task management program
CN110930105A (zh) 任务清单的处理方法、装置、计算机设备和存储介质
JP5637501B2 (ja) 文書管理システム、及び文書管理方法
JP6098685B2 (ja) ワークフローシステム、ワークフローシステムの制御方法およびプログラム、ワークフローサーバ、ワークフローサーバの制御方法およびプログラム
WO2014151017A1 (en) Method of taking a computer architecture representation and generating manufaturing method capable of manufacturing computer systems in a specification
JP6402537B2 (ja) 更新処理プログラム、装置、及び方法
JP5888679B2 (ja) 情報処理システム、その制御方法、及びプログラム
JP2007108845A (ja) 知的財産管理システム、トリガー処理方法およびプログラム
CN111400279A (zh) 数据操作方法、装置和计算机可读存储介质
Xue et al. Locking without requesting a lock: A consistency maintenance mechanism in Internet-based real-time group editors
TW201237779A (en) Method of generalized electronic verification process

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110708

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130711

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130830

R150 Certificate of patent or registration of utility model

Ref document number: 5357443

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees