天天看點

activiti 根據 流程執行個體ID 擷取發起人

/**擷取發起人

* @param PROC_INST_ID_ //流程執行個體ID
 * @from  fhadmin.cn
 */           

protected String getInitiator(String PROC_INST_ID_) {

HistoricProcessInstance hip = historyService.createHistoricProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();             //擷取曆史流程執行個體
    List<HistoricActivityInstance> hais = historyService.createHistoricActivityInstanceQuery().processInstanceId(PROC_INST_ID_)
                                                                                                .orderByHistoricActivityInstanceId().asc().list();    //擷取流程中已經執行的節點,按照執行先後順序排序
    BpmnModel bpmnModel = repositoryService.getBpmnModel(hip.getProcessDefinitionId()); // 擷取bpmnModel
    List<FlowNode> historicFlowNodeList = new LinkedList<FlowNode>();                    //全部活動執行個體
    for(HistoricActivityInstance hai : hais) {
        historicFlowNodeList.add((FlowNode) bpmnModel.getMainProcess().getFlowElement(hai.getActivityId(), true));
        if(hai.getAssignee() != null) {
            return hai.getAssignee();    //不為空的第一個節點辦理人就是發起人
        }
    }
    return null;
}
           

繼續閱讀