软件开发有一个不成文的原则,对称性。例如:有开始就要有结束,有打开就要有关闭,有申请就要有释放,有创建就要有销毁,等等等等。
同样的道理,有发送信号的动作,就要有接受信号的动作。今天的主题是:AcceptEventAction.
语义
:
AcceptEventAction是一个等待符合指定条件的事件发生的动作。动作接受的事件类型是由一组触发条件规定的。如果触发条件指定的是信号事件,那么指定类型的信号,以及该类型的子类类型的信号都是可以被接受的。AcceptEventAction有一个属性isUnmarshall,用于指定AcceptEventAction是否具有输出接收到的信号或信号信息的输出引脚。
关于触发条件,请参考EA&UML日拱一卒-Signal,Event和Trigger。
记法
在活动图中,AcceptEventAction表示为一个左面凹陷的五边形。

如果和SendSignalAction放在一起,会更容易记忆。

设定方法
添加AcceptEventAction
首先拖动Action图标到活动图,并选择【Accept Event】。
设定动作名称
进入属性对话框的【General】分类,根据需要修改动作名称。
设定触发条件
进入属性对话框的【Triggers】分类以后按照以下步骤进行:

- 设定触发条件的Name
- 选定触发条件的Type,可选项有:Call/Change/Signal/Time
- 根据触发条件的类型选择Specificaiton.
其他
本例中选择Signal类型,指定了上一篇文章中创建的TestSignal。根据实际的需要可以添加多个触发条件。
发送信号侧一般每次只发送一个信号,而接受侧往往需要监视多种类,多个事件的发生,所以叫AcceptEventAction。
实例可以参照以前的文章:EA&UML日拱一卒-活动图:: 分叉和结合
也有例外的情况,比如等待一段时间的场景,可以选择【Accept Time Event】类型的动作,这时动作表示为一个沙漏。
阅读更多更新文章,请扫描下面二维码,关注公众号【面向对象思考】!

















