サブプロセスの使用
サブプロセスを使用してビジネス・プロセスを編成することができます。 サブプロセスにより、ビジネス・プロセスの機能領域をグループ化し、ビジネス・プロセスをよりわかりやすくすることもできます。
「プロセス」は、次のタイプのサブプロセスをサポートします:
-
再利用可能プロセス
-
組込み(インラインとも呼ばれる)サブプロセス
さらに、サブプロセスで複数インスタンスのマーカーを構成することもできます。
再利用可能プロセス(再利用可能サブプロセス)について
「プロセス」は、再利用可能なプロセスをサポートします。再利用可能なプロセスは、再利用可能なサブプロセスと呼ばれることもあります。 再利用可能なプロセスを使用すると、他のビジネス・プロセスから呼び出すことのできるビジネス・プロセスを作成できます。
たとえば、自分のすべてのビジネス・プロセスでクレジット・カードのチャージが必要な場合があり、クレジット・カードのチャージの再利用可能サブプロセスを作成できます。
再利用可能プロセスには次のような特徴があります。
-
1つの対象なし開始イベントで開始する必要があります。
-
複数の終了イベントを含めることができます。
-
他のビジネス・プロセスにより呼び出されることしかできません。
組込みサブプロセス(インライン・サブプロセス)について
組込みサブプロセスにより、フロー要素をグループ化し、ビジネス・プロセスをよりわかりやすくすることができます。 「プロセス」では、サブプロセスは埋め込みサブプロセスです。 サブプロセスは親サブプロセスの一部として含まれます。 組込みサブプロセスは、対象なし開始イベントで開始し、対象なし終了イベントで終了する必要があります。
組込みサブプロセスは展開することも折りたたむこともできます。 次に、折りたたまれたサブプロセスのプロセス・フロー内での表示例を示します。
次の図に、展開された組込みサブプロセスのプロセス・フロー内での表示例を示します。 組込みサブプロセスが展開されている場合、その中のフロー要素を編集できます。 組込みサブプロセス・ウィンドウの端をクリックおよびドラッグして、そのサイズを変更することもできます。
その他のタイプのビジネス・プロセスと同様に、組込みサブプロセスは開始および終了イベントを持ち、別のプロセス・フローを含むことができます。 組込みサブプロセスは、対象なし開始イベントで開始し、対象なし終了イベントで終了する必要があります。 組込みサブプロセスにはスイムレーンを含めることはできません。
組込みサブプロセスもアクティビティと似た動作をします。 これには受信および送信シーケンス・フローを含めることができます。 これには、組込みサブプロセス内で使用されるデータ・オブジェクトを定義するデータ関連付けも含まれます。
組込みサブプロセスには、タイマー、メッセージおよびエラー境界イベントも含めることができます。
必要に応じて、ビジネス・プロセスにネストされた組込みサブプロセスを含めることができます。 しかし、ネストされた組込みサブプロセスは、ビジネス・プロセスをよりわかりやすくするのに必要な場合にのみ使用します。
ノート:
組込みサブプロセスのデータ・オブジェクトの作成は、サポートされていません。組込みサブプロセスおよびシーケンス・フロー
組込みサブプロセス内のフロー要素には、サブプロセス外のフロー要素と接続するシーケンス・フローを含めることはできません。
その他のフロー要素と同様に、組込みサブプロセスには受信および送信シーケンス・フローが含まれます。
サブプロセスでのマルチインスタンス・マーカーの構成
マルチインスタンス・マーカーを使用すると、一連のデータの要素ごとにサブプロセスを実行できます。 マルチインスタンス・ループ・マーカーを持つサブプロセスが実行されると、一連のインスタンスのセットが作成されます。 これらのインスタンスを並列または順番に処理するように、マルチインスタンス・マーカーを構成できます。
たとえば、従業員のグループの出張依頼の作成、チームの事務用品のオーダーなど、反復プロセスでマルチインスタンス・マーカーを使用できます。 従業員ごとに1つのインスタンスが複数作成され、個々のリクエストが作成され、承認者に転送されます。 これらのインスタンスは、順番に実行するように構成することも、並列に実行することもできます。
複数インスタンス・マーカーが使用されている場合は、サブプロセス上に同じもののインジケータが表示され、2つの白い円は順次実行を示し、2つの縦の白色の線はパラレル実行を示します。
![]()
サブプロセスでマルチインスタンス・マーカーを構成するには:
-
サブプロセスをクリックします。
-
「プロパティ」を選択します。 「実装」ペインが表示されます。
-
反復サイクルで「複数のインスタンスを生成」を選択します。
-
インスタンスを管理する方法を選択します:
-
順次: 次のインスタンスがサブプロセスの実行を開始する前に、各インスタンスがサブプロセスを完了する必要があることを指定する場合に選択します。
-
パラレル: すべてのインスタンスが並行して実行されるように指定する場合に選択します。
-
-
入力する入力のタイプを指定します:
-
条件: 入力が配列でない場合は、条件を選択して、サブプロセスを実行する回数を指定します。
-
隣接する式領域に、基数を指定する数値を入力します。 データ・オブジェクトまたはシンプルな式を入力して、同じものを指定することもできます。 Expression Editorウィンドウを起動するには、「式の編集」ボタンをクリックします。
-
-
配列: 要素の配列を入力として入力する場合に選択します。
-
入力式フィールドに、サブプロセスによって消費される配列を入力します。 データ・エディタ・ウィンドウを使用して、データ・オブジェクトを選択したり、簡単な式を作成したりすることができます。 一般に、選択されたデータ・オブジェクトはアイテムの集まりです。
-
出力式フィールドに、サブプロセスの結果を格納する配列を入力します。
-
-
-
オプションで、完了条件を指定してインスタンスの実行を終了できます。
-
「サブプロセス・インスタンスの実行を終了する条件を定義」チェックボックスを選択します。
-
結果の式フィールドに、簡単な式で完了条件を入力します。
-
ノート:
-
サブプロセス・レベルでは、(任意のタイプの)データ・オブジェクトを、そのサブプロセスの実行に限定してスコープとともに追加することができます。 このようなデータ・オブジェクトは、特にパラレル実行時に、すべてのインスタンスの実行後にデータのローカル・コピーを保持し、それらをマージするのに役立ちます。
-
各インスタンスのデータ・オブジェクトをフェッチするために使用されるXPath式では、インデックスが'0'からではなく'1'から始まることを確認します。
重要:
別のプロセスの複数のインスタンスを起動するサブプロセスがある場合、親プロセスによってトリガーされたこれらの子インスタンスを中止すると、同じフロー内のすべての子インスタンスが中止されます。
事前定義済変数
以下の事前定義済みの変数は、複数インスタンスのサブプロセスで使用できます。 マルチインスタンス・サブプロセス内のデータ通信は、これらの変数を使用して行われます。
| 名前 | データ型 | 説明 | MIアレイで利用できますか? | MI条件に使用できますか? |
|---|---|---|---|---|
|
loopCounter |
int |
反復のシーケンス番号。 |
Yes |
Yes |
|
numberOfInstances |
int |
インスタンスの総数。 |
Yes |
Yes |
|
numberOfActiveInstances |
int |
アクティブなインスタンスの総数。 |
Yes |
Yes |
|
numberOfCompletedInstances |
int |
完了したインスタンスの合計数。 |
Yes |
Yes |
|
numberOfTerminatedInstances |
int |
終了したインスタンスの合計数。 |
Yes |
Yes |
|
loopDataInput |
string[] |
マルチインスタンス・サブプロセスへの入力として渡される配列の参照。 |
Yes |
No |
|
inputDataItem |
string |
|
Yes |
No |
|
loopDataOutput |
string[] |
マルチインスタンス・サブプロセスの出力として渡される配列の参照。 |
Yes |
No |
|
outputDataItem |
string |
マルチインスタンス・サブプロセスの出力として渡される |
Yes |
No |
ノート:
事前定義された変数では、変換はサポートされていません。

