java:activiti工作流详解
1、工作流:(workflow)
整个工作的流程
eg:请假工作流
(我)员工-->组长-->经理-->主管-->人事-->总经理(董事会)
eg:出差(报账)工作流
(我)员工(需要报销12000)-->组长-->经理(只能1000)-->财务总监(无穷大(只能5000))-->总经理(10000)-->董事长(很厉害)
工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。(我的理解就是:将部分或者全部的工作流程、逻辑让计算机帮你来处理,实现自动化)
所谓工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。
例如开发一个系统最关键的部分不是系统的界面,也不是和数据库之间的信息交换,而是如何根据业务逻辑开发出符合实际需要的程序逻辑并确保其稳定性、易维护性和弹性。
比如你的系统中有一个任务流程,一般情况下这个任务的代码逻辑、流程你都要自己来编写。实现它是没有问题的。但是谁能保证逻辑编写的毫无纰漏?经过无数次的测试与改进,这个流程没有任何漏洞也是可以实现的,但是明显就会拖慢整个项目的进度。
工作流引擎解决的就是这个问题:如果应用程序缺乏强大的逻辑层,势必变得容易出错(信息的路由错误、死循环等等)。
工作流的两大框架:
JBPM(没有废弃)-->已经很少有人使用
Activity(工作流):更方便,更快捷,开发效率更高
在android中四大组件之一:activity
都遵循某个规范/协议/标准:BPMN2.0
BPMN:
BPMN(Business Process Model and Notation)--业务流程模型与符号。
BPMN是一套流程建模的标准,主要目标是被所有业务用户容易理解的符号,支持从创建流程轮廓的业务分析到这些流程的最终实现,知道最终用户的管理监控。通俗一点其实就是一套规范,画流程模型的规范。流程模型包括:流程图、协作图、编排图、会话图。详细信息请google。
Activiti简介:
Activiti是一个开源的工作流框架,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。Activiti 作为 一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。
Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人 员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。
activiti-6.0.0:
database:数据库(activiti工作流自带的数据库表(23张表))
所支持的数据库:db2,h2,hsql,sql-server(mssql),mysql,oracle,postgresSQL
如果你所使用的数据库上面并没有-->自己定义这23张表
libs:jar包(使用activiti所需要的jar包)
wars:demo包(里面装的都是war包)
activiti-app.war
(在5.1.2以后可能没有了)docs:文档
activiti的关键对象:
1.Deployment:流程部署对象,部署一个流程时创建。
2.ProcessDefinitions:流程定义,部署成功后自动创建。
3.ProcessInstances:流程实例,启动流程时创建。
4.Task:任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask。
5.Execution:执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。
activiti的服务接口:(没有顺序)
在activiti集成spring的时候,必须要在配置文件中定义这7个服务接口(必须要),而且少定义一个activiti就跑不起来
1.ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。
2.RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提 供了对repository的存取服务。在所有的activiti项目中,都至少要拥有一个.bpmn文件(定义了你的task的流程走向)
3.RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供 了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。
private Fruit apple1;
private Apple apple2;
apple1 = new Apple();
4.TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在 Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。
5.IdentityService: Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task IdentityService 提供了对Activiti 系统中的用户和组的管理功能。员工(lisi 123),组长(wangwu 123),经理(zhaoliu 123),总监(tianqi 123),总裁(zhaosi 123)
6.ManagementService: ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序 中使用,主要用于Activiti系统的日常维护。不用关心,activiti会自动帮忙处理!
7.HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。
2.myeclipse集成activiti的插件:
通过引用的方式实现集成
在网上下载activiti的插件
http://activiti.org/designer/update/
会得到activiti-designer-5.18.0.zip
直接解压
然后直接把解压出的文件夹copy到Myeclipse的dropins目录
再在Myeclipse的dropins目录里新增一个文件activiti.link
使用编辑器编辑activiti.link
path=就是activiti-designer-5.18.0地址
path=Myeclipse的dropins目录\\activiti-designer-5.18.0\\
重启MyEclipse
找到首选项-->直接在首选项中会看到Activiti选项即可安装成功
New project-->Activiti
本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。
微信扫码关注
更新实时通知