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
