循環依存
カスケード属性規則の
「THEN」節に選択した属性 (被駆動属性) が、同じ規則の
「IF」または
「AND IF」条件に選択した 1 つ以上の属性を直接的または間接的に駆動する場合、循環依存が生じます。つまり、別のカスケード属性規則 (カスケード属性規則のチェーン) が存在し、その規則に被駆動属性として設定しようとしている属性が、ドライバー属性として設定しようとしている 1 つ以上の属性をすでに駆動しています。これらの既存の規則は、現在のタイプに作成されたローカル規則である場合と、
親タイプから継承された規則である場合があります。
循環依存が生じるような、現在のタイプへの規則の新規作成や既存の規則の編集は許可されません。
サブタイプに循環依存が生じるような、親タイプでの規則の新規作成と既存の規則の編集は防止されません。この場合、サブタイプの「カスケード属性」タブを次回に表示したときに、循環依存が存在することを警告するメッセージが表示されます。サブタイプをこれらの事実上の循環依存とともに保存できます。
|
親タイプの規則に変更を加えた場合には必ず、継承された規則が有効になっているすべてのサブタイプでそれらの規則が意図したとおりに表示されているかどうかを確認します。必要に応じて、これらのサブタイプで規則を修正します。
|
たとえば、サブタイプに次のカスケード属性規則が作成されているとします。
• If Country=USA, then State=Arizona, Colorado, Florida
• If State=Arizona, then City=Avondale, Bisbee, Douglas
親タイプに次のカスケード属性規則を作成すると、循環依存が生じます。
• If City= Bisbee, then Country=USA
現在のタイプに循環依存がある場合、
「属性セットレポート」は実行できません。
継承された規則によって生じた循環依存を解決するには、次のいずれかの操作を行います。
• サブタイプにローカルに作成された規則を更新または削除することで循環依存を解決します。
• サブタイプでの循環依存の原因となっている親タイプに作成された規則を更新または削除します。タイプは階層が深いことがあるため、問題のある規則は、直接の親タイプだけでなく、タイプの階層内でそのサブタイプよりいくつも上の階層にある祖先タイプに存在する可能性があります。