Issue 3952: Link definition is broken (negotiation-ftf) Source: OSM (Mr. Stephen McConnell, mcconnell@osm.net) Nature: Revision Severity: Critical Summary: The definition of a Link (a relationship declaration) under Task and Session formal/00-05-03 is in the form of a struct containing an object reference and relationship type identifier. These identifiers are declared as constants within the Session module. This change to Task and Session between bom/98-07-05 and the current formal/00-05-03 specification effectively breaks the Negotiation model of relationship extension. Restoration of module independent extension of Links is possible if the current Link declaration is replaced with an extendable valuetype definition Resolution: see below Revised Text: The Link struct shall be replaced with the following abstract valuetype. abstract valuetype Link { AbstractResource resource( ); }; The following convenience operation has been added to enable access to a tag value indicating the role of a particular association instance in a usage relationship. abstract interface Tagged { CORBA::StringValue tag( ); }; Relationships families such as usage, ownership, etc. documented under the Task and Session specification and defined through constant integer declarations shall be replaced by the following abstract valuetype definitions. abstract valuetype Containment : Link{ }; abstract valuetype Privilege : Link{ }; abstract valuetype Access : Privilege { }; abstract valuetype Ownership : Privilege { }; abstract valuetype Usage : Link supports Tagged { }; abstract valuetype Consumption : Usage{ }; abstract valuetype Production : Usage{ }; abstract valuetype Execution : Link{ }; The following valuetype definitions replace the constant integer values used to define a particular association type. valuetype Consumes : Consumption { public AbstractResource resource; public CORBA::StringValue tag; }; valuetype ConsumedBy : Consumption { public Task resource; public CORBA::StringValue tag; }; valuetype Produces : Production { public AbstractResource resource; public CORBA::StringValue tag; }; valuetype ProducedBy : Production { public Task resource; public CORBA::StringValue tag; }; valuetype Collects : Containment { public AbstractResource resource; }; valuetype CollectedBy : Containment { public Workspace resource; }; valuetype ComposedOf : Collects { }; valuetype IsPartOf : CollectedBy { }; valuetype Accesses : Access { public Workspace resource; };valuetype AccessedBy : Access { public User resource; }; valuetype Administers : Accesses { }; valuetype AdministeredBy : AccessedBy { }; valuetype Owns : Ownership { public Task resource; }; valuetype OwnedBy : Ownership { public User resource; }; Link related operations defined under Session::AbstractResource have been updated to reflect the revision of the Link definition from struct to valuetype, enabling improvements in implementation flexibility when dealing with link navigation queries. // from Session::AbstractResource short count( in CORBA::TypeCode type ); LinkIterator expand ( in CORBA::TypeCode type, in long max_number, out Links seq ); Implementation Impact From an implementation point of view the above changes represent a moderate impact. Exiting systems will be required to rebuild implementations of the bind, replace, release and expand operations on AbstractResource. Previous assessment of a link type using constant values must be replaced by a test for type equivalence as distinct from explicit knowledge of constant LinkKind integer values. Interface Impact The proposed changes break existing interfaces through the replacement of the Link struct with an abstract valuetype and a family of concrete valuetype. This revision is fully consistent with the abstract and concrete link model implied under the current specification and consistent with intent expressed section 2.5.3 Technical Note of formal/00-05-03. Actions taken: October 16, 2000: received issue February 27, 2001: closed issue Discussion: Resolution: Retract constant LinkKind declarations and replace Link struct with a valuetype and set of derived valuetypes. Proposed IDL replacement detailed below: valuetype BooleanValue boolean; valuetype Link { public AbstractResource resource; public BooleanValue primary; }; valuetype Usage : truncatable Link { public CORBA::StringValue tag; }; valuetype Consumption : truncatable Usage { }; valuetype Production : truncatable Usage { }; valuetype Collection : truncatable Link { }; valuetype Containment : truncatable Collection { }; valuetype Rights : truncatable Link { }; valuetype Access : truncatable Rights { }; valuetype Administration : truncatable Access { }; valuetype Execution : truncatable Rights { }; valuetype Ownership : truncatable Rights { }; Revised Text: Refer to http://www.osm.net/upload/omg-2000-10-15.pdf, section 1.3 "Link Revision".Detailed editorial and IDL changes are included under section 9 “Changes to the adopted Task and Session Specification” of the finalized CommunityFramework specification under document number EC/2000-11-14. End of Annotations:===== From: "Stephen McConnell" To: Cc: , "Abdul Akram Ph. D." , "Sanjeev Goyal" , "Dave Zenie" , "Ed Barkmeyer" Subject: ISSUES: Negotiation FTP Date: Sun, 15 Oct 2000 15:07:22 +0200 Message-ID: <000101c036a8$db367a00$0a01a8c0@osm.net> MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.00.0810.800 Content-Type: text/plain; charset="Windows-1252" X-UIDL: \d=e9l^hd9WZi!!~"U!! Juergen: The following issues are raised following implementation of the modules defined under the Negotiation RFP Final Submission dtc/99-07-03 while incorporation changes supporting rationalisation against Task and Session interfaces as defined under formal/2000-05-02. Cheers, Steve. Issue (3): Link definition is broken =================================== Nature: Broken interface Severity: high Summary: The definition of a Link (a relationship declaration) under Task and Session formal/00-05-03 is in the form of a struct containing an object reference and relationship type identifier. These identifiers are declared as constants within the Session module. This change to Task and Session between bom/98-07-05 and the current formal/00-05-03 specification effectively breaks the Negotiation model of relationship extension. Restoration of module independent extension of Links is possible if the current Link declaration is replaced with an extendable valuetype definition. Resolution: Retract constant LinkKind declarations and replace Link struct with a valuetype and set of derived valuetypes. Proposed IDL replacement detailed below: valuetype BooleanValue boolean; valuetype Link { public AbstractResource resource; public BooleanValue primary; }; valuetype Usage : truncatable Link { public CORBA::StringValue tag; }; valuetype Consumption : truncatable Usage { }; valuetype Production : truncatable Usage { }; valuetype Collection : truncatable Link { }; valuetype Containment : truncatable Collection { }; valuetype Rights : truncatable Link { }; valuetype Access : truncatable Rights { }; valuetype Administration : truncatable Access { }; valuetype Execution : truncatable Rights { }; valuetype Ownership : truncatable Rights { }; Revised Text: Refer to http://www.osm.net/upload/omg-2000-10-15.pdf, section 1.3 "Link Revision".