コンフィギュレーション仕様のカスタマイズでの MultiValued 属性の使用
このセクションでは、コンフィギュレーション仕様をカスタマイズするときに MultiValued 属性を使用する方法について説明します。
属性の定義
カスタマイズのための属性を定義するには、次の手順を実行します。
1. タイプマネージャで「カスタムコンフィギュレーション仕様」管理タイプをサーチします。
2. effRange グローバル属性をサーチし、SingleValued 制約を削除して MultiValued にします。
| カスタマイズで異なるグローバル属性を使用する場合は、次の手順のカスタマイズ例で適切な変更を行ってください。 |
ロジックの実装
1. MultiValued 属性が処理されるように、委任内の setAttributesMap メソッドに変更を加えます。MultiValued 属性の値は配列で渡されます。
@Override
public void setAttributesMap(Map<String, CustomConfigSpecAttribute> attributesMap) {
effContextRef = (ObjectReference) attributesMap.get(EFF_CONTEXT).getValue();
inputTimestamp = (Timestamp) attributesMap.get(EFF_DATE).getValue();
String[] effRanges = (String[]) attributesMap.get(EFF_RANGE).getValue();
if(effRanges != null && effRanges.length > 1) {
this.effRangeStr = effRanges[0] + " - " + effRanges[effRanges.length-1];
}
}
配列の最初の要素が開始範囲、最後の要素が終了範囲と見なされます。このカスタマイズは、この範囲内で定義されているシリアルエフェクティビティを持つ部品をサーチします。
2. この例をコンパイルして、ソースコードに変更を適用します。
結果
作成したカスタマイズは、シリアルエフェクティビティに基づいて部品をバージョンに解決します。これが正しく機能するかどうかをテストするには、構造内の部品の一部のリビジョンにシリアルエフェクティビティを追加します。次に、CustomConfigSpec を使用して、入力として指定されたエフェクティビティのコンテキストおよび範囲に基づいて、それが構造を正しいバージョンに解決するかどうかを確認します。
1. 部品のシリアルエフェクティビティを作成します。
2. CustomConfigSpec を作成します。構造ルートをエフェクティビティのコンテキストとして使用します。この例では、GOLF_CART です。
3. 「フィルタを編集」ウィンドウの「OK」をクリックして、コンフィギュレーション仕様を適用します。ステップ 2 で渡された範囲内にシリアルエフェクティビティが存在する場合は、シリアルエフェクティビティを作成した部品がバージョンに解決されます。