关于工作流:Activiti工作流入门筑基圆满

  • 第十一步:关联业务表

     //关联业务表
        @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+"-偿还工作实现");
                            }
    
                        }

    终于圆满了,踏入修真界

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理