pickアクティビティのプロセスの待機または継続の選択

pickアクティビティには2つのブランチがあり、それぞれに条件があります。最初に条件が満たされたブランチが実行されます。次の例では、1つのブランチの条件は融資提案を受け取ることで、もう1つのブランチの条件は指定の時間待機することです。

図15-1に概要を示します。(優先度に従って)次のアクティビティが発生します。

  1. invokeアクティビティがサービス(この場合はStar Loanからの融資提案に対するリクエスト)を開始します。

  2. 次に、pickアクティビティが開始されます。これには次の条件があります。

    • onMessage

      この条件には、Star Loan Webサービスからの融資提案の形式でリプライを受け取るためのコードが含まれています。onMessageコードは、タイムアウトが追加される前の、Star Loan Webサービスからのレスポンスを受け取るコードと一致します。

    • onAlarm

      この条件には、1分のタイムアウトのコードが含まれています。この時間はPT1Mとして定義されています。これは、タイムアウトまでに1分待機するという意味です。タイムアウト設定には、次の記号を使用します。

      • Sは秒

      • Mは分

      • Hは時間

      • Dは日

      • Yは年

      あまり一般的な例ではありませんが、時間制限が1315秒の場合は、PT1Y3D15Sと入力します。コードの残りの部分では、融資変数selectedおよびapprovedをfalseに設定し、年率(APR)を0.0に設定して、この情報をloanOffer変数にコピーしています。

      期間のフォーマットはBPEL標準によって指定されます。期間のフォーマットの詳細は、次の場所にある最新の「XML Schema Part 2: Datatypes」ドキュメントを参照してください。

      http://www.w3.org/TR/xmlschema-2/#duration
      
  3. 最初に条件が満たされたpickアクティビティのブランチが、BPELプロセス・サービス・コンポーネントにより実行されます。もう一方のブランチは実行されません。

図15-1 pickアクティビティの概要

図15-1の説明が続きます
「図15-1 pickアクティビティの概要」の説明

onMessageブランチは、メッセージを受信するという点でreceiveアクティビティに似ています。ただし、類似したパートナ・リンクおよびポート・タイプを待機し、操作が異なる複数のonMessageブランチを持つpickアクティビティを定義できます。したがって、操作ごとに個別のスレッドおよびパラレル処理を起動できます。この点は、操作が1つのみのreceiveアクティビティとは異なります。もう1つの違いは、receiveアクティビティを使用して(「インスタンスの作成」チェック・ボックスを選択することで)ビジネス・プロセスの新しいインスタンスを作成できますが、これはpickアクティビティでは実行できません。

ノート:

BPEL 1.1のscopeアクティビティにおけるonMessageブランチと、BPEL 1.1および2.0のscopeアクティビティにおけるonAlarmブランチも作成できます。Oracle JDeveloperscopeアクティビティを開き、左側でアイコンを参照して追加するブランチを検索します。