絶対的な日時でのタイムアウト設定

タイムアウト設定は、リクエスト/レスポンスreceiveアクティビティの絶対的な期限として指定できます。BPEL 2.0では、構文は次の例のようになります。

<receive <bpelx:until>"deadline-expr"</bpelx:until>
</receive>

BPEL 1.1では、構文は次の例のようになります。

<receive bpelx:until="deadline-expr">
    standard-elements
</receive>

bpelx:until属性の予定有効期限は、現在時刻より少なくとも2秒後である必要があります。それ以外の場合は、タイマーが指定されていなかったかのように、タイマー・スケジュールを無視してスキップされます。

bpelx:until属性には、datetimeまたはdateのXMLスキーマ・タイプとして評価される静的な値またはXPath式を指定します。アクティビティには、bpelx:for属性またはbpelx:until属性のいずれか一方のみを使用できます。

XPathバージョン1.0は、XMLスキーマに対応していません。したがって、XPathバージョン1.0の組込み関数では、dateTime値やdate値を作成したり、操作することはできません。ただし、次のいずれかを実行できます。

  • XMLスキーマ定義に準拠する定数(リテラル)の記述、および期限値としての使用。

  • 使用可能ないずれかのタイプの変数(パート)からのフィールドの抽出、および期限値としての使用。

XPathバージョン1.0では、リテラルが文字列リテラルとして処理されますが、結果はdateTime値またはdate値の字句表記として解釈されます。

有効なdatetime値またはdate値が取得されると、アクティビティの有効期限が指定の日付に設定されます。たとえば、bpelx:until="'2009-12-24T18:00+01:00'"というdatetime値は、アクティビティが実行開始以降、インバウンド・メッセージの着信を遅くとも2009年12月24日午後6時(UTC+1)以前に予定していることを示します。

ノート:

現在、pickアクティビティのonMessageブランチにはタイムアウト設定属性が適用されません。これは、pickアクティビティのonMessageブランチとonAlarmブランチを使用した同じ機能が存在しているためです。

タイムアウト日付は、次のアクティビティにのみ指定できます。

  • 中間プロセスのreceive

  • createInstance="true"の指定がないreceiveアクティビティ

receiveアクティビティは、インスタンス化された後にのみタイムアウトします。receiveアクティビティのエントリではタイムアウトになりません。