springboot整合activity6_Activiti之個人任務分配(無廢話版)--------------------------------------------(十四)

1.源碼地址:https://github.com/heidaodageshiwo/springbootactivity

 

方式一 直接流程圖配置中寫死,

直接在流程圖中 Main config Assignee 中寫死具體分配的任務執行人;

 

 

 

 

 

 

 

 

 

查看張三任務:

 

完成任務:

沒有數據了:

 @Autowired
    RepositoryService repositoryService;
    @Autowired
    RuntimeService runtimeService;
    @Autowired
    TaskService taskService;


//    Activiti之個人任務分配

    @RequestMapping("/Assignee_deploy")
    public String deploy(){
        Deployment deployment=repositoryService.createDeployment()
                .addClasspathResource("StudentLeaveProcess/StudentLeaveProcess5/gerenrenwu1.bpmn") // 加載資源文件
                .name("學生請假流程6") // 流程名稱
                .deploy();
        System.out.println("流程部署ID:"+deployment.getId());
        System.out.println("流程部署Name:"+deployment.getName());
        return "Assignee_deploy";
    }


    @RequestMapping("/Assignee_start")
    public String start() {
        Map<String,Object> variables=new HashMap<String,Object>();
        variables.put("userId", "張三");
        ProcessInstance processInstance=runtimeService.
                startProcessInstanceByKey("gerenrenwu1",variables);
        System.out.println("流程實例ID:"+processInstance.getId());
        System.out.println("流程定義ID:"+processInstance.getProcessDefinitionId());
        return "Assignee_start";
    }


    /**
     * 查看任務
     */
    @RequestMapping("/Assignee_findTask")
    public String findTask(){
        List<Task> taskList=taskService // 任務相關Service
                .createTaskQuery() // 創建任務查詢
                .taskAssignee("張三") // 指定某個人
                .list();
        for(Task task:taskList){
            System.out.println("任務ID:"+task.getId());
            System.out.println("任務名稱:"+task.getName());
            System.out.println("任務創建時間:"+task.getCreateTime());
            System.out.println("任務委派人:"+task.getAssignee());
            System.out.println("流程實例ID:"+task.getProcessInstanceId());
        }
        return "Assignee_findTask";

    }


    /**
     * 完成任務
     */
    @RequestMapping("/Assignee_completeTask")
    public String completeTask(){
        taskService // 任務相關Service
                .complete("92511");
        return "Assignee_completeTask";

    }

 

 

方式二 使用流程變量

 

我們設置流程變量  Assignee  ${userid}

 

我們在啓動流程的時候設置流程變量即可;

 

 

 

部署:

啓動設置變量:

查看任務:

 

完成任務:

 

 

@Autowired
    RepositoryService repositoryService;
    @Autowired
    RuntimeService runtimeService;
    @Autowired
    TaskService taskService;


//    Activiti之個人任務分配

    @RequestMapping("/Assignee_deploy12")
    public String deploy(){
        Deployment deployment=repositoryService.createDeployment()
                .addClasspathResource("StudentLeaveProcess/StudentLeaveProcess5/gererenwu2.bpmn") // 加載資源文件
                .name("學生請假流程6") // 流程名稱
                .deploy();
        System.out.println("流程部署ID:"+deployment.getId());
        System.out.println("流程部署Name:"+deployment.getName());
        return "Assignee_deploy12";
    }


    @RequestMapping("/Assignee_start12")
    public String start() {
        Map<String,Object> variables=new HashMap<String,Object>();
        variables.put("userid", "張三");
        ProcessInstance processInstance=runtimeService.
                startProcessInstanceByKey("gererenwu2",variables);
        System.out.println("流程實例ID:"+processInstance.getId());
        System.out.println("流程定義ID:"+processInstance.getProcessDefinitionId());
        return "Assignee_start12";
    }


    /**
     * 查看任務
     */
    @RequestMapping("/Assignee_findTask12")
    public String findTask(){
        List<Task> taskList=taskService // 任務相關Service
                .createTaskQuery() // 創建任務查詢
                .taskAssignee("張三") // 指定某個人
                .list();
        for(Task task:taskList){
            System.out.println("任務ID:"+task.getId());
            System.out.println("任務名稱:"+task.getName());
            System.out.println("任務創建時間:"+task.getCreateTime());
            System.out.println("任務委派人:"+task.getAssignee());
            System.out.println("流程實例ID:"+task.getProcessInstanceId());
        }
        return "Assignee_findTask12";

    }


    /**
     * 完成任務
     */
    @RequestMapping("/Assignee_completeTask12")
    public String completeTask(){
        taskService // 任務相關Service
                .complete("100007");
        return "Assignee_completeTask12";

    }

 

方式三 TaskListener監聽實現

 

 

我們定義一個監聽類 MyTaskListener 實現 TaskListener接口:
 

package com.zhangqiang.activity.StudentLeaveProcess.StudentLeaveProcess5;

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

public class MyTaskListener  implements TaskListener {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    @Override
    public void notify(DelegateTask delegateTask) {
        // TODO Auto-generated method stub
        delegateTask.setAssignee("李四"); // 指定辦理人
    }

}

 

這邊指定下 定義的類

 

 

 

 

 

 

 

然後走完流程即可。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章