• 第十一步:关联业务表

     //关联业务表    @Test    public void actionwith(){//1、获取流程引擎        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//2、获取RuntimeService        RuntimeService runtimeService = processEngine.getRuntimeService();// 3、启动流程的过程中,增加businesskey//第二个参数:businessKey,业务表的id,就是1001        ProcessInstance instance = runtimeService.                startProcessInstanceByKey("holiday", "1001");//4、输入        System.out.println("businessKey=="+instance.getBusinessKey());    }

    运行截图:

  • 第十二步:应用uel表达式创立负责人
    (一)从新创立bpmn文件

    png图片和bpmn文件见下面的步骤```Java流程部署//1、创立ProcessEngine        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//2、获取RepositoryServcie        RepositoryService repositoryService = processEngine.getRepositoryService();//3、应用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中        Deployment deploy = repositoryService.createDeployment()                .name("出差申请流程-uel")                .addClasspathResource("bpmn/myEvection.bpmn20.xml")                .addClasspathResource("bpmn/Evection.png")                .deploy();//4、输入部署信息        System.out.println("流程部署id="+deploy.getId());        System.out.println("流程部署名字="+deploy.getName());```
启动实例:```Java//获取流程引擎        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取RunTimeService        RuntimeService runtimeService = processEngine.getRuntimeService();//设定assignee的值,用来替换uel表达式        Map<String,Object> assigneeMap = new HashMap();        assigneeMap.put("assignee0","张三");        assigneeMap.put("assignee1","李经理");        assigneeMap.put("assignee2","王总经理");        assigneeMap.put("assignee3","赵财务");//启动流程实例        runtimeService.startProcessInstanceByKey("myEvection",assigneeMap);```

数据库表信息更改:

  • 第十三步:候选人实例
    创立bpmn文件
    参考下面步骤,在bpmn文件中的部门经理审核加上一句话,增加候选人

        <sequenceFlow id="sid-6d79513c-9c03-4877-b998-6e587f5c182d" sourceRef="testCandateStart" targetRef="_3"/>    <userTask id="_4" name="部门经理审批"  **activiti:candidateUsers="lisi,wangwu"**>      <extensionElements>        <activiti:formProperty id="Property 1"/>        <activiti:formProperty id="Property 2"/>        <activiti:formProperty id="Property 3"/>        <activiti:formProperty id="Property 4"/>      </extensionElements>

    代码步骤:

     /**                 * 创立候选人实例                 * 第一步部署定义                 */                @Test                public void testCandate(){                //1、创立ProcessEngine                ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();                //2、获取RepositoryServcie                RepositoryService repositoryService = processEngine.getRepositoryService();                //3、应用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中                Deployment deploy = repositoryService.createDeployment()                        .name("出差申请流程-Candidate")                        .addClasspathResource("bpmn/testCandate.bpmn20.xml")                        .addClasspathResource("bpmn/testCandate.png")                        .deploy();            }                /**                 * 第二步流程部署实例                 */                @Test                public void StartTestCandate(){                //获取流程引擎                ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();                //获取RunTimeService                RuntimeService runtimeService = processEngine.getRuntimeService();                runtimeService.startProcessInstanceByKey("candidateUsers");            }                /**                 * 实现提交申请                 */                @Test                public void EndTest(){                    //获取引擎                    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();                    //获取操作工作的服务 TaskService                    TaskService taskService = processEngine.getTaskService();                    //获取jerry 对应的工作                    Task task = taskService.createTaskQuery()                            .processDefinitionKey("candidateUsers")                            .taskAssignee("橘子1")                            .singleResult();                    //实现提交申请的工作                    taskService.complete(task.getId());                    System.out.println("流程实例id=" + task.getProcessInstanceId());                    System.out.println("工作Id=" + task.getId());                    System.out.println("工作负责人=" + task.getAssignee());                    System.out.println("工作名称=" + task.getName());                }                //查问工作                    @Test                    public void other(){                     //获取引擎                    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();                     //获取TaskService                    TaskService taskService = processEngine.getTaskService();                    //查问组工作                    List<Task> taskList = taskService.createTaskQuery()                            .processDefinitionKey("candidateUsers")                            .taskCandidateUser("wangwu") //依据候选人查问工作                            .list();                    for (Task task : taskList) {                        System.out.println("========================");                        System.out.println("流程实例ID="+task.getProcessInstanceId());                        System.out.println("工作id="+task.getId());                        System.out.println("工作负责人="+task.getAssignee());                    }      }

    运行完数据库表:

    • ACT_RU_TASK后果(以后负责人为空):
    • ACT_HI_ACTINST后果(部门经理审批负责人为空):
    • ACT_HI_TASKINST后果 (部门经理审批负责人为空):

      找到候选人拾取工作
                    /**                 * wangwu拾取工作                 */                @Test                public void finshTest(){                    //获取引擎                    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();                    //获取TaskService                    TaskService taskService = processEngine.getTaskService();                    //当前任务的id                    String taskId = "5002";                    //工作候选人                    String candidateUsers = "wangwu";                    //查问工作                    Task task = taskService.createTaskQuery()                            .taskId(taskId)                            .taskCandidateUser(candidateUsers)                            .singleResult();                    if(task != null){                    //拾取工作                        taskService.claim(taskId,candidateUsers);                        System.out.println("taskid-"+taskId+"-用户-"+candidateUsers+"-拾取工作实现");                    }                }
    • ACT_RU_TASK后果图(回归失常流程):
    • ACT_HI_ACTINST后果(回归失常流程):
    • ACT_HI_TASKINST后果 (回归失常流程):

      更改负责人:将wangwu改成lisi,简而言之就是ASSIGNEE字段
                          /**                     * 更改负责人为lisi                     */                    @Test                    public void updata(){                        //获取引擎                        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();                        //获取TaskService                        TaskService taskService = processEngine.getTaskService();                        //当前任务的id                        String taskId = "5002";                        //工作负责人                        String assignee = "wangwu";                        //依据key 和负责人来查问工作                        Task task = taskService.createTaskQuery()                                .taskId(taskId)                                .taskAssignee(assignee)                                .singleResult();                        if(task != null){                            //偿还工作 ,就是把负责人 设置为空                            taskService.setAssignee(taskId,null);                            taskService.setAssignee(taskId,"lisi");                            System.out.println("taskid-"+taskId+"-偿还工作实现");                        }                    }

    终于圆满了,踏入修真界