### Eclipse Workspace Patch 1.0 #P docs Index: guides/UML2_2.0_Migration_Guide/guide.html =================================================================== RCS file: /cvsroot/org.eclipse/www/uml2/docs/guides/UML2_2.0_Migration_Guide/guide.html,v retrieving revision 1.2 diff -u -r1.2 guide.html --- guides/UML2_2.0_Migration_Guide/guide.html 13 Jun 2006 18:35:50 -0000 1.2 +++ guides/UML2_2.0_Migration_Guide/guide.html 17 Jul 2006 14:18:13 -0000 @@ -21,12 +21,13 @@ UML2 migration + + @@ -5964,12 +5974,12 @@ -  marks interesting changes over the previous +src="guide_files/image001.gif" v:shapes="_x0000_i1026">  marks interesting changes over the previous revision)

 

@@ -5996,10 +6006,9 @@

 

-

June 13, 2006

+

June 13, 2006

-

James Bruck and Kenn Hussey, IBM -

+

James Bruck and Kenn Hussey, IBM

@@ -6008,10 +6017,10 @@
-
-
+
+

Goals

@@ -6026,20 +6035,20 @@

 

-

       Summary of newly refined concepts will be covered in the section “Superstructure Specification Changes

-

       Migration tips will be covered in the section entitled “API Migration”.

-

       Data migration of existing models and profiles @@ -6114,8 +6123,8 @@

This refers to the latest version of the UML API which is based on the UML2.1 specification defined by OMG.

 

-

The latest draft of the UML 2.1 Superstructure Specification - can be found at:

+

The latest draft of the UML 2.1 Superstructure + Specification can be found at:

http://www.omg.org/docs/ptc/06-04-02.pdf

 

@@ -6177,8 +6186,8 @@ -

Finalization Task Force.  A process which the OMG uses - to finalize a specification.

+

Finalization Task Force.  A process which the OMG + uses to finalize a specification.

 

@@ -6192,8 +6201,8 @@

 

-

Depending on your requirements, you will presumably be -interested in one or more of the following aspects of migration:  API migration, +

Depending on your requirements, you will presumably be interested +in one or more of the following aspects of migration:  API migration, artifact migration, or discovering what has changed in UML. 

This document is structured to help you accomplish your @@ -6291,26 +6300,26 @@ 2.0 Project Plan, several key points should be re-iterated before continuing:

-

       The older UML2 1.x version will not be shipped together with the newer UML2 2.0 version.

-

       UML2 2.0 will not be upwards contract-compatible with UML2 1.x.

-

       UML2 2.0 will not be upwards binary-compatible with UML2 1.x.

-

       The @@ -6353,7 +6362,7 @@

 

                -

 

@@ -6367,7 +6376,7 @@ that the UML2 1.x is based on an interim draft of the UML 2.0 version of the specification.

-

       Also, @@ -6388,17 +6397,17 @@ discussed in this document has been obtained is from summarizing these FTF and RTF ballots.

-
-
+
+

Key Changes

 

-

Several key changes can be distilled out of the updated Superstructure -specification.

+

Several key changes can be distilled out of the updated +Superstructure specification.

Events

@@ -6407,7 +6416,7 @@

Let’s first review the differences between Trigger, Event and Message:

-

       @@ -6446,46 +6455,40 @@

So what has changed? 

In the latest version of the specification, the concept of -Event has been separated from the concept of Trigger.  The Trigger metatype is now a concrete class whereas in the past, this -was an abstract class.   The various concrete triggers such as CallTrigger, have been removed and replaced by a -corresponding Event type (i.e. CallEvent).

+Event has been separated from the concept of Trigger.  The Trigger +metatype is now a concrete class whereas in the past, this was an abstract +class.   The various concrete triggers such as CallTrigger, have been +removed and replaced by a corresponding Event type (i.e. CallEvent).

For a given model to be considered valid, all triggers -must refer to some event. A trigger must refer to an event since triggers relate -events to behaviors. 

+must refer to some event. A trigger must refer to an event since triggers +relate events to behaviors. 

-

Triggers can be owned either by transitions or by behaviored classifiers (as an example).  

+

Triggers can be owned either by transitions or by +behaviored classifiers (as an example).  

Existing code presumably has transitions owning one of the -various trigger types such as CallTrigger.  Such -code should be changed such that the transition will refer to the concrete -trigger type and the trigger will refer to an event created somewhere at the -package level (events are packageable elements and -are owned by some package).

+various trigger types such as CallTrigger.  Such code should be changed +such that the transition will refer to the concrete trigger type and the +trigger will refer to an event created somewhere at the package level (events +are packageable elements and are owned by some package).

In order to create an event for a particular transition, one could:

-

       Find the nearest package using the Element#getNearestPackage() function.

+style='font-family:"Courier New"'>Element#getNearestPackage() +function.

-

       -Call Package#createPackagedElement(EClass).  You would pass the event type -as a parameter.

+Call Package#createPackagedElement(EClass).  You would pass +the event type as a parameter.

 

@@ -6502,19 +6505,19 @@ occurrence.  An event is a model element that specifies a set of possible event occurrences all of the same kind.

-

       Event

-

o       State changes of a system are the result of the occurrence of some event.

-

o       Creation @@ -6526,28 +6529,28 @@ style='font:7.0pt "Times New Roman"'>       Destruction events occur when the system destroys an object.

-

o       Execution events occur at the start of an Action or Behavior which is referenced by the object of the lifeline.

-

o       Message events occur as a result of the sending or the receiving of messages from one object to another. 

-

       The message event instance can reference either an operation that was called or a signal that is sent.

-

       It @@ -6559,26 +6562,26 @@

 

-

       -OccurrenceSpecification

+OccurrenceSpecification

-

o       Occurrence specifications model the occurrence of an event.

-

       Occurrence specifications represents points on a lifeline that deliver the anchors for Messages and execution specifications

-

       Occurrence @@ -6587,13 +6590,13 @@

 

-

       -ExecutionOccurrenceSpecification

+ExecutionOccurrenceSpecification

-

o       Reference @@ -6601,38 +6604,37 @@

 

-

       -ExecutionSpecification -(abstract)

+ExecutionSpecification (abstract)

-

o       The -concrete types are BehaviorExecutionSpecification and -ActionExecutionSpecification.

+concrete types are BehaviorExecutionSpecification and +ActionExecutionSpecification.

-

o       An -execution specification does not model an event.  Instead, it models the -act of some object executing some portion of its behavior specification (e.g., +execution specification does not model an event.  Instead, it models the act +of some object executing some portion of its behavior specification (e.g., executing an action or behavior).

-

o       An execution specification defines start and finish points on the -lifeline, which define its active period, and reference the corresponding -action or behavior that is executing. A start and finish must be +lifeline, which define its active period, and reference the corresponding action +or behavior that is executing. A start and finish must be specified.

-

o       Messages @@ -6642,13 +6644,13 @@

 

-

       Message

-

o       A @@ -6656,20 +6658,20 @@ asynchronous signal send).  The message carries the information about the call and is sent from the invoking object and received by the invoked object.

-

o       Objects can communicate via messages.

-

o       Messages have arguments if the called operation has parameters, or attributes if the message sends a signal.

-

o       Messages @@ -6685,25 +6687,24 @@

 

-

       -OccurrenceSpecification -is a newly introduced type that replaces -EventOccurrence.

- -

The new specification introduces two new types of OccurrenceSpecification: event occurrence specifications -and message occurrence specifications

+OccurrenceSpecification is a newly introduced type that replaces EventOccurrence.

-

The new specification introduces two new types of +OccurrenceSpecification: event occurrence specifications and message +occurrence specifications

+ +

o       In order to migrate older event occurrences you can follow this rule of thumb:

-

       @@ -6711,34 +6712,34 @@ going out of the event occurrence, then it can be replaced with message occurrence specification.

-

       If there is a spontaneous stop, then you can replace with an occurrence specification and refer to a destruction event.

-

o       If the event occurrence starts or finishes an independent execution occurrence then it maps to and execution occurrence specification.

-

o       Occurrence specifications must reference an event.

-

o       Events could be referenced by multiple occurrence specifications or triggers.  Since an event is owned by a -package, this is a convenient way to tie together both statechart -concepts and sequence concepts.

+package, this is a convenient way to tie together both statechart concepts and +sequence concepts.

-

o       Differing messages that refer to the same @@ -6750,49 +6751,46 @@

 

-

       -The Stop metaclass has been removed from the latest version.

+The Stop metaclass +has been removed from the latest version.

-

o       -Stop used to be a specialization of EventOccurrence.   Now, stops should be replaced -by creating either an occurrence specification or a message occurrence -specification that references a destruction event.

+Stop used to be a specialization of +EventOccurrence.   Now, stops should be replaced by creating either +an occurrence specification or a message occurrence specification that +references a destruction event.

 

-

       -ExecutionOccurrence -(older)

+ExecutionOccurrence (older)

-

o       Mapped -to either an action exection specification -that references an action, or a behavior exection -specification that refers to a behavior (more general).

+to either an action exection specification that references an action, or +a behavior exection specification that refers to a behavior (more +general).

 

-

       -EventOccurrence -(older)

+EventOccurrence (older)

-

o       In @@ -6802,13 +6800,13 @@

 

-

       Message

-

o       A @@ -6820,7 +6818,7 @@ referenced by the message occurrence specification.  Those events can refer to operations or signals from which the signature is derived.

-

o       If an operation is not present, it is derived @@ -6829,23 +6827,22 @@

 

-

       -MessageSort

+MessageSort

-

o       -The synchSignal -literal has been removed.

+The synchSignal literal has been removed.

-

o       -The createMessage, deleteMessage and reply literals are new.

+The createMessage, deleteMessage and reply +literals are new.

 

@@ -6853,14 +6850,14 @@

 

-

UML 2.0 separated the concepts of navigability from association -end ownership.  In UML 2.1, a new “black dot” notation has been introduced -where it is desired to make ownership explicit.

+

UML 2.0 separated the concepts of navigability from +association end ownership.  In UML 2.1, a new “black dot” notation has +been introduced where it is desired to make ownership explicit.

Diagrams showing associations now can display three -distinct concepts:  aggregation type, ownership and navigability.  These -three notions could all potentially be combined at once in the display of an -association.

+distinct concepts:  aggregation type, ownership and navigability.  +These three notions could all potentially be combined at once in the display of +an association.

The Superstructure specification refers to some presentation options that might be implemented including suppression of some @@ -6872,14 +6869,13 @@

In the diagram below:

-

       -endA -is owned by classifier B and endB is owned by BinaryAssociationAB.

+endA is owned by +classifier B and endB is owned by BinaryAssociationAB.

-

       The absence of a dot signifies ownership by the @@ -6889,7 +6885,7 @@

 

-

 

@@ -6908,21 +6904,19 @@ working with time concepts almost impossible.  All time expressions were relative to “now” and there was no way to specify some arbitrary point time “t” to which all other time expressions were relative.  In the current -specification, the concepts of TimeObservation and DurationObservation have been introduced to fix this -shortcoming.  Time expressions and durations now can refer to these -observations to create more complex expressions that can be evaluated given -some specific time.  Observations are really a way to introduce variables -in time expressions and durations.

+specification, the concepts of TimeObservation and DurationObservation have +been introduced to fix this shortcoming.  Time expressions and durations +now can refer to these observations to create more complex expressions that can +be evaluated given some specific time.  Observations are really a way to +introduce variables in time expressions and durations.

 

-

In addition, older TimeObservationAction -and DurationObservationAction have been replaced by -opaque actions.   The “now” and “duration” fields in these old metaclasses have been replaced by value pins as input -values that refer to time expressions and durations (both of which are value -specifications).

+

In addition, older TimeObservationAction and +DurationObservationAction have been replaced by opaque actions.   The +“now” and “duration” fields in these old metaclasses have been replaced by +value pins as input values that refer to time expressions and durations (both +of which are value specifications).

 

@@ -6939,7 +6933,7 @@

 

-

 

@@ -6953,7 +6947,7 @@

 

-

       @@ -6964,16 +6958,15 @@ tab-stops:list 1.0in'>o       The -ProfileApplication meta-type no longer extends -PackageImport.  It now directly extends DirectedRelationship.

+ProfileApplication meta-type no longer extends PackageImport.  It +now directly extends DirectedRelationship.

o       The -structural feature ProfileApplication::importedProfile -has been renamed to ProfileApplication::appliedProfile.

+structural feature ProfileApplication::importedProfile has been renamed to +ProfileApplication::appliedProfile.

       @@ -7044,8 +7037,8 @@ 7328 Message Sort

o         MessageSort::synchSignal mapped to MessageSort::asynchSignal

+style='font-size:7.0pt'>         MessageSort::synchSignal +mapped to MessageSort::asynchSignal

o         A @@ -7055,7 +7048,7 @@

 

       @@ -7064,9 +7057,8 @@ 7637 Event Occurrence

o         EventOccurrence::getFinishExecs and getStartExecs -list changed to scalar

+style='font-size:7.0pt'>         EventOccurrence::getFinishExecs +and getStartExecs list changed to scalar

o         Additional @@ -7074,46 +7066,44 @@

o         The -corresponding property is ExecutionOccurrenceSpecification::execution -which is a kind of ExecutionSpecification

+corresponding property is ExecutionOccurrenceSpecification::execution which is +a kind of ExecutionSpecification. 

o         The multiplicity changed from * to 1 because the semantics changed somewhat.  That is in UML2 2.0 even if two execution specifications start at the same time, they have individual start events.  Therefore, when converting older -models in which one EventOccurrence had more than one -ExecutionOccrrence (if there are such), it is -necessary to create multiple copies of the ExecutionOccurrenceSpecification -( corresponding to the UML2 1.x) EventOccurrence, -so that each ExecutionSpecification can have its own -start event.

+models in which one EventOccurrence had more than one ExecutionOccrrence (if +there are such), it is necessary to create multiple copies of the ExecutionOccurrenceSpecification +( corresponding to the UML2 1.x) EventOccurrence, so +that each ExecutionSpecification can have its own start event.

 

       Issue -7319 ExecutionOccurrence

+7319 ExecutionOccurrence

o         ExecutionOccurrence::getBehaviors list changed to scalar

+style='font-size:7.0pt'>         ExecutionOccurrence::getBehaviors +list changed to scalar

o         In UML2 1.x this was the specification of the Behavior that, when executed, caused -the ExecutionOccurrence.  In UML2 2.0 ExecutionOccurrence was replaced by ExecutionSpecification.  -Furthermore, action executions (ActionExecutionSpecification) -were differentiated from other types of executions (BehaviorExecutionSpecification).  -Since the UML2 1.x model did not support the former case, this will never occur -when converting a UML2 1.x model.  So the corresponding feature is BehaviorExecutionSpecification::behavior.

+the ExecutionOccurrence.  In UML2 2.0 ExecutionOccurrence was replaced by +ExecutionSpecification.  Furthermore, action executions +(ActionExecutionSpecification) were differentiated from other types of +executions (BehaviorExecutionSpecification).  Since the UML2 1.x model did +not support the former case, this will never occur when converting a UML2 1.x +model.  So the corresponding feature is +BehaviorExecutionSpecification::behavior.

 

@@ -7131,9 +7121,8 @@ 8318, 8894

o         Interval::getMaxes and getMins -list changed to scalar

+style='font-size:7.0pt'>         Interval::getMaxes +and getMins list changed to scalar

o         This @@ -7143,7 +7132,7 @@

 

       @@ -7152,19 +7141,16 @@ 7560 Primitive Function

o         PrimitiveFunction::getBody and getLanguage -scalar changed to list

+style='font-size:7.0pt'>         PrimitiveFunction::getBody +and getLanguage scalar changed to list

o         Activity::getBody and getLanguage -scalar changed to list

+style='font-size:7.0pt'>         Activity::getBody +and getLanguage scalar changed to list

o         OpaqueExpression::getLanguage and getBody -scalar changed to list

+style='font-size:7.0pt'>         OpaqueExpression::getLanguage +and getBody scalar changed to list

o         Latest @@ -7189,7 +7175,7 @@

 

       @@ -7198,12 +7184,9 @@ 6682 Trigger vs. Event

o         AnyTrigger, CallTrigger, TimeTrigger, ChangeTrigger, MessageTrigger, SignalTrigger -mapped to concrete Trigger.  That new trigger refers to the corresponding -Event.

+style='font-size:7.0pt'>         AnyTrigger, +CallTrigger, TimeTrigger, ChangeTrigger, MessageTrigger, SignalTrigger mapped +to concrete Trigger.  That new trigger refers to the corresponding Event.

o         Trigger @@ -7220,8 +7203,8 @@

o         An -event is an instantaneous thing.  An EventOccurrenceSpecification -is an instance of an event.

+event is an instantaneous thing.  An EventOccurrenceSpecification is an +instance of an event.

o         An @@ -7257,23 +7240,22 @@

 

       Issue -8894 ObservationAction

+8894 ObservationAction

o         DurationObservationAction, TimeObservationAction -are mapped to OpaqueAction.

+style='font-size:7.0pt'>         DurationObservationAction, +TimeObservationAction are mapped to OpaqueAction.

 

       @@ -7281,7 +7263,7 @@ href="http://www.omg.org/issues/uml2-superstructure-ftf.html#Issue8706">Issue 8706 Issue -9183 ProfileApplication

+9183 ProfileApplication

o         Issue @@ -7289,32 +7271,31 @@

o         Now -a ProfileApplication is a subclass of DirectedRelationship rather than PackageImport.

+a ProfileApplication is a subclass of DirectedRelationship rather than +PackageImport.

 

       Issue -7405 ApplyFuncitonActoin

+7405 ApplyFuncitonActoin

o         Issue 7319, 7365

o         ApplyFunctionAction::getArguments, getFunction, -getResults unmapped.

+style='font-size:7.0pt'>         ApplyFunctionAction::getArguments, +getFunction, getResults unmapped.

o         ApplyFunctionAction mapped to CallBehaviorAction.

+style='font-size:7.0pt'>         ApplyFunctionAction +mapped to CallBehaviorAction.

 

@@ -7325,12 +7306,11 @@ mso-bidi-font-weight:bold'>       Issue -7421 TemplateSignature +7421 TemplateSignature

o         TemplateSignature::getNestedSignatures and getNestingSignature unmapped

+style='font-size:7.0pt'>         TemplateSignature::getNestedSignatures +and getNestingSignature unmapped

o         This @@ -7353,7 +7333,7 @@

 

-

       @@ -7364,7 +7344,7 @@

 

-

       @@ -7380,27 +7360,26 @@

 

-

       Package Literals

-

o       New package literals have been introduced for accessing metadata.

-

o       More -efficient to use package literals instead of metadata accessor -methods, e.g. use UMLPackage.Literals.PACKAGE__PACKAGED_ELEMENT -instead of UMLPackage.eINSTANCE.getPackage_PackagedElement().

+efficient to use package literals instead of metadata accessor methods, e.g. +use UMLPackage.Literals.PACKAGE__PACKAGED_ELEMENT +instead of UMLPackage.eINSTANCE.getPackage_PackagedElement().

 

@@ -7420,8 +7399,8 @@ tab-stops:list 1.0in'>o       UML2 -resources (libraries, metamodels, profiles) -have been updated.

+resources (libraries, metamodels, profiles) have been +updated.

 

@@ -7442,31 +7421,29 @@ tab-stops:list 1.0in'>o       UMLUtil -currently supports two functions

+style='font-family:"Courier New"'>UMLUtil currently supports two +functions

       void merge(org.eclipse.uml2.uml.Package package_, Map options) ;

       -void merge(org.eclipse.uml2.uml.Package package_,Map options, DiagnosticChain -diagnostics, Map context)

+void merge(org.eclipse.uml2.uml.Package +package_,Map options, DiagnosticChain diagnostics, Map context)

o       UMLUtil -implements a nested inner class that can be overridden for application-specific -merge.

+style='font-family:"Courier New"'>UMLUtil implements a nested inner +class that can be overridden for application-specific merge.

 

@@ -7480,14 +7457,14 @@ tab-stops:list 1.0in'>o       Stereotype -attributes type can now reference a metaclass.

+attributes type can now reference a metaclass.

       -Association between stereotype and metaclass (which introduces property on stereotype).

+Association between stereotype and metaclass +(which introduces property on stereotype).

       -Image is a new metaclass.

+Image is a new metaclass.

       Image part of stereotype definition.

       Introduces notational changes.

       Can now have multiple images per stereotype

@@ -7526,34 +7503,33 @@ of stereotype applications.

       Will no longer be in an annotation on an element. 

       Will be added to the resource and will reference the elements to which they are applied

       Listeners will be affected.

       When stereotypes are applied with applyStereotype(…)’  -the object representing that particular stereotype application will be -returned.

+class=GramE>‘applyStereotype(…)’  the object representing that +particular stereotype application will be returned.

       Will now use only one standard profile (called “Standard.profile.uml”) -which is L3 compliant

+style='font-family:"Courier New"'>Standard.profile.uml”) which is L3 +compliant

 

@@ -7583,38 +7559,37 @@

 

-

       Support for loading and saving in “official” OMG format.  The UML editor now supports -saving with .xmi extension.   Simply select -the “File > Save As...” and specify a .xmi extension.

+saving with .xmi extension.   Simply select the “File > +Save As...” and specify a +.xmi extension.

 

-

       The difference -between the .xmi format and the .uml is that annotations -are not a legal part of the UML schema.  When saving your existing .uml -model to the .xmi format, annotations will be converted to XMI extensions.

+between the .xmi format and the .uml is that annotations are not a legal part +of the UML schema.  When saving your existing .uml model to the +.xmi format, annotations will be converted to +XMI extensions.

 

-

       Opening a model -with .xmi format with the UML editor will work and properly render using the UML -API.

+with .xmi format with the UML editor will +work and properly render using the UML API.

 

@@ -7623,7 +7598,7 @@

 

-

       @@ -7640,57 +7615,54 @@

 

-

       Retrieval of derived collections made more efficient.

-

o       Derived -collections now use a “smart” iterator.

+collections now use a “smart” iterator.

       The result is that sequentially moving through collections using an indexed approach is very inefficient.

       -For a derived collection, getSize() is O(n)

+For a derived collection, getSize() is O(n)

       The list does not hold onto all the elements at once.  Memory price is paid only when the list is traversed.

-

o       Always -use an iterator when moving through derived -collections obtained from UML2 API.

+use an iterator when moving through derived collections obtained from UML2 API.

-

o       Index-based iteration need only be avoided for lists returned for features that are derived unions.  In general, a way to tell which kind of iteration will be optimal -at runtime is to test instanceof RandomAccess -(see Javadoc for that interface for details).

+at runtime is to test instanceof +RandomAccess (see Javadoc for that interface for details).

 

@@ -7699,19 +7671,18 @@

 

-

       Support for segregation of UML2 resources into ‘fragments’ -(e.g. *.fragment.uml) with -packages as root elements has been provided.

+(e.g. *.fragment.uml) with packages as root elements has been provided.

 

-

       @@ -7720,7 +7691,7 @@ for containment proxies has been introduced.

-

o       Enabled on a per-feature basis.

@@ -7742,19 +7713,18 @@ style='font-family:"Courier New";mso-fareast-font-family:"Courier New"'>       EMF support for logical resources is to check -definition of each feature and invoke isResolveProxies().  

+definition of each feature and invoke isResolveProxies().   +

       -isResolveProxies  is an attribute on every -Ecore reference and must be set to TRUE on containment references for which -proxy support is desired (must be set to TRUE for containment proxies to work)

+isResolveProxies  +is an attribute on every Ecore reference and must be set to TRUE on containment +references for which proxy support is desired (must be set to TRUE for +containment proxies to work)

 

@@ -7767,7 +7737,7 @@ un-control in a unit.

                                    -

 

@@ -7777,7 +7747,7 @@

 

-

       @@ -7785,19 +7755,18 @@ derived unions that are redefined by subclasses.

-

o       Cases where derived unions were redefined by non-derived properties have been -removed; as a result, the properties like Package::ownedMember -and Component::ownedMember are now derived and new -modifiable properties named ‘packagedElement’ are -available.

+removed; as a result, the properties like Package::ownedMember and +Component::ownedMember are now derived and new modifiable properties named +‘packagedElement’ are available.

 

-

       @@ -7806,7 +7775,7 @@

 

-

       @@ -7815,7 +7784,7 @@

 

-

       @@ -7829,7 +7798,7 @@

 

-

       @@ -7853,10 +7822,8 @@ -

EList Element#getRelationships() -

+

EList + Element#getRelationships()

 

-

EList Element#getRelationships(EClass)

+

EList + Element#getRelationships(EClass)

 

-

EList Element#getSourceDirectedRelationships()

+

EList + Element#getSourceDirectedRelationships()

 

-

EList Element#getSourceDirectedRelationships(EClass)

+

EList + Element#getSourceDirectedRelationships(EClass)

 

-

EList Element#getTargetDirectedRelationships()

+

EList + Element#getTargetDirectedRelationships()

 

-

EList Element#getTargetDirectedRelationships(EClass)

+

EList + Element#getTargetDirectedRelationships(EClass)

 

-

Get directed relationships - of a particular type of which this element is a target.

+

Get directed relationships of + a particular type of which this element is a target.

 

@@ -7950,7 +7909,7 @@

 

-

       @@ -7994,9 +7953,8 @@

Operation - Class#createOwnedOperation(String name, EList ownedParameterNames, EList ownedParameterTypes);

+ Class#createOwnedOperation(String name, EList ownedParameterNames, + EList ownedParameterTypes);

 

Operation - Class#getOwnedOperation(String name, EList ownedParameterNames, EList ownedParameterTypes);

+ Class#getOwnedOperation(String name, EList ownedParameterNames, + EList ownedParameterTypes);

 

[sample] Get specific - operation based on param types.  Passing NULL - is OK.

+ operation based on param types.  Passing NULL is OK.

Operation - Class#createOwnedOperation(String name, EList parameterNames, EList parameterTypes, Type returnType);

+ Class#createOwnedOperation(String name, EList + parameterNames, EList parameterTypes, Type returnType);

 

Operation - Class#getOwnedOperation(String name, EList ownedParameterNames,EList - ownedParameterTypes, boolean - ignoreCase, boolean createOnDemand);

+ Class#getOwnedOperation(String name, EList + ownedParameterNames,EList ownedParameterTypes, boolean ignoreCase, boolean + createOnDemand);

 

Classifier Class#getNestedClassifier Class#getNestedClassifier(String name);

 

@@ -8088,28 +8040,26 @@

Classifier Class#getNestedClassifier(String name, boolean ignoreCase, EClass eClass, boolean createOnDemand);

+ style='font-size:9.0pt;font-family:"Courier New"'> Class#getNestedClassifier(String name, boolean + ignoreCase, EClass eClass, boolean createOnDemand);

 

-

[sample] Getter with potential - to create if not found.

+

[sample] Getter with + potential to create if not found.

Classifier Class#createNestedClassifier(String name, EClass eClass);

+ style='font-size:9.0pt;font-family:"Courier New"'> Class#createNestedClassifier(String name, EClass + eClass);

 

-

PackageableElement Package#getPackagedElement(String - name, boolean ignoreCase, - EClass eClass, boolean createOnDemand);

+

PackageableElement + Package#getPackagedElement(String name, boolean ignoreCase, EClass + eClass, boolean createOnDemand);

 

-

PackageableElement Package#getPackagedElement(String - name);

+

PackageableElement + Package#getPackagedElement(String name);

 

-

PackageableElement Package#createPackagedElement(String - name, EClass eClass);

+

PackageableElement + Package#createPackagedElement(String name, EClass eClass);

 

-

[sample] Creation with EClass specified.

+

[sample] Creation with + EClass specified.

@@ -8179,8 +8122,7 @@

Port - EncapsulatedClassifier#createOwnedPort(String - name, Type type);

+ EncapsulatedClassifier#createOwnedPort(String name, Type type);

 

Port - EncapsulatedClassifier#getOwnedPort(String - name, Type type, boolean ignoreCase, boolean createOnDemand);

+ EncapsulatedClassifier#getOwnedPort(String name, Type type, boolean + ignoreCase, boolean createOnDemand);

 

Port - EncapsulatedClassifier#getOwnedPort(String - name, Type type);

+ EncapsulatedClassifier#getOwnedPort(String name, Type type);

@@ -8222,12 +8161,12 @@

 

-

       Enhanced -UMLUtil methods.

+UMLUtil methods.

 

@@ -8255,10 +8194,8 @@

Collection - UMLUtil#findNamedElements(Resource resource, String qualifiedName, - boolean ignoreCase, EClass eClass)

+ UMLUtil#findNamedElements(Resource resource, String qualifiedName, boolean + ignoreCase, EClass eClass)

 

Collection - UMLUtil#findNamedElements(Resource resource, String qualifiedName)

+ UMLUtil#findNamedElements(Resource resource, String qualifiedName)

 

-

EObject UMLUtil#safeApplyStereotype(Element - element,    Stereotype stereotype)

+

EObject + UMLUtil#safeApplyStereotype(Element element,    Stereotype + stereotype)

-

Will apply profile to outermost - package if not already applied.   All efforts are made to safely - apply stereotype.

+

Will apply profile to + outermost package if not already applied.   All efforts are made to + safely apply stereotype.

 

@@ -8327,9 +8261,9 @@

o       -UMLUtil -now defines a merge(…) function -that performs a package merge as defined by the Superstructure specification

+UMLUtil now defines a merge(…) function that performs a +package merge as defined by the Superstructure specification

 

@@ -8349,8 +8283,7 @@

void - UMLUtil#merge(org.eclipse.uml2.uml.Package - package_, Map options)

+ UMLUtil#merge(org.eclipse.uml2.uml.Package package_, Map options)

 

       -Utilities to -get all attributes and operations even inherited ones.

+Utilities to get +all attributes and operations even inherited ones.

 

@@ -8387,9 +8320,8 @@ -

EList Classifier#getAllAttributes()

+

EList + Classifier#getAllAttributes()

-

EList Classifier#getAttributes()

+

EList + Classifier#getAttributes()

-

EList Classifier#getAllOperations()

+

EList + Classifier#getAllOperations()

 

-

EList Classifier#getOperations()

+

EList + Classifier#getOperations()

 

       @@ -8473,10 +8402,9 @@ -

PackageImport Profile#createMetamodelReference(org.eclipse.uml2.uml.Package - importedPackage)

+

PackageImport + Profile#createMetamodelReference(org.eclipse.uml2.uml.Package + importedPackage)

 

-

ElementImport createMetaclassReference(PackageableElement importedElement)

+

ElementImport + createMetaclassReference(PackageableElement importedElement)

 

Stereotype - createOwnedStereotype(String name, boolean isAbstract);

+ createOwnedStereotype(String name, boolean isAbstract);

 

-

boolean isDefined();

+

boolean + isDefined();

       -Custom -operations specified in metadata

+
Custom operations +specified in metadata

-

o       Result is that OCL engine can now use custom operations

       e.g. Check for applied stereotypes.

-

o       Lists vs. Sets

       Custom operations in source models used to -return sets, now they return EList +return sets, now they return EList

 

-

Javadoc

+

Javadoc

 

-

       -Javadoc based on the -Superstructure specification has been included.

+Javadoc based +on the Superstructure specification has +been included.

 

@@ -8588,14 +8511,14 @@

 

-

       Icons added for each of the types -defined by UML (instead of the default generated added for each of the +types defined by UML (instead of the default generated by EMF).

 

@@ -8617,7 +8540,7 @@

 

    -
  1. Through +
  2. Through the import/export wizards.
@@ -8625,7 +8548,7 @@
      -
    1. When +
    2. When creating a new EMF project, via the EMF Project wizard, it is possible to select a UML model as the source type.  The following page will appear…
    3. @@ -8633,7 +8556,7 @@

                                        -

     

    @@ -8651,13 +8574,13 @@

     

     

      -
    1. Through +
    2. Through the Ecore editor and UML editor.
    @@ -8665,16 +8588,16 @@
        -
      1. With +
      2. With the examples plug-ins installed…

                                                                   -i.      -From the Ecore editor, on an Ecore package, select the “Convert to UML -model…” option.

    +i.      From +the Ecore editor, on an Ecore package, select the “Convert to UML model…” +option.

                                                                 @@ -8684,17 +8607,15 @@

     

      -
    1. Programatically.
    2. +
    3. Programatically.

     

        -
      1. The - behavior for import/export is defined in UMLUtil:
      2. +
      3. The + behavior for import/export is defined in UMLUtil:
    @@ -8716,8 +8637,7 @@

    Collection - UMLUtil#convertFromEcore(EPackage - ePackage, Map options)

    + UMLUtil#convertFromEcore(EPackage ePackage, Map options)

     

    -

    UMLUtil#convertToEcore(org.eclipse.uml2.Package package_,Map options)

    +

    UMLUtil#convertToEcore(org.eclipse.uml2.Package + package_,Map options)

     

           An in-memory model will be created with the correct UML2 2.0 schema. 

    -

           In addition, all applied profiles will automatically be migrated. 

    -

           @@ -8800,7 +8718,7 @@

     

                                        -

     

    @@ -8818,7 +8736,7 @@

     

    -

           @@ -8827,7 +8745,7 @@

     

    -

           @@ -8836,7 +8754,7 @@

     

    -

           @@ -8845,7 +8763,7 @@

     

    -

           @@ -8857,11 +8775,11 @@

     

    It is possible to stereotype a profile as an EPackage.

    +style='font-family:"Courier New"'>EPackage.

     

    -

           @@ -8875,17 +8793,17 @@

     

    -

           -Stereotype -applications are now stored at the resource level instead of as annotations on -the elements themselves.

    +Stereotype applications +are now stored at the resource level instead of as annotations on the elements +themselves.

     

    -

           @@ -8899,55 +8817,52 @@

     

    -

           The current UML API implements a versioning format that conforms to the latest UML -specification and uses existing nsURI naming -conventions.

    +specification and uses existing nsURI naming conventions.

     

    -

           In the old -schema, version information was stored as a prefix and in the nsURI.  This was somewhat redundant.

    +schema, version information was stored as a prefix and in the nsURI.  This +was somewhat redundant.

     

           - <contents xmi:type="ecore:EPackage" xmi:id="_6hd4tLRJEdqcc7lEDGpkMw" -name="ProfileOne_0" -       nsURI="http:///ProfileOne_0_6hd4s7RJEdqcc7lEDGpkMw.profile.uml2" nsPrefix="ProfileOne_0">

    + <contents xmi:type="ecore:EPackage" +xmi:id="_6hd4tLRJEdqcc7lEDGpkMw" name="ProfileOne_0"        nsURI="http:///ProfileOne_0_6hd4s7RJEdqcc7lEDGpkMw.profile.uml2" +nsPrefix="ProfileOne_0">

     

    -

           In the new -schema, version information is stored explicitly in the nsURI

    +schema, version information is stored explicitly in the nsURI

     

           <contents xmi:type="ecore:EPackage" -xmi:id="_wRtnIOwjEdqsq-xx51kbkg" -name="ProfileOne" nsURI="http:///schemas/ProfileOne/1" nsPrefix="ProfileOne">

    +font-family:"Courier New"'>       <contents +xmi:type="ecore:EPackage" +xmi:id="_wRtnIOwjEdqsq-xx51kbkg" name="ProfileOne" +nsURI="http:///schemas/ProfileOne/1" +nsPrefix="ProfileOne">

      

    @@ -8959,10 +8874,10 @@

     

    -

    Users can simply migrate the profiles -on their own, but profiles don’t exist in a vacuum.  Profiles are applied -to models.  It is therefore expected that you will want to migrate the -models on which the profile is applied at the same time as the profile is +

    Users can simply migrate the +profiles on their own, but profiles don’t exist in a vacuum.  Profiles are +applied to models.  It is therefore expected that you will want to migrate +the models on which the profile is applied at the same time as the profile is migrated.  The various usecases are outlined below.

     

    @@ -8976,11 +8891,11 @@

     

      -
    1. Open +
    2. Open your existing profile either by double clicking in the package explorer or by right clicking and selecting the “Open With > UML Model Editor”
      1. -
      2. An +
      3. An in-memory version converted to the new schema will now exist.
    @@ -8988,25 +8903,25 @@

     

      -
    1. Select +
    2. Select the profile in the UML editor.

     

      -
    1. Select +
    2. Select “UML Editor > Profile > Define”

                -

     

      -
    1. Save +
    2. Save your profile.
    @@ -9026,7 +8941,7 @@ applied to them (Basic.profile.uml2, Intermediate.profile.uml2 or Complete.profile.uml2). Now, we have -one standard profile called Standard.profile.uml.

    +one standard profile called Standard.profile.uml.

     

    @@ -9041,102 +8956,97 @@ encoding="UTF-8"?>

    <uml:Model -xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" -xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -xmlns:Basic_0="http:///Basic_0.profile.uml2" xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML" -xsi:schemaLocation="http:///Basic_0.profile.uml2 -pathmap://UML2_PROFILES/Basic.profile.uml2#__LeIQK86Edih9-GG5afQ0g" xmi:id="_y8utoOv8Edqsq-xx51kbkg" appliedProfile="_DKmYgOv_Edqsq-xx51kbkg +font-family:"Courier New"'><uml:Model +xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Basic_0="http:///Basic_0.profile.uml2" +xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML" +xsi:schemaLocation="http:///Basic_0.profile.uml2 +pathmap://UML2_PROFILES/Basic.profile.uml2#__LeIQK86Edih9-GG5afQ0g" +xmi:id="_y8utoOv8Edqsq-xx51kbkg" appliedProfile="_DKmYgOv_Edqsq-xx51kbkg _dmLfcOv_Edqsq-xx51kbkg">

      <packageImport xmi:type="uml:ProfileApplication" -xmi:id="_DKmYgOv_Edqsq-xx51kbkg">

    +font-family:"Courier New"'>  <packageImport xmi:type="uml:ProfileApplication" +xmi:id="_DKmYgOv_Edqsq-xx51kbkg">

        <eAnnotations -xmi:id="_DKmYgev_Edqsq-xx51kbkg" +font-family:"Courier New"'>    <eAnnotations xmi:id="_DKmYgev_Edqsq-xx51kbkg" source="attributes">

          <details xmi:id="_DKmYguv_Edqsq-xx51kbkg" -key="version" value="0"/>

    +font-family:"Courier New"'>      <details xmi:id="_DKmYguv_Edqsq-xx51kbkg" key="version" +value="0"/>

        </eAnnotations>

    +font-family:"Courier New"'>    </eAnnotations>

        <importedPackage +class=GramE>importedPackage href="pathmap://UML2_PROFILES/Complete.profile.uml2#_M7pTkK87Edih9-GG5afQ0g"/>

        <importedProfile +class=GramE>importedProfile href="pathmap://UML2_PROFILES/Complete.profile.uml2#_M7pTkK87Edih9-GG5afQ0g"/>

      </packageImport>

    +font-family:"Courier New"'>  </packageImport>

      <packageImport xmi:type="uml:ProfileApplication" -xmi:id="_dmLfcOv_Edqsq-xx51kbkg">

    +font-family:"Courier New"'>  <packageImport xmi:type="uml:ProfileApplication" +xmi:id="_dmLfcOv_Edqsq-xx51kbkg">

        <eAnnotations -xmi:id="_dmLfcev_Edqsq-xx51kbkg" +font-family:"Courier New"'>    <eAnnotations xmi:id="_dmLfcev_Edqsq-xx51kbkg" source="attributes">

          <details xmi:id="_dmLfcuv_Edqsq-xx51kbkg" +font-family:"Courier New"'>      <details xmi:id="_dmLfcuv_Edqsq-xx51kbkg" key="version" value="0"/>

        </eAnnotations>

    +font-family:"Courier New"'>    </eAnnotations>

        <importedPackage +class=GramE>importedPackage href="pathmap://UML2_PROFILES/Basic.profile.uml2#_6mFRgK86Edih9-GG5afQ0g"/>

        <importedProfile +class=GramE>importedProfile href="pathmap://UML2_PROFILES/Basic.profile.uml2#_6mFRgK86Edih9-GG5afQ0g"/>

      </packageImport>

    +font-family:"Courier New";background:yellow'>  </packageImport>

      <ownedMember xmi:type="uml:Artifact" -xmi:id="_md9YcOv_Edqsq-xx51kbkg" -name="artifact">

    +font-family:"Courier New"'>  <ownedMember xmi:type="uml:Artifact" +xmi:id="_md9YcOv_Edqsq-xx51kbkg" name="artifact">

        <eAnnotations -xmi:id="_o4MmQOv_Edqsq-xx51kbkg" -source="appliedStereotypes">

    +font-family:"Courier New"'>    <eAnnotations xmi:id="_o4MmQOv_Edqsq-xx51kbkg" +source="appliedStereotypes">

          <contents xmi:type="Basic_0:Basic__Script" -xmi:id="_o4MmQev_Edqsq-xx51kbkg"/>

    +font-family:"Courier New"'>      <contents xmi:type="Basic_0:Basic__Script" +xmi:id="_o4MmQev_Edqsq-xx51kbkg"/>

        </eAnnotations>

    +font-family:"Courier New"'>    </eAnnotations>

      </ownedMember>

    +font-family:"Courier New"'>  </ownedMember>

    </uml:Model>

    +font-family:"Courier New"'></uml:Model>

     

    @@ -9152,66 +9062,61 @@ encoding="UTF-8"?>

    <xmi:XMI -xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" -xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -xmlns:Standard="http://www.eclipse.org/uml2/schemas/Standard/1" -xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" -xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML" +font-family:"Courier New"'><xmi:XMI xmi:version="2.1" +xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:Standard="http://www.eclipse.org/uml2/schemas/Standard/1" +xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" +xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Standard/1 pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w">

      <uml:Model -xmi:id="_y8utoOv8Edqsq-xx51kbkg">

    +font-family:"Courier New"'>  <uml:Model +xmi:id="_y8utoOv8Edqsq-xx51kbkg">

        <packagedElement -xmi:type="uml:Artifact" xmi:id="_md9YcOv_Edqsq-xx51kbkg" -name="artifact"/>

    +font-family:"Courier New"'>    <packagedElement xmi:type="uml:Artifact" +xmi:id="_md9YcOv_Edqsq-xx51kbkg" name="artifact"/>

        <profileApplication -xmi:type="uml:ProfileApplication" xmi:id="_3vnrsOw6Edqsq-xx51kbkg">

    +font-family:"Courier New"'>    <profileApplication xmi:type="uml:ProfileApplication" +xmi:id="_3vnrsOw6Edqsq-xx51kbkg">

          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3vnrsew6Edqsq-xx51kbkg" -source="http://www.eclipse.org/uml2/2.0.0/UML">

    +font-family:"Courier New"'>      <eAnnotations xmi:type="ecore:EAnnotation" +xmi:id="_3vnrsew6Edqsq-xx51kbkg" source="http://www.eclipse.org/uml2/2.0.0/UML">

            -<references xmi:type="ecore:EPackage" +<references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w"/>

          </eAnnotations>

    +font-family:"Courier New"'>      </eAnnotations>

          <appliedProfile xmi:type="uml:Profile" -href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>

    +style='background:yellow'><appliedProfile xmi:type="uml:Profile" +href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>

        </profileApplication>

    +font-family:"Courier New";background:yellow'>    +</profileApplication>

      </uml:Model>

    +font-family:"Courier New"'>  </uml:Model>

      <Standard:Script xmi:id="_3vnrsuw6Edqsq-xx51kbkg" -base_Artifact="_md9YcOv_Edqsq-xx51kbkg"/>

    +font-family:"Courier New"'>  <Standard:Script +xmi:id="_3vnrsuw6Edqsq-xx51kbkg" +base_Artifact="_md9YcOv_Edqsq-xx51kbkg"/>

    </xmi:XMI>

    +font-family:"Courier New"'></xmi:XMI>

     

    @@ -9236,19 +9141,19 @@ > Apply Profile”.

                                        -

     

      -
    1. Delete +
    2. Delete the extra profile applications that are no longer required from your existing model that might have been left as a result of multiple predefined models (i.e. the Basic.profile.uml2, Intermediate.profile.uml2 and Complete.profile.uml2) - being converted to Standard.profile.uml.
    3. + being converted to Standard.profile.uml.

     

    @@ -9274,90 +9179,85 @@ encoding="UTF-8"?>

    <uml:Model -xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" -xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +font-family:"Courier New"'><uml:Model +xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ProfileOne_0="http:///ProfileOne_0_6hd4s7RJEdqcc7lEDGpkMw.profile.uml2" -xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML" +xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML" xsi:schemaLocation="http:///ProfileOne_0_6hd4s7RJEdqcc7lEDGpkMw.profile.uml2 -MyProfile.uml2#_6hd4tLRJEdqcc7lEDGpkMw" xmi:id="_HF4i4LRHEdqcc7lEDGpkMw" -appliedProfile="_EMDHoLRKEdqcc7lEDGpkMw">

    +MyProfile.uml2#_6hd4tLRJEdqcc7lEDGpkMw" +xmi:id="_HF4i4LRHEdqcc7lEDGpkMw" +appliedProfile="_EMDHoLRKEdqcc7lEDGpkMw">

      <packageImport xmi:type="uml:ProfileApplication" -xmi:id="_EMDHoLRKEdqcc7lEDGpkMw">

    +font-family:"Courier New"'>  <packageImport xmi:type="uml:ProfileApplication" +xmi:id="_EMDHoLRKEdqcc7lEDGpkMw">

        <eAnnotations -xmi:id="_EMDHobRKEdqcc7lEDGpkMw" -source="attributes">

    +font-family:"Courier New"'>    <eAnnotations xmi:id="_EMDHobRKEdqcc7lEDGpkMw" source="attributes">

          <details xmi:id="_EMDHorRKEdqcc7lEDGpkMw" +font-family:"Courier New"'>      <details xmi:id="_EMDHorRKEdqcc7lEDGpkMw" key="version" value="0"/>

        </eAnnotations>

    +font-family:"Courier New"'>    </eAnnotations>

        <importedPackage -xmi:type="uml:Profile" href="MyProfile.uml2#_NLpAMLRHEdqcc7lEDGpkMw"/>

    +font-family:"Courier New"'>    <importedPackage xmi:type="uml:Profile" +href="MyProfile.uml2#_NLpAMLRHEdqcc7lEDGpkMw"/>

        <importedProfile -href="MyProfile.uml2#_NLpAMLRHEdqcc7lEDGpkMw"/>

    +font-family:"Courier New"'>    <importedProfile +href="MyProfile.uml2#_NLpAMLRHEdqcc7lEDGpkMw"/>

      </packageImport>

    +font-family:"Courier New"'>  </packageImport>

      <ownedMember xmi:type="uml:Class" xmi:id="_H44GELRHEdqcc7lEDGpkMw" -name="MyClass">

    +font-family:"Courier New"'>  <ownedMember +xmi:type="uml:Class" +xmi:id="_H44GELRHEdqcc7lEDGpkMw" name="MyClass">

        <eAnnotations xmi:id="_HyseMLRKEdqcc7lEDGpkMw" -source="appliedStereotypes">

    +font-family:"Courier New";background:yellow'>    +<eAnnotations xmi:id="_HyseMLRKEdqcc7lEDGpkMw" +source="appliedStereotypes">

          -<contents xmi:type="ProfileOne_0:ProfileOne__StereotypeOne" -xmi:id="_HyseMbRKEdqcc7lEDGpkMw" MyProperty="4"/>

    +<contents xmi:type="ProfileOne_0:ProfileOne__StereotypeOne" +xmi:id="_HyseMbRKEdqcc7lEDGpkMw" MyProperty="4"/>

        </eAnnotations>

    +font-family:"Courier New";background:yellow'>    +</eAnnotations>

        <ownedAttribute -xmi:id="_b9cgQLRKEdqcc7lEDGpkMw" -name="PropertyOne"/>

    +font-family:"Courier New"'>    <ownedAttribute xmi:id="_b9cgQLRKEdqcc7lEDGpkMw" +name="PropertyOne"/>

      </ownedMember>

    +font-family:"Courier New"'>  </ownedMember>

      <ownedMember xmi:type="uml:Actor" -xmi:id="_ERmhcLqqEdqSyLEgG4orvQ" -name="Actor">

    +font-family:"Courier New"'>  <ownedMember xmi:type="uml:Actor" +xmi:id="_ERmhcLqqEdqSyLEgG4orvQ" name="Actor">

        <eAnnotations -xmi:id="_ICL3ILqqEdqSyLEgG4orvQ" +font-family:"Courier New"'>    <eAnnotations xmi:id="_ICL3ILqqEdqSyLEgG4orvQ" source="keywords" value="blah"/>

      </ownedMember>

    +font-family:"Courier New"'>  </ownedMember>

    </uml:Model>

    +font-family:"Courier New"'></uml:Model>

     

    @@ -9371,93 +9271,83 @@ encoding="UTF-8"?>

    <xmi:XMI -xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" -xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -xmlns:ProfileOne="http:///schemas/ProfileOne/1" -xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" -xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML" -xsi:schemaLocation="http:///schemas/ProfileOne/1 +font-family:"Courier New"'><xmi:XMI +xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:ProfileOne="http:///schemas/ProfileOne/1" +xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" +xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML" xsi:schemaLocation="http:///schemas/ProfileOne/1 MyProfile.uml#_wRtnIOwjEdqsq-xx51kbkg">

      <uml:Model -xmi:id="_HF4i4LRHEdqcc7lEDGpkMw">

    +font-family:"Courier New"'>  <uml:Model +xmi:id="_HF4i4LRHEdqcc7lEDGpkMw">

        <packagedElement xmi:type="uml:Class" xmi:id="_H44GELRHEdqcc7lEDGpkMw" -name="MyClass">

    +font-family:"Courier New"'>    <packagedElement +xmi:type="uml:Class" +xmi:id="_H44GELRHEdqcc7lEDGpkMw" name="MyClass">

          -<ownedAttribute xmi:type="uml:Property" -xmi:id="_b9cgQLRKEdqcc7lEDGpkMw" -name="PropertyOne"/>

    +<ownedAttribute xmi:type="uml:Property" +xmi:id="_b9cgQLRKEdqcc7lEDGpkMw" name="PropertyOne"/>

        </packagedElement>

    +font-family:"Courier New";background:yellow'>    +</packagedElement>

        <packagedElement -xmi:type="uml:Actor" xmi:id="_ERmhcLqqEdqSyLEgG4orvQ" -name="Actor">

    +font-family:"Courier New"'>    <packagedElement xmi:type="uml:Actor" +xmi:id="_ERmhcLqqEdqSyLEgG4orvQ" name="Actor">

          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ICL3ILqqEdqSyLEgG4orvQ" -source="http://www.eclipse.org/uml2/2.0.0/UML" +font-family:"Courier New"'>      <eAnnotations xmi:type="ecore:EAnnotation" +xmi:id="_ICL3ILqqEdqSyLEgG4orvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" value="blah"/>

        </packagedElement>

    +font-family:"Courier New"'>    </packagedElement>

        <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_EMDHoLRKEdqcc7lEDGpkMw">

    +font-family:"Courier New"'>    <profileApplication +xmi:type="uml:ProfileApplication" +xmi:id="_EMDHoLRKEdqcc7lEDGpkMw">

          -<eAnnotations xmi:type="ecore:EAnnotation" -xmi:id="_EMDHobRKEdqcc7lEDGpkMw" -source="http://www.eclipse.org/uml2/2.0.0/UML">

    +<eAnnotations xmi:type="ecore:EAnnotation" +xmi:id="_EMDHobRKEdqcc7lEDGpkMw" source="http://www.eclipse.org/uml2/2.0.0/UML">

            -<references xmi:type="ecore:EPackage" href="MyProfile.uml#_wRtnIOwjEdqsq-xx51kbkg"/>

    +<references xmi:type="ecore:EPackage" +href="MyProfile.uml#_wRtnIOwjEdqsq-xx51kbkg"/>

          -</eAnnotations>

    +</eAnnotations>

          -<appliedProfile xmi:type="uml:Profile" -href="MyProfile.uml#_NLpAMLRHEdqcc7lEDGpkMw"/>

    +<appliedProfile xmi:type="uml:Profile" +href="MyProfile.uml#_NLpAMLRHEdqcc7lEDGpkMw"/>

        </profileApplication>

    +font-family:"Courier New";background:yellow'>    </profileApplication>

      </uml:Model>

    +font-family:"Courier New"'>  </uml:Model>

      <ProfileOne:StereotypeOne xmi:id="_AjMRkOwkEdqsq-xx51kbkg" -MyProperty="4" base_Class="_H44GELRHEdqcc7lEDGpkMw"/>

    +font-family:"Courier New"'>  <ProfileOne:StereotypeOne +xmi:id="_AjMRkOwkEdqsq-xx51kbkg" MyProperty="4" +base_Class="_H44GELRHEdqcc7lEDGpkMw"/>

    </xmi:XMI>

    +font-family:"Courier New"'></xmi:XMI>

     

    @@ -9469,23 +9359,23 @@

     

      -
    1. Open - up your older model with the UMLEditor.
    2. +
    3. Open + up your older model with the UMLEditor.

     

        -
      1. Follow +
      2. Follow rules for “Model Artifact Migration”.

                                                                   -i.      -An in memory version of your model will be created

    +i.      An +in memory version of your model will be created

                                                                 @@ -9500,7 +9390,7 @@ likely not what you want)

                            -

     

    @@ -9516,7 +9406,7 @@
        -
      1. Select +
      2. Select the applied user defined profile in the editor
    @@ -9526,15 +9416,15 @@

     

                            -

     

        -
      1. Select - “UMLEditor > Profile > Define
      2. +
      3. Select + “UMLEditor > Profile > Define
    @@ -9543,13 +9433,13 @@

     

                            -

     

      -
    1. Re-apply +
    2. Re-apply the newly migrated profile.
    @@ -9567,16 +9457,15 @@

     

                                        -

     

        -
      1. Select - “UMLEditor > Package > Apply - Profile …”
      2. +
      3. Select + “UMLEditor > Package > Apply Profile …”
    @@ -9585,14 +9474,14 @@

     

                                        -

     

        -
      1. Select +
      2. Select the profile in question and click “Add” then “OK”
    @@ -9602,13 +9491,13 @@

     

                                        -

     

      -
    1. Save +
    2. Save your resource
    @@ -9616,7 +9505,7 @@
        -
      1. Simply +
      2. Simply click “Save”.
    @@ -9628,7 +9517,7 @@

     

    -


    @@ -9637,6 +9526,351 @@

     

    +

     

    + +

     Programmatic Migration

    + +

     

    + +

    In order to migrate models programmatically, some setup is +required in order to register mappings (already defined by UML).  These mappings will be used by the resource +set during the loading stage and will perform the necessary in-memory migration.

    + +

     

    + +

    The example below demonstrates how one can migrate models with a stand-alone application.

    + +

     

    + +

    Let’s first start with our main method.

    + +

     

    + +

    Main

    + +

     

    + +
          public static void main(String[] args) {
                  if (args.length != 2) {
                         System.out
                                 .println("Wrong number of arguments.\nFirst argument is path " +
                                                "of file to migrate ie. C:/myModel.uml2, \nSecond " +
                                                "argument is workspace path " +
                                                "ie. C:/workspace/myWorkspace/");
                         return;
                  }
                  String fileToMigrate = args[0];
                  String workspacePath = args[1];
     
                  migrateModel(URI.createFileURI(fileToMigrate), URI
                         .createFileURI(workspacePath));
          }
     
     
    + +

    Nothing very exciting here.  We simply pass the file to migrate as the +first parameter, and the workspace path as the second.  We’ll see how these are used later on.

    + +

    For stand-alone applications, it is required to register +pathmaps, extensions and packages. 

    + +

     

    + +

    Setup

    + +

     

    + +
          protected static void registerPathmaps(URI workspaceURI) {
                  URIConverter.URI_MAP.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP),
                      workspaceURI.appendSegment("libraries").appendSegment(""));
                  URIConverter.URI_MAP.put(URI.createURI(UMLResource.METAMODELS_PATHMAP),
                         workspaceURI.appendSegment("metamodels").appendSegment(""));
                  URIConverter.URI_MAP.put(URI.createURI(UMLResource.PROFILES_PATHMAP),
                         workspaceURI.appendSegment("profiles").appendSegment(""));
          }
     
    + +

    In the function above, we register the locations to the various +pathmaps.  Here, we make use of the +workspace URI  passed in as a parameter to the main() function.

    + +

     

    + +

     

    + +
     
          protected static void registerExtensions() {
                  Map extensionFactoryMap = Resource.Factory.Registry.INSTANCE
                         .getExtensionToFactoryMap();
                  extensionFactoryMap.put(UMLResource.FILE_EXTENSION,
                         UMLResource.Factory.INSTANCE);
               extensionFactoryMap.put(Ecore2XMLResource.FILE_EXTENSION,
                         Ecore2XMLResource.Factory.INSTANCE);
               extensionFactoryMap.put(UML22UMLResource.FILE_EXTENSION,
                         UML22UMLResource.Factory.INSTANCE);
          }
    + +

    In the function above, we register the  .ecore2xml and  .uml2 extensions used by the resource set for +conversion purposes.

    + +
     
     
          protected static void registerPackages(ResourceSet resourceSet) {
                  Map packageRegistry = resourceSet.getPackageRegistry();
                  packageRegistry.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
                  packageRegistry.put(Ecore2XMLPackage.eNS_URI,
                         Ecore2XMLPackage.eINSTANCE);
                  packageRegistry.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
          }
     
    + +

    Stand alone applications require registration of +Packages.  Eclipse based plugins are not +required to register packages since packages are registered via an extension.

    + +

     

    + +

     

    + +

    Migration

    + +

     

    + +

    Now we get to the interesting part. 

    + +

     

    + +
          public static void migrateModel(URI resourceURI, URI workspaceURI) {
                  System.out.println("Migrating file " + resourceURI.toFileString());
     
                  ResourceSet resourceSet = new ResourceSetImpl();
     
               registerPathmaps(workspaceURI);
                  registerPackages(resourceSet);
                  registerExtensions();
     
                  // Map references to legacy (1.x) model elements to their new locations.
                  Map uriMap = UML22UMLExtendedMetaData.getURIMap();
                  resourceSet.getURIConverter().getURIMap().putAll(uriMap);
     
                  // For a stand alone application, it is necessary to map the platform
                  // plugin URI scheme to the workspace location.
                  URIConverter.URI_MAP.put(URI.createURI("platform:/plugin/"),
                         workspaceURI);
     
                  // Load a resource in the resource set.
                  try {
                       resourceSet.getResource(resourceURI, true);
                  } catch (Exception e) {
                         System.out.println(e.getMessage());
                         return;
                  }
     
                  // Replace the .uml2 extension with .uml if necessary.
                  Map resourceToURIMap = new HashMap();
                  EList resources = resourceSet.getResources();
               for (int i = 0; i < resources.size(); i++) {
                         Resource resource = (Resource) resources.get(i);
                         URI uri = resource.getURI();
                         if (UML22UMLResource.FILE_EXTENSION.equals(uri.fileExtension())) {
                                 uri = uri.trimFileExtension().appendFileExtension(
                                         UMLResource.FILE_EXTENSION);
                                 // resolveAll() will cause any referenced models to be loaded
                                 // and migrated.
                                 EcoreUtil.resolveAll(resource);
                         }
                         resourceToURIMap.put(resource, uri);
                  }
                  // Save all the resources with updated extension.
                  for (Iterator entries = resourceToURIMap.entrySet().iterator(); entries
                         .hasNext();) {
                         Map.Entry entry = (Map.Entry) entries.next();
                         Resource saveResource = (Resource) entry.getKey();
                         saveResource.setURI((URI) entry.getValue());
                         try {
                              saveResource.save(null);
                                 System.out.println("Saving migrated resource: "
                                         + saveResource.getURI().toString());
                         } catch (IOException ioe) {
                                 System.out.println(ioe.getMessage());
                         }
                  }
          }
     
    + +

    First, we register all required pathmaps, packages and +extensions  required for a stand-alone +applications.  Next, we simply call +upon the resource set  to open the file.  The previously registered mappings will be +used when opening the resource.   After the call to getResource() +the code is migrated in memory.  The only +thing left to do before saving back out to disk is to  change the extension from .uml2 to .uml.  And finally  save to disk.

    + +

     

    + +

     

    +

    API Migration

     

    @@ -9695,8 +9929,8 @@ -

    Different handling of derived - properties and sub-collections

    +

    Different handling of + derived properties and sub-collections

    -

    Significant performance improvement

    +

    Significant performance + improvement

     

    @@ -9776,8 +10011,8 @@ -

    Opaque Expression now - supports multiple languages and bodies

    +

    Opaque Expression now supports + multiple languages and bodies

     

    -

    Number of metaclasses  and properties  have been renamed - or removed

    +

    Number of metaclasses  + and properties  have been renamed or removed

     

    -

    New metaclasses - (18), properties (25) and operations (4).

    +

    New metaclasses (18), + properties (25) and operations (4).

    Stereotype attributes can - now reference metaclasses

    + now reference metaclasses

     

    -

    UMLUtil class has utility methods to perform Package Merge

    +

    UMLUtil class has utility + methods to perform Package Merge

     

    -

    UMLUtil class has improved utility methods for export/import - to Ecore format

    +

    UMLUtil class has improved + utility methods for export/import to Ecore format

           To ensure the latest version of the profile is applied, there are newly introduced -convenience methods.   Simply call ProfileApplication#getAppliedDefinition() and compare the result to Profile#getDefinition()Profile#getDefinition() will always return the latest -version.

    +convenience methods.   Simply call ProfileApplication#getAppliedDefinition() and compare the result to Profile#getDefinition()Profile#getDefinition() +will always return the latest version.

     

    The tables below provide the basis of API -migration work.  They summarize the changes to the metamodel -and give you an understanding of the kind of modifications required:

    +migration work.  They summarize the changes to the metamodel and give you +an understanding of the kind of modifications required:

     

    @@ -9979,8 +10207,8 @@ -

    MetaclassesMetaclasses:

                          Added

    @@ -9990,45 +10218,38 @@

    ·          - ActionExecutionSpecification

    + ActionExecutionSpecification +

    ·          - ActionInputPin

    + ActionInputPin +

    ·          - BehaviorExecutionSpecification

    + BehaviorExecutionSpecification +

    ·          - ConsiderIgnoreFragment

    + ConsiderIgnoreFragment +

    ·          - CreationEvent

    + CreationEvent +

    ·          - DestructionEvent

    + DestructionEvent +

    ·          - SendOperationEvent

    + SendOperationEvent +

    ·          @@ -10036,26 +10257,22 @@

    ·          - ExecutionEvent

    + ExecutionEvent +

    ·          - ExecutionOccurrenceSpecification

    + ExecutionOccurrenceSpecification +

    ·          - ExecutionSpecification

    + ExecutionSpecification +

    ·          - FunctionBehavior

    + FunctionBehavior

    ·          @@ -10063,87 +10280,70 @@

    ·          - MessageOccurrenceSpecification

    + MessageOccurrenceSpecification +

    ·          - OpaqueAction

    + OpaqueAction

    ·          - OpaqueBehavior

    + OpaqueBehavior

    ·          - SequenceNode

    + SequenceNode

    ·          - UnmarshallAction

    + UnmarshallAction

    ·          - ValueSpecificationAction

    + ValueSpecificationAction

    ·          - MessageEvent

    + MessageEvent +

    ·          - SendSignalEvent

    + SendSignalEvent +

    ·          - CallEvent

    + CallEvent

    ·          - ChangeEvent

    + ChangeEvent

    ·          - SignalEvent

    + SignalEvent

    ·          - AnyReceiveEvent

    + AnyReceiveEvent

    ·          - LinkEndDestructionData

    + LinkEndDestructionData

    ·          - StartClassifierBehaviorAction

    + StartClassifierBehaviorAction

    ·          - ComponentRealization

    + ComponentRealization

    ·          - TimeEvent

    + TimeEvent

     

    @@ -10151,8 +10351,8 @@ -

    MetaclassesMetaclasses:

                         Removed

    @@ -10162,8 +10362,7 @@

    ·          - ApplyFunctionAction

    + ApplyFunctionAction

    ·          @@ -10171,8 +10370,7 @@

    ·          - PrimitiveFunction

    + PrimitiveFunction

    ·          @@ -10180,58 +10378,47 @@

    ·          - MessageTrigger

    + MessageTrigger +

    ·          - CallTrigger

    + CallTrigger +

    ·          - ChageTrigger

    + ChageTrigger +

    ·          - SignalTrigger

    + SignalTrigger +

    ·          - AnyTrigger

    + AnyTrigger

    ·          - TimeTrigger

    + TimeTrigger

    ·          - ParameterableClassifier

    + ParameterableClassifier

    ·          - TemplateableClassifier

    + TemplateableClassifier

    ·          - RemoveVariableValueAction

    + RemoveVariableValueAction

    ·          - StartOwnedBehaviorAction

    + StartOwnedBehaviorAction

     

    @@ -10239,8 +10426,8 @@ -

    MetaclassesMetaclasses:

                          @@ -10251,49 +10438,41 @@

    ·          - CollaborationOccurrence ->      CollaborationUse  

    + CollaborationOccurrence + ->      CollaborationUse  

    ·          - EventOccurrence -> + EventOccurrence + ->                    - ExecutionOccurrenceSpecification

    + ExecutionOccurrenceSpecification

    ·          - ExecutionOccurrence -> -             ExecutionSpecification

    + ExecutionOccurrence + ->             + ExecutionSpecification

    ·          Implementation ->                       - InterfaceRealization 

    + InterfaceRealization 

    ·          - InteractionOccurrence - ->           InteractionUse 

    + InteractionOccurrence + ->           + InteractionUse 

     

    ·          - StartOwnedBehaviorAction ->   StartClassifierBehaviorAction

    + StartOwnedBehaviorAction + ->   StartClassifierBehaviorAction

     

    -

    MetaclassesMetaclasses:

                   @@ -10319,8 +10498,7 @@

    ·          - ExecutionOccurrence

    + ExecutionOccurrence

     

    -

    MetaclassesMetaclasses:

                  @@ -10390,181 +10568,137 @@

    ·          - AcceptEventAction::isUnmarshall : Boolean = false

    + AcceptEventAction::isUnmarshall + : Boolean = false

    ·          - Activity::variable : Variable [0..*]

    + Activity::variable : Variable [0..*]

    ·          - Association::navigableOwnedEnd : Property [0..*]

    + Association::navigableOwnedEnd : Property [0..*]

    ·          - BehavioralFeature::ownedParameterSet : ParameterSet - [0..*]

    + BehavioralFeature::ownedParameterSet : ParameterSet [0..*]

    ·          - DestroyLinkAction::endData : LinkEndDesctructionData - [2..*]

    + DestroyLinkAction::endData : LinkEndDesctructionData [2..*]

    ·          - EventOccurrence::event : Event [1..1]

    + EventOccurrence::event + : Event [1..1]

    ·          - ExecutionOccurrence::action : Action [0..1]

    + ExecutionOccurrence::action + : Action [0..1]

    ·          - InformationFlow::realizingActivityEdge : ActivityEdge - [0..*]

    + InformationFlow::realizingActivityEdge : ActivityEdge [0..*]

    ·          - InformationFlow::realizingConnector : Connector [0..*]

    + InformationFlow::realizingConnector : Connector [0..*]

    ·          - InformationFlow::realizingMessage : Message [0..*]

    + InformationFlow::realizingMessage : Message [0..*]

    ·          - InformationFlow::source: NamedElement - [1..*]

    + InformationFlow::source: + NamedElement [1..*]

    ·          - InformationFlow::target: NamedElement - [1..*]

    + InformationFlow::target: + NamedElement [1..*]

    ·          - MessageEnd::message : Message [1..1]

    + MessageEnd::message + : Message [1..1]

    ·          - ObjectNode::isControlType : Boolean = false

    + ObjectNode::isControlType + : Boolean = false

    ·          - Operation::interface : Interface [0..1]

    + Operation::interface + : Interface [0..1]

    ·          - Pin::isControl : Boolean

    + Pin::isControl + : Boolean

    ·          - RemoveStructuralFeatureValueAction::isRemoveDuplicates : Boolean

    + RemoveStructuralFeatureValueAction::isRemoveDuplicates + : Boolean

    ·          - RemoveStructuralFeatureValueAction::removeAt : InputPin - [0..1]

    + RemoveStructuralFeatureValueAction::removeAt + : InputPin [0..1]

    ·          - RemoveVariableValueAction::isRemoveDuplicates : Boolean

    + RemoveVariableValueAction::isRemoveDuplicates + : Boolean

    ·          - RemoveVariableValueAction::removeAt : InputPin - [0..1]

    + RemoveVariableValueAction::removeAt + : InputPin [0..1]

    ·          - State::connectionPoint : Pseudostate - [0..*]

    + State::connectionPoint : Pseudostate [0..*]

    ·          - Stereotype::icon : Image [0..*]

    + Stereotype::icon : Image [0..*]

    ·          - Trigger::event : Event [1..1]

    + Trigger::event + : Event [1..1]

    ·          - Variable::activityScope : Activity [0..1]

    + Variable::activityScope + : Activity [0..1]

    ·          - ExtensionPoint::useCase : UseCase[1]

    + ExtensionPoint::useCase + : UseCase[1]

    ·          - RemoveVariableValueAction::isRemoveDuplicates:Boolean

    + RemoveVariableValueAction::isRemoveDuplicates:Boolean

    ·          - RemoveVariableValueAction::removeAt: InputPin

    + RemoveVariableValueAction::removeAt: + InputPin

     

    @@ -10584,74 +10718,60 @@

    ·          - Behavior::formalParameter

    + Behavior::formalParameter

    ·          - Behavior::parameter

    + Behavior::parameter

    ·          - Behavior::returnResult

    + Behavior::returnResult

    ·          - BehavioralFeature::parameter

    + BehavioralFeature::parameter

    ·          - BehavioralFeature::returnResult

    + BehavioralFeature::returnResult

    ·          - BehavioredClassifier::ownedStateMachine

    + BehavioredClassifier::ownedStateMachine

    ·          - EventOccurrence::finishExec

    + EventOccurrence::finishExec

    ·          - EventOccurrence::startExec

    + EventOccurrence::startExec

    ·          - MessageEnd::sendMessage

    + MessageEnd::sendMessage

    ·          - MessageEnd::receiveMessage

    + MessageEnd::receiveMessage

    ·          - Package::packageExtension

    + Package::packageExtension

    ·          - StructuralFeature::isReadOnly

    + StructuralFeature::isReadOnly

    ·          - NamedElement::namespace

    + NamedElement::namespace

    ·          - Comment::bodyExpression *

    + Comment::bodyExpression + *

     

    @@ -10671,30 +10791,23 @@

    ·          - BehavioralFeature::formalParameter -> ownedParameter

    + BehavioralFeature::formalParameter + -> ownedParameter

    ·          - BehavioredClassifier::implementation -> interfaceRealization

    + BehavioredClassifier::implementation + -> interfaceRealization

    ·          - Classifier::occurrence -> collaborationUse

    + Classifier::occurrence + -> collaborationUse

    ·          - PackageMerge::mergingPackage -> receivingPackage

    + PackageMerge::mergingPackage + -> receivingPackage

     

    @@ -10716,10 +10829,8 @@

    ·          - ReplyAction::replyToCall : CallTrigger - -> Trigger

    + ReplyAction::replyToCall + : CallTrigger -> Trigger

    ·         ·         Behavior::context

    + style='font-size:9.0pt;font-family:Helv;color:black'>Behavior::context

    @@ -10785,13 +10896,11 @@

    ·          - ConnectionPointReference::state

    + ConnectionPointReference::state

    ·          - Pseudostate::stateMachine

    + Pseudostate::stateMachine

     

    @@ -10811,73 +10920,59 @@

    ·          - ApplyFunctionAction::argument

    + ApplyFunctionAction::argument

    ·          - Association::endType

    + Association::endType

    ·          - CombinedFragment::operand

    + CombinedFragment::operand

    ·          - ConnectableElement::end

    + ConnectableElement::end

    ·          - InteractionOccurrence::argument

    + InteractionOccurrence::argument

    ·          - Message::argument

    + Message::argument

    ·          - StructuredClassifier::ownedAttribute

    + StructuredClassifier::ownedAttribute

    ·          - TemplateSignature::parameter

    + TemplateSignature::parameter

    ·          - DataType::ownedAttribute

    + DataType::ownedAttribute

    ·          - DataType::ownedOperation

    + DataType::ownedOperation

    ·          - OpaqueAction::body

    + OpaqueAction::body

    ·          - OpaqueAction::language

    + OpaqueAction::language

    ·          - LoopNode::result

    + LoopNode::result

    ·          - LoopNode::loopVariable

    + LoopNode::loopVariable

     

    ·          - AcceptCallAction::trigger : CallTrigger - [0..*] -> 1..1

    + AcceptCallAction::trigger + : CallTrigger [0..*] -> 1..1

    ·          - AcceptEventAction::trigger : Trigger [0..*] -> - 1..*

    + AcceptEventAction::trigger : Trigger [0..*] -> 1..*

    ·          - ConnectorEnd::role : ConnectableElement - [0..1] -> 1..1

    + ConnectorEnd::role + : ConnectableElement [0..1] -> 1..1

    ·          - Lifeline::represents : ConnectableElement - [1..1] -> 0..1

    + Lifeline::represents + : ConnectableElement [1..1] -> 0..1

    ·          - Variable::scope : StructuredActivityNode - [1..1] -> 0..1

    + Variable::scope + : StructuredActivityNode [1..1] -> 0..1

    ·          - ConnectionPointReference::entry : Elist[1..*]-> - *

    + ConnectionPointReference::entry : Elist[1..*]-> *

    ·          - ConnectionPointReference::exit : Elist[1..*]->*

    + ConnectionPointReference::exit : Elist[1..*]->*

    ·          - InstanceSpecification::specification : ValueSpecification::[0..1] - ->1

    + InstanceSpecification::specification + : ValueSpecification::[0..1] ->1

    ·          - BehaviorExecutionSpecification::behavior : Behavior [1] -> - 0..1

    + BehaviorExecutionSpecification::behavior + : Behavior [1] -> 0..1

    ·          - Message::message[1]->[0..1]

    + Message::message[1]->[0..1]

    ·          - ConnectionPointReference::entry : Pseudostate[1..*]->[*]

    + ConnectionPointReference::entry : Pseudostate[1..*]->[*]

    ·          - ConnectionPointReference::exit : Pseudostate[1..*]->[*]

    + ConnectionPointReference::exit : Pseudostate[1..*]->[*]

     

    ·          - DurationObservationAction::duration[*] ->[1] 

    + DurationObservationAction::duration[*] + ->[1] 

    ·          - ExecutionOccurrence::behavior : Behavior[0..*] à BehaviorExecutionSpecification::behavior[0..1]

    + ExecutionOccurrence::behavior + : Behavior[0..*] à BehaviorExecutionSpecification::behavior[0..1]

    ·          - Interval::min: ValueSpecification[0..*] - -> [1]

    + Interval::min: + ValueSpecification[0..*] -> [1]

    ·          - Interval::max: ValueSpecification[0..*]->[1]

    + Interval::max: + ValueSpecification[0..*]->[1]

    ·          - TimeObservationAction::now[*] ->[1]

    + TimeObservationAction::now[*] + ->[1]

    ·          - EventOccurrence::startExec[*] -> ExecutionSpecification::start: - ExecutionOccurrence[1]

    + EventOccurrence::startExec[*] + -> ExecutionSpecification::start: ExecutionOccurrence[1]

    ·          - EventOccurrence::finishExec[*] -> ExecutionSpecification::finish:ExecutionOccurrence[1]

    + EventOccurrence::finishExec[*] + -> ExecutionSpecification::finish:ExecutionOccurrence[1]

     

    ·          - Activity::body : String[1] -> OpaqueBehavior::body:String[1..*]

    + Activity::body : String[1] -> OpaqueBehavior::body:String[1..*]

    ·          - OpaqueExpression::body : String [0..1] -> - 1..*

    + OpaqueExpression::body : String [0..1] -> 1..*

    ·          - OpaqueExpression::language : String [0..1] -> - 0..*

    + OpaqueExpression::language : String [0..1] -> 0..*

     

    @@ -11162,9 +11212,8 @@

    ·          - CallAction.isSynchronous = true

    + CallAction.isSynchronous + = true

    @@ -11218,27 +11267,23 @@

    ·          - Property::isNavigable() : Boolean

    + Property::isNavigable() + : Boolean

    ·          - Region::containingStateMachine() : StateMachine

    + Region::containingStateMachine() + : StateMachine

    ·          - Transition::containingStateMachine() : StateMachine

    + Transition::containingStateMachine() + : StateMachine

    ·          - Vertex::containingStateMachine() : StateMachine

    + Vertex::containingStateMachine() + : StateMachine

     

    @@ -11280,8 +11325,8 @@

    ·          InteractionOperator -> InteractionOperatorKind

    + style='font-size:9.0pt;font-family:Helvetica'>InteractionOperator -> InteractionOperatorKind

     

    @@ -11303,8 +11348,7 @@

    ·          - MessageSort::synchSignal

    + MessageSort::synchSignal

     

    @@ -11348,33 +11392,28 @@

    ·          - ChangeTrigger :: Event

    + ChangeTrigger + :: Event

    ·          - MessageTrigger :: Event

    + MessageTrigger + :: Event

    ·          - TimeTrigger :: Event

    + TimeTrigger + :: Event

    ·          - StringExpression :: Expression

    + StringExpression + :: Expression

    ·          - ValueSpecification :: PackageableElement

    + ValueSpecification + :: PackageableElement

     

    @@ -11387,43 +11426,31 @@

     

    -

    Q. What does MultiplicityElement.UNLIMITED_UPPER_BOUND +

    Q. What does MultiplicityElement.UNLIMITED_UPPER_BOUND map to?

    -

    A.  LiteralUnlimitedNatureal.UNBOUNDED.

    +

    A.  LiteralUnlimitedNatureal.UNBOUNDED.

     

    -

    Q. What does Activity::body -map to?

    +

    Q. What does Activity::body map to?

    -

    A.  Create an OpaqueBehavior::body. -Both OpaqueBehavior and Activity now are -specializations of Behavior.

    +

    A.  Create an OpaqueBehavior::body. Both +OpaqueBehavior and Activity now are specializations of Behavior.

     

    -

    Q. What is the difference between getUpperBound() and getUpper() and getUpperValue() on a pin?

    - -

    A. getUpperBound(Q. What is the difference between getUpperBound() and getUpper() +and getUpperValue() on a pin?

    + +

    A. getUpperBound() on a pin is a convenience method -that deals with tokens.  The getUpper() and getUpperValue() is part of MultiplicityElement.

    +that deals with tokens.  The getUpper() +and getUpperValue() is part of MultiplicityElement.

     

    Index: .project =================================================================== RCS file: .project diff -N .project --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ .project 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,11 @@ + + + docs + + + + + + + +