// 人工环节重启规则:最终参与者 private void setManualActParticipants(ActivityRestartEvent event) { if (Constants.ACT_RESTART_FINAL.equals(event.getActivityXml().getResetParticipant())) { event .getWorkItemRep() .updateActWorkItemStateAndStartTime( event.getActivityInst().getActivityInstId(), StarFlowState.WORKITEM_RUNNING, new Date()); } else { List<WorkItem> workItems = event.getWorkItemRep().findActivityWorkItems(event.getActivityInst().getActivityInstId()); for (WorkItem workItem : workItems) { int state = StarFlowState.WORKITEM_RUNNING; List<Participant> participants = event.getWorkItemRep().findWorkItemParticipants(workItem.getWorkItemId()); if (participants.size() == 1) { Participant participant = participants.get(0); if (Constants.PARTICIPANT_TYPE_PERSON.equals(participant.getParticType())) state = StarFlowState.WORKITEM_RUNNING; else state = StarFlowState.WORKITEM_WAITING_RECEIVE; } else state = StarFlowState.WORKITEM_WAITING_RECEIVE; event .getWorkItemRep() .updateWorkItemStateAndStartTime(workItem.getWorkItemId(), state, new Date()); } } }
@Override public void activityRestart(ActivityRestartEvent event) { // 环节实例状态更新为待激活状态。 event .getActInstRep() .updateActivityStateToRunning( event.getActivityInst().getActivityInstId(), StarFlowState.ACT_INST_WAITING, new Date()); if (!ActivityStartRuleUtil.isStartActivity(event, event.getActivityInst())) return; String type = event.getActivityXml().getType(); if (Constants.ACT_TYPE_MANUL.equals(type)) setManualActParticipants(event); EventUtil.publishActivityStartEvent( event.getProcessEngine(), event.getProcessInstance(), event.getActivityInst(), event.getActivityXml()); }