イテレーターは、ループまたは反復を実装するサブダイアグラムの特殊な形式です。
イテレーターをループとして使用することもできます。ループの初期化、テスト、増分に必要な値を指定するには、「Iterator Properties」ダイアログ・ボックスを使用します。
イテレーター・ダイアグラムは、サブダイアグラムまたはその他のイテレーターを呼び出すことができます。階層ビジネス・オブジェクトまたは階層ビジネス・オブジェクト配列を処理するには、イテレーターの階層が必要です。
親ダイアログの実行がイテレーター・シンボルに到達すると、制御がイテレーター・アクティビティー・ダイアグラムに渡されます。コラボレーションは、ビジネス・オブジェクトの各属性またはビジネス・オブジェクト配列内の各ビジネス・オブジェクトに対してイテレーター・ダイアグラムの実行を繰り返します。「Iterator Properties」ダイアログに指定されているイテレーター変数を介して、現在イテレーター内にある項目にアクセスできます。
イテレーターの実行が完了すると、制御は親ダイアグラムに渡されます。
イテレーターをアクティビティー・ダイアグラムに追加する手順は、以下のとおりです。
シナリオ・ツリーで、イテレーターの固有 ID が親ダイアグラムの下に階層的に配置された状態で表示されます。シナリオ・ツリーでは、名前が以下のフォーマットで表示されます。
(UID)
イテレーターにラベルを使用する場合、シナリオ・ツリーでは、名前が以下のフォーマットで表示されます。
label (UID)
UID は、シナリオ・ツリー内のイテレーター・オブジェクトの名前でもある固有 ID です。
その他のシンボルの UID のように、イテレーターの UID を表示するかどうかを選択できます。UID の表示のオン/オフを切り替えるには、テンプレート・ツリーのシナリオ・ノードのコンテキスト・メニューを使用します。
ビジネス・オブジェクトの配列またはビジネス・オブジェクトの属性を処理するイテレーターには、反復で処理される項目を保持する変数が設定されている必要があります。このイテレーター変数は、実際に「シナリオ定義」ダイアログ・ボックスで作成され、初期化されるシナリオ変数です。イテレーターのプロパティーを定義する前にイテレーター変数を作成してください。
イテレーターがビジネス・オブジェクトの属性を処理する場合は、Object を使用して現在の属性を保持できます。例えば、以下のように宣言できます。
Object iterAttr = null;
イテレーターが配列内のビジネス・オブジェクトを処理する場合は、タイプ BusObj の変数を使用して現在のビジネス・オブジェクトを保持できます。以下に例を示します。
BusObj iterBusObj = new BusObj("LineItem");
イテレーターがループとして使用される場合には、イテレーター変数を作成する必要はありません。処理中にシステムによりイテレーター変数が自動的に作成されます。ループ索引変数は getCurrentLoopIndex() API を使用して検索できます。
イテレーターがアクティビティー・ダイアグラムに表示されたら、「Iterator Properties」ダイアログ・ボックスでそのプロパティーを定義できます (図 45 を参照)。
図 45. 「Iterator Properties」ダイアログ・ボックス
「Iterator Properties」ダイアログ・ボックスを開くには、イテレーターを右マウス・ボタンでクリックし、コンテキスト・メニューから「プロパティー」を選択します。イテレーターのラベルを定義し、説明を入力できます。ラベル定義と説明入力のプロパティーはオプションです。使用するイテレーターのタイプによっては、他のプロパティーも定義する必要があります。以降のセクションでは、各タイプのイテレーターを定義する際の要件について説明します。
ビジネス・オブジェクトの属性を繰り返し操作するには、以下の手順を実行します。
イテレーターのプロパティーを定義したら、次にそのアクティビティー・ダイアグラムを編集し、処理対象の各属性に対するイテレーターの処理内容を定義する必要があります。イテレーターのアクティビティー・ダイアグラムを開くには、Process Designer Express のテンプレート・ツリー・ビューでイテレーター名をダブルクリックします。
配列のビジネス・オブジェクトを繰り返し操作するには、以下の手順を実行します。
フィールドに値を直接入力する場合には以下の構文を使用してください。
BusinessObjectVariable.AttributeName
BusinessObjectVariable は親ビジネス・オブジェクトの名前、AttributeName は子ビジネス・オブジェクトの配列を示す属性の名前です。
例えば、変数 order に含まれるビジネス・オブジェクトの Item 属性によって示される配列のビジネス・オブジェクトを繰り返すには、「この配列全体について繰り返す」フィールドに order.Items と入力します。
イテレーターのプロパティーを定義したら、次にそのアクティビティー・ダイアグラムを編集し、処理対象の各ビジネス・オブジェクトに対するイテレーターの処理内容を定義する必要があります。イテレーターのアクティビティー・ダイアグラムを開くには、Process Designer Express のテンプレート・ツリー・ビューでイテレーター名をダブルクリックします。
ループを定義する手順は、以下のとおりです。
イテレーターのプロパティーを定義したら、次にそのアクティビティー・ダイアグラムを編集し、処理対象の各属性または各ビジネス・オブジェクトに対するイテレーターの処理内容を定義する必要があります。イテレーターのアクティビティー・ダイアグラムを開くには、Process Designer Express のテンプレート・ツリー・ビューでイテレーター名をダブルクリックします。
イテレーターのアクティビティー・ダイアグラムにブレークを追加すると、反復が強制的に早期終了されます。イテレーターの実行経路がブレーク・シンボルに到達すると、イテレーターが終了し、制御が親ダイアグラムに渡されます。ブレークはすべてのタイプのイテレーターに使用できます。
イテレーターのアクティビティー・ダイアグラムに、以下のようにブレーク・シンボルを配置します。
必要に応じて、ブレーク・シンボルにラベルと説明を追加できます。「Break Properties」ダイアログ・ボックスを表示してプロパティーを編集するには、アクティビティー・ダイアグラムのブレーク・シンボルをダブルクリックします。