private void createConnectors(final XmlBuilder xmlDefBuilder, final Node parentNode, final List<HookDefinition> hooks) throws Exception { final Node connectorsNode = xmlDefBuilder.createNode(parentNode, XmlDef.CONNECTORS); for (final HookDefinition hook : hooks) { final Node connectorNode = xmlDefBuilder.createNode(connectorsNode, XmlDef.CONNECTOR); xmlDefBuilder.createNode(connectorNode, XmlDef.CLASSNAME, hook.getClassName()); xmlDefBuilder.createNode(connectorNode, XmlDef.DESCRIPTION, hook.getDescription()); xmlDefBuilder.createNode(connectorNode, XmlDef.EVENT, hook.getEvent()); xmlDefBuilder.createNode(connectorNode, XmlDef.IS_THROWING_EXCEPTION, hook.isThrowingException()); xmlDefBuilder.createNode(connectorNode, XmlDef.ERROR_CODE, hook.getErrorCode()); final Node parametersNode = xmlDefBuilder.createNode(connectorNode, XmlDef.PARAMETERS); final Map<String, Object[]> hookParameters = hook.getParameters(); for (final Entry<String, Object[]> hookParameter : hookParameters.entrySet()) { final Map<String, Serializable> hookParametersAttributes = new HashMap<String, Serializable>(); hookParametersAttributes.put(XmlDef.NAME, hookParameter.getKey()); final byte[] value = Misc.serialize(hookParameter.getValue()); xmlDefBuilder.createNode(parametersNode, XmlDef.PARAMETER, value, hookParametersAttributes); } } }
public HookDefinitionImpl(final HookDefinition src) { Misc.badStateIfNull(src, "Ouch! Impossible to build a new Definition object from null"); this.className = src.getClassName(); this.event = src.getEvent(); this.parameters = CopyTool.copy(src.getParameters()); this.throwingException = src.isThrowingException(); }
protected static List<JavaHook> getActivityHooks(ActivityDefinition activity) { if (activity.getHooks() != null) { List<JavaHook> javaHooks = new ArrayList<JavaHook>(); for (HookDefinition hook : activity.getHooks()) { boolean inTransaction = hook.isThrowingException(); final JavaHook.Type type = JavaHook.MAPPING.get(hook.getEvent()); final JavaHook javaHook = new JavaHook(hook.getClassName(), type, inTransaction); javaHooks.add(javaHook); } return javaHooks; } return null; }
if (hooks != null) { for (HookDefinition hookDef : hooks) { if (hookDef.getClassName().equals(className) && !hookDef.isThrowingException()) { throw new DeploymentRuntimeException("Hook : " + hookDef.getClassName() + " defined on activity " + activity.getActivityId() + " in process " + process.getProcessId() + " is defined as a 'non rollback' hook but the given class (" + className
final HookDefinition.Event event = hookDefinition.getEvent(); if (!HookDefinition.Event.automaticOnEnter.equals(event)) { parse.addProblem("Unsupported HookEventName: " + event + " for automatic activity with id: " + id + ". Hook class = " + hookDefinition.getClassName() + ". Valid HookEventName for automatic activity is: " + HookDefinition.Event.automaticOnEnter); if (!HookDefinition.Event.TASK_EVENTS.contains(hook.getEvent())) { parse.addProblem("Task activities (NoImplementation - manual) can only define hook on event: " + HookDefinition.Event.TASK_EVENTS + ". Hook class = " + hook.getClassName());
private boolean hasConnectorsAutomaticOnEnter(final InternalActivityDefinition activityDefinition) { final List<HookDefinition> connectors = activityDefinition.getConnectors(); final Iterator<HookDefinition> iterator = connectors.iterator(); boolean hasConnectorsOnEnter = false; while (!hasConnectorsOnEnter && iterator.hasNext()) { final HookDefinition connector = iterator.next(); if (Event.automaticOnEnter.equals(connector.getEvent())) { hasConnectorsOnEnter = true; } } return hasConnectorsOnEnter; }
protected Set<String> getActivitiesDependencies(Set<ActivityDefinition> activities) { Set<String> dependencies = new HashSet<String>(); if (activities != null) { for (ActivityDefinition activity : activities) { if (activity.getPerformerAssign() != null) { dependencies.add(activity.getPerformerAssign().getClassName()); } if (activity.getHooks() != null) { for (HookDefinition hook : activity.getHooks()) { dependencies.add(hook.getClassName()); } } if (activity.getDeadlines() != null) { for (DeadlineDefinition deadline : activity.getDeadlines()) { dependencies.add(deadline.getExceptionName()); } } if (activity.getMultiInstantiationDefinition() != null) { dependencies.add(activity.getMultiInstantiationDefinition().getClassName()); } } } return dependencies; } protected Set<String> getParticipantsDependencies(Set<ParticipantDefinition> participants) {
public HookDefinitionImpl(HookDefinition src) { Misc.badStateIfNull(src, "Ouch! Impossible to build a new Definition object from null"); this.className = src.getClassName(); this.event = src.getEvent(); this.parameters = Tool.copy(src.getParameters()); this.throwingException = src.isThrowingException(); }
public static void executeConnectors(final Execution execution, final Event event) { final InternalProcessInstance instance = execution.getInstance(); final ProcessDefinitionUUID processUUID = instance.getProcessDefinitionUUID(); final ProcessDefinition definition = EnvTool.getJournalQueriers().getProcess(processUUID); final List<HookDefinition> connectors = definition.getConnectors(); if (connectors != null) { for (final HookDefinition connector : connectors) { if (connector.getEvent() != null && event.equals(connector.getEvent())) { executeConnector(execution, null, connector); } } } }
private void createConnectors(final XmlBuilder xmlDefBuilder, final Node parentNode, final List<HookDefinition> hooks) throws Exception { final Node connectorsNode = xmlDefBuilder.createNode(parentNode, XmlDef.CONNECTORS); for (final HookDefinition hook : hooks) { final Node connectorNode = xmlDefBuilder.createNode(connectorsNode, XmlDef.CONNECTOR); xmlDefBuilder.createNode(connectorNode, XmlDef.CLASSNAME, hook.getClassName()); xmlDefBuilder.createNode(connectorNode, XmlDef.DESCRIPTION, hook.getDescription()); xmlDefBuilder.createNode(connectorNode, XmlDef.EVENT, hook.getEvent()); xmlDefBuilder.createNode(connectorNode, XmlDef.IS_THROWING_EXCEPTION, hook.isThrowingException()); xmlDefBuilder.createNode(connectorNode, XmlDef.ERROR_CODE, hook.getErrorCode()); final Node parametersNode = xmlDefBuilder.createNode(connectorNode, XmlDef.PARAMETERS); final Map<String, Object[]> hookParameters = hook.getParameters(); for (final Entry<String, Object[]> hookParameter : hookParameters.entrySet()) { final Map<String, Serializable> hookParametersAttributes = new HashMap<String, Serializable>(); hookParametersAttributes.put(XmlDef.NAME, hookParameter.getKey()); final byte[] value = Misc.serialize(hookParameter.getValue()); xmlDefBuilder.createNode(parametersNode, XmlDef.PARAMETER, value, hookParametersAttributes); } } }
public static void executeConnectors(final ActivityDefinition activityDef, final Execution execution, final Event event, final Map<String, Object> parameters) { final List<HookDefinition> hooks = activityDef.getConnectors(); if (hooks != null) { for (final HookDefinition hook : hooks) { if (hook.getEvent() != null && hook.getEvent().equals(event)) { if (!ActivityState.ABORTED.equals(execution.getActivityInstance().getState())) { executeConnector(execution, activityDef.getName(), hook, parameters); } } } } }