0
点赞
收藏
分享

微信扫一扫

EA&UML日拱一卒-活动图::CallOperationAction


还是老套路,先介绍本篇文章的主角:CallOperationAction。在《GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构》中是这样描述的:

调用操作动作(CallOperationAction)

CallOperationAction 是一个动作,它传送一个操作调用请求到目标对象,目标对象可以引起关联活动的调用。动作的参数值对于被调用的执行有效,如果动作被标记为同步的,调用操作 的动作的执行一直等待,直到被调用的行为执行结束,并且ReplyAction传输返回值给调用者。如果操作是异步的,则当操作的调用被确立后,被调用的 操作的执行和调用侧活动的执行并发执行。任何作为应答传输返回的值被放置在输出引脚上。接受到应答传输后,调用操作动作的执行结束。

CallOperationAction除了有一个输入引脚用于接受操作的目标对象以外,还应有和被调用操作的参数相同数量,相同类型的输入引脚,以及和被调用操作的返回值相同数量,类型的输出引脚。

示例

我们继续使用昨天的例子说明CallOperationAction的用法,先来回忆一下昨天的状态。


EA&UML日拱一卒-活动图::CallOperationAction_目标对象


在这个例子中,我们已经得到了后续流程中将会用到的panel和calculator对象。

取得一元二次方程的系数a

  1. 从工具栏拖动Action图标到流程图,选择Action类型为CallOperation。
  2. 打开CallOperaiton的属性设定对话框
  3. 进入【General】属性页,指定Action名称为Get a
  4. 进入【Call】属性页

  5. EA&UML日拱一卒-活动图::CallOperationAction_活动图_02


  6. 选择Behavior为CalculatorPanel::getInput方法
  7. 按下【Synchronize with Parameters】将CalculatorPanel::getInput方法的参数同步到CallOperationAction中来。
  8. 按下【Add】按钮,在出现的【Select Pins】对话框中按下【Add New】按钮和【确定】按钮添加Result引脚。

  9. EA&UML日拱一卒-活动图::CallOperationAction_活动图_03



  10. 经过对上述操作以后,我们得到上图红框中的内容。按下【确定】按钮关闭对话框。这时【Project Browser】中的Get a动作的状态如下图。

  11. EA&UML日拱一卒-活动图::CallOperationAction_活动图_04


  12. 修改OutputPin1的名称为a。

  13. EA&UML日拱一卒-活动图::CallOperationAction_引脚_05


  14. 右键打开活动图中CallOperationAction的上下菜单并选择【Structural Elements】,在出现的对话框中选择显示所有引脚。
  15. 调整活动图中CallOperationAction各引脚的位置。

  16. 用对象流连接ReadStructuralFeatureAction的panel引脚到接CallOperationAction的target引脚。
  17. 打开CallOperationAction的Index引脚的属性对话框,在Pin属性页中指定参数值PARA_A。


EA&UML日拱一卒-活动图::CallOperationAction_目标对象_06

取得系数b,c

同样方法添加名称为Get b,Get c的CallOperationAction,增加分叉节点并连接数据流以后得到下图。


EA&UML日拱一卒-活动图::CallOperationAction_目标对象_07

调用解方程操作

继续添加调用Calculator::solveEquation的CallOperationAction并连接数据流。

添加终止节点。



EA&UML日拱一卒-活动图::CallOperationAction_引脚_08

明天文章对今天得到活动图进行说明。





阅读更多更新文章,请扫描下面二维码,关注公众号【面向对象思考】


EA&UML日拱一卒-活动图::CallOperationAction_EA_09



举报

相关推荐

0 条评论