public class ActivityStartListener extends AbstractProcessListener {
private static Logger logger = LoggerFactory.getLogger(ActivityStartListener.class);
@Override
public void activityStart(ActivityStartEvent event) {
ActivityInst activityInst = event.getActivityInst();
activityInst.setCurrentState(StarFlowState.ACT_INST_RUNING);
event.getActInstRep().updateActivityStateToRunning(activityInst.getActivityInstId(),
StarFlowState.ACT_INST_RUNING, new Date());
//进入异常状态,等待人工干预,不继续往下运行
IHandle handle = ActivityHandlerFactory.buildHandler(activityInst.getActivityType());
try {
handle.action(event, activityInst);
} catch (InterruptStrategyException e) {
logger.error("非人工环节执行逻辑失败", e);
return;
} finally {
triggerFilterExecuter(event, activityInst);
}
//流程启动后触发事件
TriggerActivityEventUtil.afterStart(event.getProcessEngine(), event.getActivityXml(),
activityInst, event.getActivityXml().getEvents());
if(Constants.ACT_TYPE_SUBPROCESS.equalsIgnoreCase(event.getActivityXml().getType()))
//TODO 子流程,流程启动者的问题。
startSubProcess(event, event.getActivityXml().getSubProcess(),
event.getProcessInstance().getCreator(), activityInst.getActivityInstId());
updateTransCtrlIsUse(event, event.getActivityXml());
innerFinishAct(event, activityInst);
}