@Override
protected boolean executeBusinessLogic(final Execution execution) {
final ActivityDefinition activity = execution.getNode();
final ActivityInstanceUUID activityUUID = execution.getActivityInstanceUUID();
final EventService eventService = EnvTool.getEventService();
final IncomingEventDefinition incomingEvent = activity.getIncomingEvent();
String eventUUID = execution.getEventUUID();
final ProcessInstanceUUID instanceUUID = execution.getInstance().getUUID();
if (eventUUID == null) {
eventUUID = UUID.randomUUID().toString();
}
if (execution.getNode().hasIncomingTransitions()) {
final IncomingEventInstance eventInstance = new IncomingEventInstance(incomingEvent.getName(),
incomingEvent.getExpression(), instanceUUID, activity.getUUID(), activityUUID, execution.getProcessDefinition()
.getName(), activityName, eventUUID, EventConstants.INTERMEDIATE, System.currentTimeMillis(), true);
ActivityUtil.addCorrelationKeys(incomingEvent, eventInstance, activityUUID);
eventService.subscribe(eventInstance);
} else {
eventUUID = instanceUUID + "-----START-----";
}
execution.setEventUUID(eventUUID);
execution.lock("Incoming event " + eventUUID);
return false;
}