Mapping table for the integration of Rational Requirements Composer and Rational modeling products

This content applies to version 7.5.1 or later. For the element metamodel transformation, a RequirementComposerProfile is created to aid the conversion of com.ibm.rdm.base.Elements. The mapping table lists specification model elements and the transformed UML output.

Simple and Collaborative process mapping

A RequirementComposerProfile defines the class Link and RRCElement stereotype, with a links attribute that contains a collection of link elements. In the links, all com.ibm.rdm.base.Element information is preserved by using the RCElement stereotype application and copying all the link data from the Rational® Requirements Composer Element model to the UML model. The URL that refers to the original Rational Requirements Composer Element (such as Actor or Usecase) is placed into UML comment, stereotyped as URL. All attribute groups data are placed into the attributeGroup property of the RCArtifact stereotype.

Note: To read the mapping table, use the notation Qualified EClass name::feature name (the qualified EClass name of the feature type)::next feature where the following variables apply:
  • Qualified EClass name is a qualified EClass name.
  • feature name is the qualified EClass name of the feature type.
  • next feature is the type qualified name of the next feature, and so on.

The following table lists the specification model elements that the transformation supports, and the corresponding UML output that the transformation creates.

RRC Element metamodel  

com.ibm.rdm.base.Element

org.eclipse.uml2.uml.NamedElement<<RRCElement>>

com.ibm.rdm.base.Element ::
links(<EList>com.ibm.rdm.richtext.model.Link)

RRCElement::links(<EList>Link)
ownedComments(org.eclipse.uml2.uml.Comment)  

com.ibm.rdm.base.Element ::
name(java.lang.String)

org.eclipse.uml2.uml.NamedElement ::
name(java.lang.String)

com.ibm.rdm.base.Element ::
description(com.ibm.rdm.richtext.model.Body)

org.eclipse.uml2.uml.Element ::
ownedComments(EList<
org.eclipse.uml2.uml.Comment>)

com.ibm.rdm.richtext.model.Body

org.eclipse.uml2.uml.Comment<<documentation>>::
body(java.lang.String)

UseCase metamodel UML 2.0

com.ibm.rdm.ba.usecase.Usecase

org.eclipse.uml2.uml.UseCase

com.ibm.rdm.ba.usecase.Usecase::
details(com.ibm.rdm.richtext.model.Body)

org.eclipse.uml2.uml.Element ::
ownedComments(org.eclipse.uml2.uml.Comment<<documentation>>
)::
body(java.lang.String)

Use Case Diagram Use Case Diagram (with semantic element references adjusted to point to element transformed from RRC to RSx)

com.ibm.rdm.ba.actor.Actor

org.eclipse.uml2.uml.Actor

com.ibm.rdm.ba.actor.Actor::details(com.ibm.rdm.richtext.model.Body)

org.eclipse.uml2.uml.Element ::
ownedComments(org.eclipse.uml2.uml.Comment<<documentation>>
)::
body(java.lang.String)

Connections between Actors and UseCases

Associations

There are two types of business process diagrams provided in Rational Requirements Composer- simple and collaborative. Simple process diagrams consist of a single BPMN process. Collaborative diagrams contain collaborations between two or more business processes. Each BPMN process has a number of tasks connected by sequence flows and data associations, and may or may not have lanes, where a lane is purely a notational element not associated with any semantics.

A BPMN process is transformed into a UML activity. Each lane becomes a partition and each task becomes an action node in the respective UML Activity.

Each BPMN process is also represented with a UML Interface. For example, a Process1 is represented by a IProcess1 interface and Process2 type is IProcess2. All tasks on the BPMN process become UML operations on the respective UML Interface. DataObjects becomes DataStore activity nodes. The transformation also creates classes to represent the DataObjects and places them into a Common classifiers package at the root of the UML model. These classes are used to represent the types of DataStore nodes, as well as types of input and output pins on a UML activity node connected to the DataStore node. For each input and output pin, an operation parameter is created on the UML operation which represents the task. The type of the parameter is set to the same type as the type of the respective input and output pin.

BPMN collaborations consist of pairs of pools and participants per participating process. A pool represents a business process and a participant represents a role the respective business process plays. The BPMN Collaboration participants are transformed into UML Collaboration roles. Each role is typed with a UML Interface, created to represent respective business process. For example, if participant1 represents BPMN Process1, UML Collaboration role 'participant1' type is set to IProcess1 interface.

The connector between UML Collaboration roles represents a message exchange between the participating processes. This transformation does not go beyond this to show how processes communicate to each other because the inter-process communication is a behavior of the Collaboration. Therefore, this behavior can be depicted using various means suitable to the application domain, such as an Activity model, a sequence diagram, a communication diagram, or a state chart diagram.

More details on BPMN metamodel mapping can be found in the table below:

BPMN 2.0 metamodel UML 2.0

com.ibm.bpmn20.Process

org.eclipse.uml2.uml.Activity

com.ibm.bpmn20.Process::
flowElement(EList<com.ibm.bpmn20.FlowElement>)

 

Flow Element types:

 

com.ibm.bpmn20.CallActivity

com.ibm.bpmn20.CallActivity
::calledElementObject(com.ibm.bpmn20.Process)

org.eclipse.uml2.uml.Activity ::
node (org.eclipse.uml2.uml.CalBehaviorAction)

org.eclipse.uml2.uml.Activity ::
node (org.eclipse.uml2.uml.CalBehaviorAction):: behavior(org.eclipse.uml2.uml.Activity)

   

com.ibm.bpmn20.Task


com.ibm.bpmn20.Task ::
activityResult(com.ibm.bpmn20.ActivityDataResult)::
outputSet(EList<OutputSet>)::
outputs(EList< com.ibm.bpmn20.DataOutput >)

com.ibm.bpmn20.Task ::
activityRequirement (EList< com.ibm.bpmn20.ActivityDataRequirement >)::
inputSet:: (EList<InputSet>)
inputs(EList< com.ibm.bpmn20.DataInput>)

org.eclipse.uml2.uml.Activity ::
node (CallOperationAction)

CallOperationAction:outputPin





CallOperationAction:inputPin

   

com.ibm.bpmn20.DataObject

org.eclipse.uml2.uml.DataStoreNode

org.eclipse.uml2.uml.Class (Common classifiers package)

   

com.ibm.bpmn20.DataAssociation

com.ibm.bpmn20.DataAssociation ::
source(com.ibm.bpmn20.DataObject)

com.ibm.bpmn20.DataAssociation ::
target(com.ibm.bpmn20.DataObject)



com.ibm.bpmn20.DataAssociation ::
source(com.ibm.bpmn20.DataOutput)






com.ibm.bpmn20.DataAssociation ::
target (com.ibm.bpmn20.DataInput)

org.eclipse.uml2.uml.ObjectFlow

org.eclipse.uml2.uml.ObjectFlow ::
source(org.eclipse.uml2.uml.DataStoreNode)

org.eclipse.uml2.uml.ObjectFlow ::
target(org.eclipse.uml2.uml.DataStoreNode)

  • org.eclipse.uml2.uml.ObjectFlow ::
    source (org.eclipse.uml2.uml.OutputPin)
    (set pin type to respective org.eclipse.uml2.uml.Class from Common classifiers package)

  • out parameter in respective Activity interface
    org.eclipse.uml2.uml.Interface::ownedOperation(EList<org.eclipse.uml2.uml.Operation>)::ownedParameters(EList<org.eclipse.uml2.uml.Parameter>)

  • org.eclipse.uml2.uml.ObjectFlow ::
    source(org.eclipse.uml2.uml.InputPin)
    (set pin type to respective org.eclipse.uml2.uml.Class from Common classifiers package)

  • in parameter in respective Activity interface
    org.eclipse.uml2.uml.Interface::ownedOperation(EList<org.eclipse.uml2.uml.Operation>)::ownedParameters(EList<org.eclipse.uml2.uml.Parameter>)

com.ibm.bpmn20.StartEvent

org.eclipse.uml2.uml.InitialNode

com.ibm.bpmn20.EndEvent

org.eclipse.uml2.uml.FinalNode

com.ibm.bpmn20.Event

org.eclipse.uml2.uml.Event

com.ibm.bpmn20.IntermediateReceiveEvent

com.ibm.bpmn20.IntermediateReceiveEvent::type(com.ibm.bpmn20.TimerEventDefinition)

org.eclipse.uml2.uml.AcceptEventAction

org.eclipse.uml2.uml.AcceptEventAction:: trigger(EList<org.eclipse.uml2.uml.Trigger>)

org.eclipse.uml2.uml.AcceptEventAction:: trigger(EList<org.eclipse.uml2.uml.Trigger>) ::event(org.eclipse.uml2.uml.AnyReceiveEvent)

com.ibm.bpmn20.IntermediateSendEvent

com.ibm.bpmn20.IntermediateSendEvent::type(com.ibm.bpmn20.MessageEventDefinition)

org.eclipse.uml2.uml.SendSignalAction

org.eclipse.uml2.uml.SendSignalAction:: signal(org.eclipse.uml2.uml.Signal)

org.eclipse.uml2.uml.SendSignalAction::input(EList<org.eclipse.uml2.uml.InputPin>)

   
   

com.ibm.bpmn20.LinkEventDefinition

org.eclipse.uml2.uml.ObjectFlow

   

com.ibm.bpmn20.TimerEventDefinition

org.eclipse.uml2.uml.TimeEvent

   
   

com.ibm.bpmn20.Gateway

org.eclipse.uml2.uml.DecisionNode

com.ibm.bpmn20.ExclusiveGateway

org.eclipse.uml2.uml.DecisionNode

com.ibm.bpmn20.InclusiveGateway

org.eclipse.uml2.uml.DecisionNode

com.ibm.bpmn20.ParallelGateway

org.eclipse.uml2.uml.DecisionNode

   

com.ibm.bpmn20.SequenceFlow

com.ibm.bpmn20.SequenceFlow::
source

com.ibm.bpmn20.SequenceFlow::
target

org.eclipse.uml2.uml.ControlFlow

org.eclipse.uml2.uml.ControlFlow::source


org.eclipse.uml2.uml.ControlFlow::target

   

com.ibm.bpmn20.Collaboration

org.eclipse.uml2.uml.Collaboration

com.ibm.bpmn20.Collaboration ::
pool(EList< com.ibm.bpmn20.Pool >)::
processObject(com.ibm.bpmn20.Process)

org.eclipse.uml2.uml.Activity

com.ibm.bpmn20.Collaboration ::
pool(EList< com.ibm.bpmn20.Pool >)::
processObject(com.ibm.bpmn20.Process)

com.ibm.bpmn20.Collaboration ::
pool(EList< com.ibm.bpmn20.Pool >)::
processObject(com.ibm.bpmn20.Process)::flowElement(EList<com.ibm.bpmn20.Activity>)

org.eclipse.uml2.uml.Interface



org.eclipse.uml2.uml.Interface::operation(EList<org.eclipse.uml2.uml.Operation>)

com.ibm.bpmn20.Collaboration ::
pool(EList< com.ibm.bpmn20.Pool >):: participant(com.ibm.bpmn20.Participant)

org.eclipse.uml2.uml.Collaboration::collaborationRole(EList<org.eclipse.uml2.uml.ConnectableElement>)

   
   

Notational Lane

Activity Partition


Feedback