JBPM4之执行一个完整的流程实例详解编程语言

JBPM4之执行一个完整的流程实例详解编程语言


1.启动流程实例

a) 普通方法

// 启动流程实例  

// jbpm4_execution,正在执行的信息表  

// jbpm4_hist_procinst,历史信息表  

@Test  

public void startProcessInstance() {  

    // 使用指定key的最新版本的流程定义启动流程实例,返回一个实例流程对象  

    ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey(“test”);  

    System.out.println(“id=” + pi.getId()//  

            + “, state=” + pi.getState()//  

            + “, processDefinitionId=” + pi.getProcessDefinitionId());  

}  

b) 启动流程实例,并设置一些流程变量

Map<String, Object> variables = new HashMap<String, Object>();  

variables.put(“申请人”, “张三”);  

variables.put(“报销金额”, 1000.00);  

// 启动流程实例,并设置一些流程变量  

ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey(processDefinitionKey, variables);  


2.向后执行一步(Signal)

a) 向后执行一步,使用唯一的outcome离开活动

processEngine.getExecutionService().signalExecutionById(executionId);  

b) 向后执行一步,使用唯一的outcome离开活动,并设置一些流程变量

// 准备流程变量  

Map<String, Object> variables = new HashMap<String, Object>();  

variables.put(“审批结果”, “同意”);  

processEngine.getExecutionService().signalExecutionById(executionId, variables);  

c) 向后执行一步,使用指定的outcome离开活动

String outcome= “to end1”;  

    processEngine.getExecutionService().signalExecutionById(executionId, outcome);  

d) 向后执行一步,使用指定的outcome离开活动,并设置一些流程变量

String outcome= “to end1”;  

    Map<String, Object> variables = new HashMap<String, Object>();  

    variables.put(“审批结果”, “同意”);  

    processEngine.getExecutionService().signalExecutionById(executionId, outcome, variables);  


3.查询任务

a) 查询个人任务列表

// 查询我的未办理完的任务列表  

// jbpm4_task,正在执行的信息表  

// jbpm4_hist_task,历史信息表  

@Test  

public void findMyTaskList() {  

    String userId = “员工”;  

    //String userId = “部门经理”;  

    //String userId = “总经理”;  

    // 方式1.查询我所有未办理的任务的列表  

    // List<Task> list = processEngine.getTaskService().findPersonalTasks(userId);  

    // 方式2.分页的查询  

    List<Task> list = processEngine.getTaskService()

            .createTaskQuery().assignee(userId)

            .page(0, 100).list();  

    // 显示  

    System.out.println(userId + “的未办理的任务列表 “);  

    for (Task t : list) {  

        System.out.println(“id=” + t.getId()//  

                + “, name=” + t.getName()// 任务的名称  

                + “, assignee=” + t.getAssignee()// 任务的办理人  

                + “, createTime=” + t.getCreateTime()// 任务的创建时间  

                + “, executionId=” + t.getExecutionId()); // 所属的执行对象的id  

    }  

}  

b) 查询组任务列表

方式1:

taskService.findGroupTasks(userId);  

方式2:

List<Task> list = processEngine.getTaskService()

.createTaskQuery().candidate(userId).list();  


4.办理任务

a) 正常完成任务

@Test  

public void completeTask() {  

    String taskId = “180009”;  

    //普通的方法  

    processEngine.getTaskService().completeTask(taskId);  

    //指定下一步的方法  

    processEngine.getTaskService().completeTask(taskId, outcome);  

    //设置流程变量的方法  

    processEngine.getTaskService().completeTask(taskId, outcome, variables);  

}  

b) 自行控制完成任务后是否向后流转(少用)

String taskId = “120001”;  

// 1,设置为false代表:办理完任务后不向后移动(默认为true)  

TaskImpl taskImpl = (TaskImpl) processEngine.getTaskService().getTask(taskId);  

taskImpl.setSignalling(false);  

// 2,办理完任务  

processEngine.getTaskService().completeTask(taskId);  


5.拾取任务

a) TaskService.takeTask(taskId, userId),拾取组任务到个人任务列表中,如果任务有assignee,则会抛异常。

b) processEngine.getTaskService().assignTask(taskId, userId),转交任务给其他人,(如果任务有assignee,则执行这个方法代表重新分配。也可以把assignee设为null表示组任务没有人办理了)


6.设置与获取流程变量

a) 方式1:根据 executionId 设置或获取流程变量

ExecutionService.setVariable(executionId, name, value);  

Object obj = executionService.getVariable(executionId, “请假人”);  

b) 方式2:根据 taskId 设置或获取流程变量

TaskService.setVariables(taskId, variables); // 一次设置多个变量  

Object obj = executionService.getVariable(executionId, “请假人”);  


7.直接结束流程实例(手工)

String processInstanceId =  “test.10001”;  

processEngine.getExecutionService().endProcessInstance(processInstanceId, ProcessInstance.STATE_ENDED);

JBPM4之执行一个完整的流程实例详解编程语言

转载请注明来源网站:blog.ytso.com谢谢!

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14683.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论