
BPEL プロセス・インスタンスの状態遷移図
プロセスは、プロセス・インスタンスのライフサイクル中に重要なイベントが生じるたびに状態が変化します。例えば、API 要求によって、実行状態のプロセスが中断状態にされる、などです。 状態遷移図には、プロセスのライフサイクル中に発生する可能性がある状態遷移が示されます。Microflow と長期実行プロセスでは、 状態遷移図が異なります。
以下の図で使用される規則
| シンボル | 説明 |
|---|---|
![]() |
過渡状態。このような状態は表示されません。 |
![]() |
永続状態。 |
![]() |
過渡の終了状態。 |
![]() |
永続の終了状態。 |
![]() |
Business Flow Manager によって自動的にトリガーされる状態遷移。 |
![]() |
API を使用した外部対話の結果である状態遷移。 |
![]() |
Business Flow Manager によって制御される状態遷移、または API を使用した外部対話の結果である状態遷移。 |
Microflow インスタンスの状態遷移図
Microflow はステートレスと見なされます。これは、プロセスが常にトランザクション内で実行され、インスタンス情報がプロセス・インスタンスのナビゲート用に保持されないためです。ただし、プロセス定義、および Business Flow Manager の構成方法によっては、Microflow の状態を Common Base Event または監査ログ内に公開することができます。
次の図は、Microflow インスタンスの状態を示しています。
プロセス・インスタンスの正常な開始後、プロセス・インスタンスが到達する最初のプロセス状態は実行状態です (1)。プロセス・インスタンスが通常どおり最後まで実行されて完了すると、プロセス状態は実行から完了に変化します (2)。フォールトがプロセス境界に到達すると、プロセスはフォールト状態になります (3)。フォールト・ハンドラーの実行中は、プロセスはフォールト状態のままです。このあと、プロセス・インスタンスは失敗状態になります (4)。
これらのすべての状態遷移は、Business Flow Manager によってトリガーされます。Microflow が開始すると、これらの自動ステップを操作することはできません。
長期実行プロセス・インスタンスの状態遷移図

実行状態、終了状態、障害状態、失敗状態、およびそれらの間の状態遷移は、Microflow のものと同じです。
プロセス・インスタンスは、外部要求または強制終了アクティビティーのいずれかによって強制終了されます。プロセス・インスタンスの終了は複数のナビゲーション・ステップで構成されることがあり、例えば長期実行アクティビティーまたはサブプロセスを強制終了するために、複数のチェーニングされたトランザクションになる可能性があります。この強制終了フェーズ時に、プロセス・インスタンスは強制終了中状態になります (5)、(14)、(18)。プロセスの長期実行部分がすべて終了すると、プロセス・インスタンスの状態も強制終了に変わります (6)。
子プロセスが正常に終了し、親プロセスがその後に失敗する場合は、子プロセスを補正できます。補正される間、子プロセスは補正中状態になります (7)。補正が正常に終了すると、子プロセスは補正済み状態になります (8)。補正が正常に終了しない場合は、子プロセスが補正の失敗状態になります (9)。これらの状態トランザクションは、親プロセスによって自動的に開始されます。
プロセス・インスタンスのナビゲーションがまだアクティブである場合、つまり実行状態または障害状態である場合、API 要求を使用して中断状態にすることができます。この状態は、指定した時間の経過後、または再開要求によって、再アクティブ化できます。 プロセスの状態は、中断要求によって実行または障害から中断に (11)、(12)、再開要求によって中断から実行または障害に (10)、(13) 変化します。中断状態のプロセスも強制終了される場合があります (14)。最上位プロセス・インスタンスのみを中断および再開できます。 ただし、中断または再開状態は子プロセスに伝搬されます。
プロセスが終了状態のいずれか (終了、強制終了、または失敗) に到達した場合は、再始動 API 要求によってもう一度開始できます (15)、(16)、(17)。 最上位プロセス・インスタンスのみを再開できる一方で、補正できるのは子プロセス・インスタンスのみです。
プロセス・インスタンスは、終了状態に到達すると削除できます (19)。プロセスは、 「完了時に自動的に削除する (automatically delete on completion)」属性を設定して自動的に削除することも、 明示的な削除要求によって削除をトリガーすることもできます。






