在线流程设计

点击 【在线设计】 按钮,会打开 流程在线设计器 ,对流程的设计都将在该设计器上进行。

可以看到流程设计器由四部分组成:

①:基本操作工具栏
②:节点、任务、事件类型列表
③:流程设计画布
④:节点属性配置

接下来进行详细介绍各个功能的作用:
① 基本操作工具栏
从左到右分别是:
【保存】、【剪切】、【复制】、【粘贴】、【删除】、【重复】、【撤销】、【垂直对齐】、【水平对齐】、【相同大小】、【放大】、【缩小】、【实际大小】、【适应屏幕】、【为选定的流程连线添加弯曲点】、【为选定的流程连线删除弯曲点】

② 节点、任务、事件类型列表

Activiti是一个非常强大的工作流组件,它内置了很多任务和事件,但我们一般常用的,就是以下几个。包括:
事件(开始事件)、用户活动(用户任务节点)、互斥网关、并行网关、结束任务(结束事件)。

每个流程都需要开始事件和结束事件;中间是多个用户节点;互斥网关用于开发带条件的流程;并行网关用于开发会签(其实直接用多实例更简单,之后的例子会此进行举例)。

③ 流程设计画布

工作流程图的设计都在画布上进行展示。
在左侧列表中选择需要的流程节点或事件,拖动到画布上,节点与节点之间用流程线连接。

④ 节点属性配置

在工作流程中每个节点都有一些属性配置,在必要``的情况下需要进行配置。一起来了解一下这些配置的作用。
以 【一级审核】 节点为例。

  1. id: 流程定义中节点的唯一标识。
  2. 名称: 节点的名称
  3. 描述: 字面意思
  4. 异步(Asynchronous):
    同步情况下,完成节点任务和验证下一节点的地址是在同一事务中进行,所以当中如果发生异常,就会回滚当前事务,回滚已完成的任务,重新开始执行。如果勾选了异步,则一个节点完成了就提交事务,不依赖于下一个节点。也就是说不管下一个节点发生了什么,都不关已完成节点的事。完成任务在一个事务中进行,验证下一个节点的地址操作交给定时任务异步来完成。也就是说,
    如果设置任务是同步的,则发生异常后,会直接回滚;如果设置异步,则会单独执行和回滚。
  5. 单独: 5.9版本之后都默认该配置。即默认情况下,所有的任务都是独占的,确保单个流程实例永远不会并发执行。
  6. 执行监听器: 可以监听流程中的所有节点和连线。

事件: 有三个事件可以进行选择监听:start(开始事件)、end(结束事件)、take(连线事件)
类: 输入框应输入实现了监听器的类全名地址,如上图。

表达式: 使用UEL表达式,输入框中输入的是实现了监听器的类中自定义的方法。表达式填写格式是: ${bean名.方法名}

委托表达式: 格式 ${bean名} ,此时不用写方法名,会自动调用 notify()方法。

字段: 可以为每个监听器配置字段属性。字段有名称、字符串、表达式几个可输入值,在代码中,根据name的名称相应获取配置值。代码中定义的成员变量名称必须和监听器中定义的字段名称一致才能获取到值。
会优先获取两个字符串的值,只有在两个字符串没有值的情况下才会去获取表达式的值。

【注】
事件方法的执行是有优先级的,执行优先级为:类 > 表达式 > 委托表达式
字段属性也只会取其中一个值进行赋值。优先级为:小文本字符串值 > 大文本字符串值 > 表达式

任务监听器: 对任务节点的事件进行监听。事件类型有四个:Create(任务被创建时触发)、Assignment(任务被委派给某个人后触发)、Delete(任务被执行完之后就会删除此任务,这时触发)、All(任务的所有事件都会触发)。
其他对于事件和字段的设置,同 【执行监听器】
多实例类型: 也就是多人审批方式,Paraller并行,Sequential串行。在进行会签多人审批的时候可以对此进行配置。

基数(多实例): 定义多实例生成的实例数,该基数只能小于等于 集合(多实例) 的大小,否则执行出错。
集合(多实例): 审批人集合,只能设置为变量,不能直接设置值。变量只能传 List 。集合内有多少个元素就会生成多少个任务。
元素变量(多实例): 审批人,集合中每一个元素的变量,可作为流程变量使用。
完成条件(多实例): 一个 UEL表达式,如果返回值为true则该多实例自动结束。这里关系到Activiti几个重要的内置变量,用于写表达式。

nrOfInstances:实例总数。 nrOfCompletedInstances:已经完成的实例个数。
nrOfActiveInstances:当前活动的,也就是还没有完成的实例数。对于一个顺序的多实例,这个值总为1。
loopCounter:已经循环的次数。 举例:有一个完成条件是这样的:${ nrOfCompletedInstances /
nrOfInstances >= 0.5 } 意思就是,当完成的实例数大于等于实例总数的一半时,则该多实例任务结束。

是否为补偿: 是否对已经完成的流程做回退处理。(暂时不知道怎么用)

代理: 设置节点处理人,可以写死也可以动态指定,有三个值可以进行设置。设置的是Activiti内置的用户和用户组,当前框架用不到。

Assignment:办理人,指定唯一一个。 Candidate
User:候选人,可以选定多个,只要一个人认领了任务,其他人就不能再重复处理。 Candidate
Groups:候选组,可以制定多个组。可以把很多人绑定到一个组中,只要把任务指派给某一组,那么这个组下面的人都可以看到这个任务,同样也只能一个人认领任务。

自定义表单: 用来填写外置表单form文件的路径。当前框架用不到。
到期时间: 每个任务都有一个这样的字段,指示该任务的截止日期。可以使用查询 API 用于查询在特定日期之前或之后到期的任务。举几个例子:

// 查询当前还没有过期的任务:
List<Task> listTask = taskService.createTaskQuery().taskDueAfter(new Data()).list();// 查询当前已过期的任务:
List<Task> listTask = taskService.createTaskQuery().taskDueBefore(new Data()).list();// 查询某个时间点过期的任务:
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
ParsePosition pos = new ParsePosition(0);
List<Task> listTask = taskService.createTaskQuery().taskDueDate(“2020-09-03 14:25:07”, pos)).list();// 可以通过代码来修改任务的过期时间,也可以通过TaskListener的DelegateTask来修改:
taskService.setDueDate(“taskId”, new Date());

优先级: 获取任务列表时可以用此属性来排序,获取优先级高的任务先执行。
List listTask =taskService.createTaskQuery().orderByTaskPriority().list()
动态表单属性: 和自定义表单配合使用,还没有用过,不了解。

【结尾】: 最后记得左上角保存作好的图!

Activiti工作流开发笔记(二)-在线流程设计的使用说明相关推荐

  1. activiti idea 请假流程_IDEA创建Activiti工作流开发

    IDEA创建Activiti工作流开发 一.安装Activiti插件 1.首先打开FIle的setting功能,搜索Plugins: 2.输入actiBPM,然后点击搜索: 3.点击安装.应用: 安装 ...

  2. Xamarin开发笔记—百度在线语音合成

    续<是时候开始用C#快速开发移动应用了>刷屏之后,把C#开发移动应用的技术 => Xamarin,在这里和大家做一个分享! 语音合成:也被称为文本转换技术(TTS),它是将计算机自己 ...

  3. Activiti工作流学习笔记01

    Activiti6工作流学习笔记01 activiti工作流目前官方最新版本是7.x,但....版本不重要了.这篇笔记只是我学习activiti6过程中的自我总结.如果笔记上有错误的话,欢迎赐教,谢谢 ...

  4. [安卓开发笔记二]android Studio通过jni调用C++代码

    [安卓开发笔记二]android Studio通过jni调用C++代码 16/12/11 更新 此博客基于安卓android studio 1.5所写,现在已经有了android studio2.2的 ...

  5. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模 五 粒子系统模拟 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  6. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7607916 作者:毛星云    邮箱: h ...

  7. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  8. iOS工程开发笔记二

    iOS工程开发笔记<二> 在Xcode 4, 5的模板工程中可以看到Precompile Prefix Header,但是在Xcode 6被去除了. Xcode 6去掉Precompile ...

  9. 微信小程序开发笔记二(WXSS和CSS样式美化)

    微信小程序开发笔记二(WXSS和CSS样式美化) 一.CSS基本知识 1.Class选择器的定义 2.ID选择器的定义 3.ID选择器和class选择器的区别 4.CSS中设置颜色 5.CSS中的文本 ...

最新文章

  1. 标星7.2万热门开源项目youtube-dl遭下架,开发者的权益谁来保护?
  2. java返回两个string_java – 为什么String.intern()方法返回两个不同的结果?
  3. 小肚皮最新版本_小肚皮旧版本
  4. 浙江经济职业技术学院计算机排名,浙江经济职业技术学院排名第几
  5. CSS串联和后代选择器
  6. 分布式系统概念和设计 第十五章 (1)
  7. ubuntu 15.10 安装jdk
  8. FTM的PWM、输入捕获、正交解码
  9. 小组取什么名字好_注册公司取什么名字好 八字起名大全
  10. 致80后的北漂IT人:未来在哪儿?
  11. 执行scp命令自动输入密码的方法(expect方案)
  12. IDAFicator / OllyDBG Plug-in by Zool@nder|AT4RE
  13. 通俗解释乔姆斯基文法体系
  14. [AV1] DC Intra Prediction
  15. 问题 B: 加油站(贪心+模拟)
  16. 主成分分析(PCA)-Python代码
  17. 教练还是顾问? 敏捷与否? 我是什么?
  18. 1万多条趣味知识问答题库大全ACCESS数据库
  19. gitup的使用以及git的命令行
  20. 3CDB:基于3C技术的染色质互作信息数据库

热门文章

  1. 用电脑最忌讳的18个小动作
  2. 大数据面试重点之kafka(六)
  3. Cocos论坛九问九答
  4. 从零开始建站(二) - 数据库与项目规划
  5. 使用Autobahn的远程调用模式
  6. ISO20000和ITSS认证有什么区别
  7. ZigBee交通事故警示装置
  8. IBM MQ 9.2.4 笔记大全
  9. centos7搭建私人云盘
  10. CSDN仅粉丝可见功能无限期下线