private boolean isChildOfLoopOrMultiInstance(final SActivityInstance activityInstance, final SActivityDefinition activityDefinition) { return activityDefinition.getLoopCharacteristics() != null && !(SFlowNodeType.MULTI_INSTANCE_ACTIVITY.equals(activityInstance.getType()) || SFlowNodeType.LOOP_ACTIVITY.equals(activityInstance.getType())); }
private boolean isChildOfLoopOrMultiInstance(final SActivityInstance activityInstance, final SActivityDefinition activityDefinition) { return activityDefinition.getLoopCharacteristics() != null && !(SFlowNodeType.MULTI_INSTANCE_ACTIVITY.equals(activityInstance.getType()) || SFlowNodeType.LOOP_ACTIVITY.equals(activityInstance.getType())); }
private boolean createDataInstances(final SActivityDefinition activityDefinition, final SFlowNodeInstance flowNodeInstance, final SExpressionContext expressionContext) throws SActivityStateExecutionException { final List<SDataDefinition> sDataDefinitions = activityDefinition.getSDataDefinitions(); final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); try { if (loopCharacteristics instanceof SMultiInstanceLoopCharacteristics && (((SMultiInstanceLoopCharacteristics) loopCharacteristics).getDataInputItemRef() != null || ((SMultiInstanceLoopCharacteristics) loopCharacteristics).getDataOutputItemRef() != null)) { createDataInstancesForMultiInstance(activityDefinition, flowNodeInstance, expressionContext); } else { createDataInstances(sDataDefinitions, flowNodeInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE, expressionContext); } if (!sDataDefinitions.isEmpty() && logger.isLoggable(this.getClass(), TechnicalLogSeverity.DEBUG)) { final String message = "Initialized variables for flow node" + LogMessageBuilder.buildFlowNodeContextMessage(flowNodeInstance); logger.log(this.getClass(), TechnicalLogSeverity.DEBUG, message); } return sDataDefinitions.size() > 0; } catch (final SBonitaException e) { throw new SActivityStateExecutionException(e); } }
private boolean createDataInstances(final SActivityDefinition activityDefinition, final SFlowNodeInstance flowNodeInstance, final SExpressionContext expressionContext) throws SActivityStateExecutionException { final List<SDataDefinition> sDataDefinitions = activityDefinition.getSDataDefinitions(); final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); try { if (loopCharacteristics instanceof SMultiInstanceLoopCharacteristics && (((SMultiInstanceLoopCharacteristics) loopCharacteristics).getDataInputItemRef() != null || ((SMultiInstanceLoopCharacteristics) loopCharacteristics).getDataOutputItemRef() != null)) { createDataInstancesForMultiInstance(activityDefinition, flowNodeInstance, expressionContext); } else { createDataInstances(sDataDefinitions, flowNodeInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE, expressionContext); } if (!sDataDefinitions.isEmpty() && logger.isLoggable(this.getClass(), TechnicalLogSeverity.DEBUG)) { final String message = "Initialized variables for flow node" + LogMessageBuilder.buildFlowNodeContextMessage(flowNodeInstance); logger.log(this.getClass(), TechnicalLogSeverity.DEBUG, message); } return sDataDefinitions.size() > 0; } catch (final SBonitaException e) { throw new SActivityStateExecutionException(e); } }
protected void createDataInstancesForMultiInstance(final SActivityDefinition activityDefinition, final SFlowNodeInstance flowNodeInstance, final SExpressionContext expressionContext) throws SDataInstanceException, SExpressionException { final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); final SMultiInstanceLoopCharacteristics miLoop = (SMultiInstanceLoopCharacteristics) loopCharacteristics; createBusinessDataInstancesForMultiInstance(activityDefinition, flowNodeInstance, miLoop); createDataInstances(activityDefinition.getSDataDefinitions(), flowNodeInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE, expressionContext, miLoop.getLoopDataInputRef(), flowNodeInstance.getLoopCounter(), miLoop.getDataInputItemRef(), flowNodeInstance.getParentContainerId()); }
protected void createDataInstancesForMultiInstance(final SActivityDefinition activityDefinition, final SFlowNodeInstance flowNodeInstance, final SExpressionContext expressionContext) throws SDataInstanceException, SExpressionException { final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); final SMultiInstanceLoopCharacteristics miLoop = (SMultiInstanceLoopCharacteristics) loopCharacteristics; createBusinessDataInstancesForMultiInstance(activityDefinition, flowNodeInstance, miLoop); createDataInstances(activityDefinition.getSDataDefinitions(), flowNodeInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE, expressionContext, miLoop.getLoopDataInputRef(), flowNodeInstance.getLoopCounter(), miLoop.getDataInputItemRef(), flowNodeInstance.getParentContainerId()); }
public void mapDataOutputOfMultiInstance(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { if (flowNodeInstance instanceof SActivityInstance && !SFlowNodeType.MULTI_INSTANCE_ACTIVITY.equals(flowNodeInstance.getType())) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SActivityDefinition activityDefinition = (SActivityDefinition) processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); if (activityDefinition != null) {// can be null if the activity was added in runtime try { final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); if (loopCharacteristics instanceof SMultiInstanceLoopCharacteristics && ((SMultiInstanceLoopCharacteristics) loopCharacteristics).getDataOutputItemRef() != null) { final SMultiInstanceLoopCharacteristics miLoop = (SMultiInstanceLoopCharacteristics) loopCharacteristics; final SBusinessDataDefinition businessData = processContainer.getBusinessDataDefinition(miLoop.getLoopDataOutputRef()); if (businessData == null) { mapDataOutputOfMultiInstance(flowNodeInstance, miLoop); } else { MapMultiInstanceBusinessDataOutput(flowNodeInstance, miLoop); } } } catch (final SBonitaException sbe) { throw new SActivityStateExecutionException(sbe); } } } }
public void mapDataOutputOfMultiInstance(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { if (flowNodeInstance instanceof SActivityInstance && !SFlowNodeType.MULTI_INSTANCE_ACTIVITY.equals(flowNodeInstance.getType())) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SActivityDefinition activityDefinition = (SActivityDefinition) processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); if (activityDefinition != null) {// can be null if the activity was added in runtime try { final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); if (loopCharacteristics instanceof SMultiInstanceLoopCharacteristics && ((SMultiInstanceLoopCharacteristics) loopCharacteristics).getDataOutputItemRef() != null) { final SMultiInstanceLoopCharacteristics miLoop = (SMultiInstanceLoopCharacteristics) loopCharacteristics; final SBusinessDataDefinition businessData = processContainer.getBusinessDataDefinition(miLoop.getLoopDataOutputRef()); if (businessData == null) { mapDataOutputOfMultiInstance(flowNodeInstance, miLoop); } else { MapMultiInstanceBusinessDataOutput(flowNodeInstance, miLoop); } } } catch (final SBonitaException sbe) { throw new SActivityStateExecutionException(sbe); } } } }
final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SActivityDefinition activityDefinition = (SActivityDefinition) processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); final SMultiInstanceLoopCharacteristics loopCharacteristics = (SMultiInstanceLoopCharacteristics) activityDefinition.getLoopCharacteristics();
final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SActivityDefinition activityDefinition = (SActivityDefinition) processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); final SMultiInstanceLoopCharacteristics loopCharacteristics = (SMultiInstanceLoopCharacteristics) activityDefinition.getLoopCharacteristics();
protected SWaitingErrorEvent getWaitingErrorEventFromBoundary(final SThrowEventInstance eventInstance, final String errorCode, final SFlowNodeInstance flowNodeInstance) throws SBonitaException { final SFlowNodeInstanceBuilderFactory flowNodeKeyProvider = BuilderFactory.get(SBoundaryEventInstanceBuilderFactory.class); // get the parent activity of the boundary final long logicalGroup = eventInstance.getLogicalGroup(flowNodeKeyProvider.getParentActivityInstanceIndex()); if (logicalGroup <= 0) { // not in an activity = no boundary return null; } final long processDefinitionId = flowNodeInstance.getLogicalGroup(flowNodeKeyProvider.getProcessDefinitionIndex()); final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SActivityDefinition flowNode = (SActivityDefinition) processDefinition.getProcessContainer().getFlowNode( flowNodeInstance.getFlowNodeDefinitionId()); final List<SBoundaryEventDefinition> boundaryEventDefinitions = flowNode.getBoundaryEventDefinitions(); SWaitingErrorEvent waitingErrorEvent; if (flowNode.getLoopCharacteristics() == null) { waitingErrorEvent = getWaitingErrorEventFromBoundary(errorCode, flowNodeInstance, boundaryEventDefinitions); } else { final long multipleInstanceActivityId = flowNodeInstance.getLogicalGroup(flowNodeKeyProvider.getParentActivityInstanceIndex()); final SFlowNodeInstance miActivityInstance = flowNodeInstanceService.getFlowNodeInstance(multipleInstanceActivityId); waitingErrorEvent = getWaitingErrorEventFromBoundary(errorCode, miActivityInstance, boundaryEventDefinitions); } return waitingErrorEvent; }
protected SWaitingErrorEvent getWaitingErrorEventFromBoundary(final SThrowEventInstance eventInstance, final String errorCode, final SFlowNodeInstance flowNodeInstance) throws SBonitaException { final SFlowNodeInstanceBuilderFactory flowNodeKeyProvider = BuilderFactory.get(SBoundaryEventInstanceBuilderFactory.class); // get the parent activity of the boundary final long logicalGroup = eventInstance.getLogicalGroup(flowNodeKeyProvider.getParentActivityInstanceIndex()); if (logicalGroup <= 0) { // not in an activity = no boundary return null; } final long processDefinitionId = flowNodeInstance.getLogicalGroup(flowNodeKeyProvider.getProcessDefinitionIndex()); final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SActivityDefinition flowNode = (SActivityDefinition) processDefinition.getProcessContainer().getFlowNode( flowNodeInstance.getFlowNodeDefinitionId()); final List<SBoundaryEventDefinition> boundaryEventDefinitions = flowNode.getBoundaryEventDefinitions(); SWaitingErrorEvent waitingErrorEvent; if (flowNode.getLoopCharacteristics() == null) { waitingErrorEvent = getWaitingErrorEventFromBoundary(errorCode, flowNodeInstance, boundaryEventDefinitions); } else { final long multipleInstanceActivityId = flowNodeInstance.getLogicalGroup(flowNodeKeyProvider.getParentActivityInstanceIndex()); final SFlowNodeInstance miActivityInstance = flowNodeInstanceService.getFlowNodeInstance(multipleInstanceActivityId); waitingErrorEvent = getWaitingErrorEventFromBoundary(errorCode, miActivityInstance, boundaryEventDefinitions); } return waitingErrorEvent; }
final SStandardLoopCharacteristics loopCharacteristics = (SStandardLoopCharacteristics) activity.getLoopCharacteristics(); boolean loop = false; final int loopCounter = loopActivity.getLoopCounter();
final SStandardLoopCharacteristics loopCharacteristics = (SStandardLoopCharacteristics) activity.getLoopCharacteristics(); boolean loop = false; final int loopCounter = loopActivity.getLoopCounter();
final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SActivityDefinition activity = (SActivityDefinition) processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); final SLoopCharacteristics loopCharacteristics = activity.getLoopCharacteristics(); if (loopCharacteristics instanceof SMultiInstanceLoopCharacteristics) { final SMultiInstanceLoopCharacteristics miLoop = (SMultiInstanceLoopCharacteristics) loopCharacteristics;
final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SActivityDefinition activity = (SActivityDefinition) processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); final SLoopCharacteristics loopCharacteristics = activity.getLoopCharacteristics(); if (loopCharacteristics instanceof SMultiInstanceLoopCharacteristics) { final SMultiInstanceLoopCharacteristics miLoop = (SMultiInstanceLoopCharacteristics) loopCharacteristics;
try { final SLoopActivityInstance loopActivity = (SLoopActivityInstance) activityInstanceService.getFlowNodeInstance(flowNodeInstance.getId()); final SLoopCharacteristics loopCharacteristics = activity.getLoopCharacteristics(); if (loopCharacteristics instanceof SStandardLoopCharacteristics) { final SStandardLoopCharacteristics standardLoop = (SStandardLoopCharacteristics) loopCharacteristics;
try { final SLoopActivityInstance loopActivity = (SLoopActivityInstance) activityInstanceService.getFlowNodeInstance(flowNodeInstance.getId()); final SLoopCharacteristics loopCharacteristics = activity.getLoopCharacteristics(); if (loopCharacteristics instanceof SStandardLoopCharacteristics) { final SStandardLoopCharacteristics standardLoop = (SStandardLoopCharacteristics) loopCharacteristics;
if (!createInnerActivity && sFlowNodeDefinition instanceof SActivityDefinition) { final SActivityDefinition activityDefinition = (SActivityDefinition) sFlowNodeDefinition; final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); if (loopCharacteristics != null) { SFlowNodeInstanceBuilder builder;
if (!createInnerActivity && sFlowNodeDefinition instanceof SActivityDefinition) { final SActivityDefinition activityDefinition = (SActivityDefinition) sFlowNodeDefinition; final SLoopCharacteristics loopCharacteristics = activityDefinition.getLoopCharacteristics(); if (loopCharacteristics != null) { SFlowNodeInstanceBuilder builder;