小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Activiti 個人任務(wù)(三種指派方式)

 KeepSimple 2019-04-03

用戶任務(wù)需要用戶手動來完成的任務(wù),可以直接分配給一個用戶,也可以指定用戶組,再由用戶認(rèn)領(lǐng)。本文我們來介紹一下如何將任務(wù)指派給個人,流程圖如下:
這里寫圖片描述

方式一:

定義流程圖時直接指定完成任務(wù)人(項目開發(fā)中任務(wù)的辦理人不要放置XML文件中,不夠靈活,較少使用)
這里寫圖片描述

流程圖代碼:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www./spec/BPMN/20100524/MODEL" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema" xmlns:activiti="http:///bpmn" xmlns:bpmndi="http://www./spec/BPMN/20100524/DI" xmlns:omgdc="http://www./spec/DD/20100524/DC" xmlns:omgdi="http://www./spec/DD/20100524/DI" typeLanguage="http://www./2001/XMLSchema" expressionLanguage="http://www./1999/XPath" targetNamespace="http://www./test">
  <process id="personalAssignee1" name="PersonalAssignee1" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <userTask id="usertask1" name="審批" activiti:assignee="crystal"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_personalAssignee1">
    <bpmndi:BPMNPlane bpmnElement="personalAssignee1" id="BPMNPlane_personalAssignee1">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="360.0" y="20.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55.0" width="105.0" x="325.0" y="100.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="360.0" y="200.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="377.0" y="55.0"></omgdi:waypoint>
        <omgdi:waypoint x="377.0" y="100.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="377.0" y="155.0"></omgdi:waypoint>
        <omgdi:waypoint x="377.0" y="200.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

方式二:

定義流程圖時配置任務(wù)節(jié)點變量,完成任務(wù)之前由流程變量指定任務(wù)辦理人。在開發(fā)中,可以在頁面中指定下一個任務(wù)的辦理人,通過流程變量設(shè)置下一個任務(wù)的辦理人。
這里寫圖片描述

流程圖代碼

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www./spec/BPMN/20100524/MODEL" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema" xmlns:activiti="http:///bpmn" xmlns:bpmndi="http://www./spec/BPMN/20100524/DI" xmlns:omgdc="http://www./spec/DD/20100524/DC" xmlns:omgdi="http://www./spec/DD/20100524/DI" typeLanguage="http://www./2001/XMLSchema" expressionLanguage="http://www./1999/XPath" targetNamespace="http://www./test">
  <process id="personalTask2" name="PersonalTask2" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <userTask id="usertask1" name="審批" activiti:assignee="#{userId}"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_personalTask2">
    <bpmndi:BPMNPlane bpmnElement="personalTask2" id="BPMNPlane_personalTask2">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="380.0" y="40.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55.0" width="105.0" x="345.0" y="110.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="380.0" y="210.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="397.0" y="75.0"></omgdi:waypoint>
        <omgdi:waypoint x="397.0" y="110.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="397.0" y="165.0"></omgdi:waypoint>
        <omgdi:waypoint x="397.0" y="210.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

方式三:

流程圖中不指定任務(wù)辦理人,添加監(jiān)聽類,需要實現(xiàn)TaskListener接口。
這里寫圖片描述
這里寫圖片描述

流程圖代碼:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www./spec/BPMN/20100524/MODEL" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema" xmlns:activiti="http:///bpmn" xmlns:bpmndi="http://www./spec/BPMN/20100524/DI" xmlns:omgdc="http://www./spec/DD/20100524/DC" xmlns:omgdi="http://www./spec/DD/20100524/DI" typeLanguage="http://www./2001/XMLSchema" expressionLanguage="http://www./1999/XPath" targetNamespace="http://www./test">
  <process id="personalTask3" name="PersonalTask3" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <userTask id="usertask1" name="審批">
      <extensionElements>
        <activiti:taskListener event="create" class="com.activiti.test.TaskListenerImpl"></activiti:taskListener>
      </extensionElements>
    </userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_personalTask3">
    <bpmndi:BPMNPlane bpmnElement="personalTask3" id="BPMNPlane_personalTask3">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="310.0" y="20.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55.0" width="105.0" x="275.0" y="100.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="310.0" y="200.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="327.0" y="55.0"></omgdi:waypoint>
        <omgdi:waypoint x="327.0" y="100.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="327.0" y="155.0"></omgdi:waypoint>
        <omgdi:waypoint x="327.0" y="200.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

監(jiān)聽類 TaskListenerImpl.java

package com.activiti.test;

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

public class TaskListenerImpl implements TaskListener {

    /**
     * 指定個人任務(wù)和組任務(wù)的辦理人
     */
    @Override
    public void notify(DelegateTask delegateTask) {
        delegateTask.setAssignee("crystal");// 指派個人任務(wù)
    }
}

測試類:

package com.activiti.test;

import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;

public class PersonalTask {
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    /**
     * 部署流程定義,啟動流程實例
     */
    @Test
    public void deployAndStart() {
        processEngine.getRepositoryService()
            .createDeployment()
            .name("指定個人任務(wù)")
            .addClasspathResource("diagrams/personalTask3.bpmn")
            .addClasspathResource("diagrams/personalTask3.png")
            .deploy();
        System.out.println("部署成功!");
        // 方式一
        /*ProcessInstance pi = processEngine.getRuntimeService()
                .startProcessInstanceByKey("personalTask1");*/
        // 方式二
        /*Map<String, Object> variables = new HashMap<String, Object>();
        variables.put("userId", "crystal");
        ProcessInstance pi = processEngine.getRuntimeService()
                .startProcessInstanceByKey("personalTask2", variables);*/
        // 方式三
        ProcessInstance pi = processEngine.getRuntimeService()
                .startProcessInstanceByKey("personalTask3");
        System.out.println("流程實例啟動成功!實例ID:" + pi.getId());
    }

    /**
     * 查詢我的個人任務(wù)列表
     */
    @Test
    public void findMyTaskList(){
        String userId = "crystal";
        List<Task> list = processEngine.getTaskService()
                        .createTaskQuery()
                        .taskAssignee(userId)//指定個人任務(wù)查詢
                        .list();
        if (list != null && list.size()>0) {
            for(Task task : list){
                System.out.println("task id="+task.getId());
                System.out.println("name="+task.getName());
                System.out.println("assinee="+task.getAssignee());
                System.out.println("executionId="+task.getExecutionId());
                System.out.println("=====================================");
            }
        }
    }

    /**
     * 完成我的個人任務(wù)
     */
    @Test
    public void complete() {
        String taskId = "167508";
        processEngine.getTaskService().complete(taskId);
        System.out.println("完成任務(wù)");
    }

    /**
     * 可以分配個人任務(wù)從一個人到另一個人
     */
    @Test
    public void setAssigneeTask(){
        String taskId = "172508";//任務(wù)ID
        String userId = "barry";//指定任務(wù)的辦理者
        processEngine.getTaskService().setAssignee(taskId, userId);
        System.out.println("指派成功");
    }
}

總結(jié):

個人任務(wù)及三種分配方式:
1:在taskProcess.bpmn中直接寫 assignee=”crystal”
2:在taskProcess.bpmn中寫 assignee=“#{userID}”,變量的值要是String的(使用流程變量指定辦理人)。
3: 使用TaskListener接口,要使類實現(xiàn)該接口,在類中定義:
delegateTask.setAssignee(assignee);// 指定個人任務(wù)的辦理人
使用任務(wù)ID和辦理人重新指定辦理人:
processEngine.getTaskService().setAssignee(taskId, userId);

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多