Issue 3026: The Node class issue(s) (partyman-fac-rtf) Source: Gazebo Software Solutions (Mr. Robert Mickley, ) Nature: Uncategorized Issue Severity: Summary: The Node class is currently derived from CommonObject. This class is a base class for Party and supports interfaces for parties to ask about the roles they are involved in. There are two issues with this design. The first issue is that these interfaces are not supported by PartyRole or PartyRelationship. This has the effect of not allowing PartyRoles to have Roles. As an example, an employee is a role a person plays in its relationship with a company. A manager is role an employee plays in relation to it's department. This would be a role of a role. To support this, the PartyRole (and the PartyRelationship as well) should have the Node interfaces available as well. Resolution: Revised Text: Actions taken: November 12, 1999: received issue Discussion: End of Annotations:===== Issue: The Node class is currently derived from CommonObject. This class is a base class for Party and supports interfaces for parties to ask about the roles they are involved in. There are two issues with this design. The first issue is that these interfaces are not supported by PartyRole or PartyRelationship. This has the effect of not allowing PartyRoles to have Roles. As an example, an employee is a role a person plays in its relationship with a company. A manager is role an employee plays in relation to it's department. This would be a role of a role. To support this, the PartyRole (and the PartyRelationship as well) should have the Node interfaces available as well. Suggested Action: Break out the Node interface into an independent mix-in class. Party will use multiple inheritance to get CommonObject and the Node interface. This will create no functional differences for Party. Then, mulitply derive Role from CommonContainer as well as Node. This allows PartyRole and PartyRelationship to support roles. If this change is made, there will need to be some small interface chances to a couple of the interfaces of Role. For example, how does the get_primary_object interface react when a role of a role is modeled. Some changes will need to be made to make sure the specification is clear for things like that.