説明
<process> 要素は、BPL ドキュメントの最も外側の要素です。その他のすべての BPL 要素は、<process> 要素の中に含まれます。
ビジネス・プロセスは、実行コンテキスト (<context> 要素で定義) および一連のアクティビティ (<sequence> 要素で定義) で構成されます。
request 属性は、ビジネス・プロセスの最初の要求のタイプ (クラス名) を定義します。response 属性は、ビジネス・プロセスからの最終的な応答のタイプ (クラス名) を定義します。request 属性は必須項目ですが、response 属性はオプションです。これは、ビジネス・プロセスが応答を返さない場合があるためです。
実行コンテキスト
ビジネス・プロセスのライフ・サイクルでは、ビジネス・プロセスが実行を中断または再開するたびに、一定のステータス情報をディスクに保存し、またディスクからリストアする必要があります。BPL ビジネス・プロセスでは、実行コンテキストと呼ばれる、変数グループを使用したビジネス・プロセスのライフ・サイクルをサポートしています。
実行コンテキストの変数には、context、request、response、callrequest、callresponse、process の各オブジェクト、整数値 synctimedout、コレクション syncresponses、および %StatusOpens in a new tab 値の status があります。その目的は変数によって異なります。詳細は、<assign> 要素、<call> 要素、<code> 要素、および <sync> 要素の説明を参照してください。
例
以下のサンプル・ビジネス・プロセスでは、<sync> 要素を使用して複数の <call> 要素を同期しています。このサンプルの最後では、<process> 要素内のアクティビティが省略記号 (...) で示されています。
<process request="Demo.Loan.Msg.Application">
<context>
<property name="BankName" type="%String"/>
<property name="IsApproved" type="%Boolean"/>
<property name="InterestRate" type="%Numeric"/>
<property name="TheResults" type="Demo.Loan.Msg.Approval" collection="list"/>
<property name="Iterator" type="%String"/>
<property name="ThisResult" type="Demo.Loan.Msg.Approval"/>
</context>
<sequence>
<trace value='"received application for "_request.Name'/>
<call name="BankUS" target="Demo.Loan.BankUS" async="1">
<annotation>
Send an asynchronous request to Bank US.
</annotation>
<request type="Demo.Loan.Msg.Application">
<assign property="callrequest" value="request"/>
</request>
<response type="Demo.Loan.Msg.Approval">
<assign property="context.TheResults"
value="callresponse"
action="append"/>
</response>
</call>
<call name="BankSoprano" target="Demo.Loan.BankSoprano" async="1">
<annotation>
Send an asynchronous request to Bank Soprano.
</annotation>
<request type="Demo.Loan.Msg.Application">
<assign property="callrequest" value="request"/>
</request>
<response type="Demo.Loan.Msg.Approval">
<assign property="context.TheResults"
value="callresponse"
action="append"/>
</response>
</call>
<call name="BankManana" target="Demo.Loan.BankManana" async="1">
<annotation>
Send an asynchronous request to Bank Manana.
</annotation>
<request type="Demo.Loan.Msg.Application">
<assign property="callrequest" value="request"/>
</request>
<response type="Demo.Loan.Msg.Approval">
<assign property="context.TheResults"
value="callresponse"
action="append"/>
</response>
</call>
<sync name='Wait for Banks'
calls="BankUS,BankSoprano,BankManana"
type="all"
timeout="5">
<annotation>
Wait for responses. Wait up to 5 seconds.
</annotation>
</sync>
<trace value='"sync complete"'/>
...
</sequence>
</process>
応答
ビジネス・プロセスからの基本応答は、そのビジネス・プロセス・インスタンスを最初に呼び出した要求に返す応答です。通常、ビジネス・プロセスを実行した時点で、その基本応答が自動的に返されます。ただし、<reply> 要素を使用すれば、基本応答をさらに早く返すことができます。これは、呼び出し側が要求している応答をすぐに返すことができるものの、その呼び出しの結果として、ビジネス・プロセスで実行しなければならない追加処理がある場合に役立ちます。
言語
<process> 要素では、language 属性に指定した値で、ビジネス・プロセスで使用するスクリプト言語を定義します。値は "objectscript" である必要があります。ビジネス・プロセス内のすべて式、および <code> 要素内のコード行は、指定した言語で記述されている必要があります。
バージョン管理
開発者は、BPL ビジネス・プロセスの version 番号を更新し、その新機能が以前のバージョンと互換性がないことを通知できます。新しいバージョンになるほど、番号が大きくなります。BPL ビジネス・プロセスには自動バージョン機能が備わっていません。開発者は、BPL <process> 要素内の version 属性の値を手動で更新し、新しいコードには、同じビジネス・プロセスの以前のバージョンと互換性のない変更が含まれていることを示します。例えば、ビジネス・プロセス <context> 内のプロパティを追加または削除したり、ビジネス・プロセス <sequence> 内のアクティビティ・フローを変更した場合などに、バージョン番号を更新します。
インスタンスが既に実行されている以前のバージョンの BPL ビジネス・プロセスは、当初のコンテキストで、当初のアクティビティを引き続き実行します。最新バージョンは、さらに別のコンテキストを使用して、別のアクティビティを実行します。そのため、InterSystems IRIS では、バージョンごとに新しいコンテキストとスレッド・クラスが生成されます。新しいバージョンは、生成されたクラス階層のサブパッケージとして表示されます。例えば、クラス MyBPL がある場合、バージョン 3 によって MyBPL.V3.Context と MyBPL.V3.Thread1 が生成されます。
レイアウト
ビジネス・プロセス・デザイナで BPL ダイアグラムを開くと、デフォルトでは、自動レイアウト機能を使用してダイアグラムが表示されます。自動で選択されたレイアウトは、必ずしも個々の図に適しているとは限りません。作成するダイアグラムで自動選択が問題になる可能性がある場合は、ダイアグラムが必ず希望通りのレイアウトで正確に表示されるように、自動レイアウト機能を無効にできます。
ダイアグラムのレイアウトを最も直接的に制御する方法としては、[プリファレンス] タブの [自動整列] チェックボックスのチェックを外します。
[一般] タブをクリックして、レイアウトに対して [自動] または [手動] を選択することもできます。“手動” を選択した場合は、ダイアグラムを保存するたびに各要素の位置がそのまま保存されます。したがって、ダイアグラムをビジネス・プロセス・デザイナで表示したときには、自分で指定したレイアウト特性以外は適用されません。
ビジネス・プロセス・デザイナでのビジネス・プロセス・ダイアグラムのスクロールに関連する問題は、<process> 要素の height 属性または width 属性を調整することで解決できます。この操作は、layout 属性の場合と同じように [一般] タブで行えます。