1. 程式人生 > >activiti設計工作流——任務派遣配置

activiti設計工作流——任務派遣配置

               

在配置任務結點時,任務派遣配置有3個專案:Assignee、Candidate users、Candidate groups。


1. Assignee 受讓人; 受託人,代理人; 被指定人;


這個只能指定單個人,不能用逗號分開指定多人。 如果指定了這個人,那麼等價於 生成任務後,指定的這個人執行了 簽收 操作。taskService.claim(taskId, currentUserId);
任務簽收後,任務表(ACT_HI_TASKINST和ACT_RU_TASK)裡的 Assignee_欄位就是簽收人的id(currentUserId)

Candidate users  候選使用者

這個是沒有指定Assignee時,候選的使用者,給系統判定哪些人能簽收這個任務,這個不會校驗許可權,只會提示候選人有哪些。 比如呼叫taskService.claim(taskId, currentUserId);時即使currentUserId不屬於Assignee、Candidate users、Candidate groups這個三個配置裡的使用者,仍然可以呼叫成功。
多個候選使用者可以用英文逗號分開,也可以點選“+”號,分別新增。

Candidate groups  候選組

候選組與候選使用者類似,只是要獲取候選使用者,需要根據候選組找到對應的使用者。


配置注意事項

注意: Assignee 和 Candidate users 填寫的值預設對應的是ACT_ID_USER表的id_欄位(activiti-explorer專案就是這樣)。但這不是絕對的。只要與你的系統其他呼叫的地方保持一致就可以了。如: taskService.createTaskQuery().taskAssignee(param);
taskService.createTaskQuery().taskCandidateUser(param);  
param引數不一定是使用者id,可以是使用者名稱稱,使用者工號,就是與Assignee 和 Candidate users配置裡填寫的值一樣,就可以查詢出對應的任務。但是為了避免使用者名稱稱有重名,最好還是用唯一欄位id比較好,不然2個使用者名稱稱相同,查詢時就會同時查到該任務。

Candidate groups 填寫的值預設是 沒規定是使用者id或者是使用者登入名或者是使用者真實姓名,或者是組id,組編碼,組名稱什麼的。他們在資料庫表中沒有定義與其他表的關聯, taskService.createTaskQuery().taskCandidateGroup(param);
param引數不一定是組id,可以是組名稱,只有與Candidate groups配置的文字值相同就可以了。所以Candidate groups 填寫的值也不是必須要求是組id。原因與Candidate users相同。


關於activiti自帶的ACT_ID_USER、ACT_ID_GROUP、ACT_ID_MEMBERSHIP表.

一般系統有自己的使用者表,許可權,組相關的表,沒有使用activiti自帶的ACT_ID_USER、ACT_ID_GROUP、ACT_ID_MEMBERSHIP表。 可以自己定義UserManager類繼承org.activiti.engine.impl.persistence.entity.UserEntityManager。和GroupManager類繼承org.activiti.engine.impl.persistence.entity.GroupEntityManager。然後用spring管理注入到activiti裡去。 這樣在呼叫( activiti-rest )專案的url是才能得到正確的結果。 當然,如果只是呼叫自己定義的業務類,那麼可以不用管UserManager與GroupManager。只有呼叫類是 taskService.createTaskQuery().taskAssignee(param);
taskService.createTaskQuery().taskCandidateUser(param);   taskService.createTaskQuery().taskCandidateGroup( param );
這些方法時param傳對就可以了。之所以要配置UserManager與GroupManager,只是因為activiti-explorer、activiti-rest專案已經預設param為ACT_ID_USER表的id_欄位,ACT_ID_GROUP表的id_欄位,還有使用者與組的關係表ACT_ID_MEMBERSHIP。如果想要使activiti-explorer、activiti-rest等專案正常執行,有不想使用activiti自帶的ACT_ID_USER、ACT_ID_GROUP、ACT_ID_MEMBERSHIP表,那麼就必須繼承類後重寫對應的方法,然後注入到activiti引擎裡去。

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net

這裡寫圖片描述