Issue 1460: relationship_kind declaration issue (boca-rtf) Source: (, ) Nature: Revision Severity: Summary: Summary: Section 2.2.4 (BOCA Meta-Model in CDL) Another issue with the relationship_kind declarations: As mentioned above (issue 6), it is preferable to force relationship declarations to specify their multiplicity. Recommendation: Rather than declare default multiplicities for a relationship_kind, it would be better to declare, as invariant rules, appropriate constraints on the multiplicity for each relationship_kind. Resolution: Revised Text: As mentioned above (issue 6), it is preferable to force Actions taken: June 3, 1998: received issue June 23, 1998: closed issue Discussion: End of Annotations:===== *ISSUE 31* Section 2.2.4 (BOCA Meta-Model in CDL) [inverse_type=IsOwnedBy] relationship_kind Aggregates: BocaRelationshipReference{ {keyword="Aggregates"; // temporary multiplicity=MultiplicityKind(0..*); }; [is_locked] attribute boolean inherit_specification=FALSE; }; /* Composes */ [inverse_type=Aggregates] relationship_kind IsOwnedBy: BocaRelationshipReference{ {keyword="IsOwnedBy"; implicit_copy=TRUE; implicit_move=TRUE; }; [is_locked] relationship multiplicity Uses MultiplicityKind;// temporary =MultiplicityKind(1..1); [is_locked] attribute boolean implicit_delete=TRUE; }; /* ComposesComposite */ [inverse_type=IsPartOf] relationship_kind Composite: BocaRelationshipReference{ {keyword="Composite"; implicit_copy=TRUE; implicit_move=TRUE; }; [is_locked] relationship multiplicity Uses MultiplicityKind;// temporary =MultiplicityKind(1..1); }; /* Aggregates */ [inverse_type=Composite] relationship_kind IsPartOf: BocaRelationshipReference{ {keyword="IsPartOf"; // temporary multiplicity=MultiplicityKind(0..1); }; }; /* IsIn */ [inverse_type=Uses] relationship_kind Uses: BocaRelationshipReference{ {keyword="Uses"; // temporary multiplicity=MultiplicityKind(0..*); }; [is_locked] attribute boolean inherit_specification=FALSE; [is_locked] attribute boolean implicit_delete=FALSE; [is_locked] attribute boolean implicit_copy=FALSE; [is_locked] attribute boolean implicit_move=FALSE; }; /* Uses */ [inverse_type=Adapter] relationship_kind Adapter: BocaRelationshipReference{ {keyword="Adapter"; }; [is_locked] relationship multiplicity Uses MultiplicityKind;// temporary =MultiplicityKind(1..1); [is_locked] attribute boolean implicit_delete=TRUE; }; [inverse_type=HasRole] relationship_kind RoleOf: BocaRelationshipReference{ {keyword="RoleOf"; // temporary multiplicity=MultiplicityKind(1..1); inherit_specification=TRUE; }; [is_locked] attribute boolean implicit_delete=TRUE; }; [inverse_type=RoleOf] relationship_kind HasRole: BocaRelationshipReference{ {keyword="HasRole"; // temporary multiplicity=MultiplicityKind(0..1); }; [is_locked] attribute boolean inherit_specification=FALSE; }; The syntax for declaring the keyword is used for all of the relationship_kind declarations and differs from that used by BocaBusinessEntity, BocaBusinessProcess, BocaSubsystem, BocaDependent, BocaCommand, and BocaApplianceKind.