-
Key: UML22-565
-
Legacy Issue Number: 7977
-
Status: closed
-
Source: Object Management Group ( Stephen Mellor)
-
Summary:
It has come to my attention that the removal of the ReduceAction (fair
enough) requires the use of a variable (a very bad idea) to construct an
alternative specification.To do something like Reduce(<data expression>, Add) in UML 1.5, you
would have to say:- An activity/structure node with variable Sum.
- The expansion region takes the collection as input and has no
output. In this case, the output collection will have only one
element in it. - In the region, edges coming from/going to the inputs/outputs take
elements from the input collections and put elements in the output
collections. - The region uses CallOperationAction with operation timeofLastCall to
get the time and CallBehaviorAction on the (primitive)
FunctionBehavior for addition and updates the variable. - After the region is complete, the variable has the sum in it.
The 1.5 Action Model included variables so that those who "needed" them
could have them. However, the introduction of variables changes the
static-single-assignemnt nature of the language and would now require
data-flow analysis of a developer model to work out what is happening.
Before all we had to do was scan for Variable Actions and reject the
developer model so proposed.In other words, those of us in the translation business did not need
variables, and we could ignore those models that used them. Now we're
stuck.Topic: ReduceAction
UML 1.5 had ReduceAction, which repeatedly applied a function pairwise
to elements of a collection until only only element is left. It did not
constrain order or concurrency of application. It was replaced with
ExpansionRegion UML 2, which requires commitment to order and
concurrency. -
Reported: UML 1.4.2 — Tue, 14 Dec 2004 05:00 GMT
-
Disposition: Resolved — UML 2.1
-
Disposition Summary:
Corrections to issue description:
-
Updated: Fri, 6 Mar 2015 20:58 GMT