サブプロセスのライフ・サイクル管理とバージョン管理の振る舞い

別のプロセスによって開始されたプロセスをサブプロセスといいます。 サブプロセスのライフ・サイクルの管理が可能な方法と、サブプロセスのバージョン管理の振る舞いは、プロセスのモデル化方法によって異なります。

モジュール性と再利用性を高めるため、多くの場合、カプセル化のプログラミング概念をビジネス・プロセス・モデリングに適用することには意味があります。すなわち、ビジネス・ロジックの 1 つ以上のステップを個別のプロセスとしてインプリメントし、このプロセスをメイン・プロセスから呼び出すのです。サブプロセスもまた、別のプロセスを開始することができます。 これにより、不特定な深さのプロセス・インスタンスの階層が生じます。これらのプロセスをデプロイする場合は、プロセス間リレーションシップのプロセス・テンプレートのすべてを、同じ Business Process Choreographer データベースにデプロイする必要があります。

ライフ・サイクル管理

サブプロセスは、呼び出しプロセスと、対等リレーションシップか親子リレーションシップにあります。このリレーションシップにより、呼び出しプロセスのプロセス・ライフ・サイクルを管理するアクションが呼び出されたときのサブプロセスの振る舞いが決まります。ライフ・サイクルのアクションは、中断、再開、終了、削除、および補正で構成されます。プロセスのライフ・サイクルを管理するアクションは、トップレベルのプロセス・インスタンスでのみ実行可能です。

呼び出しプロセス対サブプロセスのリレーションシップは、サブプロセスの autonomy 属性によって判別されます。この属性の値は、次の値のいずれかになります。
peer
対等プロセスは、トップレベル・プロセスと見なされます。トップレベル・プロセスは、別のプロセス・インスタンスによって呼び出されていないか、別のプロセス・インスタンスによって呼び出されたプロセス・インスタンスですが、autonomy 属性の値は peer です。サブプロセスが対等リレーションシップの一部になっている場合、呼び出しプロセス・インスタンスのライフ・サイクル・アクションは、サブプロセス・インスタンスに適用されません。

ただし、片方向インターフェースをインプリメントする作成オペレーションを伴う長期実行プロセスの場合は、実行時に autonomy 属性の値が自動的に peer に設定されます。autonomy 属性を child に設定すると、この値は実行時に無視されます。

child
サブプロセスが親子リレーションシップの一部になっている場合、親プロセス・インスタンスのライフ・サイクル・アクションは、サブプロセス・インスタンスに適用されます。例えば、親プロセス・インスタンスが中断されると、autonomy 属性が child のサブプロセス・インスタンスもすべて中断されます。

Microflow はいつでも子プロセスとして実行されます。ただし、2 つのプロセスの間に別のコンポーネントがある場合、例えば、2 つのプロセス・コンポーネントの間を接続しているインターフェース・マップ・コンポーネントなどは、親子関係の確立を妨げることがあります。

バージョン管理の振る舞い

使用されるプロセスのバージョンは、早期バインディングのシナリオと実行時バインディングのシナリオのどちらでプロセスが使用されるかによって決まります。
早期バインディング
早期バインディングのシナリオでは、呼び出されるサブプロセスのバージョンはデプロイメント中に決定されます。呼び出しプロセスは、Service Component Architecture (SCA) ワイヤリングに従って、静的にバインドされた専用のサブプロセスを呼び出します。プロセスのバージョン管理は無視されます。

早期バインディングの例は SCA ワイヤーです。例えば、スタンドアロン参照をプロセス・コンポーネントに結びつけると、この参照を使用するプロセスの呼び出しはすべて、プロセス・コンポーネントによって表される特定のバージョンを対象とします。

実行時バインディング
実行時バインディングのシナリオでは、呼び出されるサブプロセス・テンプレートの決定は、呼び出しプロセス・インスタンスでサブプロセスを呼び出す必要が生じたときに行われます。 この場合は、現行で有効なサブプロセスのバージョンが使用されます。 プロセスの新しいバージョンが、そのプロセスの以前のバージョンのどれよりも優先されます。既存のプロセス・インスタンスは、開始時に関連付けられたプロセス・テンプレートを使って、継続して実行されます。これにより、プロセス・テンプレートは次のカテゴリーに分けられます。
  • 既に最新ではなくても、既存の長期実行プロセス・インスタンスにとっては有効なプロセス・テンプレート
  • 新規プロセス・インスタンスで使用される現行のプロセス・テンプレート
  • 有効開始日時に従って将来的に有効になるプロセス・テンプレート

サブプロセスの呼び出し時に実行時バインディングを適用するため、親プロセスは、参照パートナーで有効なサブプロセスが選択されるときの選択元となるサブプロセス・テンプレートの名前を指定する必要があります。プロセスの有効開始属性を使用して、現行で有効なサブプロセス・テンプレートが判別されます。 SCA ワイヤリングはどれも無視されます。

実行時バインディングの例は、Business Process Choreographer Explorer で新規プロセスが呼び出される場合です。作成されるインスタンスはいつでも、有効開始日付が将来ではないプロセス・テンプレートの最新バージョンに基づいています。

新規バージョンのプロセス・モデルが作成されて、既存のプロセス・モデルが実行時バインディング・シナリオで使用されるとき、変更を行うことは避けてください。変更を行うと、新規バージョンのプロセスが有効になり、例えば、親プロセスが新規バージョンのサブプロセスのインスタンスを起動したときに、互換性の問題をもたらすことがあります。以下は、避ける必要のある非互換の変更です。
  • 相関セットの変更
  • 親プロセスがサブプロセスと通信するために使用するインターフェースの変更

(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。