Download Implementing Activity Structures Process Modeling On Top Of The
Transcript
21
{ }
(and (?SO.state0 = Inactive)
(?SO.state1 = Ready));
Activate [?SO:AS_1]:
(and
(exists test ?parent suchthat (member [?parent.children1 ?SO]))
(forall ACTIVITY_STRUCTURE ?s suchthat (?s.as_string <> ResetUser))
)
:
(and (or no_forward(?SO.active = Inactive)
no_forward(?SO.active = Terminated))
no_forward(?SO.clientID = ResetClient)
no_forward(?SO.owner = CurrentUser)
no_forward(?parent.active = Active)
no_forward(?s.clientID <> CurrentClient))
{ }
(and no_backward(?SO.clientID = CurrentClient)
no_backward(?SO.state0 = Ready));
hide finish_1 [?SO:AS_0]:
:
(?SO.state1 = Inactive)
{ }
no_forward(?SO.active = Inactive);
hide finish_0 [?SO:AS_0]:
:
(?SO.state1 = Ready)
{ }
no_forward(?SO.active = Done);
A [?set_a:X, ?SO:AS_0]:
:
no_forward(?SO.state0 = Ready)
{ }
(and (?SO.state0 = Inactive)
(?SO.state1 = Ready));
Activate [?SO:AS_0]:
(and
(exists test ?parent suchthat (member [?parent.children1 ?SO]))
(forall ACTIVITY_STRUCTURE ?s suchthat (?s.as_string <> ResetUser))
)
:
(and (or no_forward(?SO.active = Inactive)
no_forward(?SO.active = Terminated))
no_forward(?SO.clientID = ResetClient)
no_forward(?SO.owner = CurrentUser)
no_forward(?parent.active = Active)
no_forward(?s.clientID <> CurrentClient))
{ }
(and no_backward(?SO.clientID = CurrentClient)
no_backward(?SO.state0 = Ready));
Assign [?SO:test]:
:
{ ASSIGN get_user return ?uA }
no_backward(?SO.owner = ?uA);
Figure 6-1: Simplest Shuffle Expression
Notice also that although the three structure object instantiations are grouped into a single envelope,