@Override protected boolean executeBusinessLogic(final Execution execution) { final InternalActivityDefinition activityDefinition = execution.getNode(); final ActivityInstance activity = execution.getActivityInstance(); if (activityDefinition.isAsynchronous()) { if (hasConnectorsAutomaticOnEnter(activityDefinition)) { if (!ActivityState.ABORTED.equals(activity.getState())) { final EventService eventService = EnvTool.getEventService(); final String eventName = BonitaConstants.CONNECTOR_AUTOMATIC_ON_ENTER_PREFIX + activity.getUUID(); final Job job = JobBuilder.connectorsAutomaticOnEnterJob(eventName, execution.getInstance() .getRootInstanceUUID(), execution.getEventUUID(), execution.getInstance().getProcessInstanceUUID()); eventService.storeJob(job); } // if it has connector OnEnter the execution must stop return false; } } else { ConnectorExecutor.executeConnectors(activityDefinition, execution, Event.automaticOnEnter); } ConnectorExecutor.executeConnectors(activityDefinition, execution, Event.automaticOnExit); return !ActivityState.ABORTED.equals(activity.getState()); }
private static ExternalActivity createBehaviour(final ActivityDefinition activity) { final String activityName = activity.getName(); AbstractActivity abstractActivity = null; if (activity.isSubflow()) { abstractActivity = new SubFlow(activityName); } else if (activity.isTimer()) { abstractActivity = new Timer(activityName); } else if (activity.isAutomatic()) { abstractActivity = new AutomaticActivity(activityName); } else if (activity.isTask()) { abstractActivity = new Task(activityName); } else if (activity.isSendEvents()) { abstractActivity = new SendEvents(activityName); } else if (activity.isReceiveEvent()) { abstractActivity = new ReceiveEvent(activityName); } else if (activity.isThrowingErrorEvent()) { abstractActivity = new ThrowingErrorEvent(activityName); } else if (activity.isThrowingSignalEvent()) { abstractActivity = new ThrowingSignalEvent(activityName); } else if (activity.isCatchingSignalEvent()) { abstractActivity = new CatchingSignalEvent(activityName); } else if (activity.isCatchingErrorEvent()) { abstractActivity = new CatchingErrorEvent(activityName); } return abstractActivity; }