博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
activiti工作流引擎记录
阅读量:2377 次
发布时间:2019-05-10

本文共 2393 字,大约阅读时间需要 7 分钟。

工作流引擎

工作流与工作流管理系统

工作流是按照预定义的规则传递文档、信息或任务的过程,它会自动执行从而实现预期的业务目标。

工作流管理系统被用来定义、管理、和执行工作流程。
1、工作流管理系统不是企业的业务系统,而是为企业的业务系统提供软件支撑环境。
2、工作流管理系统用来定义、管理和执行工作流程,其目标就是在自动化进行的业务过程中插入人工的执行和干预。

activiti

activiti是一个BPM业务流程管理框架,包括部署流程定义->启动流程实例->查看任务列表->办理任务,在任务创建后,意味着流程会进入等待状态, 直到引擎接收了一个特定的消息, 这会触发流程穿过接收任务继续执行。

idea中安装activiti插件

File - settings-plugins-Browse-Repositories 搜索 actiBPM

ProcessEngine对象,这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。

业务流程建模与标注(Business Process Model and Notation,BPMN),描述流程的基本符号。

activiti数据库

Activiti使用Mybatis3做持久化工作,在创建核心的流程引擎对象时会自动建表。如果程序正常执行,mysql会自动建库,然后创建24张表。Activiti使用到的表都是ACT_开头的。以下介绍关键表:

ACT_RE_* //流程定义存储。ACT_RU_* //流程执行记录,记录流程启动到结束的所有动作,流程结束后会清除相关记录。ACT_ID_* //用户记录,流程中使用到的用户和组。ACT_HI_* //流程执行的历史记录。ACT_GE_* //通用数据及设置。ACT_RE_DEPLOYMENT //部署记录。ACT_RE_PROCDEF 	  //流程定义。ACT_RU_EXECUTION //流程执行记录。ACT_RU_TASK 	//执行的任务记录。ACT_RU_VARIABLE //执行中的变量记录。流程实例结束后流程变量保存。ACT_HI_PROCINST //流程实例。ACT_HI_TASKINST //任务实例。

activiti是链式编程

在实际项目中对已完成任务的查看频率远不及对待办和可接任务的查看,所以在activiti采用分开管理,把正在运行的交给RuntimeService、TaskService管理,而历史数据交给HistoryService来管理。这样做的好处在于,加快流程执行的速度,因为正在执行的流程的表中数据不会很大。

RepositoryService	// 仓库服务对象,管理流程定义,通过流程引擎获取Deployment     // 从仓库服务中获取部署对象RuntimeService  // 执行管理,包括启动、推进、删除流程实例等操作,是activiti的流程执行服务类。TaskService  //	任务管理,是activiti的任务服务类。HistoryService  //	历史管理(执行完的数据的管理)IdentityService  // 组织机构管理FormService  // 一个可选服务,任务表单管理ManagerService  //ProcessDefinition  // 流程定义类,获取资源文件等。ProcessInstance  // 流程定义的实例。Execution // 没有并发的情况下,等同于ProcessInstance

1、一个流程中,执行对象可以存在多个,但是流程实例只能有一个。

2、当流程按照规则只执行一次的时候,流程实例就是执行对象。

activiti概念

流程变量

1、用来传递业务参数,目的就是审核人可以通过流程变量查看申请人的一些审核信息

2、在连线的condition中设置流程变量,用来指定应该执行的连线
3、使用流程变量指定个人任务和组任务的办理人#{userID}

网关

Exclusive Gateway排他网关

排他网关必须给一个流程变量,若没有符合条件的判断结果,就会走默认的连线。不给流程变量,会报错,因为无法判断。
排他网关和直接连线的最大区别:排他网关有个默认值,连线必须是每根先都得给条件。

连线

一个活动中可以指定一个或多个SequenceFlow(连线),Start中有一个,End中没有,其他活动中有1条或多条SequenceFlow。如果有多个,则需要使用流程变量设置codition的名称。${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。如${deptleaderapprove==‘false’}

流程定义文档

流程定义文档有两部分:bpmn文件和流程图片

bpmn流程规则文件。在部署后,每次系统启动时都会被解析,把内容封装成流程定义放入项目缓存中。
Activiti框架结合这个xml文件自动管理流程,流程的执行就是按照bpmn文件定义的规则执行的,bpmn文件是给计算机执行用的。
流程定义记录:Id的值的生成规则为:{processDefinitionKey}:{processDefinitionVersion}:{generated-id}, 这里的generated-id是一个自动生成的唯一的数字

idea如何生成流程图片

idea的工作流插件支持的没有Eclipse那么好,创建好流程图leave.bpmn,却看不到源码。但可以修改为leave.xml文件,然后右键Diagrams–>Show BPMN 2.0 Designer,然后导出为leave.png 即可

重点:流程定义管理CRUD,流程实例、任务的执行,流程变量,查看历史记录,连线,活动节点

转载地址:http://uyaxb.baihongyu.com/

你可能感兴趣的文章
使用了request.setCharacterEncoding()方法却解决不了中文乱码原因(转载)
查看>>
读取Properties文件读取,路径,空格,中文问题
查看>>
转发与重定向的路径问题(转)
查看>>
Integer.parseInt(s) 和 Integer.valueOf(s)详细区别(转)
查看>>
Cookie 跨域访问转自(http://qingfeng825.javaeye.com/)
查看>>
深入Java核心 Java内存分配原理精讲(转)
查看>>
全面分析Java的垃圾回收机制(转)
查看>>
Struts 与 dojo 整合研究 (一)
查看>>
Servlet线程,工作原理及3.0新特性
查看>>
Struts2与Struts1.x的深度比较
查看>>
Struts2的工作机制及分析
查看>>
一些鲜为人知的编程真相
查看>>
Struts 2 FrameWork Tutorial
查看>>
javaBook
查看>>
firefox不识别“../../”的相对路径的问题
查看>>
成为Java高手的25个学习目标
查看>>
IE6下使用JS获取路径中包含汉字的URL的一个问题(转载)
查看>>
为什么我们要对url进行encode (转载)
查看>>
浅析Android线程模型一 (转)
查看>>
Activity的Launch mode详解 singleTask正解(转)
查看>>