pickアクティビティのプロセスの待機または継続の選択
pickアクティビティには2つのブランチがあり、それぞれに条件があります。最初に条件が満たされたブランチが実行されます。次の例では、1つのブランチの条件は融資提案を受け取ることで、もう1つのブランチの条件は指定の時間待機することです。
図15-1に概要を示します。(優先度に従って)次のアクティビティが発生します。
-
invokeアクティビティがサービス(この場合はStar Loanからの融資提案に対するリクエスト)を開始します。
-
次に、pickアクティビティが開始されます。これには次の条件があります。
-
onMessage
この条件には、Star Loan Webサービスからの融資提案の形式でリプライを受け取るためのコードが含まれています。onMessageコードは、タイムアウトが追加される前の、Star Loan Webサービスからのレスポンスを受け取るコードと一致します。
-
onAlarm
この条件には、1分のタイムアウトのコードが含まれています。この時間は
PT1M
として定義されています。これは、タイムアウトまでに1分待機するという意味です。タイムアウト設定には、次の記号を使用します。-
S
は秒 -
M
は分 -
H
は時間 -
D
は日 -
Y
は年
あまり一般的な例ではありませんが、時間制限が
1
年3
日15
秒の場合は、PT1Y3D15S
と入力します。コードの残りの部分では、融資変数selectedおよびapprovedをfalse
に設定し、年率(APR)を0.0
に設定して、この情報をloanOffer
変数にコピーしています。期間のフォーマットはBPEL標準によって指定されます。期間のフォーマットの詳細は、次の場所にある最新の「XML Schema Part 2: Datatypes」ドキュメントを参照してください。
http://www.w3.org/TR/xmlschema-2/#duration
-
-
-
最初に条件が満たされたpickアクティビティのブランチが、BPELプロセス・サービス・コンポーネントにより実行されます。もう一方のブランチは実行されません。
onMessageブランチは、メッセージを受信するという点でreceiveアクティビティに似ています。ただし、類似したパートナ・リンクおよびポート・タイプを待機し、操作が異なる複数のonMessageブランチを持つpickアクティビティを定義できます。したがって、操作ごとに個別のスレッドおよびパラレル処理を起動できます。この点は、操作が1つのみのreceiveアクティビティとは異なります。もう1つの違いは、receiveアクティビティを使用して(「インスタンスの作成」チェック・ボックスを選択することで)ビジネス・プロセスの新しいインスタンスを作成できますが、これはpickアクティビティでは実行できません。
ノート:
BPEL 1.1のscopeアクティビティにおけるonMessageブランチと、BPEL 1.1および2.0のscopeアクティビティにおけるonAlarmブランチも作成できます。Oracle JDeveloperでscopeアクティビティを開き、左側でアイコンを参照して追加するブランチを検索します。