86 Data Structure and Software Engineering: Challenges and Improvements
(i) context Event inv: eventType.name=‘StartEvent1’ and case.
status=‘completed’ implies case.activity-> select (a | a.oclIsTypeOf(A) and
a.event=self)->size()=1
(ii) context Case inv: activity->notEmpty() implies event->exists(e
|e.eventType.eventKind=‘StartEvent’)
(iii) context A inv: self.event->exists(ev | ev.eventType.name =‘StartEvent1’).
No activity instances can be created in the case after the event has been is-
sued. Assuming that EndEvent1 (Figure 9) is dened as a terminate event, the
following constraint must be added to the workow-extended model: context
Event inv: eventType.name=‘EndEvent1’ implies case.activity->forAll (a | a.start<
eventTime)
For intermediate ...