Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

<flow>

不定の順序でアクティビティを実行します。

Synopsis

<flow>   <sequence name="thread1">     ...   </sequence>   <sequence name="thread2">     ...   </sequence>   ...</flow>

詳細

属性または要素 説明
namedisabledxposyposxendyend 属性 一般的な属性と要素” を参照してください。
<annotation> 要素
<sequence> 要素 オプション。ゼロ個以上の <sequence> 要素内に、<flow> に必要なすべてのアクティビティを記述します。<sequence> 要素が指定されていない場合、<flow> によって実行されるアクションはありません。

説明

<flow> 要素は、その中に含まれる各要素が不定の順序で実行されることを指定します。<flow> 要素には 1 つまたは複数の <sequence> 要素が含まれます。これらの各 <sequence> 要素はスレッドと呼ばれます。

生成される BPL コードを調べるとわかるように、ビジネス・プロセス・デザイナを使用してビジネス・プロセスに <flow> 要素を追加すると、<sequence> 要素が <flow> 内に自動的に挿入されます。

<flow> 内のいずれかの <sequence> 要素を一時的に無効にする必要がある場合は、生成された BPL コードを編集して、対応する <sequence> 要素の disabled 属性を設定します。

以下のコードは <flow> 要素の使用例を示しています。この手動でコード化された BPL 例では、<flow> 内に 2 つの <sequence> が同レベルで配置されています。それぞれ、thread1thread2 という別々のスレッドで実行されます。

<process>
  <flow>
    <sequence name="thread1">
      <call name="A" />
      <call name="B" />
    </sequence>
    <sequence name="thread2">
      <call name="C" />
      <call name="A" />
    </sequence>
  </flow>
  <call name="E" />
</process>

この例では、<flow> 要素内に 2 つのスレッドが定義されており、それぞれ <sequence> 要素 thread1thread2 として指定されています。これら 2 つのスレッドが実行される順序は決まっていません (ただし、<sequence> 要素の内側にある <call> 要素は、この順序で実行されます)。

可能な場合、スレッドの実行は飛び越されます。例えば、あるスレッドの実行が中断された場合 (非同期呼び出しからの応答を待機している状態など) は、可能な場合は他のスレッドのいずれかが実行されます。

厳密には、<flow> 要素内の各スレッドは同時に実行されません。これは、並行性とデータの整合性を正しく維持するために、ビジネス・プロセスの実行コンテキストにアクセスできるスレッドを一度に 1 つのみとしているからです。

Note:

ビジネス・プロセス実行コンテキストの詳細は、このドキュメントの <assign> 要素と、"BPL プロセスの開発" を参照してください。

<flow> 要素は、内側にあるすべてのスレッドが完了するのを待ってから、実行を再開します。上の例では、両方のスレッドが完了した時点で実行が再開され、<call> 要素 E が実行されます。

<flow> 要素内のスレッドには、さらにネストされた <flow> 要素を含めることもできます。

<flow> 要素での <sync> の使用方法については、<sync> 要素の説明を参照してください。

FeedbackOpens in a new tab