Tags and keywords
Controller
class of the same name - that coordinates our demo.It deals ultimately with 2 different kinds of signal events, some for the dialed numbers via a CallBehaviorAction :CatchDialN
, and it also watches for attempts to Connect
, subject to the dialed number being valid.
Note that there is nothing to explicitly stop the "loop" through :CatchDialN
; we are relying on receiving a Connect
signal once the number is valid (later we'll see how this is sent from a separate StateMachine).
One can however attempt to Connect
at any time, subject to this validation guard, which employs here the Action Language for Foundational UML (Alf) (which requires an additional commercial Alf Plugin):
[this.dialer.number.isValid()]
If the guard passes, a CallBehaviorAction invokes a usage of the Connect
Activity. If, however, the validation guard fails, the ControlEdge with the special [else]
guard is taken, and an OpaqueExpression prints a simple warning, before reactivating the CallEventAction for the Connect
signal via a shared MergeNode.
We're nearly ready to see the promised StateMachine, but let's look quickly first at the Connect
Activity