更新のロジック

更新のロジックは、以下のとおりです。

提供された配列に含まれる属性メタデータ定義ごとに、以下を行います。

  1. コンポーネントにバインドされた既存のメタデータと属性名が一致しない場合、allowCreate パラメーター値に基づいて以下を行ってください。
    1. True: 新しいメタデータ定義を作成します。createAttributeMetadata() 要求を使用した場合と機能的には同じです。
    2. False:AttributeNotFoundException をスローします。
  2. 属性メタデータのデータ型が異なる場合、InvalidAttributeException をスローします。
  3. 指定されたメタデータのフィールド値を使用して、既存の属性メタデータ定義の上書きを試行します。該当しない場合は、InvalidAttributeException をスローします。以下の更新だけがサポートされます (該当しない場合は、InvalidAttributeException をスローします)。
    1. name: 変更できません (name はキーです)。
    2. displayName: 新しい値を受け入れます。
    3. description: 新しい値を受け入れます。
    4. isRequired:true から false への変更のみを許可します。
    5. isInternal: 新しい値を受け入れます。
    6. isGenerated: 変更は許可されません。
    7. attributeTypeEnum: 変更は許可されません。
    8. accessTypeEnum: 新しい値を受け入れます。
    9. selectTypeEnum: オプションが指定された場合に以下の遷移を受け入れます。
      1. NONE から SINGLE_SELECT または MULTIPLE_SELECT へ
      2. SINGLE_SELECT から MULTIPLE_SELECT へ
    10. options: オプションは追加できますが、削除できません。次のオプションの変更だけがサポートされます (値の一致により)。
      1. displayName: 新しい値を受け入れます (変動はありません)。
      2. description: 新しい値を受け入れます (変動はありません)。
      3. isDefault: 新しい値を受け入れます。ただし、SelectTypeEnum と一致しなければなりません。
      4. value: 変更は許可されません (value はキーです)。
    11. defaultValue (フローチャートのみ): 新しいデフォルト値を受け入れます。
    12. maximumLength (テキストのみ): 新しい長さが大きければ受け入れます。
  4. 属性メタデータ定義が内部的に整合していない場合、InvalidAttributeException をスローします。
  5. 必要な場合、更新された属性メタデータを参照するすべてのコンポーネント・インスタンスを検索し、必要に応じて更新します。
注: 例外が生じた場合は、いずれの更新もコミットされません。

すべてのケースで、属性の更新操作は通常のセキュリティー制約および検証に従います。

createAttributeMetadata()deleteAttributeMetadata()を参照してください。