收藏 分销(赏)

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

上传人:a199****6536 文档编号:1840888 上传时间:2024-05-10 格式:DOC 页数:38 大小:1.11MB
下载 相关 举报
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软件在2021年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.效劳协作等领域的一个开源.灵活的.易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台.创始人Tom Baeyens是JBoss JBPM的工程架构师.它的特色是提供了eclipse插件.开发人员可以通过插件直接绘画出业务流程图。1.1 工作流引擎ProcessEngine对象.这是Activiti工作的核心。负责生成流程运行时的各种实例及数据.监控和管理流程的运行。1.2 BPM

2、N业务流程建模与标注Business Process Model and Notation,BPMN.描述流程的根本符号.包括这些图元如何组合成一个业务流程图(Business Process Diagram)2. 准备环境2.1 Activiti软件环境1)2) 支持的数据库有:h2,mysql,oracle,mysql,db2等3) 支持Activiti运行的jar包.可以通过maven依赖引入4) .2.2安装流程设计器(eclipse插件)1翻开Help Install New Software Add 输入 Name: Activiti Designer输入完成后.单击OK按钮等待下

3、载完成后安装。安装完成后在菜单项选择项中会出现Activiti的目录选项2.3 设置eclipse activit插件的画流程图 选项翻开菜单Windows - Preferences - Activiti -Save 下流程图片的生成方式勾选上Create process definition image when saving the diagram操作.勾选上这个操作后在画流程图后保存eclipse会自动生成对应的流程图片。2.4 准备开发环境2.4.1 创立maven web工程.在maven中添加Activiti依赖在eclipse左边工作栏右键New选择创立Maven Projec

4、t工程.创立一个名为ActivitiTest的工程点击Finish完成。右键工程选择Properties.选择Project Facets 勾选上图中的选项.点击Apply.再点击OK然后将工程转换成web工程,右键工程选择Properties,在Project Facets中做如下勾选,然后点击Appy应用和OK确定然后右键工程Properties .选择Deployment Assembly,将test相关目录Remove掉之保存main下面需要发布的内容.如下列图然后点击Appply和OKorg.ActivitiActiviti-engineorg.ActivitiActiviti-sp

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

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

7、相关表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 代办任务历史表 只对应节点是UserTa

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

9、oryService =processEngine.getRepositoryService();4) 可以产生 RuntimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();5) 可以产生TaskServiceTaskService taskService =processEngine.getTaskService();各个Service的作用RepositoryService管理流程定义RuntimeService执行管理.包括启动.推进.删除流程实例等操作TaskService任务管理3.2

10、 RepositoryServiceActiviti的仓库效劳类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片该service可以用来删除部署的流程定义。3.3 RuntimeService是Activiti的流程执行效劳类.可以从这个效劳类中获取很多关于流程执行的相关的信息。3.4 TaskService是Activiti的任务效劳类。可以从这个类中获取任务的相关信息.如当前正在执行的个人待办和用户组待办任务。3.5 HistoryService是Activiti的查询历史信息的类.在一个流程执行完成后.这个对象为我们提供查询历史信息.可以跟踪流程实例对应所有待办节点的运行情况

11、。3.6 ProcessDefinition流程定义类.可以从这里获得资源文件等。3.7 ProcessInstance代表流程定义的执行实例.当一个部署的流程图启动后.该流程只有一条流程实例数据.但是它的流程任务可以有多个.每个任务对应流程图中相应的流程节点。创立流程图方法点击ActivitiTest工程.在src/main/java目录下创立一个diagrams目录用来存放流程图在当前工程右键选择Activiti Diagram流程图输入流程图名称HelloWorld.然后点击OK.在控制面板的右边栏有相关的画图图标操作其中一个流程必须包含一个开始节点和一个结束节点.结束节点可以有多个。然

12、后使用StartEvent, UserTask,EndEvent画出下面的流程图.然后用Connection中的SequenceFlow连线连接起来。.如下列图4.3 指定流程图名称.ID和UserTask的处理人1选中第一个节点.在 General中的name属性中输入当前节点的名称,在Main config中的Assignee中输入该节点的处理人.然后以此类推将3个节点的值设置完成。.2然后在流程图旁边的空白出点击一下.输入流程的ID和Name值.然后保存4.4 将流程图部署到Activiti的数据表中启动完成后在act_re_deployment流程部署表和act_re_procdef流

13、程定义表中会有对应的数据信息.4.5 启动流程实例其中runtimeService.startProcessInstanceByKey(HelloWorldKey);中的HelloWorldKey对应流程图中的ID值,在数据表中对应act_re_procdef流程定义表中的key字段启动完流程后在act_ru_execution表中会产生一条数据.这条数据为当前流程正在执行的任务.其中act_id_字段的值对应流程图节点的ID值在act_ru_task表中会产生一条任务数据,execution_id_对应act_ru_execution主键.proc_inst_id_为流程实例ID.name_

14、值为流程节点名称.assignee_字段为该待办当前的处理人4.6 查询待办任务指定查询张三的待办.可以查询出待办为第一个节点的处理任务。4.7 完成待办任务其中taskId对应act_ru_task表的主键ID.因为当前待办任务为第一个节点提交申请.当执行完这个待办后下一条待办数据将会流转到审批【部门经理】那.然后以此类推可以将部门经理和总经理的待办任务全部查询和执行完成。1查询流程定义2) 删除流程定义6.1 设置流程变量1设置流程变量有多种方式.可以在流程启动.和任务执行的时候设置b. 通过taskService或者runtimeService设置提示:如果设置的流程变量值是一个对象类型

15、.这个对象必须实现序列化Serializable操作,并且要为该对象类指定一个 版本ID6.2 获取流程变量见工程操作在画流程图的时候可以对流程的连线设置表达式.然后在执行的时候设置流程变量值.然后Activiti会根据对应的值走对应的节点点击一条连线.在Main config中的Condition属性值中设置$message=同意.另外一条线设置为$message=不同意.然后在代码中设置对应流程变量值。见工程操作如下列图,其中黑色的叉叉对应eclipse画流程图图标中的ExclusiveGateWay图标 然后对每条线的Condition属性指定对应的表达式.然后在执行任务时候设置对应的流

16、程变量Activiti会根据变量的值来判断对应连线中的表达式走对应的流程节点路线。见工程操作十字图标对应图标中的ParallelGateway并行网关不需要指定连线的表达式.当流程流转到并行任务时会出发多个任务.当多个任务完成后在会将流程流转到下一个节点见工程操作10.1 在Assignee中指定任务具体的处理人10.2 在Assignee中指定任务的处理人或角色变量当指定Assignee为一个变量值后需要在代码中设置对应的处理人.比方在启动的时候设置userId的值在工程中可以将起草人的处理变量设置为userId.审批人的处理变量设置为appUserId.然后通过业务模块和登录人来获取对应模

17、块的审批人。10.3 为任务节点设置一个监听类来设置当前节点的处理人如果设置了监听类就不需要在设置Assignee的值1创立一个监听器类.需要实现TaskListener接口2) 点击任务节点.选择Listener选项卡.点击New .将Event的值改为create然后选择创立的TaskListenerImpl实现类然后当任务到达该节点后Activiti会触发监听实现类的notify方法11.1 在任务节点中设置Candidate user 候选人设置的候选处理人用英文输入法的逗号隔开.当任务到达该节点后.设置的候选人其中任何一个人都可以处理当前待办.处理完成后待办结束。11.2 在Candidate user中设置一个变量作为处理人然后通过启动或者执行流程向下传递的时候设置该流程变量值11.3 通过监听类来设置待办处理人如果设置了监听类就不需要在设置Assignee的值和个人任务的监听类一样实现TaskListener接口.然后设置CandidateUser的值实用文档.

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服