JP2010134574A - ビジネスプロセス定義変更方法及びその実施システムとプログラム - Google Patents
ビジネスプロセス定義変更方法及びその実施システムとプログラム Download PDFInfo
- Publication number
- JP2010134574A JP2010134574A JP2008308179A JP2008308179A JP2010134574A JP 2010134574 A JP2010134574 A JP 2010134574A JP 2008308179 A JP2008308179 A JP 2008308179A JP 2008308179 A JP2008308179 A JP 2008308179A JP 2010134574 A JP2010134574 A JP 2010134574A
- Authority
- JP
- Japan
- Prior art keywords
- business process
- definition
- message
- process definition
- change
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】
オペレーションの電文構造の変更を含むビジネスプロセスの動的な定義変更を行うと、ビジネスプロセスから非同期呼び出ししたサービスがビジネスプロセスをコールバックすることができなくなり、ビジネスプロセスの実行が停止する。
【解決手段】
電文構造定義の差分情報から、サービスが送信する電文をビジネスプロセスのオペレーションが要求する電文の構造に変換する手順を生成する。電文受信時は、前述の電文変換手順により電文の構造を変換してから処理する。
【選択図】 図1
オペレーションの電文構造の変更を含むビジネスプロセスの動的な定義変更を行うと、ビジネスプロセスから非同期呼び出ししたサービスがビジネスプロセスをコールバックすることができなくなり、ビジネスプロセスの実行が停止する。
【解決手段】
電文構造定義の差分情報から、サービスが送信する電文をビジネスプロセスのオペレーションが要求する電文の構造に変換する手順を生成する。電文受信時は、前述の電文変換手順により電文の構造を変換してから処理する。
【選択図】 図1
Description
本発明はビジネスプロセスの動的な定義変更を行う技術に関する。
電子化された申請書等を予め決められた作業手順に従って集配信し、決裁等の業務処理を遂行するワークフローシステムがある。これまで、ワークフローシステムは作業手順に従って人と人のワークフローを管理する、ヒューマン型ワークフローが主流であった。しかし、近年、インターネットやイントラネットの技術向上に伴って業務の情報システム化が進み、情報システムを連携させて業務処理を遂行するシステム型ワークフローに注目が集まっている。
情報システム連携の技術として、WS−BPEL(例えば非特許文献1参照)等のビジネスプロセス技術仕様が提案されている。ビジネスプロセス技術仕様では、どの情報システム(WS−BPELではサービスと呼ぶ)をどのような順序で連携するか(ビジネスプロセス)を定義する。
ワークフローシステムの利用にあたっては、ビジネス環境等の変化に柔軟に対応できることが求められる。例えば、企業の合併・統合や法律改正等によって業務手順の一部が変わると、ワークフローシステムの修正が必要になるためである。
ワークフローシステムの業務手順を変更するには、2つの方法がある。
1つは、実行中のワークフロー案件を停止した後、業務手順を変更した新しいワークフロー定義をワークフローシステムに配備し直し、再度、ワークフロー案件を投入する方法である。この方法は、ワークフロー案件を1からやり直す必要があるため、業務手順の入れ替えコストが大きい。また、利用者の多いワークフローシステムでは、実行中のワークフロー案件を停止する間に次のワークフロー案件が投入される可能性があり、業務手順を入れ替える機会の確保が難しい。
1つは、実行中のワークフロー案件を停止した後、業務手順を変更した新しいワークフロー定義をワークフローシステムに配備し直し、再度、ワークフロー案件を投入する方法である。この方法は、ワークフロー案件を1からやり直す必要があるため、業務手順の入れ替えコストが大きい。また、利用者の多いワークフローシステムでは、実行中のワークフロー案件を停止する間に次のワークフロー案件が投入される可能性があり、業務手順を入れ替える機会の確保が難しい。
このような問題を解決するために、ワークフローシステムを多重構成にし、系切り替え装置(又はそれに相当する機能を持った装置)を用いてシステムを一部づつ更新する方法(例えば、非特許文献2参照)がある。しかし、既に実行中のワークフロー案件は古い業務手順のまま処理されるため、環境の変化に柔軟に対応できないという課題が残る。
もう1つは、ワークフロー案件の実行中に業務手順を動的に変更する方法である。例えば、非特許文献3では、ヒューマン型ワークフローシステムにおいて、システムが提供する専用機能を使って実行中のワークフロー案件の業務手順を動的に変更する方法が示されている。この方法は実行中のワークフロー案件を中断する必要がなく、また、ワークフロー案件が実行中であっても最新の業務手順で処理を継続するため、環境の変化に柔軟に対応することができる。
Diane Jordan, John Evdemon、OASIS Web Services Business Process Execution Language Version 2.0、[online]、2007年4月11日、OASIS Web Services Business Process Execution Language(WSBPEL)TC、[2008年10月28日検索]、インターネット<URL:http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html>
樫山友一、連載:サーバサイドJava初心者のためのWebシステム入門 最終回 J2EEサーバの運用で手を抜かないために、[online]、2002年12月3日、アイティメディア株式会社、[2008年10月28日検索]、インターネット<URL:http://www.atmarkit.co.jp/fjava/rensai2/websys11/websys11.html>
(株)日立システムアンドサービス、Baristaビジネスコンポーネント/Workflowの特徴、[online]、2002年12月3日、(株)日立システムアンドサービス、[2008年10月28日検索]、インターネット<http://www.hitachi-system.co.jp/barista/sp/component/g-tokucho.html, http://www.hitachi-system.co.jp/barista/sp/component/wf/13.html>
Business Process Modeling Notation, V1.1、[online]、2008年1月、Object Management Group, Inc.、[2008年10月28日検索]、インターネット<URL:http://www.bpmn.org/Documents/BPMN%201-1%20Specification.pdf>
Nilo Mitra, Yves Lafon、SOAP Version 1.2 Part 0: Primer (Second Edition)、[online]、2007年4月27日、W3C(MIT, ERCIM, Keio)、[2008年10月28日検索]、インターネット<URL:http://www.w3.org/TR/soap12-part0/>
David C. Fallside, Priscilla Walmsley、XML Schema Part 0: Primer Second Edition、[online]、2004年10月28日、W3C(MIT, ERCIM, Keio)、[2008年10月28日検索]、インターネット<URL:http://www.w3.org/TR/xmlschema-0/>
James Clark, Steve DeRose、XML Path Language(XPath) Version 1.0、[online]、1999年11月16日、W3C(MIT, INRIA, Keio)、[2008年10月28日検索]、インターネット<URL:http://www.w3.org/TR/xpath>
James Clark、XSL Transformations(XSLT) Version 1.0、[online]、1999年11月16日、W3C(MIT, INRIA, Keio)、[2008年10月28日検索]、インターネット<URL:http://www.w3.org/TR/xslt.html>
前記のように非特許文献3のような手法を使うことでシステム型ワークフローにおいても動的に業務手順を変更することができる。しかし、システム型ワークフローでは、ワークフローシステムと情報システムの間で電子的に情報(WS−BPELでは電文と呼ぶ)を交換するため、変更によってビジネスプロセスのインタフェースが変わらないように保証しなければならない制約がある。
具体例を示す。図16は業務手順を変更する前のビジネスプロセスである。ビジネスプロセス81は、ビジネスプロセスの業務手順をBPMN(Business Process Modeling Notation)(非特許文献4参照)で表記したものである。
ビジネスプロセス81は、開始アクティビティ811〜817と業務手順に沿ってアクティビティを連結したコネクション818から構成される。各アクティビティの種別はアクティビティ一覧84の通りである。アクティビティ一覧84は、番号列841とアクティビティ種別列8421から構成される。番号列841は、各アクティビティに振られた番号を表し、アクティビティ種別列8421はそのアクティビティの種類を表す。
アクティビティ811は開始アクティビティで、ビジネスプロセスの開始を表す。アクティビティ812は受付アクティビティで、ビジネスプロセスを利用するリクエスタからの要求を受信する。アクティビティ813はサービス呼び出しアクティビティで、業務処理を行うためにサービス83が提供する機能(WS−BPELではサービスのオペレーションと呼ぶ)を呼び出す。サービスの呼び出しは、サービスアダプタ82を介して行う。例えば、サービス83がWebサービスの場合、サービスアダプタ82はビジネスプロセス81が送信する電文をSOAPメッセージ(非特許文献5参照)に変換し、サービス83に送信する。図16では、アクティビティ813は非同期通信でサービス83を呼び出すようになっており、サービス83の処理結果は、サービス83からビジネスプロセス81のオペレーションを呼び戻す(コールバックする)ことでビジネスプロセス81に返却する。アクティビティ814は、サービス83の処理中に並行実行する任意のアクティビティである。サービスの処理に時間がかかる場合、このようにサービスを非同期で呼び出し、その間にビジネスプロセスで並行して業務手順を進める方法がしばしば採用される。アクティビティ815はサービス83からのコールバックを受け取る受付アクティビティである。アクティビティ816は応答アクティビティで、ビジネスプロセスの処理結果をリクエスタに応答する。アクティビティ817は終了アクティビティで、ビジネスプロセスの終了を意味する。
アクティビティ815(受付アクティビティ)のオペレーションの電文構造を図17に示す。電文構造定義8151は、オペレーションが要求する電文の構造を定義したファイルである。一般的には、XMLスキーマ定義(非特許文献6参照)等が用いられる。電文構造定義8151は、電文の構造とその型を定義した要素81511〜81514で構成される。要素81511は、電文のルート要素を表す。要素81512は、ルート要素の直下にchild1という名称でString型(文字列型)の子要素があることを表している。要素81513は、ルート要素の直下にchild2という名称でString型の子要素があることを表している。要素81514は、ルート要素の直下にchild3という名称でnumeric型(数値型)の子要素があることを表している。
図18は業務手順を変更した後のビジネスプロセスである。ビジネスプロセス85は、アクティビティ851〜858と業務手順に沿ってアクティビティを連結したコネクション859から構成される。各アクティビティの種別はアクティビティ一覧88の通りである。ビジネスプロセス85は、ビジネスプロセス81に対し変更範囲850で示した部分に変更を行ったものである。すなわち、アクティビティ851〜854、856〜857はそれぞれアクティビティ811〜814、816〜817と同一であり、また、サービスアダプタ86とサービスアダプタ82、サービス87とサービス83も同一である。アクティビティ855はサービス87からのコールバックを受け取る受付アクティビティである。ビジネスプロセス85では、後続の業務手順を変更した影響で、図19に示すように電文構造の変更が行われている。アクティビティ858は、ビジネス環境の変更に合わせて追加された任意のアクティビティである。
アクティビティ855(受付アクティビティ)のオペレーションの電文構造を図19に示す。電文構造定義8551は、オペレーションが要求する電文の構造を定義したファイルである。電文構造定義8551は、電文の構造とその型を定義した要素85511〜85514で構成される。電文構造定義8551は、電文構造定義8151に対し変更範囲85510で示した部分に変更を行ったものである。すなわち、要素85511、85512、85514はそれぞれ要素81511、81512、81514と同一である。ルート要素85511直下の要素85513は、String型の要素からnumeric型の要素に変更が行われている。
このようなビジネスプロセス定義の動的な変更を行った場合、サービスからのコールバックを受け取るアクティビティ855で通信エラーが発生する。サービス87は電文構造定義8151に定義された形式でアクティビティ855のオペレーションを呼び出すのに対し、アクティビティ855は電文構造定義8551に定義された形式でなければ電文を受け取ることができないためである。この結果、ビジネスプロセス85はアクティビティ855よりも先を実行することができず、業務処理が停止することになる。
本発明では、電文構造定義の差分情報から、サービスが送信する電文をビジネスプロセスのオペレーションが要求する電文の構造に変換する手順を生成する。電文受信時は、前述の電文変換手順により電文の構造を変換してから処理する。
すなわち本発明の計算機システムでは、オペレーションの電文構造の変更を含むビジネスプロセスの定義変更を要求するビジネスプロセス配備リクエストを受信すると、そのビジネスプロセス配備リクエストから新しいビジネスプロセス定義を取得し、変更前のビジネスプロセス定義に含まれている電文構造と前記取得した新しいビジネスプロセス定義に含まれている電文構造の差から電文の変換手順書を作成して記憶装置へ格納しておく。
そして本発明の計算機システムは、ビジネスプロセス実行部に対し、ビジネスプロセスインスタンスの実行を一旦停止するように指示し、前記取得した新しいビジネスプロセス定義を、実行に用いるビジネスプロセス定義と入れ替えた後、前記ビジネスプロセス実行部に対し、ビジネスプロセスの実行再開を指示する。
次に本発明の計算機システムでは、ビジネスプロセスの実行の際に、前記電文の変換手順書を用いて変更前のビジネスプロセス定義の電文構造を変更後のビジネスプロセス定義の電文構造に変換して記憶装置へ格納し、その変換した電文を以後のビジネスプロセスの処理に用いるようにする。
本発明により、オペレーションの電文構造の変更を含むビジネスプロセスの動的な定義変更が可能になる。
以下、本発明を適用する実施形態を添付図面に基づいて説明する。
図1は、本発明の実施形態を適用する計算機システムを示す構成図である。
本システムは、リクエスタ1、ビジネスプロセス開発基盤2、ビジネスプロセス実行基盤3、同期通信を行うサービス(同期通信)41、非同期通信を行うサービス(非同期通信)42から構成され、それぞれネットワークで接続されている。本実施形態の実施に際して、リクエスタやサービスの個数は任意である。以降、ビジネスプロセス技術仕様としてWS−BPEL及びその関連技術仕様を使用するが、本発明はこれに限定されるものではない。
図1は、本発明の実施形態を適用する計算機システムを示す構成図である。
本システムは、リクエスタ1、ビジネスプロセス開発基盤2、ビジネスプロセス実行基盤3、同期通信を行うサービス(同期通信)41、非同期通信を行うサービス(非同期通信)42から構成され、それぞれネットワークで接続されている。本実施形態の実施に際して、リクエスタやサービスの個数は任意である。以降、ビジネスプロセス技術仕様としてWS−BPEL及びその関連技術仕様を使用するが、本発明はこれに限定されるものではない。
また本実施形態において、コンピュータを図1の各処理部として機能させる為のプログラムは、CD−ROM等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はCD−ROM以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
リクエスタ1は、CPU11、メモリ12、通信インタフェース13、通信プログラム14から構成される。
リクエスタ1の通信プログラム14は、ビジネスプロセス実行リクエストをビジネスプロセス実行基盤3に送信する。ビジネスプロセス実行リクエストには、実行を要求するビジネスプロセスやそのオペレーションの名前、オペレーションに渡す電文等が含まれる。リクエストは通信インタフェース13を介してネットワーク上を流れ、通信インタフェース33を介して要求受付部35に到着する。
リクエスタ1の通信プログラム14は、ビジネスプロセス実行リクエストをビジネスプロセス実行基盤3に送信する。ビジネスプロセス実行リクエストには、実行を要求するビジネスプロセスやそのオペレーションの名前、オペレーションに渡す電文等が含まれる。リクエストは通信インタフェース13を介してネットワーク上を流れ、通信インタフェース33を介して要求受付部35に到着する。
ビジネスプロセス開発基盤2は、CPU21、メモリ22、通信インタフェース23、ビジネスプロセス編集部24、データベース25から構成される。
データベース25は、ビジネスプロセス定義情報251から構成される。
ビジネスプロセス開発基盤2では、ビジネスプロセス編集部24においてビジネスプロセス定義を作成する。作成したビジネスプロセス定義は、ビジネスプロセス定義情報251に格納される。ビジネスプロセス定義の作成が終わると、ビジネスプロセス編集部24はビジネスプロセス定義情報251からビジネスプロセス定義を取り出し、ビジネスプロセス実行基盤3にビジネスプロセス配備リクエストを送信する。ビジネスプロセス配備リクエストには、ビジネスプロセス定義情報等が含まれる。当該リクエストは通信インタフェース23を介してネットワーク上を流れ、通信インタフェース33を介して配備受付部34に到着する。
データベース25は、ビジネスプロセス定義情報251から構成される。
ビジネスプロセス開発基盤2では、ビジネスプロセス編集部24においてビジネスプロセス定義を作成する。作成したビジネスプロセス定義は、ビジネスプロセス定義情報251に格納される。ビジネスプロセス定義の作成が終わると、ビジネスプロセス編集部24はビジネスプロセス定義情報251からビジネスプロセス定義を取り出し、ビジネスプロセス実行基盤3にビジネスプロセス配備リクエストを送信する。ビジネスプロセス配備リクエストには、ビジネスプロセス定義情報等が含まれる。当該リクエストは通信インタフェース23を介してネットワーク上を流れ、通信インタフェース33を介して配備受付部34に到着する。
ビジネスプロセス実行基盤3は、CPU31、メモリ32、通信インタフェース33、配備受付部34、要求受付部35、ビジネスプロセス定義情報GC部36、ビジネスプロセス実行部37、アダプタ実行部38、データベース39から構成される。
配備受付部34は、ビジネスプロセス開発基盤2から送信されたビジネスプロセス配備リクエストを受信する。ビジネスプロセス配備リクエストを受信すると、配備受付部34は図11に示す処理を行う。
まず、ビジネスプロセス定義情報391にビジネスプロセス配備リクエストから取得した新しいビジネスプロセス定義を登録する。このとき、ビジネスプロセス管理IDには、ビジネスプロセス実行基盤3の内部でユニークなIDを割り振る。なお、後続のステップ210でビジネスプロセス配備処理が中断になる可能性があるため、この時点では受付ステータス列3914は受付停止にする(ステップ201)。
次に、ビジネスプロセスインスタンス情報396から、既に同じ名前のビジネスプロセスのインスタンスが実行中でないかを確認する(ステップ202、203)。同じ名前のビジネスプロセスインスタンスが実行中の場合、それらのビジネスプロセス定義の動的な変更が必要になる可能性があるため、以下に示すステップ204〜219の処理を行う。
はじめに、同じビジネスプロセス名を持った既存のビジネスプロセス定義について、インスタンスを生成しない受付アクティビティ(オペレーション)を取得し、これらの全てについて以下の処理を行う(ステップ204、205)。ステップ204の処理は、図7のオペレーション情報394から行っても良いし、ビジネスプロセス定義情報391に登録されたBPELファイルを解析しても良い。
まず、受付アクティビティの電文の構造が変化していないかを調べる(ステップ206)。変化している場合には、サービスから電文構造の変更を隠蔽する必要がある。そこで、次の処理を行う(ステップ207)。
まず、新しいビジネスプロセス定義の相関セット値の計算に、新しく電文構造に追加された要素が使われていないかを調べる。追加した要素が相関セット値の計算に使用されている場合、電文構造を動的に変換しても相関セット値を正しく求めることができず、システムが正常に動作しないためである。この場合、ビジネスプロセス定義情報391からステップ201で登録したビジネスプロセス定義を削除し、また、ビジネスプロセス開発基盤2にエラーを応答し、以降の処理を中断する(ステップ208、209、210)。このケースでは、システムの管理者は動的なビジネスプロセス定義の変更ではなく、静的なビジネスプロセス定義の変更を使用する。
次に、受付アクティビティの古い電文の構造と新しい電文の構造の差から、電文の変換手順書を作成し、電文変換情報398にオペレーション名、旧電文構造、新電文構造を登録する(ステップ211、212)。電文の変換手順書としては、例えば、XMLデータの変換を行うXSL Transformations(非特許文献8参照)を使用することが考えられる。また、ビジネスプロセス実行基盤3が解釈可能な独自のXML操作スクリプトとして実現することもできる。
以上の処理が終わると、次は、ステップ202で確認した全てのビジネスプロセスインスタンスについて、次の処理を行う(ステップ213)。
まず、ビジネスプロセス定義の変更が可能か検証を行う(ステップ214、215)。検証の内容はビジネスプロセス実行基盤3の実現方法に依存するが、例えば、ビジネスプロセスのロールバック処理等を考慮して、既に実行されたアクティビティに対する定義変更がないかを確認すること等が考えられる。もし、ステップ214の検証の結果、ビジネスプロセスの動的な定義変更が不可能と判断された場合には、当該ビジネスプロセスインスタンスを生成したリクエスタにエラーを応答し、ビジネスプロセス案件を再投入するように促すこと等が考えられる(ステップ219)。また別の処理方法として、起案中のビジネスプロセスを完了させることを優先し、古いビジネスプロセス定義のまま動作を継続することも考えられる。
ステップ214の検証で問題が見つからなかった場合には、ビジネスプロセス実行部37に対し、当該ビジネスプロセスインスタンスの実行を一旦停止するように指示し(ステップ216)、ビジネスプロセス定義を入れ替えた後、ビジネスプロセスの実行を再開する(ステップ217、218)。
以上の処理により、ビジネスプロセス定義の動的な変更が完了した。そこで、ステップ201で登録したビジネスプロセス定義の受付ステータスを受付開始に変更し(ステップ220)。最後に、ビジネスプロセス定義の受付アクティビティ情報からオペレーション名、インスタンス生成フラグ、使用相関セット等のオペレーション情報を取得し、オペレーション情報394に登録する(ステップ221)。
要求受付部35は、リクエスタ1からのビジネスプロセス実行リクエストを受信する。リクエストを受信すると、要求受付部35は図2に示す処理を行う。
まず、ビジネスプロセス実行リクエストを解析し、実行を要求されたビジネスプロセスとオペレーションの名前、オペレーションに渡す電文を取得する(ステップ101)。
次に、オペレーション情報394に、当該ビジネスプロセスとオペレーションが登録されているかを調べる(ステップ102、103)。オペレーション情報394を調べるにはビジネスプロセス管理IDが必要になるが、これは、ビジネスプロセス定義情報391から取得可能である。このようなデータの結合(JOIN)操作は一般的なデータベース処理であるため、以降、説明を省略する。
オペレーション情報394にビジネスプロセス及びオペレーションがない場合には不正なリクエストであるため、リクエスタ1にエラーを応答し、処理を終了する(ステップ123)。
オペレーション情報394にビジネスプロセス定義及びオペレーションがある場合には、まず、ビジネスプロセス定義情報391から当該ビジネスプロセスの受付ステータス列3914が受付開始になっているかを調べる(ステップ104)。受付ステータス列3914が受付停止の場合にはビジネスプロセスを呼び出すことができない状態のため、呼び出し元のリクエスタ1にエラーを応答する(ステップ105、106)。
次に、電文変換情報398に電文変換手順が登録されていないかを確認する(ステップ107)。これは、オペレーション名と電文の構造がそれぞれオペレーション名列3982と旧電文構造列3983に合致しないかを確認することで行う。電文変換手順が登録されている場合には、電文に対して電文変換手順列3985を実行し、以降は変換後の電文を使用する(ステップ108、109)。
次に、オペレーション情報394からビジネスプロセス実行リクエストに含まれていた電文の構造が妥当であるかを調べる。(ステップ110、111)。
電文の構造が妥当でない場合には不正なリクエストであるため、リクエスタ1にエラーを応答し、処理を終了する(ステップ122)。
電文の構造が妥当な場合には、オペレーション情報394から当該オペレーションを呼び出す際にビジネスプロセスインスタンスを生成する必要があるかを調べる(ステップ112、113)。
ビジネスプロセスインスタンスを生成する場合、ビジネスプロセス定義情報391から更新日時が最も新しい当該ビジネスプロセス定義を取得する(ステップ114)。そして、ビジネスプロセス実行部37に、取得したビジネスプロセス定義のビジネスプロセスインスタンスを生成するように指示する(ステップ115)。ビジネスプロセスインスタンスの生成が終わると、ビジネスプロセス実行部37は生成したビジネスプロセスインスタンスのインスタンスIDを要求受付部35に返す。そして、要求受付部35はこのインスタンスIDを使って生成したビジネスプロセスインスタンスの当該オペレーションを呼び出す(ステップ116)。図7の例では、行39401や行39404のオペレーションがこの場合に当たる。
ビジネスプロセスインスタンスを生成しない場合には、既存のビジネスプロセスインスタンスのオペレーションを呼び出す必要がある。そこで、要求受付部35は、オペレーション情報394のインスタンス判別相関セット名列3944と、相関セット情報395の相関セット算出式列3953を元に、ビジネスプロセス実行リクエストに含まれる電文から相関セット値を計算する(ステップ117)。次に、相関セット・プロセス対応情報393の当該ビジネスプロセスの相関セット値列3933から、計算した相関セット値と同じ相関セット値を持つビジネスプロセスインスタンスがないかを調査する(ステップ118、119)。
ビジネスプロセスインスタンスの特定に成功した場合、要求受付部35は相関セット・プロセス対応情報393からビジネスプロセスのインスタンスIDを取得し、このビジネスプロセスインスタンスの当該オペレーションを呼び出す(ステップ120)。図7の例では、行39402、39403、39405のオペレーションがこの場合に当たる。
データベース39の相関セット・プロセス対応情報393に同じ相関セット値を持つビジネスプロセスインスタンスがない場合には、不正なビジネスプロセス実行リクエストであるため、リクエスタ1にエラーを応答する(ステップ121)。
ビジネスプロセス実行部37は、複数のビジネスプロセスインスタンス371から構成される。各ビジネスプロセスインスタンスはそれぞれ異なるビジネスプロセス定義を参照する場合もあれば、複数のプロセスインスタンスが同じビジネスプロセス定義を参照する場合もある。このあと説明するように、図1〜図9はビジネスプロセスインスタンス3つのうち、2つが同じビジネスプロセス定義(図5のビジネスプロセス1)から生成され、残りの1つは別のビジネスプロセス定義(図5のビジネスプロセス2)から生成された場合のものである。複数のプロセスインスタンスが同じビジネスプロセス定義を参照する場合には、前述の相関セット値によって1つのビジネスプロセスインスタンスが特定される。
図3は、ビジネスプロセスインスタンス371の詳細な構成図である。ビジネスプロセスインスタンス371は、ビジネスプロセス定義3711とビジネスプロセス実行プログラム3712、インスタンスID3713から構成される。ビジネスプロセス実行プログラムは、例えば、WS−BPELのインタプリタである。
ビジネスプロセス実行部37は、要求受付部35からの指示によりビジネスプロセスインスタンスを生成・実行する役割を持つ(図2のステップ115参照)。
図4は、要求受付部35がビジネスプロセス実行部37にビジネスプロセスインスタンス生成を要求したときのビジネスプロセス実行部37の処理を示したものである。
まず、ビジネスプロセス定義情報391からビジネスプロセス定義3711を取得する(ステップ401)。次に、ビジネスプロセス定義3711を処理するビジネスプロセス実行プログラム3712を起動する(ステップ402)。最後に、ビジネスプロセス実行基盤3の内部においてユニークなインスタンスID3713を設定する(ステップ403)。
ビジネスプロセス実行部37は、ビジネスプロセスインスタンスの破棄も行う。これは、ビジネスプロセス定義3711の実行を終えたものがないが、ビジネスプロセスインスタンス371の実行状態を定期的に監視することで実現する。
アダプタ実行部38は、複数のサービスアダプタから構成される。図1は、サービス(同期通信)41用のサービスアダプタ381とサービス(非同期通信)42用のサービスアダプタ382の2つが配備された状態である。
アダプタ実行部38は、ビジネスプロセスインスタンス371からネットワーク上に配備されたサービスを呼び出す際に使用する。ビジネスプロセスインスタンス371からサービスを呼び出す場合、まず、対応するサービスアダプタにサービス呼び出しリクエストを送信する。サービス呼び出しリクエストには、呼び出すオペレーションの名前やオペレーションに渡す電文等が含まれる。次に、サービスアダプタは受信したサービス呼び出しリクエストをサービスが処理可能なリクエストに変換する。そして、変換後のリクエストを通信インタフェース33経由でネットワーク上のサービスに転送する。ビジネスプロセスインスタンスとサービスが同期通信を行う場合、サービスアダプタはサービスからの応答をリクエスト送信元のビジネスプロセスインスタンスに転送する必要がある。そのため、同期通信を行う場合にはビジネスプロセスとサービスの対にセッションIDを割り振り、セッション・プロセス対応情報397に格納する。サービスから応答メッセージが返ってくると、サービスアダプタは応答メッセージからセッションIDと応答電文を取得する。そして、電文をビジネスプロセスが処理可能な電文に変換し、セッション・プロセス対応情報397を元に、リクエスト送信元のビジネスプロセスに変換後の電文を転送する。
ビジネスプロセス定義情報GC部36は、ビジネスプロセス定義情報391から使用されなくなったビジネスプロセス定義を取り除く。使用されなくなったビジネスプロセス定義とは、そのビジネスプロセス定義から生成されたビジネスプロセスインスタンスが0個の状態で、かつ、ビジネスプロセス名が同じでより更新日時の新しいビジネスプロセス定義がある場合である。条件の前者を満たさない場合には、ビジネスプロセスインスタンスでエラーが発生した場合のロールバック処理や、ビジネスプロセス実行基盤3を再起動した場合のビジネスプロセスインスタンス復元処理等にビジネスプロセス定義を使用する可能性があるため、ビジネスプロセス定義を取り除かない。また、条件の後者を満たさない場合には、単に、ビジネスプロセス実行リクエストがまだ到着していないだけの可能性があるため、ビジネスプロセス定義を取り除かない。使用されなくなったビジネスプロセス定義の検出は、例えば、定期的にビジネスプロセス定義情報391とビジネスプロセスインスタンス情報396を調査し、上記条件に該当するビジネスプロセス定義が存在しないかを確認することで行う。
データベース39は、ビジネスプロセス定義情報391、ビジネスプロセス実行情報392、相関セット・プロセス対応情報393、オペレーション情報394、相関セット情報395、ビジネスプロセスインスタンス情報396、セッション・プロセス対応情報397、電文変換情報398から構成される。
ビジネスプロセス定義情報391は、ビジネスプロセス定義を格納する。ビジネスプロセス定義情報391を図5に示す。ビジネスプロセス定義情報391は、ビジネスプロセス管理列ID3911、ビジネスプロセス名列3912、ビジネスプロセス定義列3913、受付ステータス列3914、登録日時列3915から構成される。
ビジネスプロセス管理列ID3911は、各ビジネスプロセス定義に付けられたユニークな識別番号で、ビジネスプロセス実行基盤に配備されたビジネスプロセス定義を特定するために使用する。ビジネスプロセス名列3912は、ビジネスプロセス定義に付けられた名前である。ビジネスプロセス名列3912は、要求受付部35がビジネスプロセスインスタンスを生成する場合等に参照される。ビジネスプロセス定義列3913は、ビジネスプロセス開発基盤2から配備したビジネスプロセス定義(例えば、WS−BPELファイル等)である。受付ステータス列3914は、ビジネスプロセス定義に対する要求を受け付けるか否かを決定するステータスフラグである。受付ステータス列3914が受付開始の場合にはビジネスプロセスを呼び出すリクエストを受け付け、受付停止の場合には呼び出し元にエラーを応答する。登録日時列3915は、ビジネスプロセス定義をビジネスプロセス実行基盤3に配備した日時である。
ビジネスプロセス実行情報392は、ビジネスプロセスインスタンス371が実行時情報を保存するために使用するデータ領域である。実行時情報としてビジネスプロセスで使用する変数等があるが、本発明の実施には関係しない部分であるため、詳細な説明は行わない。
相関セット・プロセス対応情報393は、同じビジネスプロセス定義から生成された複数のビジネスプロセスインスタンスがあるときに、1つのビジネスプロセスインスタンスを特定するために使用するデータ領域である。相関セット・プロセス対応情報393を図6に示す。
インスタンスID列3931は、ビジネスプロセス実行部37で動作しているビジネスプロセスインスタンスのインスタンスIDの一覧である。相関セット名列3932は、各ビジネスプロセスインスタンスが使用する相関セットの一覧である。例えば、インスタンスIDが「1」のビジネスプロセスインスタンスは、名前が相関セットAと相関セットBの2つの相関セットを使用することを表している(行39301〜39302)。
また、図6では、インスタンスIDが「1」と「2」のビジネスプロセスは、それぞれ同じビジネスプロセス定義から生成されているため、同じ相関セット名の組み合わせを持つ(行39301〜39302と行39303〜39304)。相関セット名の値は、相関セット情報395の相関セット名と同じものである。相関セット値列3933は、各プロセスインスタンスの相関セット値を表す。例えば、図6では、インスタンスIDが「1」のビジネスプロセスは相関セットAの値が「12」(行39301)、インスタンスIDが「2」のビジネスプロセスは相関セットAの値が「15」(行39303)であることを表している。
オペレーション情報394は、各ビジネスプロセスが提供するオペレーションの一覧をまとめたデータ領域である。オペレーション情報394を図7に示す。
ビジネスプロセス管理ID列3941は、ビジネスプロセス実行基盤3に配備されているビジネスプロセスの管理番号で、ビジネスプロセス定義情報391と同一のものである。オペレーション名列3942は、各ビジネスプロセスが提供するオペレーションの一覧である。
図7では、ビジネスプロセス管理IDが「1」のビジネスプロセスが、オペレーションX、オペレーションY、オペレーションZを提供すること(行39401〜39403)、及び、ビジネスプロセス管理IDが「2」のビジネスプロセスがオペレーションP、オペレーションQを提供すること(行39404〜39405)を表している。インスタンス生成フラグ列3943は、オペレーションを呼び出すときに新しくビジネスプロセスインスタンスを生成するか否かを表している。
図7では、オペレーションXを呼び出したときにビジネスプロセス管理IDが「1」のビジネスプロセスのビジネスプロセスインスタンスが生成され(行39401)、オペレーションPを呼び出したときにビジネスプロセス管理IDが「2」のビジネスプロセスのビジネスプロセスインスタンスが生成されること(行39404)を表している。インスタンス生成フラグ列3943の値が「しない」の場合には、実行中のビジネスプロセスインスタンスのオペレーションを呼び出す。
インスタンス判別相関セット名列3944は、非同期通信を使用する場合等、実行中のビジネスプロセスインスタンスのオペレーションを呼び出す際に、どの相関セットを使ってビジネスプロセスインスタンスを特定するかを示す。例えば、図7の行39403は、オペレーションZを呼び出すときは相関セットBの値でビジネスプロセスインスタンスを特定することを表す。
初期化相関セット名列3945は、オペレーションが呼び出されたときに、そのとき渡された電文から相関セット値を更新するか否かを表す。例えば、図7の行39401は、オペレーションXが呼ばれたときに電文から相関セットAの値を計算し、それをビジネスプロセスインスタンスの相関セットAの新しい相関セット値として使用することを表す。
相関セット情報395は、各ビジネスプロセス定義で使用する相関セット値の計算方法をまとめたデータ領域である。相関セット情報395を図9に示す。
ビジネスプロセス管理ID列3951は、ビジネスプロセス実行基盤3に配備されているビジネスプロセスの管理番号で、ビジネスプロセス定義情報391と同一のものである。相関セット名列3952は、各ビジネスプロセス定義が使用する相関セット名の一覧である。
図9では、ビジネスプロセス管理IDが「1」のビジネスプロセスが、相関セットAと相関セットBを使用すること(行39501〜39502)、及び、ビジネスプロセス管理IDが「2」のビジネスプロセスが、相関セットCを使用すること(行39503)を示している。相関セット算出式列3953は、各相関セットの計算方法を示している。
図9では、XML形式の電文から相関セットを計算する方法がXML Path言語(非特許文献7参照)を使用して示されている。例えば、図9の行39501はXPathが/x/y/z1で示される電文中の要素とXPathが/x/y/z2で示される電文中の要素を連結したものが相関セットAの相関セット値になることを示している。通常、要素の連結は要素の値を文字列化してから行う。
ビジネスプロセスインスタンス情報396は、ビジネスプロセスインスタンスの一覧をまとめたデータ領域である。ビジネスプロセスインスタンス情報396を図8に示す。
インスタンスID列3961は、ビジネスプロセス実行部37で動作しているビジネスプロセスインスタンスのインスタンスIDの一覧である。ビジネスプロセス管理ID3962は、ビジネスプロセス実行基盤3に配備されているビジネスプロセスの管理番号で、ビジネスプロセス定義情報391と同一のものである。
例えば、図8の行39601〜39602は、インスタンスIDが「1」と「2」のビジネスプロセスインスタンスは両方ともビジネスプロセス管理IDが「1」で示されるビジネスプロセスのインスタンスであることを示す。
セッション・プロセス対応情報397は、あるビジネスプロセスインスタンスとそのビジネスプロセスインスタンスが同期通信を行っているサービスを関連づけるためのデータ領域である。セッション・プロセス対応情報397は、例えば、セッションIDとインスタンスIDの対からなる表として実現することができるが、本発明の実施には関係しない部分であるため、詳細な説明は行わない。
電文変換情報398は、ビジネスプロセスの動的な定義変更によって、サービスが送信する電文とビジネスプロセスが要求する電文の構造が異なった場合に、ビジネスプロセスが電文を解釈できるように要求受付部35で電文の構造を変換する方法をまとめたデータ領域である。電文変換情報398を図10に示す。
ビジネスプロセス管理ID列3981は、ビジネスプロセス実行基盤3に配備されているビジネスプロセスの管理番号で、ビジネスプロセス定義情報391と同一のものである。オペレーション名列3982は、各ビジネスプロセスが提供するオペレーションの一覧である。旧電文情報列3983は、動的な定義変更前にオペレーションが要求していた電文の構造である。新電文構造列3984は、動的な定義変更後にオペレーションが要求する電文の構造である。電文変換手順列3985は、旧電文構造の形式の電文を新電文構造の形式の電文に変換する方法をまとめた手順書を含む。図10は、プロセス管理IDが「1」のビジネスプロセスについて、オペレーションXとオペレーションYが要求する電文の構造が変更されたときの状態を表している。
電文構造の変更には、図13〜図15の変更範囲713、723、724、733、734のような5つのケースが考えられる。変更範囲713は要素の要素名、位置は同じであるが、型が変わっている場合である。変更範囲723は要素の要素名と型が同じであるが、その位置が変わっている場合である。変更範囲724は要素の要素名は同じであるが、その位置と型が変わっている場合である。変更範囲733は要素が削除されている場合である。変更範囲734は要素が追加されている場合である。
このような電文構造の変更に対して電文の変換手順書を作成する方法を図12に示す。
はじめに、古い電文構造の全ての要素に対して次の処理を行う(ステップ301)。
まず、新しい電文構造の中に要素名、位置、型のいずれかが一致する要素があるかを調査する(ステップ302)。そして、上記3つの一致状況に応じて、以下の処理を行う(ステップ303〜310)。
はじめに、古い電文構造の全ての要素に対して次の処理を行う(ステップ301)。
まず、新しい電文構造の中に要素名、位置、型のいずれかが一致する要素があるかを調査する(ステップ302)。そして、上記3つの一致状況に応じて、以下の処理を行う(ステップ303〜310)。
要素名、位置、型の全てが一致する場合には確実に同一要素であることが見込めるため、そのままデータの対応付けを行う(ステップ306)。要素名と位置のみ一致する場合には要素の型が変更されているため、古い電文の要素の型を変換して新しい要素に対応付けを行う(ステップ307)。型の変換方法は任意であるが、String型からnumeric型に変換する場合には、例えば、文字列「“0123”」を数値「123」にすること等が考えられる。要素名と型のみ一致する場合には要素が移動されているため、古い電文の要素を新しい移動先に対応付ける(ステップ309)。要素名のみ一致する場合には要素が移動され、型も変更されているため、古い電文の要素の型を変換してから新しい移動先に対応づける(ステップ310)。
図13の対応付け714はステップ306の処理を、対応付け715はステップ307の処理を表している。また、図14の対応付け725はステップ309の処理を、対応付け725はステップ310の処理を表している。
次に、新しい電文構造の全ての要素に対して次の処理を行う(ステップ311)。
まず、新しい電文構造において対応付けが行われていない要素があるかを調査する(ステップ312)。対応付けが行われていない要素がある場合、要素の型に応じてデフォルト値を代入するようにする(ステップ314)。デフォルト値は任意であるが、例えば、numeric型の場合には数値「1」、String型の場合には文字列「“string”」を使うこと等が考えられる。図15の対応付け735はステップ314の処理を表している。
まず、新しい電文構造において対応付けが行われていない要素があるかを調査する(ステップ312)。対応付けが行われていない要素がある場合、要素の型に応じてデフォルト値を代入するようにする(ステップ314)。デフォルト値は任意であるが、例えば、numeric型の場合には数値「1」、String型の場合には文字列「“string”」を使うこと等が考えられる。図15の対応付け735はステップ314の処理を表している。
なお、変更範囲733のように要素が削除された場合には要素の対応付けは必要ない。
それでは、ビジネスプロセス定義の動的な変更の具体的例を示す。動的な変更する前のビジネスプロセス実行基盤3の状態として、ここでは、図1〜図9のように2つのビジネスプロセス定義が配備され、3つのビジネスプロセスインスタンスが起動しているものとする。このとき、ビジネスプロセス定義の動的な変更はまだ未実施であるため、電文変換情報398は初期状態(何も登録されていない状態)とする。
それでは、ビジネスプロセス定義の動的な変更の具体的例を示す。動的な変更する前のビジネスプロセス実行基盤3の状態として、ここでは、図1〜図9のように2つのビジネスプロセス定義が配備され、3つのビジネスプロセスインスタンスが起動しているものとする。このとき、ビジネスプロセス定義の動的な変更はまだ未実施であるため、電文変換情報398は初期状態(何も登録されていない状態)とする。
2つのビジネスプロセス定義の詳細を図20〜図26に示す。
図20のビジネスプロセス911は、ビジネスプロセス定義情報391にビジネスプロセス1として登録されているビジネスプロセス定義である。このビジネスプロセスは、アクティビティ9110〜9119と業務手順に沿ってアクティビティを連結したコネクション9120から構成される。各アクティビティの種別はアクティビティ一覧913に示す通りである。また、各受付アクティビティのオペレーション名はオペレーション一覧914に示す通りである。このビジネスプロセスは、サービスアダプタ(サービス42用)382とサービス(非同期通信)42と協調動作して業務処理を遂行する。
図20のビジネスプロセス911は、ビジネスプロセス定義情報391にビジネスプロセス1として登録されているビジネスプロセス定義である。このビジネスプロセスは、アクティビティ9110〜9119と業務手順に沿ってアクティビティを連結したコネクション9120から構成される。各アクティビティの種別はアクティビティ一覧913に示す通りである。また、各受付アクティビティのオペレーション名はオペレーション一覧914に示す通りである。このビジネスプロセスは、サービスアダプタ(サービス42用)382とサービス(非同期通信)42と協調動作して業務処理を遂行する。
ビジネスプロセス911の各オペレーションが要求する電文の構造を図21〜図23に示す。図21はオペレーションXが要求する電文の構造、図22はオペレーションYが要求する電文の構造、図23はオペレーションZが要求する電文の構造である。
図24のビジネスプロセス921は、ビジネスプロセス定義情報391にビジネスプロセス2として登録されているビジネスプロセス定義である。このビジネスプロセスは、アクティビティ9211〜9217と業務手順に沿ってアクティビティを連結したコネクション9218から構成される。各アクティビティの種別はアクティビティ一覧923に示す通りである。また、各受付アクティビティのオペレーション名はオペレーション一覧924に示す通りである。このビジネスプロセスは、サービスアダプタ(サービス42用)382とサービス(非同期通信)42と協調動作して業務処理を遂行する。
ビジネスプロセス921の各オペレーションが要求する電文の構造を図25〜図26に示す。図25はオペレーションPが要求する電文の構造、図26はオペレーションQが要求する電文の構造である。
ここで、ビジネスプロセス1の定義を動的に変更することを考える。
まず、ビジネスプロセス編集部24を使い、ビジネスプロセス1の定義を変更する。図27は定義情報を変更した後のビジネスプロセスを表している。図27では、変更範囲9350において、オペレーションYが要求する電文の構造を変更している。変更後の電文の構造は図28の通りで、変更範囲931510で示した要素の型がString型からnumeric型に変わっている。なお、ここでは上記以外の変更を一切行っていないものとする。すなわち、アクティビティ9310〜9314、9316〜9319は、それぞれアクティビティ9110〜9114、9116〜9119と対応する。
まず、ビジネスプロセス編集部24を使い、ビジネスプロセス1の定義を変更する。図27は定義情報を変更した後のビジネスプロセスを表している。図27では、変更範囲9350において、オペレーションYが要求する電文の構造を変更している。変更後の電文の構造は図28の通りで、変更範囲931510で示した要素の型がString型からnumeric型に変わっている。なお、ここでは上記以外の変更を一切行っていないものとする。すなわち、アクティビティ9310〜9314、9316〜9319は、それぞれアクティビティ9110〜9114、9116〜9119と対応する。
ビジネスプロセス定義の変更が終わると、ビジネスプロセス編集部24から配備受付部34にビジネスプロセス配備リクエストを送信する。配備受付部34はビジネスプロセス配備リクエストを受信すると、図11に示した手順に基づいて処理を行う。
まず、ビジネスプロセス定義情報391に新しいビジネスプロセス定義を登録する(ステップ201)。このときのビジネスプロセス定義情報391の状態を図29に示す。行6001が新しく登録したビジネスプロセス定義である。
次に、古いビジネスプロセス定義のビジネスプロセスインスタンスがあるかを調べる(ステップ202)。この場合、図8のビジネスプロセスインスタンス情報396から、インスタンスIDが「1」と「2」の2つのビジネスプロセスインスタンスが該当することが分かるため、ステップ204以降を実行する。
ステップ204では、既存のビジネスプロセス1において、インスタンスを生成しない受付アクティビティ(オペレーション)があるかを調べる。この場合、図7のオペレーション情報394から、図20の受付アクティビティ9115(オペレーションY)と受付アクティビティ9118(オペレーションZ)が見つかる。これらの受付アクティビティに対し、以下の処理を行う(ステップ205)。
まず、受付アクティビティ9115(オペレーションY)について、電文の構造が変わっているかを調べる(ステップ206)。受付アクティビティ9115(オペレーションY)の場合には電文の構造が変わっているため(ステップ207)、さらに、新しいビジネスプロセス定義の相関セット値の計算に、電文に新しく追加された要素が使われているかを調べる(ステップ208)。図28に示した通り、この例では上記に該当しないため、ステップ210をスキップする。次に、古い電文構造の差と新しい電文構造の差から電文の変換手順書を作成する(ステップ211)。図12〜図15で示した方法により、ここでは図30に示す変換手順書を作成し、電文変換情報398に登録する。このときの電文変換情報398の状態を図31に示す。行6021が新しく登録した電文変換手順である。続いて受付アクティビティ9118(オペレーションZ)についても同様の処理を行うが、受付アクティビティ9118(オペレーションZ)は電文の構造が変化していないため、ステップ207〜212をスキップする。
次に、インスタンスIDが「1」と「2」の2つのビジネスプロセスインスタンスについて(ステップ213)、ビジネスプロセス定義の変更が可能であるか検証する(ステップ214)。ここでは2つのビジネスプロセスインスタンスとも特に問題が見つからなかったものとし、ステップ216に進む。ステップ216では、ビジネスプロセスインスタンスの実行を一旦停止する。そして、その間にビジネスプロセスインスタンス中のビジネスプロセス定義を変更後のビジネスプロセス定義に入れ替え(ステップ217)、ビジネスプロセスインスタンスの実行を再開する(ステップ218)。
次に、ビジネスプロセス定義情報391において、新しく登録したビジネスプロセス定義の受付ステータスを受付開始に変更する(ステップ220)。このときのビジネスプロセス定義情報391の状態を図32に示す。行6031が、受付ステータスを変更したビジネスプロセス定義である。
最後に、新しいビジネスプロセス定義のオペレーションをオペレーション情報394に登録する(ステップ221)。このときのオペレーション情報394の状態を図33に示す。行6041〜6043が、新しく登録された情報である。
以上で、ビジネスプロセス配備リクエストの受信処理を終了する。
以上で、ビジネスプロセス配備リクエストの受信処理を終了する。
次に、電文の構造が変わった受付アクティビティのオペレーションがサービスから呼ばれる場合の処理を説明する。ここでは、サービス(非同期通信42)が、プロセスIDが「1」のビジネスプロセスインスタンスのオペレーションYをコールバックするときを取り上げる。
はじめに、サービス(非同期通信42)から、要求受付部35にビジネスプロセス1のオペレーションYを実行するように、ビジネスプロセス実行リクエストが送信される。要求受付部35はビジネスプロセス実行リクエストを受信すると、図2に基づいて次の処理を実行する。
まず、ビジネスプロセス実行リクエストから、実行の対象になるビジネスプロセス名とオペレーション名、オペレーションに渡す電文を取得する(ステップ101)。
次に、オペレーション情報394に、指定されたビジネスプロセスとオペレーションがあるかを確認する(ステップ102、103)。この場合、図33の行6042に対応する情報があるため、ステップ104に進む。なお、図32のビジネスプロセス定義情報391において、行6032のビジネスプロセス1は行6031のビジネスプロセス1よりも登録日時が古いため、図33のオペレーション情報394を検索するときは、行6044〜6046は無効な情報として扱われることに注意が必要である。
ステップ104では、ビジネスプロセス定義情報391からビジネスプロセスの受付ステータスを確認する。ここでは、図32の行6031から受付ステータスが受付開始になっていることを確認できるため(上記と同様に行6032は既に無効な情報である)、ステップ107に進む。
ステップ107では、電文変換情報398に電文変換手順が登録されていないかを確認する。この例の場合、図31の行6201に該当する情報があるため、電文変換手順書を実行し、以降、変換後の電文を使用するようにする(ステップ109)。図34は、電文変換情報398に登録された図30の電文変換手順書に従い、実際に電文を変換したときの例である。
次に、オペレーション情報394から電文の構造が、オペレーションYが要求する電文の構造にあっているかを確認する(ステップ110、111)。ここでは、ステップ109で電文を変換しているため、オペレーションYが要求する電文の構造に妥当である。
次に、オペレーション情報394から新たにインスタンス生成を行う必要があるかを確認する(ステップ112)。オペレーションYはインスタンス生成を行わないオペレーションであるため、ステップ117に進む(ステップ113)。
ステップ117では、相関セット情報395から相関セット値を計算する。オペレーション情報394より、オペレーションYで使用する相関セットは相関セットAであるため、Xpathが/x/y/z1と/x/y/z2で示される2つの要素の値を連結する。図34より、2つの要素を連結した相関セット値は「12」になる。
次に、相関セット・プロセス対応情報393から、ビジネスプロセスインスタンスを特定する。上述の相関セット値12から、対象のビジネスプロセスインスタンスはインスタンスIDが1のものと特定できるため(ステップ118、119)、インスタンスIDが「1」のビジネスプロセスのオペレーションYを呼び出す(ステップ120)。以上が、動的な定義変更を行ったビジネスプロセスの呼び出しの流れである。
インスタンスIDが「1」と「2」のビジネスプロセスが両方とも終了した場合、ビジネスプロセス管理IDが「1」のビジネスプロセス情報は使用されなくなる。そこで、ビジネスプロセス定義情報GCが動作し、データベース39に残ったビジネスプロセス管理IDが「1」の不要な情報が削除される。
1…リクエスタ、11…CPU、12…メモリ、13…通信インタフェース、14…通信プログラム、2…ビジネスプロセス開発基盤、21…CPU、22…メモリ、23…通信インタフェース、24…ビジネスプロセス編集部、25…データベース、251…ビジネスプロセス定義情報、3…ビジネスプロセス実行基盤、31…CPU、32…メモリ、33…通信インタフェース、34…配備受付部、35…要求受付部、36…ビジネスプロセス定義情報GC部、37…ビジネスプロセス実行部、371…ビジネスプロセスインスタンス、3711…ビジネスプロセス定義、3712…ビジネスプロセス実行プログラム、3713…インスタンスID、38…アダプタ実行部、381…サービスアダプタ(サービス41用)、382…サービスアダプタ(サービス42用)、39…データベース、391…ビジネスプロセス定義情報391…ビジネスプロセス管理ID列、3912…ビジネスプロセス名列、3913…ビジネスプロセス定義列、3914…受付ステータス列、3915…登録日時列、39101…行1、39102…行2、392…ビジネスプロセス実行情報、393…相関セット・プロセス対応情報、3931…インスタンスID列、3932…相関セット名列、3933…相関セット値列、39301…行1、39302…行2、39303…行3、39304…行4、39305…行5、394…オペレーション情報、3941…ビジネスプロセス管理ID列、3942…オペレーション名列、3943…インスタンス生成フラグ列、3944…インスタンス判別相関セット名列、3945…初期化相関セット名列、3946…電文構造列、39401…行1、39402…行2、39403…行3、39404…行4、39405…行5、395…相関セット情報、3951…ビジネスプロセス管理ID列、3952…相関セット名列、3953…相関セット算出式列、39501…行1、39502…行2、39503…行3、396…ビジネスプロセスインスタンス情報、3961…インスタンスID列、3962…ビジネスプロセス管理ID列、39601…行1、39602…行2、39603…行3、397…セッション・プロセス対応情報、398…電文変換情報、3981…ビジネスプロセス管理ID列、3982…オペレーション名列、3983…旧電文構造列、3984…新電文構造列、3985…電文変換手順列、39801…行1、39802…行2、41…サービス(同期通信)、411…CPU、412…メモリ、413…通信インタフェース、414…通信プログラム、42…サービス(非同期通信)、421…CPU、422…メモリ、423…通信インタフェース、424…通信プログラム、6001…行3、6011…古い電文構造、6012…新しい電文構造、6021…行1、6031…行3、6032…行1、6041…行6、6042…行7、6043…行8、6044…行1、6045…行2、6046…行3、6051…古い電文、6052…新しい電文、711…古い電文構造、712…新しい電文構造、713…変更範囲、714…対応付け、715…対応付け、721…古い電文構造、722…新しい電文構造、723…変更範囲、724…変更範囲、725…対応付け、726…対応付け、731…古い電文構造、732…新しい電文構造、733…変更範囲、734…変更範囲、735…対応付け、81…ビジネスプロセス、811…開始アクティビティ、812…受付アクティビティ、813…サービス呼び出しアクティビティ、814…任意のアクティビティ、815…受付アクティビティ、8151…電文構造定義、81511…ルート要素、81512…child1要素、81513…child2要素、81514…child3要素、816…応答アクティビティ、817…終了アクティビティ、818…コネクション、82…サービスアダプタ、83…サービス、84…アクティビティ一覧、841…番号列、842…アクティビティ種別列、85…ビジネスプロセス、850…変更範囲、851…開始アクティビティ、852…受付アクティビティ、853…サービス呼び出しアクティビティ、854…任意のアクティビティ、855…受付アクティビティ、8551…電文構造定義、85510…変更範囲、85511…ルート要素、85512…child1要素、85513…child2要素、85514…child3要素、856…応答アクティビティ、857…終了アクティビティ、858…任意のアクティビティ、859…コネクション、86…サービスアダプタ、87…サービス、88…アクティビティ一覧、881…番号列、882…アクティビティ種別列、911…ビジネスプロセス、9110…終了アクティビティ、9111…開始アクティビティ、9112…受付アクティビティ、91121…電文構造定義、911211…ルート要素、911212…x要素、911213…y要素、911214…z1要素、911215…z2要素、9113…サービス呼び出しアクティビティ、9114…任意のアクティビティ、9115…受付アクティビティ、91151…電文構造定義、911511…ルート要素、911512…x要素、911513…y要素、911514…z1要素、911515…z2要素、911516…z3要素、911517…w要素、9116…サービス呼び出しアクティビティ、9117…任意のアクティビティ、91171…電文構造定義、911711…ルート要素、911712…x要素、911713…y要素、911714…z3要素、9118…受付アクティビティ、9119…応答アクティビティ、9120…コネクション、913…アクティビティ一覧、9131…番号列、9132…アクティビティ種別列、914…オペレーション一覧、9141…番号列、9142…オペレーション名列、921…ビジネスプロセス、9211…開始アクティビティ、9212…受付アクティビティ、92121…電文構造定義、921211…ルート要素、921212…o要素、921213…p要素、921214…q要素、921215…r要素、921216…s要素、9213…サービス呼び出しアクティビティ、9214…任意のアクティビティ、9215…受付アクティビティ、92151…電文構造定義、921511…ルート要素、921512…o要素、921513…p要素、921514…q要素、921515…r要素、921516…s要素、9216…応答アクティビティ、9217…終了アクティビティ、9218…コネクション、923…アクティビティ一覧、9231…番号列、9232…アクティビティ種別列、924…オペレーション一覧、9241…番号列、9242…オペレーション名列、931…ビジネスプロセス、9310…終了アクティビティ、9311…開始アクティビティ、9312…受付アクティビティ、9313…サービス呼び出しアクティビティ、9314…任意のアクティビティ、9315…受付アクティビティ、93151…電文構造定義、931510…変更範囲、9316…サービス呼び出しアクティビティ、9317…任意のアクティビティ、9318…受付アクティビティ、9319…応答アクティビティ、9320…コネクション、933…アクティビティ一覧、9331…番号列、9332…アクティビティ種別、934…オペレーション一覧、9341…番号列、9342…オペレーション名列、9350…変更範囲
Claims (5)
- オペレーションの電文構造の変更を含むビジネスプロセスの動的な定義変更を行う計算機システムにおけるビジネスプロセス定義変更方法において、
前記計算機システムは、オペレーションの電文構造の変更を含むビジネスプロセスの定義変更を要求するビジネスプロセス配備リクエストから新しいビジネスプロセス定義を取得して記憶装置へ格納し、
前記計算機システムは、変更前のビジネスプロセス定義に含まれている電文構造と前記格納した新しいビジネスプロセス定義に含まれている電文構造の差から電文の変換手順書を作成して記憶装置へ格納し、
前記計算機システムは、ビジネスプロセス実行部に対し、ビジネスプロセスインスタンスの実行を一旦停止するように指示し、前記計算機システムは、前記格納した新しいビジネスプロセス定義を実行に用いるビジネスプロセス定義と入れ替えた後、前記ビジネスプロセス実行部に対し、ビジネスプロセスの実行再開を指示することを特徴とするビジネスプロセス定義変更方法。 - 前記計算機システムは、ビジネスプロセスの実行の際に、前記電文の変換手順書を用いて変更前のビジネスプロセス定義の電文構造を変更後のビジネスプロセス定義の電文構造に変換して記憶装置へ格納し、その変換した電文をビジネスプロセスの処理に用いることを特徴とする請求項1に記載されたビジネスプロセス定義変更方法。
- 前記計算機システムは、ビジネスプロセスの実行の際に用いられている電文の構造が前記変更前のビジネスプロセス定義の電文構造に合致する場合に前記電文構造の変換を行うことを特徴とする請求項2に記載されたビジネスプロセス定義変更方法。
- オペレーションの電文構造の変更を含むビジネスプロセスの動的な定義変更を行う計算機システムにおいて、
オペレーションの電文構造の変更を含むビジネスプロセスの定義変更を要求するビジネスプロセス配備リクエストをビジネスプロセス実行基盤側装置へ送信するビジネスプロセス開発基盤側装置と、
前記ビジネスプロセス開発基盤側装置から送信されたビジネスプロセス配備リクエストから新しいビジネスプロセス定義を取得して記憶装置へ格納し、変更前のビジネスプロセス定義に含まれている電文構造と前記格納した新しいビジネスプロセス定義に含まれている電文構造の差から電文の変換手順書を作成して記憶装置へ格納し、ビジネスプロセス実行部に対してビジネスプロセスインスタンスの実行を一旦停止するように指示し、前記格納した新しいビジネスプロセス定義を実行に用いるビジネスプロセス定義と入れ替えた後、前記ビジネスプロセス実行部に対し、ビジネスプロセスの実行再開を指示するビジネスプロセス実行基盤側装置とを備えることを特徴とする計算機システム。 - オペレーションの電文構造の変更を含むビジネスプロセスの動的な定義変更を行う計算機システムにおけるビジネスプロセス定義変更方法をコンピュータに実行させるためのプログラムにおいて、
前記計算機システムは、オペレーションの電文構造の変更を含むビジネスプロセスの定義変更を要求するビジネスプロセス配備リクエストから新しいビジネスプロセス定義を取得して記憶装置へ格納し、
前記計算機システムは、変更前のビジネスプロセス定義に含まれている電文構造と前記格納した新しいビジネスプロセス定義に含まれている電文構造の差から電文の変換手順書を作成して記憶装置へ格納し、
前記計算機システムは、ビジネスプロセス実行部に対し、ビジネスプロセスインスタンスの実行を一旦停止するように指示し、前記計算機システムは、前記格納した新しいビジネスプロセス定義を実行に用いるビジネスプロセス定義と入れ替えた後、前記ビジネスプロセス実行部に対し、ビジネスプロセスの実行再開を指示することを特徴とするビジネスプロセス定義変更方法をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308179A JP2010134574A (ja) | 2008-12-03 | 2008-12-03 | ビジネスプロセス定義変更方法及びその実施システムとプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308179A JP2010134574A (ja) | 2008-12-03 | 2008-12-03 | ビジネスプロセス定義変更方法及びその実施システムとプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010134574A true JP2010134574A (ja) | 2010-06-17 |
Family
ID=42345836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008308179A Withdrawn JP2010134574A (ja) | 2008-12-03 | 2008-12-03 | ビジネスプロセス定義変更方法及びその実施システムとプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010134574A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149051A (ja) * | 2012-01-19 | 2013-08-01 | Ricoh Co Ltd | 情報処理装置及びプログラム |
JP2016167295A (ja) * | 2016-04-27 | 2016-09-15 | 株式会社リコー | 情報処理装置及びプログラム |
CN111626602A (zh) * | 2020-05-25 | 2020-09-04 | 泰康保险集团股份有限公司 | 业务处理方法、业务处理装置、存储介质与电子设备 |
-
2008
- 2008-12-03 JP JP2008308179A patent/JP2010134574A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149051A (ja) * | 2012-01-19 | 2013-08-01 | Ricoh Co Ltd | 情報処理装置及びプログラム |
JP2016167295A (ja) * | 2016-04-27 | 2016-09-15 | 株式会社リコー | 情報処理装置及びプログラム |
CN111626602A (zh) * | 2020-05-25 | 2020-09-04 | 泰康保险集团股份有限公司 | 业务处理方法、业务处理装置、存储介质与电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336705B (zh) | 脚本处理和工作流系统间的自动转码和语义自适应 | |
US7401336B2 (en) | Role based integrated platform | |
US8370802B2 (en) | Specifying an order for changing an operational state of software application components | |
EP3049968B1 (en) | Master schema shared across multiple tenants with dynamic update | |
JP6164440B2 (ja) | アプリケーションアップグレード方法および装置 | |
US11106451B2 (en) | Automated software package deployment | |
CN104216912A (zh) | 一种无侵入式的业务表单工作流化的实现方法与装置 | |
CN105893055B (zh) | 流程引擎平台化触发方法 | |
JP2018530070A (ja) | クラウドベースのコンピューティング環境上の基盤を構築、最適化及び実施するシステム及び方法 | |
JP2008269136A (ja) | モデル駆動型開発を支援する装置及び方法 | |
KR20100027124A (ko) | 데이터 서버 관리형 웹 서비스 런타임용 장치, 시스템 및 방법 | |
JP2007004776A (ja) | ワークフローシステム、ワークフロー処理方法およびワークフロー処理プログラム | |
EP2959387B1 (en) | Method and system for providing high availability for state-aware applications | |
WO2007068175A1 (fr) | Systeme et procede permettant de declencher un systeme de regles | |
WO2021013056A1 (zh) | 基于微服务的数据处理方法、装置、设备及可读存储介质 | |
JP2006351019A (ja) | 契約に基づく自動サービス提供方法および装置 | |
CN103473034B (zh) | 一种动态发布Web服务的方法和装置 | |
CN106201466B (zh) | 一种基于heat的模板管理方法 | |
KR20130037995A (ko) | 멀티테넌시를 지원하는 비즈니스 로직 설정방법 | |
JP2010134574A (ja) | ビジネスプロセス定義変更方法及びその実施システムとプログラム | |
US7836449B2 (en) | Extensible infrastructure for task display and launch | |
JP4702835B2 (ja) | Webサービスカスタマイズシステム | |
JP2016099709A (ja) | アクセス制御プログラム、アクセス制御方法、及び、アクセス制御装置 | |
JP2009169793A (ja) | サービス管理方法とシステムおよびプログラム | |
JP2011065367A (ja) | ワークフロー管理装置、ワークフロー管理プログラムおよびワークフロー管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20110706 |