EA&UML日拱一卒-活动图::活动(续)

上一篇文章中我们以解一元二次方程为例说明了活动动作的机制。今天继续这个话题,说明EA中定义活动,使用活动的方法。


定义活动


定义活动有两种方式,直接定义和定义结构化活动。我们继续以定义一元二次方程为例说明定义活动,使用活动的方法。


直接定义


直接定义按照以下步骤进行:

拖动活动图工具条中如下Activity图标到活动图画面中。


 EA&UML日拱一卒-活动图::活动(续)      EA&UML日拱一卒-活动图::活动(续)


打开活动的上下文菜单选择【New Child Element】-【Activity Parameter】项目增加活动参数并设定其属性。

EA&UML日拱一卒-活动图::活动(续)

EA&UML日拱一卒-活动图::活动(续)

在活动的圆角矩形框内直接设计活动的内部逻辑。

根据需要调整活动矩形框的大小,设定各个元素的属性。

这种方法的例子就是上一篇文章中的SolveEquation活动。

EA&UML日拱一卒-活动图::活动(续)

EA&UML日拱一卒-活动图::活动(续)

定义复合结构图


  1. 拖动活动图工具条中如下Activity图标到活动图画面中。

    EA&UML日拱一卒-活动图::活动(续)

           


  2. 打开活动的上下文菜单选择【New Child Element】-【Activity Parameter】项目增加活动参数并设定其属性。

    EA&UML日拱一卒-活动图::活动(续)

  3. 打开活动的上下文菜单选择【New Child Diagram】-【Composite Structure Diagram】创建复合结构图。这时该活动表示如下:        

    EA&UML日拱一卒-活动图::活动(续)

  4. 可以看到圆角矩形的右下角增加了一个【⚯】符号。这表明该活动包含一个复合结构图。

  5. 双击活动打开内部的复合结构图。

  6. 设计活动的内部逻辑。

  7. 使用ReadVariable动作读取输入参数的值,使用AddVariable动作写入输入参数的值。


所有的操纵结束以后,我们得到以下的复合结构图。


EA&UML日拱一卒-活动图::活动(续)


使用活动


直接使用


直接定义活动以后,可以像输入输出管脚一样在参数节点上连接控制流,对象流。这就是上一篇文章中的场景。


调用活动


无论哪种方式定义的活动,在EA的ProjectBrowser中的表示都是一样的。

EA&UML日拱一卒-活动图::活动(续)



上图中红框中的是直接定义的活动,蓝框中的是复合结构图方式定义的活动。二者不光表示方式相同,调用方式也相同:


  1. 将对应节点拖动到调用侧的活动图中。

  2. 在出现的【Paste Activity】中,进行基本的设定。

EA&UML日拱一卒-活动图::活动(续)



Drop as:选择Invacation(Action)。

Name:输入调用的名称,此处相当于别名。

Structual:共有三个选项

     Select:EA会接着显示如下【Strutual Element】对话框,可以从里面选出想要的管脚。

EA&UML日拱一卒-活动图::活动(续)


     None:不复制输入/输出管脚。

     All:复制全部的输入/输出管脚。


上述操作完成后,可以得到下面的活动调用操作。注意红圈中的图形。

EA&UML日拱一卒-活动图::活动(续)


两种定义方式生成的活动被调时的表示都是一样的,但是双击复合调用活动符号时,定义复合结构图的活动会表示下一层次的活动图。而直接定义的活动只会显示属性对话框。


差不多十年之前,第一次带一个规模比较大,严格按照开发流程进行的项目时,就用到了流程图,那时候给大家讲动作和活动的区别时是这样说的:


如果表现的是函数(含操作,方法)调用,就用活动,如果是简单的处理就用动作。


今天从UML活动图的观点看来,这并不是一个准确的说法。


函数调用在活动图中是动作,不是活动,函数定义那部分才是。



以上就是今天的文章,如果它能给您带来些许收获,欢迎推荐给您的朋友!

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

EA&UML日拱一卒-活动图::活动(续)