如何部署、启动、查询和完成流程
来源:互联网 发布:python except break 编辑:程序博客网 时间:2024/06/06 16:59
ProcessEngine processEngine = ProcessEngine.getDefaultProcessEngine();// 部署流程@Testpublic void deploymentProcessDefinition() {Deployment deployment = processEngine.getRepositoryService() // 与流程定义部署相关service.createDeployment() // 创建一个部署对象.name("hellowold入门程序") // 添加部署的名称.addClasspathResource("diagrams/helloworld.bpnm") // 从classpath资源中加载.addClasspathResource("diagrams/helloworld.png").deploy(); // 完成部署System.out.println(deployment.getId()): // 部署idSystem.out.println(deployment.getName()); // 部署名称}// 启动流程@Testpublic void startProcessInstance() {// 定义流程的keyString processDefinitionKey = "helloworld";ProcessInstance pi = processEngine.getRuntimeService() // 与执行流程实例和对象相关的service.startProcessInstanceByKey(processDefinitionKey); //使用key启动流程实例System.out.println("流程实例ID:" + pi.getId());System.out.println("流程定义ID:" + pi.getProcessDefinitionId());}// 查询当前人任务@Testpublic void findMyProcessTask() {String assignee = "张三";List<Task> list = processEngine.getTaskService() // 与正在执行任务相关的service.createTaskQuery() // 创建查询对象.taskAssignee(assignee) // 指定办理人.list();if(list != null && list.size() > 0) {for(Task task : list) {System.out.println("任务ID:" + task.getId());System.out.println("任务名称:" + task.getName());System.out.println("任务创建时间:" + task.getCreateTime());System.out.println("任务办理人:" + task.getAssignee());System.out.println("流程实例ID:" + task.getProcessInstanceId());System.out.println("执行对象ID:" + task.getExecutionId());System.out.println("流程对象ID:" + task.getProcessDefinitionId());System.out.println("##############################################");}}}/** 完成我的任务 */@Testpublic void completeMyPersonalTask() {// 任务IDString taskId = "104";processEngine.getTaskService().complete(taskId);System.out.println("完成任务;任务ID:" +taskId);}/**模拟设置和获取流程变量场景*/public void setAndGetvariables() {/**正在执行流程实例、对象*/RuntimeService runtimeService = processEngine.getRuntimeService();/** 正在执行任务*/TaskService taskService = processengine.getTaskService();/** 设置流程变量 */runtimeService.setVariable(executionId, variableName, value) // 执行对象id,流程变量名称,设置流程变量的值(一次设置一个)runtimeService.setVariables(executionId, variables) // 执行对象id,map集合设置流程变量值(可设置多个)taskService.setVariable(taskId, variableName, value) // 任务id,流程变量名称,设置流程变量的值tasskService.setVariables(taskId, variables) // 任务id,map集合设置流程变量值runtimeService.startProcessInstanceByKey(processDefinitionKey, variables) // 启动流程实例时,设置流程变量taskService.complete(taskId, variables) // 完成任务时, 设置流程变量}/** 设置流程变量 */public void setVariables() {TaskService taskService = processEngine.getTaskService();String taskId = "1504";// 1.使用基本数据类型taskService.setVariableLocal(taskId, "请假天数", 3); // 与任务id绑定taskService.setVariable(taskId, "请假日期", new Date());taskService.setVariable(taskId, "请假原因", "回家探亲");// 2.使用javabean类型Person p = new Person();p.setId(10);p.setName("翠花");taskService.setVariable(taskId, "人员信息", p);}/** 获取流程变量 */public void getVariables() {TaskService taskService = processengine.getTaskService();String taskId = "1504";// 1.使用基本数据类型获取Integer days = (Integer) taskService.getVariable(taskId, "请假天数");Date date = (Date) taskService.getVariable(taskId, "请假日期");String resean = (String) taskService.getVariable(taskId, "请假原因");// 2.使用javabean类型获取Person p = (Person)taskService.getVariable(taskId, "人员信息");System.out.println(p.getId() + " " + p.getName());}/** 查询流程变量历史表 */public void findHistoryProcessVariables() {List<HistoricVariableInstance> list = processEngine.getHistoryService().createHistoricVariableInstanceQuery() // 创建一个历史的流程变量查询对象.variableName("请假天数").list();if(list != null && list.size() > 0) {for(HistoricVariableInstance hvi : list) {System.out.println(hvi.getId() + " " + hvi.getProcessInstanceId() + " " + hvi.getVariableName() + " " + hvi.getVariableTypeName() + " " + hvi.getValue());}}}
// 如何动态指定办理人public void startProcessInstance() {String processDefinitionKey = "task";// 设置流程变量Map<String, Object> variables = new HashMap<String, Object>();variables.put("userID", "周芷若");ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variables);System.out.println("流程实例ID:" + pi.getId());System.out.println("流程定义ID:" + pi.getProcessDefinitionId());}
// 通过监听器来动态指定办理人// 新建类public class TaskListenerImpl implements TaskListener {// 用来指定任务办理人public void notify(DelegateTask delegateTask) {// 指定个人任务的办理人,也可以指定组任务的办理人degegateTask.setAssignee("灭绝师太");// 然后在.bpm的listener中添加此类全路径}}
// 组任务用半角,分割,可以在mainconfig中的candidateUsers指定// 拾取任务,将组任务分给个人任务,指定任务的办理人字段public void claim() {String taskId = "6905";// 分配的个人任务,(可以是组任务中的成员,也可以是非组任务的成员)String userId = "大大";processEngine.getTaskService().claim(taskId, userId);}
阅读全文
1 0
- 如何部署、启动、查询和完成流程
- JBPM初级部署,发起,完成,查询流程
- activiti学习--05流程实例:部署流程定义+部署流程定义+查询当前人的个人任务+完成我的任务
- 如何部署BPEL流程
- Solr部署如何启动
- Solr部署如何启动
- activiti 查询流程定义启动流程
- 部署和启动WebLogic
- Flume部署和启动
- redis部署和启动
- activiti 流程定义部署及查询
- Uboot启动流程和Kernel启动流程
- Dr.Elephant 部署启动详细流程
- Dr.Elephant 部署启动详细流程
- Jbpm笔记之一 -- 流程定义管理( 部署和定义查询、删除、查看流程图)
- jbpm4.4第一篇:创建schema并完成流程部署
- 如何在阿里云服务器部署Redis第二篇--redis的部署和启动
- Hibernate如何完成查询结果的排序
- Bmob导入DEMO的各种辛酸史(上)
- embed
- container-with-most-water
- pg_bulkload
- 最基本的nginx反向代理配置
- 如何部署、启动、查询和完成流程
- 最短子数组 python
- 循环单链表区间删除
- 关于ActionBarDrawerToggle的构造方法参数详解
- 编程题总结
- restful 大白话
- Java Web 第二章 静态网页开发
- linux gdb set变量的值 例子(三)
- maven/conf/settings.xml中配置- 阿里云仓库