zoukankan      html  css  js  c++  java
  • JBPM4.4_执行流程实例

    1. 执行流程实例

    1.1. 启动流程实例

    说明:流程实例创建后,直接就到开始活动后的第一个活动,不会在开始活动停留。

    1.1.1. 示例代码1使用指定key的最新版本的流程定义启动流程实例

    ProcessInstance pi = processEngine.getExecutionService()

        .startProcessInstanceByKey(processDefinitionKey);

    1.1.2. 示例代码2使用指定key的最新版本的流程定义启动流程实例,并设置一些流程变量

    // 准备流程变量

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

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

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

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

    ProcessInstance pi = processEngine.getExecutionService()

        .startProcessInstanceByKey(processDefinitionKey, variables);

    1.2. 向后执行一步(Signal)

    1.2.1. 示例代码1:向后执行一步,使用唯一的outcome离开活动

    processEngine.getExecutionService().signalExecutionById(executionId);

    1.2.2. 示例代码2:向后执行一步,使用唯一的outcome离开活动,并设置一些流程变量

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

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

    processEngine.getExecutionService()

      .signalExecutionById(executionId, variables);

    1.2.3. 示例代码3:向后执行一步,使用指定的outcome离开活动

    String outcome= "to end1";

    processEngine.getExecutionService()

      .signalExecutionById(executionId, outcome);

    1.2.4. 示例代码4:向后执行一步,使用指定的outcome离开活动,并设置一些流程变量

    String outcome= "to end1";

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

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

    processEngine.getExecutionService()

      .signalExecutionById(executionId, outcome, variables);

    1.3. 查询任务

    1.3.1. 查询个人任务列表

    方式1:TaskService.findPersonalTasks(userId);

    方式2:List<Task> list = taskService.createTaskQuery()

          .assignee(userId)

          .list();

    // 显示任务信息

    for (Task task : taskList) {

      System.out.println("id=" + task.getId()// 任务的id

        + ",name=" + task.getName()// 任务的名称

        + ",assignee=" + task.getAssignee()// 任务的办理人

        + ",createTime=" + task.getCreateTime() // 任务的创建(生成)的时间

        + ",executionId=" + task.getExecutionId());// 任务所属流程实例的id

    }

    1.3.2. 查询组任务列表

    方式1: taskService.findGroupTasks(userId);

    方式2: List<Task> list = processEngine.getTaskService()//

            .createTaskQuery()//

            .candidate(userId)//

            .list();

    1.4. 完成任务

    1.4.1. 正常完成任务(也可以同时设置一些流程变量)

    String taskId = "420001";

    processEngine.getTaskService().completeTask(taskId);

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

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

    1.4.2. 自行控制任务完成后是否可向后流转

    String taskId = "420001";

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

    TaskImpl taskImpl = (TaskImpl) processEngine

      .getTaskService().getTask(taskId);

    taskImpl.setSignalling(false);

    // 2,办理完任务

    processEngine.getTaskService().completeTask(taskId);

    1.5. 拾取任务

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

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

    1.6. 设置与获取流程变量

    1.6.1. 设置流程变量

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

    ExecutionService.setVariable(executionId, name, value);

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

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

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

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

    1.6.1.3. 流程变量所支持的值的类型(jBPM User Guide7.2. Variable types

    7.2. Variable types

    jBPM supports following Java types as process variables:

     java.lang.String

     java.lang.Long

     java.lang.Double

     java.util.Date

     java.lang.Boolean

     java.lang.Character

     java.lang.Byte

     java.lang.Short

     java.lang.Integer

     java.lang.Float

     byte[] (byte array)

     char[] (char array)

     hibernate entity with a long id

     hibernate entity with a string id

     serializable

    For persistence of these variable, the type of the variable is checked in the order of this list. The first match will determine how the variable is stored.

    1.7. 直接结束流程实例(自己手工结束)

    String processInstanceId = "test.10001";

    processEngine.getExecutionService()

        .endProcessInstance(processInstanceId, ProcessInstance.STATE_ENDED);

  • 相关阅读:
    PHP面向对象——类
    PHP强大的数组函数
    php学习资源
    版本管理(二)之Git和GitHub的连接和使用
    版本管理(一)之Git和GitHub的区别(优点和缺点)
    (win10)Wamp环境下php升级至PHP7.2
    wamp3.1.0 X64下载链接
    4.总结近5周以来的github上的工作情况,以图表方式分析你小组的工作情况、存在的问题及解决的方案。(尤心心)
    四则运算需求分析和功能实现--杨宇杰
    1.对四则运算软件需求的获取方式进行实践,例如使用调查问卷访问相关关系人等。
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8001639.html
Copyright © 2011-2022 走看看