MagicDraw/Cameo: ERROR: Incorrectly uses 2 ObjectFlow edges and a CentralBufferNode in place of "elided Pin notation" instead of an abstract ObjectNode symbol and 2 arrow symbols (that are supposed to represent together 2 Pins and 1 ObjectFlow edge)

Icon class
icon_class
far fa-sticky-note
icon_class_computed
far fa-sticky-note
Note kind
UML keywords
Keywords
Click on the image to view it full size
Dr Darren says:
There are lots of things I love about MagicDraw® UML, the MD SysML Plugin, and Cameo Systems Modeler®, it is my main professional tool of trade. This long-standing flaw is definitely not one of them.
In MagicDraw® UML or Cameo Systems Modeler®, if you select an "Object Node" (which has an abstract metaclass) from the Activity Diagram menu items and place it on the diagram it will create a «centralBuffer» node symbol, which is just plain wrong.

If you use the smart manipulator from an Action symbol to create an ObjectFlow and don't connect it up to another Action or an existing Pin on another Action, it creates an OutputPin, an ObjectFlow, and a «centralBuffer» node symbol, which is also just plain wrong.

The result is that you can end up with an extra ObjectFlow edge in the model and an unwanted and irrelevant CentralBufferNode and sometimes the wrong number of Pins

At least in version 19SP3, if you have an "ObjectFlow symbol" (there is in fact no such thing for elided Pin notation, there are only object node arrow symbols, see below) to a «centralBuffer» node directly from an Action that has a Pin it warns you that 'All pins that are created for this action must be displayed in the diagrams'. But that warning is itself also just plain wrong.

MagicDraw has never got this one right and probably never will

The notation as described in the UML specification is probably difficult to implement in a tool, but it is in fact quite clear (if somewhat strange):

The referenced Figure 15.9 ObjectFlow notations is reproduced here for convenience.

Note how it says (Webel's emphasis in bold) 'two object flow arrows denote a single object flow edge'. An object flow arrow is a notation symbol, it DOES NOT ALWAYS CORRESPOND ONE-TO-ONE TO A SINGLE ELEMENT IN THE MODEL!

Not convinced yet? More of the same from the spec:

The referenced Figure 16.6 Standalone Pin notations is reproduced here for convenience.

And what the tool is doing contradicts this:


[If you go from an InputPin to a compatible OutputPin, an object flow arrow corresponds one-to-one to an ObjectFlow edge in the model; MagicDraw/Cameo does get that case right.]

Relates to
Related notes
Related notes (backlinks)
Related snippets (extracts)
Visit also
Visit also (backlinks)