Issues for Negotiation Facility FTF mailing list
To comment on any of these issues, send email to negotiation-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.
List of issues (green=resolved, yellow=pending Board vote, red=unresolved)
Issue 3580: Cannot attribute an additional MemberKind to an exiting Member
Issue 3950: Multiple Consumer association to Community and Collaboration types
Issue 3951: Accessibility of external definitions
Issue 3952: Link definition is broken
Issue 3956: Community and Collaboration models severely broken.
Issue 3957: Improvement needed on Membership textual description.
Issue 3958: Duplicate inheritance in Membership interface
Issue 3959: Improvement needed on Membership textual description.
Issue 3960: Separation of Membership versus Role policy required.
Issue 3980: Separation of Collaboration from Encounter inheritance.
Issue 3580: Cannot attribute an additional MemberKind to an exiting Member (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Uncategorized Issue
Severity:
Summary:
Problem: Under the Community::Membership interface there are operations to add members to a membership under a specific business role. There are also operations supporting the removal of a business role of an existing member. The approach to the addition of a supplementary business roles is through the operation add_kind_of_member, however, this is ambiguous when the exclusivity policy is set to false (as the client may be adding a Member instance as a new member or adding a MemberKind to an existing Member). Propose elimination of the inconsistency by restricting the semantics of add_kind_of_member to new Member instance creation, and supplementing the Membership interface with an additional operation add_kind for attribution of MemberKind roles to an existing Member instance.
Resolution:
Revised Text: Membership has been redefined as an abstract interface. Association of a membership model
and the membership object has been clarified through the addition of an explicit abstract
Simulator interface.
The add_member operation is renamed to join, remove_member operation renamed to leave,
addition of add_roles and remove_roles for role modification. Specification of join restricted to
association of a user and does not support role modification. Role modification enabled under
the add_roles and remove_roles operations. Additional operations are added supporting access
to the role to user associations and member listing (influenced by 3950 and 3952).
Member join
in Session::User user,
in Labels roles
) raises (
AttemptedCeilingViolation,
AttemptedExclusivityViolation,
RecruitmentConflict,
RoleAssociationConflict,
MembershipRejected,
UnknownRole
);
void leave(
in CommunityFramework::Member member
) raises (
RecruitmentConflict,
UnknownMember
);
void add_roles(
in CommunityFramework::Member member,
in Labels roles
) raises (UnknownMember,
RoleAssociationConflict,
UnknownRole
);
void remove_roles(
in CommunityFramework::Member member,
in Labels roles
) raises (
UnknownRole,
UnknownMember,
CannotRemoveRole
);
Actions taken:
April 24, 2000: received issue
February 27, 2001: closed issue
Discussion: Additional operations provided to support association and retraction of business roles.
Existing operations renamed to improve clarity. Specification of Membership operations
have been substantially updated – refer section 3 and 4 of CommunityFramework,
EC/2000-11-14.
Issue 3950: Multiple Consumer association to Community and Collaboration types (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature:
Severity: Significant
Summary: The revised Task and Session specification of BaseBusinessObject
includes inheritance of the CosNotifyComm StructuredPushConsumer
and StructuredPushSupplier interfaces. The semantics of
StructuredPushSupplier implies association to a single
StructuredProxyPushConsumer, however, the BaseBusinessObject
interface is intended to support multiple concurrent consumers from
potentially different business domains without mandating nor
excluding the use of Notification channels as an implementation
mechanisms. To enable the documented behaviour an explicit factory
operation is required through which a StructuredPushSupplier
reference can be exposed for a given consumer. This behaviour is
required to support association of multiple consumers under the
Community and Collaboration interfaces. Current inherited behaviour
restricts association of event channels to local implementations
which inconsistent with the stated semantics.
Resolution: see below
Revised Text: Definition of an identifiable event consumer, exposed as an argument to the add_consumer
operation on Session::BaseBusinessObject.
interface IdentifiableDomainConsumer :
Session::IdentifiableDomainObject,
CosNotifyComm::StructuredPushConsumer
{
};
Convenience declaration of a TimeBase::UtcT value.
valuetype Timestamp TimeBase::UtcT ;
Revision of BaseBusinessObject that excludes event consumer and production interface
inheritance in favor of an explicit factory operation named add_consumer which enables animplementation to return a StructuredPushSupplier associated to an identifiable
StructuredPushConsumer passed in as an operation argument.
interface BaseBusinessObject :
Session::IdentifiableDomainObject,
CosLifeCycle::LifeCycleObject
{
CosNotifyComm::StructuredPushSupplier add_consumer(
in IdentifiableDomainConsumer consumer);
Timestamp creation( );
Timestamp modification( );
Timestamp access( );
};
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Discussion: Resolution:
Revise the definition of BaseBusienssObject such that an
identifiable structured push consumer is passed as an argument,
returning a structured push supplier as opposed to the current
inheritance based exposure a structured event management.
The following IDL is recommended as a replacement to the definition of
BaseBusienssObject:
interface IdentifiableDomainConsumer :
Session::IdentifiableDomainObject,
CosNotifyComm::StructuredPushConsumer
{
};
valuetype Timestamp TimeBase::UtcT ;
interface BaseBusinessObject :
Session::IdentifiableDomainObject,
CosLifeCycle::LifeCycleObject
{
CosNotifyComm::StructuredPushSupplier add_consumer(
in IdentifiableDomainConsumer consumer
);
Timestamp creation( );
Timestamp modification( );
Timestamp access( );
};
Revised Text:
Refer to http://www.osm.net/upload/omg-2000-10-15.pdf, section
1.2 "BaseBusienssObject Revision".
CommunityFramework specification has been updated to include the required
modification of the Task and Session specification of the definition of BaseBusinessObject to
the following IDL:
Issue 3951: Accessibility of external definitions (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Clarification
Severity: Minor
Summary: There are several occurrences within the Negotiation and
Task and Session specification of exception, enumeration and
struct declarations that are defined with the scope of object
interfaces. This approach complicates access to these type
declarations from the Negotiation Community and Collaboration
modules. leading to potential type duplication.
Resolution: see below
Revised Text: All exceptions, enumeration and typedef specifications declared within the scope of an
interface within the Session, CommunityFramework and CollaborationFramework
modules have been moved to module scope.
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Discussion: Resolution:
Resolution of the problem can be achieved by moving
the respective declarations from interface to module level in
the Session module and Negotiation modules for Community and
Collaboration.
Revised Text:
Refer to http://www.osm.net/upload/omg-2000-10-15.pdf, section
1.4 "Declaration in Module versus Interface scope".
Issue 3952: Link definition is broken (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
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.
Issue 3956: Community and Collaboration models severely broken. (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Revision
Severity: Critical
Summary: DocumentFramework, DomFramework and CommunityFramework
specifications are broken as a result of the changes
introduced to the Task and Session specification
formal/2000-05-02 (refer detailed issues 1, 2 and 3 -
posted 15 OCT 2000) and proposed revisions under
EC/2000-10-01.
* To a large extend the interfaces defined under the
SessionFramework are now redundant.
* Definition of links between resource types concerning
community services must be redefined based on an
extendable Link architecture (raised under issue 1).
* Issues 3461-3474 reflect a level of complexity of the
original specification in terms of the management of
control types relative to containing resource type.
During assessment of issues, it has been identified
that the specifications can be substantially simplified
and clarified through the use of valuetypes when defining
control structures. This approach will enable elimination
of the module thereby simplifying significantly the overall
scope of the specifications and should be addressed prior
to finalisation.
Resolution: see below
Revised Text: The extent of editorial changes introduced through the process of synchronization and
valuetype rationalization has limited the practicality of included change bars within the
revised specification. The FTF recommends replacement of chapters in entirety based on
the EC/2000-11-14 consolidated document, thereby avoiding possible errors that could
arise under a change by change editorial revision. Issues number 3461-3474 have not
been included in this report as they were posted against a draft non-adopted document,
however, these issue have been reviewed in detail and the conclusions reached in the
resolution of the 10 recognized issues reflect recognition of the comments raised. In order to
provide a complete audit trail of the changes introduced under this FTF, the following
description of changes is provided.
Synchronization
Resolution of the synchronization of the specifications has involved elimination of the
SessionFramework module and all dependent references. As a general pattern, interfaces
defined at the level of the CommunityFramework and CollaborationFramework modules that
inherited from SessionFramework::ActiveXXX have been replaced with Session:XXX. For
example, Community was defined as inheriting from ActiveWorkspace. The revised
specification of Community inherits directly from Session::Workspace.
Specification of associations prior to the Task and Session RTF were expressed as interfaces. The
community and collaboration frameworks used these definitions as a base from which derived
relationships could be declared in a manner consistent with the Task and Session association
navigation model. The revision of resource to resource associations to structs and constant
association type identifiers resulted in a requirement for the specification of a new association
model, or modification of the Task and Session module Link definition to accommodate out-of-module
extension. The later approach has been selected. Associations dealing with the User to
Membership relationship have been redefined as valuetype as noted under the revisions
incorporated under issue 3959 based on the link revisions sited under issue 3952.
Other changes supporting rationalization with the new Task and Session model include the
following:
„
SessionFramework::LegalEntity moved to CommunityFrameworkAll interface derived from the SessionFramework::Element have been replaced with
corresponding valuetype definitions. During this process some degree of revision to the object
has been required in order to accommodate the imposed single inheritance restrictions and
leverage valuetype notions of inheritance support and abstract declarations.
The following points summarizes the equivalence between the adopted specification and the
FTF recommendations concerning the CommunityFramework module:
SessionFramework::Element replaced by CommunityFramework::Control valuetype.
valuetype Control
{
public CommunityFramework::Label label;
public CommunityFramework::Note note;
};
SessionFramework::Template replaced by CommunityFramework::Criteria valuetype.
valuetype Criteria :
Control
{
public Arguments values;
};
MembershipKind:1.0 replaced by MembershipModel, MembershipPolicy, Role and RolePolicy
valuetypes (see also issue 3960)
valuetype MembershipPolicy
{
public PrivacyPolicyValue privacy;
public boolean exclusive;
};
valuetype MembershipModel :
Control supports Model
{
public MembershipPolicy policy;
public CommunityFramework::Role role;
};
valuetype RolePolicy
{
public long quorum;
public long ceiling;
public QuorumPolicy policy;
public QuorumAssessmentPolicy assessment;
};
valuetype Role :
Control
{
public RolePolicy policy;
public CommunityFramework::Roles roles;
public boolean is_abstract;
};Sequence typedef declarations have been replaced by boxed valuetypes.
valuetype Roles sequence <Role>;
valuetype Models sequence <Model>;
valuetype CriteriaSequence sequence <Criteria>;
valuetype Problems sequence <Problem>;
valuetype Note CORBA::StringValue;
valuetype Label CORBA::StringValue;
valuetype Labels sequence <Label>;
The following points summarizes the equivalence between the adopted specification and the
FTF recommendations concerning the CollaborationFramework module:
CollaborationTemplate interface replaced by the ProcessorModel and CollaborationModel
valuetypes
valuetype ProcessorModel :
CommunityFramework::Control
supports CommunityFramework::Model
{
public UsageDescriptors usage;
};
valuetype CollaborationModel :
ProcessorModel
{
public CommunityFramework::Role role;
public CollaborationFramework::State state;
};
EngagementTemplate interface replaced by EngagementModel valuetype
valuetype EngagementModel :
ProcessorModel
{
public CommunityFramework::Role role;
public Duration lifetime;
public boolean unilateral;
};
VoteTemplate interface replaced by the VoteModel valuetype
valuetype VoteModel :
ProcessorModel
{
public VoteCeiling ceiling;
public VotePolicy policy;
public boolean single;
public Duration lifetime;
};
EngagementTemplate interface replaced by EngagementModel valuetypes.
valuetype EngagementModel :ProcessorModel
{
public CommunityFramework::Role role;
public Duration lifetime;
public boolean unilateral;
};
State interface replaced by State valuetype.
valuetype State :
CommunityFramework::Control
{
public CollaborationFramework::Triggers triggers;
public CollaborationFramework::States states;
};
Trigger interface replaced by the Trigger, Guard, Launch, Clock, Directive, and Action
valuetypes. The Directive valuetypes have been introduced as part of the resolution of the
separation of Encounter semantics from processor semantics (refer issue 3980) supporting
declaration of the modification of usage associations.
abstract interface Directive {};
valuetype Duplicate
supports Directive
{
public Label source;
public Label target;
public boolean invert;
};
valuetype Move
supports Directive
{
public Label source;
public Label target;
public boolean invert;
};
valuetype Remove
supports Directive
{
public Label source;
};
valuetype Constructor
supports Directive
{
public Label target;
public CommunityFramework::Criteria criteria;
};
Clock and Launch separate out the two distinct modes of operation declared by the Trigger 1.0
interface. Each type is derived from the abstract Guard valuetype and is contained by a
Trigger valuetype.abstract valuetype Guard {};
valuetype Clock :
Guard
{
public Duration timeout;
};
valuetype Launch :
Guard
{
public TriggerMode mode;
public CommunityFramework::Role role;
};
abstract valuetype Action { };
valuetype Trigger :
CommunityFramework::Control
{
public long priority;
public CollaborationFramework::Guard guard;
public CollaborationFramework::Directives directives; // precondition
public CollaborationFramework::Action action;
};
Transition interface replaced by abstract Transition valuetype, and supporting valuetypes
Transition, SimpleTransition, Initialization, LocalTransition and TerminalTransition
abstract valuetype Transitional { };
valuetype Transition :
Action
{
public CollaborationFramework::Transitional transitional;
public UsageDescriptors usage;
};
valuetype Initialization :
Transitional
{
};
valuetype SimpleTransition :
Transitional
{
public State target;
};
valuetype LocalTransition :
Transitional
{
public boolean reset;
};
valuetype TerminalTransition :
Transitional
{public Completion result;
};
CompoundTransition interface has been replaced by the valuetype CompoundTransition and
the supporting valuetypes Referral, Map, Directive, Constructor, Move, Duplicate and Remove.
valuetype Referral :
Action
{
public CollaborationFramework::Action action;
public CollaborationFramework::Directives directives;
};
valuetype Map
{
public ResultClass class;
public ResultID code;
public CollaborationFramework::Directives directives;
public CollaborationFramework::Action action;
};
valuetype Mapping sequence <Map> ;
valuetype CompoundTransition :
Action
{
public CommunityFramework::Criteria criteria;
public CollaborationFramework::Mapping mapping;
};
Sequence typedef declarations have been replaced by boxed valuetypes.
valuetype Roles sequence <Role>;
valuetype Models sequence <Model>;
valuetype CriteriaSequence sequence <Criteria>;
valuetype Problems sequence <Problem>;
valuetype Note CORBA::StringValue;
valuetype Label CORBA::StringValue;
valuetype Labels sequence <Label>;
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Discussion: Resolution:
A recommended revision incorporating rationalisation of all
CommunityFramerwork interfaces, incorporating rationalisation
of underlying Task and Session specification is proposed under
document number EC/2000-10-02 (supporting UML under
EC/2000-10-03.
Issue 3957: Improvement needed on Membership textual description. (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Clarification
Severity: Minor
Summary: The description of Membership, Member and MembershipKind
presented in 99-07-03 is overly complex and should be
re-written (simplification and clarification) taking into
account underlying revisions to the Task and Session
specification formal/2000-05-02.
Resolution:
Revised Text: Membership interface and MembershipModel valuetype specifications have bee rewritten
taking into account revisions to operations names and simplification of operation
semantics. Revised content is presented under section 3 and 4 of the
CommunityFramework module specification under EC/2000-11-14.
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Discussion: Resolution:
A recommended revision to the textual description of Membership
and related interfaces is proposed under EC/2000-10-02, Part 2.
Issue 3958: Duplicate inheritance in Membership interface (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Revision
Severity: Significant
Summary: Membership is currently defined as a type of
AbstractResource. In addition two derived types (Community
and Encounter) also inherit from AbstractResource.
Elimination of this conflict can be achieved by declaring
Membership as an abstract interface.
Resolution:
Revised Text: Membership interface has been redefined as an abstract interface.
abstract interface Membership :
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Discussion: Resolution:
A recommended revision to the Membership interface is
proposed under EC/2000-10-02, Part 2. The revision involves
retraction of inheritance of AbstractResource and declaration of
the interface as abstract.
Issue 3959: Improvement needed on Membership textual description. (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Revision
Severity: Significant
Summary: The Member type represents an association of a User to a
Membership, as such it should be re-defined as a type
of Link. The current specification is currently broken
and must be recast against an extendable Link model.
Resoliution:
Resolution of this issue is proposed under EC/2000-10-02,
Part 2, in conjunction with resolution of issues defined under
EC/2000-10-01.
Resolution: see below
Revised Text: Issue Resolution
Redefinition of Member as a type of Link based on a revised Link valuetype. An abstract
Link named Privilege is defined as the common relationship between a User and a
Membership. The Member link defines the association to a Membership that is held by an
instance of User. The Recognizes link held by a instance supporting Membership defines
an association of a User to that Membership. This revision brings the User to Membership
association in line with the general association model defined under the Task and Session
framework.The definition of Member has been replaced by the following IDL:
valuetype Member : Session::Privilege {
public Membership resource;
};
valuetype Recognizes : Session::Privilege {
public Session::User resource;
public Labels roles;
};
Operations supporting access to role information previously on Member are replaced by
exposure of business roles under the state field named roles on the link held by an instance of
Membership. Additional access operations dealing with disclosure of member roles and
membership aggregation has been relocated under the Membership interface.
// from Membership
boolean is_member(
in Session::User user
) raises (
PrivacyConflict
);
boolean has_role(
in Session::User user,
in Label role
) raises (
PrivacyConflict
);
Labels get_member_roles(
in Session::User user
) raises (
PrivacyConflict
);
Session::UserIterator list_members(
in long max_number,
out Session::Users list
) raises (
PrivacyConflict
);
Session::UserIterator list_members_using(
in Label role,
in long max_number,
out Session::Users list
) raises (
PrivacyConflict
);
};
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Issue 3960: Separation of Membership versus Role policy required. (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Uncategorized Issue
Severity: Significant
Summary: MembershipKind combines both the policy of a Membership and
the policy of different business roles within a membership.
These notions should be separated into independent control
objects.
Resolution:
Resolution of this issue is proposed under EC/2000-10-02,
Part 2, involving the separation of membership and role
policy into distinct types.
Resolution: see below
Revised Text: MembershipKind has been replaced by the MembershipModel and Role valuetypes.
Policy applicable to a MembershipModel as distinct to the policy associated to a Role has
been separated into the respective valuetypes MembershipPolicy and RolePolicy.
The Control valuetype replaces the SessionFramework::Element interface and serves as a base
type for Role.
valuetype Control
{
public CommunityFramework::Label label;
public CommunityFramework::Note note;
};
Role (together with MembershipModel) replace the MembershipKind interface. Role supports
the seperation of a business role parameters form Membership parameters and is contained
within a MembershipCriteria to describe the structure and policy of logical busienss roles of
associated users.
valuetype Role :
Control
{
public RolePolicy policy;
public CommunityFramework::Roles roles;
public boolean is_abstract;
};
valuetype RolePolicy
{
public long quorum;
public long ceiling;
public QuorumPolicy policy;
public QuorumAssessmentPolicy assessment;
};
MembershipModel is a valuetype used within a Criteria instance to define the construction
constraints and policies of a new Membership instance. MembershipModel together with Role
replace the MembershipKind interface specification.
valuetype MembershipModel :
Control supports Model
{
public MembershipPolicy policy;
public CommunityFramework::Role role;
};valuetype MembershipPolicy
{
public PrivacyPolicyValue privacy;
public boolean exclusive;
};
Actions taken:
October 16, 2000: received issue
February 27, 2001: closed issue
Issue 3980: Separation of Collaboration from Encounter inheritance. (negotiation-ftf)
Click here for this issue's archive.
Source: Fujitsu (Mr. Stephen McConnell, stephen.mcconnell(at)au.fujitsu.com)
Nature: Uncategorized Issue
Severity:
Summary: Negotiation FTF, CollaborationFramework module.
The definition of Encounter combines the notion of a
Membership and rules relating to member association
with rules relating to process execution (e.g. derived
Collaboration interface). In the case of Collaboration
the current inheritance model eliminates the possibility
for independent declaration of process focuses role
models as distinct from the roles attributed to different
members of a membership. While the object model
expressing roles from the two different perspectives
are equivalent at an interface level, the instance
values and lifecycles are independent. It is recommended
that the notion of Encounter be restricted to the
management of a set of members, sharing a common view
on a collaborative process execution. Moving the
collaboration process semantics out of the Encounter
inheritance hierarchy can be achieved by defining a
relationship between Encounter and the active process
that an Encounter is co-ordinating. Once the notion of
process is separated from the notion of membership, the
respective control models can coexist. Secondly, given
formal separation of Membership and process, the existing
usage relationships derived from the inherited
Task interface by Encounter can be used to manage the
subject of collaborative interaction - as such, the
subject relationship can be removed from Engagement,
Voting and Collaboration.
Resolution:
- introduced explicit definition of a processor as a
base type for collaboration, associated to a Task by
a declared relationship
- introduced explicit definition of a processor as a base
type for Collaboration (as per Task Session notion of
Task and processor)
- retract the association of a subject of a collaboration
in favour of the existing usage relationships between
a processor and a Task.
Resolution: see below
Revised Text: Issue 3980 raises the potential for substantial interface simplification and improvements in
clarity of the overall specification of collaborative interaction. Resolution of changes to
incorporate separation have to large extent eliminated the semantic overloading of the
Collaboration apply operation and have resulted in improvements in the reuse of Task
and Session notions of resource usage. Impact on the CollaborationFramework
specifications is summarized below.
Revisions to the Encounter Interface
Encounter has been modified to remove the direct declaration of the defining model (now
accessible through the abstract Simulator interface inherited through Membership), and
retraction of the subject association – supported by the addition of valuetypes within a
ProcessorModel that declare usage association preconditions on its coordinating Task. The
original definition of the model of an Encounter is now redundant as an Encounter (separated
from processing semantics) is fully defined based on a MembershipModel valuetype exposed
under the EncounterCriteria valuetype.
interface Encounter :
Session::Task,
CommunityFramework::Membership
{
};valuetype EncounterCriteria :
CommunityFramework::Criteria
{
public CommunityFramework::MembershipModel model;
};
Specification of Processor and supporting valuetypes
Separation of processing semantics from Encounter enables separation of control policy
concerning a particular community of members from the execution policy of a particular
collaboration. This separation introduces a significant simplification of at the level of
application level processes such as Collaboration.
A ProcessorModel declares the usage association preconditions that a particular processor
imposes on the associated Encounter. ProcessorModel serves as a base valuetype to
CollaborationModel, EngagementModel and VoteModel, replacing the equivalent Template
interface definitions.
abstract valuetype UsageDescriptor { };
valuetype InputDescriptor :
UsageDescriptor
{
public string tag;
public boolean required;
public TypeCode type;
};
valuetype OutputDescriptor :
UsageDescriptor
{
public string tag;
public TypeCode type;
};
valuetype ProcessorModel :
CommunityFramework::Control
supports CommunityFramework::Model
{
public UsageDescriptors usage;
};
The Processor interface has been defined based on the semantics implied by the Task and
Session specification. It serves as a base type for the Collaboration, Engagement and Vote
processor definitions used in conjunction with collaborative processes such as negotiation and
multilateral engagement. Two abstract interfaces Master and Slave have been included to
support the association of one process to another as a controlling processor relative to subsidiary
processors. While the adopted specification describes this behaviour, the interfaces do not
explicitly separate process to sub-process relationships. Processor exposes an operation named
coordinator that returns the controlling Task (e.g. an instance of Encounter). Other operations
are derived directly from the implied semantics detailed in the Task and Session specification.
abstract interface Master {
SlaveIterator slaves (
in long max_number,
out Slaves slaves
);
};abstract interface Slave {
readonly attribute CollaborationFramework::Master master;
};
interface Processor :
Session::AbstractResource,
CommunityFramework::Simulator,
Master, Slave
{
readonly attribute StateDescriptor state;
Session::Task coordinator(
) raises (
Session::ResourceUnavailable
);
CommunityFramework::Problems verify( );
void start (
) raises (
Session::CannotStart,
Session::AlreadyRunning
);
void suspend (
) raises (
Session::CannotSuspend,
Session::CurrentlySuspended
);
void stop (
) raises (
Session::CannotStop,
Session::NotRunning
);
};
Exposure of Processor state has been declared using valuetypes that supplements the state
defined in Task and Session with an exploit declaration of Completion status. The Completion
valuetypes simplify 1.0 control structures that qualified the result of collaboration model actions.
valuetype Completion
{
public ResultClass result;
public ResultID code;
};
valuetype StateDescriptor
{
public ProcessorState state;
public CollaborationFramework::Completion completion;
public CommunityFramework::Problems problems;
};Modifications to the definition of Engagement, Vote and Collaboration
The interfaces Engagement, Vote and Collaboration have been revised such that the principal
base type is Processor instead of Encounter. This revision enables the possibility for a single
Encounter to switch from one process to another without requiring reconstruction of a new
Membership structure. In each case, the operations specific to the type have been separated
out into an abstract interface that is inherited by a concrete interface. Valuetypes defining
processor models and criteria are defined as replacements for the corresponding Template
interfaces from version 1.0. As a result of these changes the declaration of the 1.0 Manifest type
is redundant and has been withdrawn. The following two interface replace the version 1.0
Engagement interface definition.
abstract interface Engagement
{
Proof engage(
in CollaborationFramework::Evidence evidence
) raises (
EngagementProblem
);
};
interface EngagementProcessor :
Engagement,
Processor
{
};
The following valuetype replaces the version 1.0 EngagementTemplate interface.
valuetype EngagementModel :
ProcessorModel
{
public CommunityFramework::Role role;
public Duration lifetime;
public boolean unilateral;
};
The following two interface replace the 1.0 definition of the Vote interface.
abstract interface Vote
{
readonly attribute VoteCount vcount;
VoteReceipt vote(
in VoteDescriptor value
);
};
interface VoteProcessor :
Vote,
Processor
{
};
The following valuetype declaration replaces the 1.0 definition of VoteTemplate interface.valuetype VoteModel :
ProcessorModel
{
public VoteCeiling ceiling;
public VotePolicy policy;
public boolean single;
public Duration lifetime;
};
The definition of Collaboration is replaced by the following two interfaces. An important
simplification of the semantic of the apply operation (detailed under EC/2000-11-14) has been
achieved as a result of rationalization of the CollaborationModel exposure of usage constraints
and usage modification directives.
abstract interface Collaboration
{
readonly attribute Label active_state;
readonly attribute TimeoutSequence timeout_list;
void apply(
in Label identifier
) raises (
InvalidTrigger,
ApplyFailure
);
void apply_arguments(
in Label identifier,
in ApplyArguments args
) raises (
InvalidTrigger,
ApplyFailure
);
};
interface CollaborationProcessor :
Collaboration,
Processor
{
};
The following valuetype replaces the CollaborationTemplate interface.
valuetype CollaborationModel :
ProcessorModel
{
public CommunityFramework::Role role;
public CollaborationFramework::State state;
};
Specifications of valuetypes and revised interfaces concerning the above revisions shall be
taken from EC/2000-11-14. UML for all interfaces and valuetypes is presented at the end of
each module specification in the consolidated specifications (EC/2000-11-14).
„
CollaborationFramework UML, pages 79-82
„
CommunityFramework UML, page 115.
Actions taken:
October 23, 2000: received issue
February 27, 2001: closed issue