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