@Override public void find(FlowElementContainerDefinition container, long expressionDefinitionId) { for (ActivityDefinition activity : container.getActivities()) { findExpressionFromNotNullContainer(activity, expressionDefinitionId); for (TransitionDefinition transition : container.getTransitions()) { findExpressionFromNotNullContainer(transition, expressionDefinitionId); for (GatewayDefinition gatewayDefinition : container.getGatewaysList()) { findExpressionFromNotNullContainer(gatewayDefinition, expressionDefinitionId); for (StartEventDefinition startEventDefinition : container.getStartEvents()) { findExpressionFromNotNullContainer(startEventDefinition, expressionDefinitionId); for (EndEventDefinition endEventDefinition : container.getEndEvents()) { findExpressionFromNotNullContainer(endEventDefinition, expressionDefinitionId); for (IntermediateCatchEventDefinition catchEventDefinition : container.getIntermediateCatchEvents()) { findExpressionFromNotNullContainer(catchEventDefinition, expressionDefinitionId); for (IntermediateThrowEventDefinition throwEventDefinition : container.getIntermediateThrowEvents()) { findExpressionFromNotNullContainer(throwEventDefinition, expressionDefinitionId); for (DataDefinition dataDefinition : container.getDataDefinitions()) { findExpressionFromNotNullContainer(dataDefinition, expressionDefinitionId); for (DocumentDefinition documentDefinition : container.getDocumentDefinitions()) { findExpressionFromNotNullContainer(documentDefinition, expressionDefinitionId); for (DocumentListDefinition documentListDefinition : container.getDocumentListDefinitions()) {
private void validateFlowNodeUnique(final FlowElementContainerDefinition flowElementContainer, final List<String> names) { validateFlowNodeName(names, flowElementContainer.getActivities()); validateFlowNodeName(names, flowElementContainer.getEndEvents()); validateFlowNodeName(names, flowElementContainer.getGatewaysList()); validateFlowNodeName(names, flowElementContainer.getIntermediateCatchEvents()); validateFlowNodeName(names, flowElementContainer.getIntermediateThrowEvents()); validateFlowNodeName(names, flowElementContainer.getStartEvents()); // validateFlowNodeName(names, flowElementContainer.getBusinessDataDefinitions()); }
protected String generateInfosFromDefinition(final DesignProcessDefinition processDefinition) { final FlowElementContainerDefinition processContainer = processDefinition.getFlowElementContainer(); return new StringBuilder("key1:").append(processDefinition.getActorsList().size()).append(",key2:").append(processContainer.getTransitions().size()) .append(",key3:").append(processContainer.getActivities().size()).toString(); }
assertEquals(process.getFlowElementContainer().getStartEvents().size(), result.getFlowElementContainer().getStartEvents().size()); 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()); assertEquals(process.getFlowElementContainer().getIntermediateCatchEvents().size(), result.getFlowElementContainer().getIntermediateCatchEvents() .size()); assertEquals(1, result.getFlowElementContainer().getIntermediateCatchEvents().size()); assertEquals(process.getFlowElementContainer().getIntermediateCatchEvents().get(0), result.getFlowElementContainer().getIntermediateCatchEvents() .get(0)); assertEquals(1, result.getFlowElementContainer().getIntermediateCatchEvents().get(0).getMessageEventTriggerDefinitions().size()); final CatchMessageEventTriggerDefinition expectedCatchMessageEventTrigger = process.getFlowElementContainer().getIntermediateCatchEvents().get(0) .getMessageEventTriggerDefinitions().get(0); final CatchMessageEventTriggerDefinition actualCatchMessageEventTrigger = result.getFlowElementContainer().getIntermediateCatchEvents().get(0) .getMessageEventTriggerDefinitions().get(0); assertEquals(expectedCatchMessageEventTrigger.getCorrelations(), actualCatchMessageEventTrigger.getCorrelations()); assertEquals(process.getFlowElementContainer().getIntermediateThrowEvents().size(), result.getFlowElementContainer().getIntermediateThrowEvents() .size()); assertEquals(1, result.getFlowElementContainer().getIntermediateThrowEvents().size()); assertEquals(process.getFlowElementContainer().getIntermediateThrowEvents().get(0), result.getFlowElementContainer().getIntermediateThrowEvents() .get(0)); assertEquals(1, result.getFlowElementContainer().getIntermediateThrowEvents().get(0).getMessageEventTriggerDefinitions().size()); assertEquals(process.getFlowElementContainer().getEndEvents().size(), result.getFlowElementContainer().getEndEvents().size());
final List<DocumentDefinition> documentDefinitions = result.getFlowElementContainer().getDocumentDefinitions(); final DocumentDefinition testDoc1 = documentDefinitions.get(0); assertEquals("testDoc", testDoc1.getName()); assertEquals(process.getDisplayName(), result.getDisplayName()); assertEquals(process.getDisplayDescription(), result.getDisplayDescription()); assertEquals(process.getFlowElementContainer().getStartEvents().size(), result.getFlowElementContainer().getStartEvents().size()); assertEquals(process.getFlowElementContainer().getStartEvents().get(0), result.getFlowElementContainer().getStartEvents().get(0)); assertEquals(process.getFlowElementContainer().getIntermediateCatchEvents().size(), result.getFlowElementContainer().getIntermediateCatchEvents() .size()); assertEquals(process.getFlowElementContainer().getIntermediateCatchEvents().get(0), result.getFlowElementContainer().getIntermediateCatchEvents() .get(0)); assertEquals(process.getFlowElementContainer().getEndEvents().size(), result.getFlowElementContainer().getEndEvents().size()); assertEquals(process.getFlowElementContainer().getEndEvents().get(0), result.getFlowElementContainer().getEndEvents().get(0)); assertEquals(process.getActorsList().size(), result.getActorsList().size()); assertEquals(process.getActorsList().iterator().next(), result.getActorsList().iterator().next()); assertEquals(process.getFlowElementContainer().getActivities().size(), result.getFlowElementContainer().getActivities().size()); final Iterator<ActivityDefinition> iterator = result.getFlowElementContainer().getActivities().iterator(); final Iterator<ActivityDefinition> iterator2 = process.getFlowElementContainer().getActivities().iterator(); final ActivityDefinition procAct1 = iterator2.next(); final ActivityDefinition procAct2 = iterator2.next(); assertEquals(auto1.getOperations().get(0), auto1.getOperations().get(0)); assertTrue(procAct2.equals(resAct1) || procAct2.equals(resAct2) || procAct2.equals(resAct3)); assertEquals(process.getFlowElementContainer().getGatewaysList().size(), result.getFlowElementContainer().getGatewaysList().size()); assertEquals(process.getFlowElementContainer().getGatewaysList().iterator().next(), result.getFlowElementContainer().getGatewaysList().iterator() .next()); assertEquals(process.getFlowElementContainer().getTransitions().size(), result.getFlowElementContainer().getTransitions().size());
assertEquals(process.getName(), result.getName()); assertEquals(process.getVersion(), result.getVersion()); assertEquals(process.getFlowElementContainer().getStartEvents().size(), result.getFlowElementContainer().getStartEvents().size()); assertEquals(process.getFlowElementContainer().getStartEvents().get(0), result.getFlowElementContainer().getStartEvents().get(0)); assertEquals(process.getFlowElementContainer().getEndEvents().size(), result.getFlowElementContainer().getEndEvents().size()); assertEquals(process.getFlowElementContainer().getEndEvents().get(0), result.getFlowElementContainer().getEndEvents().get(0)); assertEquals(process.getActorsList().size(), result.getActorsList().size()); assertEquals(process.getActorsList().iterator().next(), result.getActorsList().iterator().next()); assertEquals(process.getFlowElementContainer().getActivities().size(), result.getFlowElementContainer().getActivities().size()); final Iterator<ActivityDefinition> iterator = result.getFlowElementContainer().getActivities().iterator(); final Iterator<ActivityDefinition> iterator2 = process.getFlowElementContainer().getActivities().iterator(); final ActivityDefinition procAct1 = iterator2.next(); final ActivityDefinition procAct2 = iterator2.next(); assertTrue(procAct1.equals(resAct1) || procAct1.equals(resAct2)); assertTrue(procAct2.equals(resAct1) || procAct2.equals(resAct2)); assertEquals(process.getFlowElementContainer().getGatewaysList().size(), result.getFlowElementContainer().getGatewaysList().size()); assertEquals(process.getFlowElementContainer().getGatewaysList().iterator().next(), result.getFlowElementContainer().getGatewaysList().iterator() .next()); assertEquals(process.getFlowElementContainer().getTransitions().size(), result.getFlowElementContainer().getTransitions().size()); assertEquals(process.getFlowElementContainer().getConnectors().size(), result.getFlowElementContainer().getConnectors().size()); assertEquals(process.getFlowElementContainer().getConnectors().iterator().next(), result.getFlowElementContainer().getConnectors().iterator().next());
private void checkProcessForBoundaryEvents(final DesignProcessDefinition process, final DesignProcessDefinition result, final boolean isInterrupting) { assertEquals(process.getName(), result.getName()); assertEquals(process.getVersion(), result.getVersion()); assertEquals(process.getFlowElementContainer().getStartEvents(), result.getFlowElementContainer().getStartEvents()); assertEquals(1, result.getFlowElementContainer().getStartEvents().size()); assertEquals(process.getFlowElementContainer().getActivities().size(), result.getFlowElementContainer().getActivities().size()); final ActivityDefinition resultActivity = result.getFlowElementContainer().getActivity("userTask"); final ActivityDefinition origActivity = process.getFlowElementContainer().getActivity("userTask"); assertEquals(origActivity, resultActivity); assertEquals(origActivity.getBoundaryEventDefinitions().size(), resultActivity.getBoundaryEventDefinitions().size()); for (final BoundaryEventDefinition boundary : resultActivity.getBoundaryEventDefinitions()) { assertEquals(1, boundary.getEventTriggers().size()); assertEquals(isInterrupting, boundary.isInterrupting()); } assertEquals(process.getFlowElementContainer().getEndEvents(), result.getFlowElementContainer().getEndEvents()); assertEquals(1, result.getFlowElementContainer().getEndEvents().size()); }
private void validateOperationsInActivities(final FlowElementContainerDefinition flowElementContainer) { for (ActivityDefinition activity : flowElementContainer.getActivities()) { if (activity.getOperations().size() > 1) { validateOperations(activity.getOperations(), activity.getName()); } validateConnectors(activity.getConnectors()); } }
private void checkProcessForCallActivity(final DesignProcessDefinition process, final DesignProcessDefinition result) { assertEquals(process.getName(), result.getName()); assertEquals(process.getVersion(), result.getVersion()); assertEquals(process.getFlowElementContainer().getStartEvents(), result.getFlowElementContainer().getStartEvents()); assertEquals(1, result.getFlowElementContainer().getStartEvents().size()); assertEquals(1, result.getFlowElementContainer().getActivities().size()); assertEquals(1, process.getFlowElementContainer().getActivities().size()); assertEquals(process.getFlowElementContainer().getActivities().iterator().next(), result.getFlowElementContainer().getActivities().iterator().next()); assertEquals(process.getFlowElementContainer().getEndEvents(), result.getFlowElementContainer().getEndEvents()); assertEquals(1, result.getFlowElementContainer().getEndEvents().size()); }
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); } } }
protected void validateBusinessData() { final FlowElementContainerDefinition processContainer = process.getProcessContainer(); final List<BusinessDataDefinition> businessDataDefinitions = processContainer.getBusinessDataDefinitions(); HashSet<String> names = new HashSet<>(); for (final BusinessDataDefinition businessDataDefinition : businessDataDefinitions) { final List<ActivityDefinition> activities = processContainer.getActivities(); for (final ActivityDefinition activity : activities) { final LoopCharacteristics loopCharacteristics = activity.getLoopCharacteristics(); for (final ActivityDefinition activity : processContainer.getActivities()) { final List<BusinessDataDefinition> dataDefinitions = activity.getBusinessDataDefinitions(); if (activity.getLoopCharacteristics() instanceof MultiInstanceLoopCharacteristics) {
private void validateProcess(final FlowElementContainerDefinition flowElementContainer, final boolean isRootContainer) { validateConnectors(flowElementContainer.getConnectors()); validateGateways(flowElementContainer); validateDocuments(flowElementContainer); validateMultiInstances(flowElementContainer); validateEvents(flowElementContainer, isRootContainer); validateActivities(flowElementContainer); validateOperationsInActivities(flowElementContainer); validateCatchEventsOperations(flowElementContainer); validateConnectors(flowElementContainer.getConnectors()); }
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 validateCatchEventsOperations(final FlowElementContainerDefinition flowElementContainer) { for (IntermediateCatchEventDefinition catchEvent : flowElementContainer.getIntermediateCatchEvents()) { for (CatchMessageEventTriggerDefinition eventTrigger : catchEvent.getMessageEventTriggerDefinitions()) { validateOperations(eventTrigger.getOperations(), catchEvent.getName()); } } }
private void validateEndEvents(final FlowElementContainerDefinition processContainer) { for (final EndEventDefinition endEvent : processContainer.getEndEvents()) { if (!endEvent.getOutgoingTransitions().isEmpty()) { designErrors.add("An end event can't have outgoing transitions: on end event" + endEvent); } } }
private void addEventTriggerOnIntermediateThrowEvent(FlowElementContainerDefinition flowElementContainer) { for (IntermediateThrowEventDefinition throwEvent : flowElementContainer.getIntermediateThrowEvents()) { IntermediateThrowEventDefinitionImpl throwEventImpl = (IntermediateThrowEventDefinitionImpl) throwEvent; for (MessageEventTriggerDefinition messageEventTriggerDefinition : throwEventImpl.getMessageEventTriggerDefinitions()) { throwEventImpl.addEventTrigger(messageEventTriggerDefinition); } for (SignalEventTriggerDefinition signalEventTriggerDefinition : throwEventImpl.getSignalEventTriggerDefinitions()) { throwEventImpl.addEventTrigger(signalEventTriggerDefinition); } } }
private void validateDocuments(final FlowElementContainerDefinition processContainer) { for (final DocumentDefinition document : processContainer.getDocumentDefinitions()) { if (document.getUrl() != null && document.getUrl().length() > MAX_CHARACTER_URL) { designErrors.add("An url can't have more than " + MAX_CHARACTER_URL + " characters."); } if (document.getFileName() != null && document.getFileName().length() > MAX_CHARACTER_FILENAME) { designErrors.add("A file name can't have more than " + MAX_CHARACTER_FILENAME + " characters."); } } }
private void validateGateways(final FlowElementContainerDefinition processContainer) { for (final GatewayDefinition gateway : processContainer.getGatewaysList()) { for (final TransitionDefinition transition : gateway.getOutgoingTransitions()) { switch (gateway.getGatewayType()) { case PARALLEL: if (transition.getCondition() != null) { designErrors.add("The parallel gateway can't have conditional outgoing transitions : " + gateway); } break; default: break; } } } }
private void validateFlowNodeUnique(final FlowElementContainerDefinition flowElementContainer, final List<String> names) { validateFlowNodeName(names, flowElementContainer.getActivities()); validateFlowNodeName(names, flowElementContainer.getEndEvents()); validateFlowNodeName(names, flowElementContainer.getGatewaysList()); validateFlowNodeName(names, flowElementContainer.getIntermediateCatchEvents()); validateFlowNodeName(names, flowElementContainer.getIntermediateThrowEvents()); validateFlowNodeName(names, flowElementContainer.getStartEvents()); // validateFlowNodeName(names, flowElementContainer.getBusinessDataDefinitions()); }
private void validateOperationsInActivities(final FlowElementContainerDefinition flowElementContainer) { for (ActivityDefinition activity : flowElementContainer.getActivities()) { if (activity.getOperations().size() > 1) { validateOperations(activity.getOperations(), activity.getName()); } validateConnectors(activity.getConnectors()); } }