Legacy Issue Number: 5226
Source: Model Driven Solutions ( Ed Seidewitz)
Document: UML Profile and Interchange Models for EAI
Section: 8.3.4 (Streams)
Section 8.3.4 describes the semantics of stream operators as follows:
"Messages that arrive from the input terminal do not get passed on, but instead are stored in a buffer or some other appropriate data structure. The emit operation defines the algorithm used to decide when and in what order messages get emitted to the output terminal. Abstractly, one can imagine a loop that continually calls the emit operation. It returns a message to be put on the output terminal at each call. There may be a delay between its being called and its returning a message."
Some issues with this description are:
1. The concept of "a loop that continually calls the emit operation" does not clearly seem to reflect the semantics described in Section 18.104.22.168 (see Issue 4959 on the lack of clarity of the semantics in that section) and does not reflect the underlying Flow Composition Model semantics of the metamodel.
2. Section 8.6.2 states that, for an EAIStream, "12. The emissionCondition of the operator maps to the emit operation in the corresponding class". However, in Section 8.3.4, the emit operation is not a condition (which would return a Boolean) but, rather, has a message content return type.
3. How is the "buffer or some other appropriate data structure" specified? Section 22.214.171.124 (EAIStream) shows the buffer as a set of EAIMessageContent, but this is not appropriate for the metamodel and should rather be addressed as a model-level concern (see Issue 4962).
Consistent with the recommendations given for Issues 4959 and 4962:
1. Require an "insert" operation that takes a single argument of the input content type. This operation maps to the "streaming algorithm" of the EAIOperation of the EAIStream and is triggered when a message arrives on the input terminal. It defines where the incoming message content is placed in the stream operator's buffer.
2. Define the emit operation to have a Boolean result. This operation maps to the emissionCondition of the EAIStream. The emit operation determines whether the top element of the buffer is emitted or not.
3. State that a buffer data structure for a stream class may be explicitly modeled, in order to provide more precise specification of the insert and emit operations. However, this model is considered part of the specification of the EAIOperation and EAICondition (emissionCondition) of the stream, and is not otherwise mapped explicitly into the EAI metamodel.
Reported: EAI 1.0b1 — Thu, 18 Apr 2002 04:00 GMT
Disposition: Resolved — EAI 1.0
Updated: Fri, 6 Mar 2015 20:58 GMT