古詩詞大全網 - 成語查詢 - activiti筆記

activiti筆記

當前版本為activiti6.0,與之前版本區別

assignee:任務執行人,設置系統中的“登錄名”(loginName)。

candidateUsers:任務執行人,可以填寫多個。

candidateGroups:任務執行組,可以填寫多個,設置系統中的“角色英文名(enname)”。

assignee和candidateUsers的區別是:assignee不需要簽收任務,直接可執行任務;candidateUsers為競爭方式分配任務,被指定人待辦中都有壹條任務,誰先簽收誰就獲得任務的執行權。

taskService.setAssignee(String taskId, String userId);

taskService.claim(String taskId, String userId);

taskService.setOwner(String taskId, String userId);

關於上面三個方法的區別:

setAssignee和claim兩個的區別是在認領任務時,claim會檢查該任務是否已經被認領,如果被認領則會拋出ActivitiTaskAlreadyClaimedException 而setAssignee不會進行這樣的檢查。其他方面兩個方法效果壹致。

setOwner和setAssignee的區別在於

setOwner實在代理任務時使用,代表著任務的歸屬者,而這時,setAssignee代表的時代理辦理者,

舉個例子來說,公司總經理現在有個任務taskA,去核實壹下本年度的財務報表,他現在又很忙沒時間,於是將該任務委托給其助理進行辦理,此時,就應該這麽做:

taskService.setOwner(taskA.getId(), 總經理.getId());

taskService.setAssignee/claim(taskA.getId(), 助理.getId());

act_hi_taskinst表兩個字段:

DELEGATION_和OWENER_

DELEGATION_值變化為PENDING,表示此任務為正在執行的委托任務;

DELEGATION_值變化為 RESOLVED,表示此任務為被解決的委托任務;

所以任務在被委托人執行時必須

taskService.resolveTask(task.getId(),taskVariables);//解決委托

taskService.complete(task.getId(), taskVariables);//完成任務

否則容易報錯A delegated task cannot be completed, but should be resolved instead.

OWENR_字段設置用於查詢委任人的委托任務

在執行taskService.addComment前,需要設置批註的所屬人Authentication.setAuthenticatedUserId(userId);

在流程啟動實例之前,設置啟動者identityService.setAuthenticatedUserId(userId);

然後流程設計模型可在流程開始節點設置變量,以供之後的環節使用

級聯刪除會把流程實例流程歷史全部物理清空。

非級聯刪除,必須保證沒有流程實例

二者雖然都能查詢到任務實例。但是前者只能查詢歷史環節,就算act_hi_taskinst有數據未完成當前環節也不能查出