流程任務-使用者任務

來源:互聯網
上載者:User

標籤:style   blog   io   ar   color   os   使用   sp   java   

user task 是最常用的任務,當流程到達使用者任務時,使用者任務將會被分配到特定使用者或者使用者組。

任務候選人是指有許可權對該任務進行操作的潛在使用者群體,這個群體有許可權去處理或完成該任務。

任務受理人指真正執行該任務的人,一個可以有多個任務候選人,但是只能有一個任務受理人。

1.設定任務候選人

  代碼設定

//設定候選人taskService.addCandidateUser(...)//設定組別taskService.addCandidateGroup(...)

  xml配置

<userTask id="usertask1" name="Task1">  <potentialOwner>    <resourceAssignmentExpression>  <formalExpression>
        user(angus), group(management), boss <!--不使用user或group時,直接被視作使用者組的ID--> </formalExpression>    </resourceAssignmentExpression> </potentialOwner></userTask>

 查看:

// 根據使用者組查詢任務List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("boss").list();System.out.println("分配到boss使用者組下的任務數量:" + tasks.size());// 根據使用者查詢任務tasks = taskService.createTaskQuery().taskCandidateUser("angus").list();System.out.println("使用者angus下的任務數量為:" + tasks.size());

註:指定的使用者組或使用者,並不需要一定要在表中存在。

2.設定任務受理人

  代碼

//對應ACT_RU_TASK的ASSIGNEE_欄位taskService.setAssignee(...)

  xml配置

<userTask id="usertask1" name="Task 1">    <humanPerformer>        <resourceAssignmentExpression>            <formalExpression>user1</formalExpression>        </resourceAssignmentExpression>    </humanPerformer></userTask>

 查看可用  taskQuery.taskAssignee(...)

3.使用acitivi許可權分配擴充(activiti:assignee/activiti:candidateUsers/activiti:candidateGroups)

    <userTask id="usertask1" name="Assignee" activiti:assignee="user1"></userTask>    <userTask id="usertask2" name="Candidate User" activiti:candidateUsers="user1,user2"></userTask>    <userTask id="usertask3" name="Candidate Group" activiti:candidateGroups="group1,group2"></userTask>

4.業務系統中,使用者組或使用者都有可能發生變化,這時可編寫任務監聽器進行動態許可權分配

  4.1實現TaskListener介面 

public class UserTaskListener implements TaskListener {    public void notify(DelegateTask delegateTask) {        System.out.println("使用任務監聽器設定任務許可權");        delegateTask.setAssignee("user1");        delegateTask.addCandidateGroup("group1");            }}

  4.2配置監聽

<userTask id="usertask1" name="Assignee">    <extensionElements>        <activiti:taskListener             event="create" <!--任務建立的時候執行-->            class="org.bestmyself.activiti.UserTaskListener">        </activiti:taskListener>    </extensionElements></userTask>

查看:List<Task> tasks = taskService.createTaskQuery().taskAssignee("user1").list();

5.使用JUEL分配許可權(activiti預設支援juel)

<userTask id="usertask2" name="Task 1"    activiti:assignee="${authService.getUserAssignee()}"></userTask><userTask id="usertask3" name="Task 2"    activiti:candidateUsers="${authService.getCandidateUsers()}"></userTask><userTask id="usertask4" name="Task 3"    activiti:candidateGroups="${authService.getCandidateGroups()}"></userTask><userTask id="usertask5" name="Task 4"     activiti:assignee="${authService.lastUser}"> <!--要有相應的getter/setter方法--></userTask>
註:authService執行個體需要設定到流程參數中
   Map<String, Object> vars = new HashMap<String, Object>();   vars.put("authService", new AuthService());   // 啟動流程,將authservice執行個體序列化到act_ge_bytearray中   ProcessInstance pi = runtimeService.startProcessInstanceByKey("process1", vars);

                                                                                       

 

 

流程任務-使用者任務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.