農農  

1. 组任务

  同一个任务,一组人都可以查看,其中只有一个人可以申请到该任务进行处理(其他人员看不到该任务),如果过程中不想处理了,
可以将任务退回,这样组内其他人员可再次看到该任务,进行任务申请

  1.1 创建流程图并设置任务候选人

 

 

 

  1.2 部署流程

 //流程部署
    @Test
    public void deployment(){
        //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取RepositoryService对象进行流程部署
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //进行部署,将对应的流程定义文件生成到数据库当中,作为记录进行保存
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("holiday/holidaygroup.bpmn")     //加载流程文件
                .addClasspathResource("holiday/holidaygroup.png")
                .name("请假流程-组任务审批")       //设置流程名称
                .deploy();              //部署

        //输出部署信息
        System.out.println("流程名称:"+deployment.getName());
        System.out.println("流程ID:"+deployment.getId());
        System.out.println("流程Key:"+deployment.getKey());
    }

  1.3 启动流程实例

//启动一个流程实例
    @Test
    public void getInstance(){
        //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取Runtime
        RuntimeService runtimeService = processEngine.getRuntimeService();
        //设置流程变量
        Holiday  holiday=new Holiday();
        holiday.setNum(3);
        Map<String,Object>map=new HashMap<>();
        map.put("holiday",holiday);

        //启动一个流程实例
        ProcessInstance holidaygroup = runtimeService.startProcessInstanceByKey("holidaygroup", map);
        System.out.println("流程实例name:"+holidaygroup.getName());

    }

2. 组任务代办任务流程

  2.1 查询组任务,但是不能执行  

//提交任务
    @Test
    public void commitTask(){
        //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取TaskService
        TaskService taskService = processEngine.getTaskService();
        //查询到自己的任务,然后通过任务ID进行提交
        Task task = taskService.createTaskQuery().processDefinitionKey("holidaygroup").taskAssignee("tingting").singleResult();
        //处理任务
        taskService.complete(task.getId());
    }

  2.2 查看数据库

 

 

   2.3 查询组任务  

//查询组任务 
    @Test
    public  void getGropTask(){
        //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取TaskService
        TaskService taskService = processEngine.getTaskService();
        //查询组任务
        List<Task> list = taskService.createTaskQuery().processDefinitionKey("holidaygroup").taskCandidateUser("mayuan").list();
        for (Task task:list){
            System.out.println("任务ID:"+task.getId());
            System.out.println("任务名称:"+task.getName());
            System.out.println("任务处理人:"+task.getAssignee());
        }
    }

  2.4  查看控制台效果 此时三个用户都可以查看到任务

  没有任务处理人为null说明当前任务 没有 人拾取

 

 

 

 

 

 

 

 

  2.5 拾取任务  当任务被拾取后其他角色是看不到任务的

/**
     * 拾取任务
     */
    @Test
    public void claimTask() {
        //获取ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取TaskService对象
        TaskService taskService = processEngine.getTaskService();
        //获取组任务
        String candidateUser="zhuyuan";
        Task task = taskService.createTaskQuery().processDefinitionKey("holidaygroup").taskCandidateUser(candidateUser).singleResult();
        //不等于Null代表能够获取到该任务
        if(task!=null){
            //拾取任务   任务ID,任务执行人
            taskService.claim(task.getId(),candidateUser);
            System.out.println("任务被:"+candidateUser+"拾取~");
        }
    }

  2.6 查看数据库 任务表

 

 

  2.7 查看任务

 /**
     * 查看任务
     */
    @Test
    public void getTask() {
        //获取ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取TaskService对象
        TaskService taskService = processEngine.getTaskService();
        //查询到自己的任务,然后通过任务ID进行提交
        Task task = taskService.createTaskQuery().processDefinitionKey("holidaygroup").taskAssignee("zhuyuan").singleResult();
        //处理任务
        if(task!=null){
            taskService.complete(task.getId());
            System.out.println("任务处理完毕");

        }
    }

  2.8 当 一个角色拾取任务后不想处理时会进行退回任务操作  

/**
                 * 任务退回/交接
                 */
                @Test
                public void taskReturn(){
                    //获取ProcessEngine对象
                    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
                    //获取TaskService对象
                    TaskService taskService = processEngine.getTaskService();
                    //查询到自己的任务,然后通过任务ID进行提交
                    Task task = taskService.createTaskQuery().processDefinitionKey("holidayGroup").taskAssignee("huaixin").singleResult();

                    if(task!=null){
                        //任务退回  任务ID    null代表没有处理人执行,需要后续再次拾取任务
                        //任务交接 任务ID     如果第二个参数,处理人不为空代表将该任务交给次处理人
                        taskService.setAssignee(task.getId(),"wangnan");
                        System.out.println("任务退回");
                    }
                }

  2.9 查看数据库任务表

 

 

  

 

posted on 2020-04-07 14:31  Baekhyunne  阅读(3011)  评论(1编辑  收藏  举报