活动图学习笔记

活动图学习笔记活动图学习笔记活动图基本概念事件流除了用文本形式来表示外,还经常用活动图来表示。为什么有了文本形式以后还要开发这种框图形式呢?这是因为利用文本形式虽然很有用,但是如果事件流逻辑复杂,则文本形式比较难阅读和理解,利用框图将比文本形式来得更加有效。活动图显示与文本事件流相同的信息。我们在业务模型中用活动框图描述业务过程的工作流。活动图的组成要素活动图的组成要素主要有:起始点和终止点、活动、迁移、决策框、

大家好,又见面了,我是你们的朋友全栈君。

1 活动图基本概念

事件流除了用文本形式来表示外,还经常用活动图来表示。为什么有了文本形式以后还要开发这种框图形式呢?这是因为利用文本形式虽然很有用,但是如果事件流逻辑复杂,则文本形式比较难阅读和理解,利用框图将比文本形式来得更加有效。

活动图显示与文本事件流相同的信息。我们在业务模型中用活动框图描述业务过程的工作流。

2 活动图的组成要素

活动图的组成要素主要有:起始点和终止点、活动、迁移、决策框、分支和汇聚。

2.1 起始点和终止点

用一个实心圆表示初始节点,用一个圆圈内加一个实心圆来表示活动终点。起始点和结束点都是特殊的活动节点。如下图所示。

起始点和终止点

  • 起始点:指明活动开始位置;一个活动图只能有一个起始点。
  • 终止点:指明活动的结束位置;一个活动图可以有多个结束点,不同的结束点表达系统执行后可以达到不同的结果状态。

2.2 活动

活动是活动图的基本组成部分,一个活动图至少应该包括一个活动。活动用以下符号表示。

这里写图片描述

另外,可以在活动中增加更多详细的步骤,并且我们通常在这些操作前面加上一些标记字样。如进入活动室发生的操作,标有entry字样;活动进行时发生的操作,直到离开活动,标有do字样;离开活动时发生的操作,标有exit字样;特定事件发生时的操作,标有event字样和事件名。如下图所示。

这里写图片描述

2.3 迁移

迁移指定某活动完成后下一个即将执行的活动。迁移可描述活动的执行顺序。迁移又称控制流。迁移标记格式为<事件>[<守护条件>],如下图所示。

这里写图片描述

语义:当活动1结束时,发生了事件,且守护条件成立,则进入活动2。

约束规则:不允许在一个活动图中出现两个标记完全相同的迁移。如果一个活动有多个事件相同的迁移出口,则必须用守护条件进行区分。

举例:如,在一个有红绿灯的人行道口,汽车在等待绿灯。司机先准备好启动,待绿灯变亮且观察到无行人过马路情况下开动汽车。如下图所示。

这里写图片描述

迁移的两种类型:

  1. 无事件迁移:迁移有向线上无事件标签。意味着,只要完成了上一个活动,则自动进入下一个活动。
  2. 有事件迁移:迁移有向线上有事件标签。也可能有守护条件。

事件和分支:

  1. 事件:是对一个在时间和空间上占有一定位置的有意义的事情的详细说明。

    • 原因:事件产生的原因有调用、满足条件的状态的出现、到达时间点或经历某一时间段、发送信号等。
    • 分类:

      • 调用事件(call event)。调用事件表示的是对操作的调度,其格式如下:eventname(参数1,参数2,…参数n)

        这里写图片描述

      • 信号事件(signal event)。信号事件表示的是对象接收到了信号这种情况,信号事件往往会触发状态的转移。

        • 这里提到了信号这个概念,所谓信号,就是由一个对象异步地发送、并由另一对象接收的已命名的对象
        • 信号事件和调用事件的表示格式是一样的
        • 信号事件是异步事件,调用事件是同步事件
      • 变化事件(change event)。如果一个布尔表达式中的变量发生变化,使得该布尔表达式的值相应地变化,从而满足某些条件,则这种事件称作变化事件

        • 变化事件用关键字when表示

          迁移

      • 时间事件(time event)。时间事件指的是满足某一时间表达式的情况的出现,例如到了某一时间点或经过了某一时间段。

        • 时间事件用关键字after或when表示

          这里写图片描述

  2. 分支(branch):在活动图中,对于同一个触发事件,可以根据不同的守护条件转向不同的活动,每个可能的转移是一个分支

    • 在活动图中,对于同一个触发事件,可以根据不同的守护条件转向不同的活动,每个可能的转移是一个分支。

    这里写图片描述

    • 守护条件又称控制点

2.4 决策框

定义:决策框是一个无动作的特殊活动框。它仅仅是根据上一个活动执行后产生的条件判断,决定执行哪一条转换,而不做任何实际动作。因此,它是一种无动作节点,仅仅是用于描述某个执行流程的语法/语义结构。

决策框又称决策点

迁移

守护条件和决策框分别称为控制点和决策点,它们有什么区别呢?

守护条件可以增强活动图,使用控制点和决策点可以建模修改活动图流程的条件

  • 控制点用来允许控制流仅沿着满足预置条件的方向
  • 决策点需要对控制流继续的方向作出决策

简单来说,守护条件中的条件可以是无关系的,而决策框中的分支条件必须是有关系的。

2.5 分叉(fork)

定义:一种用于标识可并发活动的语法/语义符号

语义:分叉没有任何动作,仅仅表明分叉后变迁流入的活动没有执行顺序依赖关系,可以并行执行。如下图中,活动2与活动3可以并行执行,但它们都必须在活动1完成之后才能执行

迁移

约束规则:只允许一个活动引发分叉

2.6 汇聚(joint)

定义:一种用于标识需同步活动的语法/语义符号。

语义:汇聚也没有任何动作,仅仅表明汇聚前变迁流出的活动必须全部执行完才能执行汇聚后变迁指向的
活动。如下图中,活动2与活动3同步执行完成后,活动4才能执行。

迁移

约束规则:只允许汇聚到一个活动。

3 带泳道的活动图

迁移

4 活动图建模原则

“活动图” 比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图。
绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者。
然后尽量使用分支与汇聚等基本的建模元素来描述活动控制流程。
如果需要,加入对象流以及对象的状态变化来表示更多的信息。但是,需要注意活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充。

对工作流建模:用于业务建模的时候,每一条泳道表示一个职责单位,该图能够有效地体现出所有职责单位之间的工作职责,业务范围及之间的交互关系、信息流程。

建模时应遵循以下策略:

  • 为工作流建立一个焦点,除非你所涉及的系统很小,否则不可能在一张图中显示出系统中所有的控制流;
  • 选择对全部工作流中的一部分有高层职责的业务对象,并为每个重要的业务对象创建一条泳道。
  • 识别工作流初始节点的前置条件和活动终点的后置条件,这可有效地实现对工作流的边界进行建模。

对操作建模:每一个对象占据一个泳道,而活动则是该对象的成员方法。

建模时应遵循以下策略:

  • 收集操作所涉及的抽象概念,包括操作的参数、返回类型、所属类的属性以及某些邻近的类。
  • 识别该操作的初始节点的前置条件和活动终点的后置条件。也要识别在操作执行过程中必须保持的信息。
  • 从该操作的初始节点开始,说明随着时间发生的活动,并在活动图中将它们表示为活动节点。
  • 如果需要,使用分支来说明条件语句及循环语句。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135187.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 《计算机网络》谢希仁第七版课后答案完整版[通俗易懂]

    《计算机网络》谢希仁第七版课后答案完整版

  • win10游戏运行库合集(游戏运行库合集有什么用)

    大家好,今天给小伙伴们带来几套最新的微软常用运行库,解决多数程序莫名崩溃、游戏闪退问题。如果你遇到了莫名其妙的系统崩溃、无法判断或无法复现的win系统闪退崩溃等问题,或者你看见过以下画面:总之就是缺文件,打不开,当然,按照它的建议重新安装程序也是没什么卵用的。那么,把今天这个包里的东西,都安装一边,肯定100%解决问题!咱先说说原因。微软提供了大量的封装函数功能,让开发者们不需要再编写这些函数,在程序运行时直接调用就好了。但许多绿色或者简化的系统、软件、游戏为了..

  • 2014MadCon厦门分享会-笔记(下)[通俗易懂]

    2014MadCon厦门分享会-笔记(下)[通俗易懂]32《如何与百度互动,不知道这些就不要做SEO了》百度站长平台资深产品运营师曹丽丽(飞鸟)33注意百度站长平台的提醒。如果你不留电话,不留其他联系方式,出问题了,百度怎么提醒你呢?34为什么高富帅换域名时很平稳啊?注意使用以下工具:(1)高级互动工具-网站改版(需要提交相关信息,在过度一个月之后,再撤掉原来的域名)(2)抓取异常&拒绝外链(这些都要做好重定向,提前做好准备)…

  • jenkins demo //TODO「建议收藏」

    jenkins demo //TODO「建议收藏」mkdir-p/var/jenkins_mountchmod777/var/jenkins_mountdockerrun-d-p9091:8080-p9092:50000-v/var/jenkins_mount:/var/jenkins_mount-v/etc/localtime:/etc/localtime-v/usr/share/apache-maven/apache-maven-3.8.1:/usr/local/maven–namejenkinsjenk

  • java.vm是什么文件(java)

    java获取vm运行参数TogetthenameofrunningVM(VirtualMachine)inJava,weusethegetProperties()method,whichisdefinedinSystemclass,whilecallingthemethod,weneedtopassthepropertynameto…

  • 谷歌打开微信定位服务器地址,使用Chrome修改user agent模拟微信内置浏览器

    谷歌打开微信定位服务器地址,使用Chrome修改user agent模拟微信内置浏览器很多时候,我们需要模拟微信内置浏览器,今天教大家用chrome简单模拟。如图设置:F12或者右键审查元素进入开发者模式,点击Emulation,然后点击Network,把Spoofuseragent改成Other,并把下面的带复制进去,有三句,大家自己尝试。回车然后刷新页面即可。Mozilla/5.0(iPhone;CPUiPhoneOS5_1likeMacOSX)Appl…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号