博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java_Activiti5_菜鸟也来学Activiti5工作流_之入门简单例子(一)
阅读量:4482 次
发布时间:2019-06-08

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

1 // VacationRequest.java 2  3 /** 4  * author : 冯孟活 ^_^  5  * dates : 2015年9月1日 下午10:32:58  6  * class : 演示简单的公司请假流程 7  *  8  *         一个简单的流程分三个步骤: 9  *                 1、发布流程(部署流程定义)10  *                 2、启动流程实例11  *                 3、完成任务(先查询任务,后完成任务)12  *                 4、挂起、激活一个流程实例(可选)13  */14 public class VacationRequest {15     public static void main(String[] args) {16 17         /**18          *  第一步:发布流程19          */20         ProcessEngine processEngine = ProcessEngineConfiguration // 通过流程引擎配置类来创建流程引擎21                 .createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();22         RepositoryService repositoryService = processEngine.getRepositoryService(); // 通过流程引擎来得到知识库服务23         repositoryService.createDeployment().addClasspathResource("VacationRequest.bpmn").deploy(); // 通过只是库部署流程定义24         System.out.println("流程定义的个数="+repositoryService.createDeploymentQuery().count()); // 查询所有发布的流程定义的个数25         26         /**27          *  第二步:启动一个流程实例28          */29         /*定义Map来存放流程变量:流程变量经常会被用到,因为他们赋予来自同一个流程定义的不同流程实例30            的特别含义,简单来说,流程变量是区分流程实例的关键31         */32         Map
variables = new HashMap<>(); // 定义一个Map来存放流程变量33 variables.put("employeeName","Kermit");34 variables.put("numberOfDays",new Integer(4));35 variables.put("vacationMotivation","I'm really tired!");36 RuntimeService runtimeService = processEngine.getRuntimeService(); // 获取运行服务37 runtimeService.startProcessInstanceByKey("vacationRequest",variables); // 通过运行服务来启动流程实例,并且设置流程变量(通过key 或者 id 部署都可以)38 System.out.println("流程实例的个数="+runtimeService.createProcessInstanceQuery().count()); // 通过运行服务来查询所有的流程实例的个数39 40 /**41 * 第三部:完成任务42 */43 TaskService taskService = processEngine.getTaskService(); // 通过流程引擎获取任务服务44 List
tasks = taskService.createTaskQuery().taskCandidateGroup("management").list(); // 通过任务服务来查询任务候选组(这是通过组来分区)45 for (Task task : tasks) { // 遍历打印任务46 System.err.println("能找到的任务="+task.getName());47 }48 Task task = tasks.get(0); // 获取第一个任务49 Map
taskVariables = new HashMap<>(); // 定义一个Map来存放任务变量50 taskVariables.put("vacationApproved","false");51 taskVariables.put("managerMotivation","We have a tight deadline!");52 taskService.complete(task.getId(),taskVariables); // 根据Id来完成任务53 54 /**55 * 挂起,激活一个流程56 */57 /*58 * 我们可以挂起一个流程定义。当挂起流程定义时, 就不能创建新流程了(会抛出一个异常)。 59 * 可以通过RepositoryService挂起一个流程:60 */61 //repositoryService.suspendProcessDefinitionByKey("vacationRequest"); // 挂起一个流程定义62 //try{63 //runtimeService.startProcessInstanceByKey("vacationRequest"); // 启动一个流程实例64 //}catch(ActivitiException e){ // 这里会抛出一个Activiti自定义异常65 //e.printStackTrace();66 //}67 68 /*69 * 备注下:70 * 也可以挂起一个流程实例。挂起时,流程不能继续执行(比如,完成任务会抛出异常),71 * 异步操作(比如定时器)也不会执行。 挂起流程实例可以调用 runtimeService.suspendProcessInstance方法。 72 * 激活流程实例可以调用runtimeService.activateProcessInstanceXXX方法。73 */74 }75 }
1 
2 3
4
8 9
10
11
12
13
14
15
16
17 18
1 
2
3
8 9
10 11
12
13
14
15
16
17
18
19 20
21
22 ${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}).23
24
25
26
27
28
29
30
31
32
33
management
34
35
36
37
38 39
40
41
${vacationApproved == 'true'}
42
43 44
45
46
47 48
49
${vacationApproved == 'false'}
50
51 52
53
54 Your manager has disapproved your vacation request for ${numberOfDays} days.55 Reason: ${managerMotivation}56
57
58
59
60
61
62
63
64
65
66
67
68
${employeeName}
69
70
71
72
73 74
75
76
${resendRequest == 'true'}
77
78 79
80
${resendRequest == 'false'}
81
82
83 84
85 86

转载于:https://www.cnblogs.com/fengmenghuo/p/4783871.html

你可能感兴趣的文章
SQL逻辑处理过程
查看>>
1051. Pop Sequence (25)
查看>>
Spring容器中Bean的生命周期
查看>>
js弹出框
查看>>
(转) sphinx 高亮显示搜索词
查看>>
HTTP协议的URI及各种方法
查看>>
用最简单话概括SSH三框架
查看>>
JSP
查看>>
Time, Clocks, and the Ordering of Events in a Distributed System
查看>>
C#成员基础
查看>>
字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
查看>>
为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS
查看>>
day1--计算机基础1
查看>>
phpStudy
查看>>
编程珠玑——第一章习题
查看>>
mapper.xml文件中标签不显示问题
查看>>
JavaScript的事件
查看>>
ios中实现对UItextField,UITextView等输入框的字数限制
查看>>
PAT Basic 1008
查看>>
[Information Theory] L1: Introduction to Information Theory
查看>>