收藏 分享(赏)

Activiti工作流详解完整教程.doc

上传人:weiwoduzun 文档编号:4113193 上传时间:2018-12-10 格式:DOC 页数:38 大小:1.12MB
下载 相关 举报
Activiti工作流详解完整教程.doc_第1页
第1页 / 共38页
Activiti工作流详解完整教程.doc_第2页
第2页 / 共38页
Activiti工作流详解完整教程.doc_第3页
第3页 / 共38页
Activiti工作流详解完整教程.doc_第4页
第4页 / 共38页
Activiti工作流详解完整教程.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、Activiti 教程详解完整教程1.Activiti 介绍Activiti 是由 Alfresco 软件在 2010 年 5 月 17 日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。Activiti 基于 Apache 许可的开源 BPM 平台,创始人 Tom Baeyens 是 JBoss JBPM 的项目架构师,它的特色是提供了 eclipse 插件,开发人员可以通过插件直接绘画出业务流程图。1.1 工作流引擎ProcessEngine 对象,这是 Activiti 工作的核心。负责生成流程运行时的各种实

2、例及数据,监控和管理流程的运行。1.2 BPMN业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)2.准备环境2.1 Activiti 软件环境1) JDK1.6 或者更高版本2) 支持的数据库有:h2,mysql,oracle,mysql,db2 等3) 支持 Activiti 运行的 jar 包,可以通过 maven 依赖引入4) 开发环境为 Eclipse3.7 或者以上版本,myeclipse 为 8.6 版本2.2 安装流

3、程设计器(eclipse 插件)1)打开 Help Install New Software Add 输入 Name: Activiti DesignerLocation: http:/Activiti.org/designer/update/输入完成后,单击 OK 按钮等待下载完成后安装。安装完成后在菜单选项中会出现 Activiti 的目录选项2.3 设置 eclipse activit 插件的画流程图 选项打开菜单 Windows Preferences Activiti Save 下流程图片的生成方式勾选上 Create process definition image when sa

4、ving the diagram 操作,勾选上这个操作后在画流程图后保存 eclipse 会自动生成对应的流程图片。2.4 准备开发环境2.4.1 创建 maven web 项目,在 maven 中添加 Activiti 依赖在 eclipse 左边工作栏右键 New 选择创建 Maven Project 项目,创建一个名为 ActivitiTest 的项目点击 Finish 完成。右键项目选择 Properties,选择 Project Facets 勾选上图中的选项,点击 Apply,再点击 OK然后将项目转换成 web 项目 ,右键项目选择 Properties,在 Project Fa

5、cets 中做如下勾选,然后点击 Appy 应用和 OK 确定然后右键项目 Properties ,选择 Deployment Assembly,将 test 相关目录 Remove 掉之保留main 下面需要发布的内容,如下图然后点击 Appply 和 OK然后在 pom.xml 文件中添加以下依赖org.ActivitiActiviti-engine5.21.0org.ActivitiActiviti-spring5.21.0org.codehaus.groovygroovy-all2.4.3org.slf4jslf4j-api1.7.6org.slf4jslf4j-jdk141.7.6j

6、unitjunit3.8.1testmysqlmysql-connector-java5.1.38然后在命令行下 mvn compile 编译当前项目,将需要的包下载到本地仓库2.4.2 初始化数据库1) src/main/resource 目录下创建 Activiti.cfg.xml 文件, 内容如下jdbcUrl 为你电脑数据库的 urljdbcUsername 为数据库用户名jdbcPassword 为数据库密码2)在 main/java 目录下创建任意目录和类编写创建 Activiti 数据表方法public class CreateTable /* 创建流程表* */Testpubl

7、ic void createTable() ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(“Activiti.cfg.xml“).buildProcessEngine();System.out.println(“-processEngine:“ + processEngine); 然后运行该测试方法,如果运行成功,在数据库中应该会产生 25 张 Activiti的相关数据表2.4.3 Activiti 表说明下面是概括了几个常用的数据表流

8、程部署相关表act_re_deployement 部署对象表act_rep_procdef 流程定义表act_ge_bytearray 资源文件表act_ge_prperty 主键生成策略表(对于部署对象表的主键 ID)流程实例相关表act_ru_execution 正在执行的执行对象表(包含执行对象 ID 和流程实例 ID,如果有多个线程可能流程实例 ID 不一样)act_hi_procinst 流程实例历史表act_hi_actinst 存放历史所有完成的任务Task 任务相关表act_ru_task 代办任务表 (只对应节点是 UserTask 的)act_hi_taskinst 代办任

9、务历史表 (只对应节点是 UserTask 的)act_hi_actinst 所有节点活动历史表 (对应流程的所有节点的活动历史,从开始节点一直到结束节点中间的所有节点的活动都会被记录)流程变量表act_ru_variable 正在执行的流程变量表act_hi_variable 流程变量历史表3.核心 API3.1 ProcessEngine说明:1) 在 Activiti 中最核心的类,其他的类都是由他而来。2) 产生方式ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();3)可以产生 Reposito

10、ryService RepositoryService repositoryService =processEngine.getRepositoryService();4) 可以产生 RuntimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();5) 可以产生 TaskServiceTaskService taskService =processEngine.getTaskService();各个 Service 的作用RepositoryService 管理流程定义RuntimeService

11、执行管理,包括启动,推进,删除流程实例等操作TaskService 任务管理3.2 RepositoryServiceActiviti 的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn 文件和流程图片该 service 可以用来删除部署的流程定义。3.3 RuntimeService是 Activiti 的流程执行服务类,可以从这个服务类中获取很多关于流程执行的相关的信息。3.4 TaskService是 Activiti 的任务服务类。可以从这个类中获取任务的相关信息,如当前正在执行的个人待办和用户组待办任务。3.5 HistoryService是 Activiti 的查询历史信息

12、的类,在一个流程执行完成后,这个对象为我们提供查询历史信息,可以跟踪流程实例对应所有待办节点的运行情况。3.6 ProcessDefinition流程定义类,可以从这里获得资源文件等。3.7 ProcessInstance代表流程定义的执行实例,当一个部署的流程图启动后,该流程只有一条流程实例数据,但是它的流程任务可以有多个,每个任务对应流程图中相应的流程节点。4.入门 HelloWorld 程序4.1 创建流程图方法点击 ActivitiTest 项目,在 src/main/java 目录下创建一个 diagrams 目录用来存放流程图在当前项目右键选择 Activiti Diagram 流

13、程图输入流程图名称 HelloWorld,然后点击 OK,在控制面板的右边栏有相关的画图图标操作其中一个流程必须包含一个开始节点和一个结束节点,结束节点可以有多个。然后使用 StartEvent, UserTask,EndEvent 画出下面的流程图,然后用 Connection 中的SequenceFlow 连线连接起来。4.2 创建流程图,如下图4.3 指定流程图名称,ID 和 UserTask 的处理人1)选中第一个节点,在 General 中的 name 属性中输入当前节点的名称 ,在 Main config 中的 Assignee 中输入该节点的处理人,然后以此类推将 3 个节点的值

14、设置完成。,2)然后在流程图旁边的空白出点击一下,输入流程的 ID 和 Name 值,然后保存4.4 将流程图部署到 Activiti 的数据表中启动完成后在 act_re_deployment 流程部署表和 act_re_procdef 流程定义表中会有对应的数据信息.4.5 启动流程实例其中 runtimeService.startProcessInstanceByKey(“HelloWorldKey“);中的 HelloWorldKey 对应流程图中的 ID 值 ,在数据表中对应 act_re_procdef 流程定义表中的 key 字段启动完流程后在 act_ru_execution

15、表中会产生一条数据,这条数据为当前流程正在执行的任务,其中 act_id_字段的值对应流程图节点的 ID 值在 act_ru_task 表中会产生一条任务数据 ,execution_id_对应 act_ru_execution 主键,proc_inst_id_为流程实例 ID, name_值为流程节点名称,assignee_ 字段为该待办当前的处理人4.6 查询待办任务指定查询张三的待办,可以查询出待办为第一个节点的处理任务。4.7 完成待办任务其中 taskId 对应 act_ru_task 表的主键 ID,因为当前待办任务为第一个节点提交申请,当执行完这个待办后下一条待办数据将会流转到审批

16、【部门经理】那,然后以此类推可以将部门经理和总经理的待办任务全部查询和执行完成。5.查询和删除流程定义1)查询流程定义2) 删除流程定义6.流程变量操作6.1 设置流程变量1)设置流程变量有多种方式,可以在流程启动,和任务执行的时候设置a.启动流程的时候设置b. 通过 taskService 或者 runtimeService 设置提示:如果设置的流程变量值是一个对象类型,这个对象必须实现序列化Serializable 操作,并且要为该对象类指定一个 版本 ID6.2 获取流程变量见工程操作7.流程连线在画流程图的时候可以对流程的连线设置表达式,然后在执行的时候设置流程变量值,然后 Activ

17、iti 会根据对应的值走对应的节点点击一条连线,在 Main config 中的 Condition 属性值中设置$message=同意,另外一条线设置为$message=不同意,然后在代码中设置对应流程变量值。见工程操作8.排他网关如下图,其中黑色的叉叉对应 eclipse 画流程图图标中的 ExclusiveGateWay 图标然后对每条线的 Condition 属性指定对应的表达式,然后在执行任务时候设置对应的流程变量Activiti 会根据变量的值来判断对应连线中的表达式走对应的流程节点路线。见工程操作9.并行网关十字图标对应图标中的 ParallelGateway并行网关不需要指定连线的表达式,当流程流转到并行任务时会出发多个任务,当多个任务完成后在会将流程流转到下一个节点见工程操作10.个人任务的三种指定方式10.1 在 Assignee 中指定任务具体的处理人

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报