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;
}
上一篇:如何把IP转换成经纬度(Java版)


下一篇:虚拟机主机规则-互斥