private void addEventTriggerOnStartEvent(FlowElementContainerDefinition flowElementContainer) { for (StartEventDefinition startEvent : flowElementContainer.getStartEvents()) { StartEventDefinitionImpl startEventImpl = (StartEventDefinitionImpl) startEvent; for (MessageEventTriggerDefinition messageEventTrigger : startEvent.getMessageEventTriggerDefinitions()) { startEventImpl.addEventTrigger(messageEventTrigger); } for (ErrorEventTriggerDefinition errorEventTrigger : startEvent.getErrorEventTriggerDefinitions()) { startEventImpl.addEventTrigger(errorEventTrigger); } for (SignalEventTriggerDefinition signalEventTrigger : startEvent.getSignalEventTriggerDefinitions()) { startEventImpl.addEventTrigger(signalEventTrigger); } for (TimerEventTriggerDefinition timerEventTrigger : startEvent.getTimerEventTriggerDefinitions()) { startEventImpl.addEventTrigger(timerEventTrigger); } } }
private void validateStartEvents(final FlowElementContainerDefinition processContainer, final boolean isRootContainer) { for (final StartEventDefinition startEvent : processContainer.getStartEvents()) { if (!startEvent.getIncomingTransitions().isEmpty()) { designErrors.add("A start event can't have incoming transitions: on start event" + startEvent); } validateMessageStartEvent(startEvent, isRootContainer); } }
private void validateMessageStartEvent(final StartEventDefinition startEvent, final boolean isRootContainer) { if (isRootContainer) { final List<CatchMessageEventTriggerDefinition> messageEventTriggers = startEvent.getMessageEventTriggerDefinitions(); for (final CatchMessageEventTriggerDefinition messageEventTrigger : messageEventTriggers) { if (!messageEventTrigger.getCorrelations().isEmpty()) { designErrors.add("A message start event cannot have correlations. On start event:" + startEvent); } } } }
private void validateEventsSubProcess() { final FlowElementContainerDefinition processContainer = process.getProcessContainer(); for (final ActivityDefinition activity : processContainer.getActivities()) { if (activity instanceof SubProcessDefinition) { final FlowElementContainerDefinition subProcessContainer = ((SubProcessDefinition) activity).getSubProcessContainer(); if (subProcessContainer == null) { designErrors.add("The subprocess " + activity.getName() + " does not have any element," + " add at least one element using the builder that can be retrieved on the subprocess activity:" + " org.bonitasoft.engine.bpm.process.impl.SubProcessActivityDefinitionBuilder.getSubProcessBuilder()"); return; } if (((SubProcessDefinition) activity).isTriggeredByEvent()) { if (subProcessContainer.getStartEvents().size() != 1) { designErrors.add("An event sub process must have one and only one start events, but " + subProcessContainer.getStartEvents().size() + " were found : " + activity); } if (!subProcessContainer.getStartEvents().isEmpty() && subProcessContainer.getStartEvents().get(0).getEventTriggers().isEmpty()) { designErrors.add("The event sub process have no start event with a not NONE trigger : " + activity); } if (activity.getIncomingTransitions().size() > 0) { designErrors.add("An event sub process cannot have incoming transitions : " + activity); } if (activity.getOutgoingTransitions().size() > 0) { designErrors.add("An event sub process cannot have outgoing transitions : " + activity); } } validateProcess(subProcessContainer, false); } } }
private void validateMessageStartEvent(final StartEventDefinition startEvent, final boolean isRootContainer) { if (isRootContainer) { final List<CatchMessageEventTriggerDefinition> messageEventTriggers = startEvent.getMessageEventTriggerDefinitions(); for (final CatchMessageEventTriggerDefinition messageEventTrigger : messageEventTriggers) { if (!messageEventTrigger.getCorrelations().isEmpty()) { designErrors.add("A message start event cannot have correlations. On start event:" + startEvent); } } } }
private void validateEventsSubProcess() { final FlowElementContainerDefinition processContainer = process.getProcessContainer(); for (final ActivityDefinition activity : processContainer.getActivities()) { if (activity instanceof SubProcessDefinition) { final FlowElementContainerDefinition subProcessContainer = ((SubProcessDefinition) activity).getSubProcessContainer(); if (subProcessContainer == null) { designErrors.add("The subprocess " + activity.getName() + " does not have any element," + " add at least one element using the builder that can be retrieved on the subprocess activity:" + " org.bonitasoft.engine.bpm.process.impl.SubProcessActivityDefinitionBuilder.getSubProcessBuilder()"); return; } if (((SubProcessDefinition) activity).isTriggeredByEvent()) { if (subProcessContainer.getStartEvents().size() != 1) { designErrors.add("An event sub process must have one and only one start events, but " + subProcessContainer.getStartEvents().size() + " were found : " + activity); } if (!subProcessContainer.getStartEvents().isEmpty() && subProcessContainer.getStartEvents().get(0).getEventTriggers().isEmpty()) { designErrors.add("The event sub process have no start event with a not NONE trigger : " + activity); } if (activity.getIncomingTransitions().size() > 0) { designErrors.add("An event sub process cannot have incoming transitions : " + activity); } if (activity.getOutgoingTransitions().size() > 0) { designErrors.add("An event sub process cannot have outgoing transitions : " + activity); } } validateProcess(subProcessContainer, false); } } }
private void addEventTriggerOnStartEvent(FlowElementContainerDefinition flowElementContainer) { for (StartEventDefinition startEvent : flowElementContainer.getStartEvents()) { StartEventDefinitionImpl startEventImpl = (StartEventDefinitionImpl) startEvent; for (MessageEventTriggerDefinition messageEventTrigger : startEvent.getMessageEventTriggerDefinitions()) { startEventImpl.addEventTrigger(messageEventTrigger); } for (ErrorEventTriggerDefinition errorEventTrigger : startEvent.getErrorEventTriggerDefinitions()) { startEventImpl.addEventTrigger(errorEventTrigger); } for (SignalEventTriggerDefinition signalEventTrigger : startEvent.getSignalEventTriggerDefinitions()) { startEventImpl.addEventTrigger(signalEventTrigger); } for (TimerEventTriggerDefinition timerEventTrigger : startEvent.getTimerEventTriggerDefinitions()) { startEventImpl.addEventTrigger(timerEventTrigger); } } }
assertEquals(1, result.getFlowElementContainer().getStartEvents().size()); assertEquals(process.getFlowElementContainer().getStartEvents().get(0), result.getFlowElementContainer().getStartEvents().get(0)); assertEquals(1, result.getFlowElementContainer().getStartEvents().get(0).getMessageEventTriggerDefinitions().size()); assertEquals(process.getFlowElementContainer().getStartEvents().get(0).getMessageEventTriggerDefinitions().get(0).getOperations(), result .getFlowElementContainer().getStartEvents().get(0).getMessageEventTriggerDefinitions().get(0).getOperations()); assertEquals(1, result.getFlowElementContainer().getStartEvents().get(0).getMessageEventTriggerDefinitions().get(0).getOperations().size());
private void validateStartEvents(final FlowElementContainerDefinition processContainer, final boolean isRootContainer) { for (final StartEventDefinition startEvent : processContainer.getStartEvents()) { if (!startEvent.getIncomingTransitions().isEmpty()) { designErrors.add("A start event can't have incoming transitions: on start event" + startEvent); } validateMessageStartEvent(startEvent, isRootContainer); } }