The UML 2 Superstructure Specification requires that behaviors with streaming parameters be non-reentrant (see constraint  under Subclause 12.3.41). The description for the Behavior::isReentrant attribute is “Tells whether the behavior can be invoked while it is still executing from a previous invocation” (Subclause 13.3.2). The reason for the constraint is given as “A reentrant behavior cannot have streaming parameters because there are potentially multiple executions of the behavior going at the same time, and it is ambiguous which execution should receive streaming tokens” (Subclause 12.3.41). However, the description of reentrancy for behaviors would seem to imply that the behavior cannot be invoked again if any invocation of it is currently executing. This would mean that if one call action for the behavior invoked it, then not only that call action but all other call actions will be blocked from invoking the behavior until the first invocation has completed. But stringent a restriction is not necessary for the purposes of streaming. For a specific call action, it is completely unambiguous which behavior execution should receive streaming tokens (i.e., the one associated with that call action activation), even if the same behavior is invoked from other call actions. The only restriction required is that the behavior not be allowed to be invoked from the same call action activation again while a previous invocation is executing. That is, a call action to a behavior with streaming parameters is blocked from firing again while a previous invocation of the behavior is still executing. The semantics for streaming presented here presumes this more limited restriction. It will be proposed to the UML 2.3 Revision Task Force that the semantics for reentrancy in UML 2 be revised to reflect this (see Section 8).
Replaced/Superseded by document(s)
|File||MIME type||Size (KB)||Language||Download|
The objective of the Executable UML/SysML Semantics Project is to specify and demonstrate the semantics required to execute activity diagrams and associated timelines per the SysML v1.0 specification and to specify the supporting semantics needed to integrate behavior with structure and realize these activities in blocks and parts represented by activity partitions. The SysML semantics will build on the Semantics of a Foundation Subset for Executable UML Models, which is currently in preparation for submission as an OMG standard.