基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > ウィザードの作成 > ウィザード処理 > ソリューション > 複数のターゲットオブジェクトが含まれたウィザード
  
複数のターゲットオブジェクトが含まれたウィザード
サポートされているマルチオブジェクトウィザードのタイプは以下の 2 つです。
関連のないターゲットオブジェクトが複数含まれたウィザード
例: 複数部品の作成
関連するターゲットオブジェクトのツリーが含まれたウィザード
例: 変更通知とこれに関連する変更タスクの作成
オブジェクトに固有のデータは、そのオブジェクトのテーブル行か、そのオブジェクトのウィザードステップに含めてください。各行が作成される部品を表し、各列が部品の属性を表している表の例を以下に示します。
各ウィザードステップでは、以下のいずれかのデータタイプを表示する必要があります。
各行が異なるオブジェクトを表している表形式のデータ
作成されたオブジェクトのいずれか 1 つのみに固有のデータ
作成されたすべてのオブジェクトに共通のデータ
表形式でないかぎり、複数のオブジェクトについてオブジェクト固有のデータをステップに含めることはできません。
マルチオブジェクトウィザードでは、入力フィールドが適用されるオブジェクトは、HTML input フィールドの name 属性に埋め込まれた "objectHandle" によって識別されます。次に例を示します。
<input id="null1188140328133"
name="<someFieldIdString>!~objectHandle~newRowObj_430512131997223~!
<someAdditionalText>" value="" size="60" maxlength="60"
type="text">
上記の例の "newRowObj_430512131997223" はオブジェクトハンドル、"!~objectHandle~" は必須プリフィックス、"~!" は必須サフィックスです。オブジェクトハンドルが埋め込まれた HTML 名属性には任意の文字列を使用できます。オブジェクトハンドルは、文字列内のどの位置に配置しても構いません。
DefaultFormProcessorController は、フォームデータを ObjectBeans に読み込むと、必須プリフィックスおよびサフィックスを含むオブジェクトハンドルを名前属性から取り外し、その結果生成された文字列を、フォームデータパラメータマップの値のキーとして使用します。たとえば、上記の入力フィールドのフォーム値を取得するには、次のキーを使用して ObjectBean.getTextParameter() を呼び出します。
<someFieldIdString><someAdditionalText>
フレームワークは、以下のいずれかの方法に従って、name 属性内のオブジェクトハンドルを生成します。
オブジェクトのデータが表形式 (各行がオブジェクトを表し、各列がオブジェクトの属性を表す) で捕捉された場合、次のようにビルダーでテーブルコンフィギュレーションに rowBasedObjectHandle=true を設定すると、オブジェクトハンドルは動的に生成されます。
table.setRowBasedObjectHandle(true);
各行のオブジェクトハンドルはその行の OID に基づきます。
objectHandle = CreateAndEditWizBean.getNewObjectHandle(next.getOid().toString());
あるウィザードステップのすべてのデータが同じオブジェクトに関するものである場合は、ウィザードステップ操作について、そのオブジェクトのオブジェクトハンドルを指定します。
<jca:wizardStep action="setContextWizStep" type="object"
objectHandle="<your object handle string>"
ウィザードステップのデータが、作成されたすべてのオブジェクトに共通するものである場合は、入力フィールドについてオブジェクトハンドルを指定する必要はありません。ObjectBean 内のデータに関連付けられているオブジェクトハンドルには、ObjectBean.getObjectHandle() メソッドによってアクセスできます。FormProcessorController は、以下のセクションで説明するように、ObjectBeans を処理するためにプロセッサが呼び出される順序を制御します。以下の図では、ObjectBeans が円で表されています。同じタイプのオブジェクトを表す円には、同じシェードを付けています。