<process>
構文
<process request="MyApp.Request" response="MyApp.Response">
<context>
...
</context>
<sequence>
...
</sequence>
</process>
詳細
属性または要素 | 説明 | 値 |
---|---|---|
request 属性 | 必須項目。このビジネス・プロセスに対する最初の要求のタイプを指定する、要求クラスの名前。 | 1 文字以上の文字列。 |
response 属性 | オプション。このビジネス・プロセスから応答が返される場合にそのタイプを指定する、応答クラスの名前。 | 1 文字以上の文字列。 |
component 属性 |
オプション。この値を 1 (真) に設定すると、この <process> が再利用可能コンポーネントと見なされます。 |
1 (真) または 0 (偽) のブーリアン値。デフォルトは偽です。 |
contextsuperclass 属性 | オプション。ビジネス・プロセス・コンテキストのスーパークラスを指定できます。異なる多数のビジネス・プロセスが同じコンテキスト変数を共有している場合に役立ちます。つまり、Ens.BP.Context のサブクラスを自分で生成し、独自のプロパティを追加した後、contextsuperclass でそのクラスを使用します。指定しない場合は、Ens.BP.Context がデフォルトとなります。 | クラス名。 |
height 属性 | オプション。ビジネス・プロセス・デザイナでのビジネス・プロセスのグラフィカルな表現に関連します。 | 正の整数。 |
includes 属性 | オプション。 インクルード・ファイル名のカンマ区切りリスト。<code> セグメントでマクロを使用できるようになります。 | |
language 属性 | オプション。"objectscript" である必要があります。 | "objectscript" |
layout 属性 | オプション。このビジネス・プロセスの BPL ダイアグラムで使用されるレイアウト・スタイルの名前。値 automatic を指定すると、ビジネス・プロセス・デザイナと BPL ビューワで自動的にダイアグラム要素のレイアウトが選択されます。値 manual を指定すると、指定したレイアウトがこれらのツールで使用されるようになります。 | manual または automatic のいずれかの文字列。指定がない場合のデフォルト・レイアウトは、automatic です。 |
version 属性 | オプション。バージョン番号を表す整数。値が大きいほど、新しいバージョンであることを示しています。式の場合、version 属性値では、ObjectScript を使用する必要があります。 | 正の整数。リテラル整数、または結果が整数になる式を指定できます。 |
width 属性 | オプション。ビジネス・プロセス・デザイナでのビジネス・プロセスのグラフィカルな表現に関連します。 | 正の整数。 |
<context> 要素 | オプション。ビジネス・プロセスの実行コンテキストの汎用プロパティを定義します。ビジネス・プロセス実行コンテキストの詳細は、"<assign>" および "BPL プロセスの開発" を参照してください。 | |
<sequence> 要素 | オプション。ゼロ個以上の <sequence> 要素を使用できます。各要素で、ビジネス・プロセスが実行できるアクションを定義します。 |
説明
<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 属性の場合と同じように [一般] タブで行えます。