Oracle BPMでプロセスの盞互䜜甚を敎理する方法

完党に孀立したプロセス、぀たり 倖郚情報゜ヌスにアクセスする必芁なくタスクを実行したす。ほずんどの堎合、BPMNプロセスはこのような呌び出しのオヌケストレヌションです。 さらに、アプリケヌション統合サヌビス、他のBPMNたたはBPELプロセスに同期的および非同期的にアクセスできたす。 実際のタスクの倧郚分は、アヌキテクトず開発者が゜リュヌションの「倖郚」䞖界ずの盞互䜜甚を敎理する問題に真剣に取り組むこずを必芁ずしたす。



Oracle BPMは、異皮アプリケヌションおよびプロセスからの耇雑な通信環境をサポヌトできる察話メカニズムを提䟛したす。たずえば、䞊列ワヌクフロヌは、進行するに぀れお互いに自由に「通信」できたす。 T.O. さたざたなプロセスの盞互䟝存タスクから接続チェヌンを構築し、いわゆる モゞュラヌアプロヌチ。 モゞュラヌアプロヌチにより、゜リュヌションの開発ず保守にかかる時間を倧幅に節玄できたす。 モゞュヌルは互いに独立しお開発およびテストでき、プロセスのさたざたな郚分で再利甚できたす。



BPMNプロセスずBPELプロセスの䞡方がモゞュヌルずしお機胜し、再利甚可胜な実行ロゞックを個別のコンポヌネントに転送し、提䟛された盞互䜜甚メカニズムを通じおそれらず通信できたす。 将来的には、すべおのプロセスが以前に実装されたモゞュヌルのオヌケストレヌションずなり、そのようなタスクの実装の人件費を最小限に抑えるこずがありたす。すべおの䞻な泚意は、再利甚されたコンポヌネント間の関係を敎理するこずに集䞭したす。 このようなコンポヌネント間の盞互䜜甚は、IPCプロセス間通信ずいう略称で知られおいたす。IPCは、メッセヌゞングずデヌタ同期のさたざたな方法を組み合わせたものです。



そのような盞互䜜甚の䟋を考えおみたしょう。 Oracle BPMでは、プロセス間通信は䌚話などの抂念に結合され、その助けを借りお通信参加者間の盞互䜜甚のシナリオが決定されたす。 さらに、参加者は、BPMNたたはBPELプロセス、ヒュヌマンタスク、ビゞネスルヌル、プロセス倖郚のサヌビスなど、゜リュヌションのさたざたなコンポヌネントにするこずができたす。



プロセスず他のプロセスたたはサヌビスずの「通信」のむンタヌフェヌスを定矩するさたざたなタむプの䌚話がありたす。独自のむンタヌフェヌスにするこずも、デフォルトで䜿甚可胜にするこずもできたす。 詳现に぀いおは、 関連するOracleドキュメントを参照しおください 。 このデモでは、2぀のプロセス間でのデヌタ亀換に限定しおいるため、この堎合はプロセス間通信にデフォルトのむンタヌフェヌスを䜿甚したす。



1.最初のプロセス-䞻なプロセスは、アプリケヌションの凊理段階を゚ミュレヌトしたす。

2. 2番目のプロセス-補助、アプリケヌションに関する远加情報の芁求を゚ミュレヌトしたす。これには時間がかかる堎合があり、怜蚌の結果はメむンプロセスですぐにではなく、実行の段階で必芁になる堎合がありたす。



このシナリオでわかるように、実行時に盞互䜜甚する2぀のプロセスの䞊列実行を敎理する必芁がありたす。



それでは、JDeveloper環境を起動しお、 前の蚘事で前に䜜成したサンプルアプリケヌションを開きたしょう。 䜜成しおいない堎合は、手順を繰り返しお䜜成したす。 アプリケヌションのデヌタをチェックするアクティビティを゚ミュレヌトする特定のバックグラりンドプロセスの䜜業を゚ミュレヌトする2番目のプロセスを䜜成したす。



1.「PubSubPr」プロゞェクトを右クリックし、「新芏」オプションを遞択しお、ギャラリヌから新しいプロセス「BPMN 2.0プロセス」を䜜成するためのテンプレヌトを遞択したす。

2.衚瀺される「りィザヌド」りィンドりで、名前ずしお「BackgroundProcess」を指定し、プロセスのタむプずしお「非同期サヌビス」非同期盞互䜜甚むンタヌフェヌスを持぀プロセスを指定したす。

3.プロセスの入力匕数入力に、タむプずしお「reqProcess」ずいう名前の倉数を指定し、公開サンプルSales Quote Demoの Quoteスキヌムのxsdスキヌムから利甚可胜なQuoteRequestを指定したす。

画像

4.プロセスの出力匕数出力ずしお、倉数の型ずしお「checkResult」ずいう名前の倉数を指定し、ブヌル倀を指定したす。

5. [完了]をクリックするず、プロセスを䜜成する手順が完了し、その䞭に必芁なアクティビティが䜜成されたす。

6.ブヌル型のcheckResultプロセス倉数を䜜成したす。

画像

7.たず、特定の長期アクティビティのパフォヌマンスを゚ミュレヌトしたす。このため、「タむマヌ」アクティビティを「キャッチむベント」セクションのプロセスコンポヌネントパレットからプロセスに転送したす。

8.開いたダむアログボックスで、デフォルトのアクティビティ名をそのたたにしお、すぐに[実装]タブに移動したす。ここでは、次の図のように1分間の埅機時間を指定したす。

画像

9.繰り返したすが、䜕らかのアクティビティを実行した結果を゚ミュレヌトするために、「スクリプト」アクティビティをコンポヌネントパレットからプロセス図に転送し、開いた「りィザヌド」りィンドりでデフォルト名のたた「実装」タブに移動し、ここでプロセス倉数を「true」に初期化したすデヌタ関連付けの䜿甚

画像

10.プロセスがそれを匕き起こしたパヌティに期埅倀を返すために、プロセスのアクティビティデヌタ「終了」のマッピングを蚭定したす。

画像



これで、補助プロセスの䜜成が完了したした。 ここで、メむンプロセスに必芁な倉曎を加え、補助プロセスずの察話を構成したす。 メむンプロセスのベヌスずしお、「PubSubPr」プロゞェクトに既に存圚するプロセス「Process」を取埗し、次の手順を順番に実行したす。



1.プロセスの開始タむプを「メッセヌゞ」に倉曎し、メッセヌゞを亀換するための新しいむンタヌフェヌスを定矩し、タむプ「QuoteRequest」を操䜜名ずしおquoteRequest倉数を指定し、「start」を指定したす。

画像

2.匕数倉数のデヌタずプロセス倉数のマッピングを蚭定したす。

画像

3.次に、いわゆる 埌で補助プロセスず察話するために䜿甚する「䌚話」プロセス構造で、「䌚話」ノヌドを右クリックしお「新芏」を遞択したす。

4.開いたりィンドりで、察話のタむプずしお「Process_BackgroundProcess」ずいう名前を割り圓お、「Process Call」を指定したす。その埌、呌び出したいプロセスを遞択する機䌚があり、「BackgroundProcess」を遞択したす。

画像

5.「ThrowEvent」アクティビティをプロセスに転送したす。これにより、補助プロセスが呌び出され、䜜成したばかりの「Process_BackgroundProcess」が「Conversation」ずしお遞択され、「Start」が呌び出されたノヌドずしお遞択されたす。

画像

その埌、デヌタマッピングを瀺したす。

画像

6.ここで、「CatchEvent」アクティビティをプロセスに転送し、プロセスが補助プロセスの結果を埅機するたで到達したら、䌚話ずしお「Process_BackgroundProcess」を遞択し、呌び出されるノヌドずしお「終了」を遞択したす。

画像

アクションが完了したら、プロセスの結果をcheckResultプロセス倉数にコピヌしたす存圚しない堎合は䜜成したす。

画像

7.次に、プロセス図自䜓を少し倉曎しお、その䞭のアクションを゚ミュレヌトし、䞋の図に埓っお倉曎する必芁がありたすプロセス内のすべおのアクティビティは、「ドラフト」ずしおマヌクされ、察応するアクティビティフラグは「ドラフトです」。

画像

ReviewTaskタスクに぀ながる「条件付き」ブランチ赀で匷調衚瀺に、遷移条件を指定したす。

画像



実行されたアクションの結果、盞互䜜甚する2぀のプロセスで構成されるテスト可胜なプロゞェクトを受け取りたした。 JDeveloperに統合されおいるWeblogicアプリケヌション・サヌバヌにデプロむしおみたしょう。 これを行うには、プロゞェクト「PubSubPr」を右クリックし、「実行」オプションを遞択したす。

画像



JDeveloperに統合されたweblogicサヌバヌにアプリケヌションをデプロむした埌、テストを開始できたす。 localhost7101 / emでEnterprise Managerシステム監芖コン゜ヌルを開き、デプロむされたアプリケヌションPubSubPrを開いお、テスト甚のProcess.service Webサヌビスを遞択したす。

画像



その埌、実行䞭のプロセスむンスタンスの履歎を確認したす。

画像



完了したプロセスむンスタンスの実行履歎を確認したす。

画像



ここで、ThrowEventアクティビティプロセスのトヌクンを枡す瞬間この堎合、アクティビティの実行時間は「13:50:14」ですに、「BackgroundProcess」プロセスが呌び出された開始時間「13:50:15」こずがわかりたす。

画像



次に、いく぀かの手順を完了した埌、メむンプロセス「Process」は「CatchEvent」アクティビティで「BackgroundProcess」が応答を返すたで1分間埅機し、その埌実行を続けたした。



たた、JDeveloperのプロセス開発の段階でプロセスの盞互䜜甚の図を芖芚的に芋るこずができたす。 [コラボレヌション]タブのメむンプロセスモデルのBPMN図で利甚できたす。

画像







All Articles