Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

BPL 要素のリスト

この章では、BPL 要素を機能グループに分類し、各要素の目的について説明します。

ビジネス・プロセス

BPL ドキュメントは、<process> 要素とそのさまざまな子要素で構成されます。<process> 要素はビジネス・プロセスのコンテナです。

実行コンテキスト

ビジネス・プロセスのライフ・サイクルでは、ビジネス・プロセスが実行を中断または再開するたびに、一定のステータス情報をディスクに保存し、またディスクからリストアする必要があります。この機能は、完了までに数日または数週間かかる可能性のある長期実行のビジネス・プロセスにおいては特に重要です。

BPL ビジネス・プロセスでは、実行コンテキストと呼ばれる、変数グループを使用したビジネス・プロセスのライフ・サイクルをサポートしています。実行コンテキストの変数は、BPL ビジネス・プロセスが実行を中断および再開するたびに自動的に保存、リストアされます。変数には、以下のものがあります。

  • context

  • request

  • response

  • callrequest

  • callresponse

  • syncresponses

  • synctimedout

  • status

ほとんどの実行コンテキスト変数は、ビジネス・プロセスに対して自動的に定義されます。このルールの例外は、context と呼ばれる汎用コンテナ・オブジェクトです。これは、BPL ドキュメントの先頭に <context> 要素、<property> 要素、および <parameters> 要素を配置することによって BPL 開発者が定義します。

これらの変数の詳細は、"Ensemble ビジネス・プロセス言語 (BPL) リファレンス" を参照してください。

また、<assign> 要素のドキュメントと “ビジネス・プロセスの実行コンテキスト” も参照してください。

制御フロー

ビジネス・プロセス内では、アクティビティは順次または並列で実行されます。

  • 順次実行は、<sequence> 要素で指定します。

  • 並列実行は、<flow> 要素と <sequence> 要素の組み合わせで指定します。

BPL には、BPL ビジネス・プロセス内での実行順序を制御する多数の制御フロー要素があります。

BPL 要素 目的 説明
<branch> 分岐 条件に基づいて、実行フローを直接変更します。
<break> ループ ループから抜けて、ループ・アクティビティを終了します。
<continue> ループ ループは終了せず、ループ内の次の繰り返しにジャンプします。
<flow> グループ 不定の順序でアクティビティを実行します。
<foreach> ループ 繰り返し実行される一連のアクティビティを定義します。
<if> 分岐 条件を評価し、真の場合の操作または偽の場合の操作を実行します。
<label> 分岐 条件分岐操作の分岐先を指定します。
<sequence> グループ 他のビジネス・オペレーションやビジネス・プロセスへの 1 つ以上の呼び出しを編成します。BPL ダイアグラムを構成します。
<switch> 分岐 一連の条件を評価し、実行する操作を決定します。
<until> ループ 条件が真になるまで繰り返し実行される一連のアクティビティを定義します。
<while> ループ 条件が真である限り、繰り返し実行される一連のアクティビティを定義します。
Note:

<assign> 文または <code> 文を使用して、ビジネス・プロセスの実行コンテキスト変数 status に失敗値を設定すれば、BPL ビジネス・プロセス・コードをいつでも正常に終了できます。

メッセージング

BPL の要素では、ビジネス・オペレーションや他のビジネス・プロセスへの同期要求および非同期要求を作成できます。

BPL 要素 目的
<call> 要求を送信し、必要に応じてビジネス・オペレーションまたはビジネス・プロセスから応答を受信します。呼び出しは同期でも非同期でもかまいません。
<request> 他のビジネス・オペレーションまたはビジネス・プロセスへの呼び出しの要求を準備します。
<response> 他のビジネス・オペレーションまたはビジネス・プロセスへの呼び出しから返された応答を受信します。
<sync> 他のビジネス・オペレーションやビジネス・プロセスへの 1 つ以上の非同期呼び出しからの応答を待ちます。
<reply> プロセスの実行が完了する前に、ビジネス・プロセスから基本応答を返します。

スケジューリング

<delay> 要素を使用して、指定した期間または指定した時刻までビジネス・プロセスの実行を遅延できます。

ルールおよび決定事項

<rule> 要素はビジネス・ルールを実行します。この要素は、ビジネス・ルール名に加えて、判断結果とその理由 (オプション) を保持するパラメータを指定します。

<rule> 要素のパラメータには、context という名前の汎用的な実行コンテキスト変数内の任意のプロパティを含めることができます。したがって、ルールを呼び出すビジネス・プロセスに対する一般的な設計アプローチとしては、ビジネス・プロセスが以下の点を実現するようにします。

  1. <property> 要素と <context> 要素を提供して、適切な名前とタイプを持つプロパティが context オブジェクトに含まれるようにします。

    例えば、公的な教育ローンを受ける適格性をルールによって判定する場合、AgeState、および Income などのプロパティを追加することも考えられます。

  2. 希望の方法で、プロパティの値を収集します。例えば、ビジネス・オペレーションやビジネス・プロセスに要求を送信し、応答が返されると、context のプロパティに値を割り当てる、などの方法があります。

  3. <rule> 要素を提供して、これらの入力値に基づいて回答を返すビジネス・ルールを呼び出します。

実行コンテキスト変数の詳細は、前述した “ビジネス・プロセスの実行コンテキスト” を参照してください。

ビジネス・ルールの作成に関する情報は、"ビジネス・ルールの開発" を参照してください。

データ操作

BPL には、データを別の場所に移動するための要素がいくつか用意されています。例えば、一般的なビジネス・プロセスでは、ビジネス・オペレーションまたは他のビジネス・プロセスへの一連の呼び出しが作成されます。これらの呼び出しを設定し、それによって返されるデータを処理するため、ビジネス・プロセスでは、さまざまな実行コンテキスト変数 (contextrequestresponse など) の間でデータがやり取りされます。この “データ移動” とその他のデータ操作は、以下の要素を使用して行われます。

BPL 要素 目的
<assign> プロパティに値を割り当てます。
<sql> 埋め込まれた SQL SELECT 文を実行します。
<transform> データ変換を使用して、あるオブジェクトを別のオブジェクトに変換します。
<xpath> ターゲットの XML ドキュメントで XPath 式を評価します。
<xslt> XSLT 変換を実行して、データ・ストリームを変更します。

ユーザ記述コード

BPL だけでは特定の問題を解決できない場合に備え、Ensemble には、自動生成されたビジネス・プロセス・コードにユーザ記述コードを埋め込むためのしくみが用意されています。

BPL 要素 目的
<code> CDATA ブロックに追加するコードを指定できます。
<empty> 何も実行されません。コードを記述するまでのプレースホルダとして機能します。

ロギング

BPL には、情報メッセージやエラー・メッセージのログに使用できる要素があります。

BPL 要素 目的
<alert> 外部の警告メカニズムにテキスト・メッセージを書き込みます。
<milestone> ビジネス・プロセスが達成したステップを認知するためのメッセージを格納します。
<trace> コンソール・ウィンドウおよびイベント・ログにテキスト・メッセージを書き込みます。

エラー処理

BPL には、エラーをスローおよびキャッチしたり、エラーやフォールトを補償するための要素があります。これらの要素は互いに密接に関連しています。詳細は、この章の “BPL のエラー処理” を参照してください。エラー処理関連の要素は以下のとおりです。

BPL 要素 目的
<catch> <throw> 要素によって生成されたフォールトをキャッチします。
<catchall> <catch> に合致しないフォールトやシステム・エラーをキャッチします。
<compensate> <catch> または <catchall> から <compensationhandler> を呼び出します。
<compensationhandler> 以前のアクションを元に戻す一連のアクティビティを実行します。
<compensationhandlers> 1 つ以上の <compensationhandler> 要素が含まれます。
<faulthandlers> ゼロ個以上の <catch> と 1 つの <catchall> 要素を使用できます。
<scope> フォールト・ハンドラおよび補償ハンドラで複数のアクティビティをラップします。
<throw> 指定された特定のフォールトをスローします。
FeedbackOpens in a new tab