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()); }
private SMultiInstanceActivityInstanceBuilder createMultiInstanceActivityInstance(final long processDefinitionId, final long rootContainerId, final long parentContainerId, final long rootProcessInstanceId, final long parentProcessInstanceId, final SActivityDefinition activityDefinition, final SMultiInstanceLoopCharacteristics loopCharacteristics) { final SMultiInstanceActivityInstanceBuilder builder = BuilderFactory.get(SMultiInstanceActivityInstanceBuilderFactory.class) .createNewOuterTaskInstance( activityDefinition.getName(), activityDefinition.getId(), rootContainerId, parentContainerId, processDefinitionId, rootProcessInstanceId, parentProcessInstanceId, loopCharacteristics.isSequential()); builder.setLoopDataInputRef(loopCharacteristics.getLoopDataInputRef()); builder.setLoopDataOutputRef(loopCharacteristics.getLoopDataOutputRef()); builder.setDataInputItemRef(loopCharacteristics.getDataInputItemRef()); builder.setDataOutputItemRef(loopCharacteristics.getDataOutputItemRef()); return builder; }
private SMultiInstanceActivityInstanceBuilder createMultiInstanceActivityInstance(final long processDefinitionId, final long rootContainerId, final long parentContainerId, final long rootProcessInstanceId, final long parentProcessInstanceId, final SActivityDefinition activityDefinition, final SMultiInstanceLoopCharacteristics loopCharacteristics) { final SMultiInstanceActivityInstanceBuilder builder = BuilderFactory.get(SMultiInstanceActivityInstanceBuilderFactory.class) .createNewOuterTaskInstance( activityDefinition.getName(), activityDefinition.getId(), rootContainerId, parentContainerId, processDefinitionId, rootProcessInstanceId, parentProcessInstanceId, loopCharacteristics.isSequential()); builder.setLoopDataInputRef(loopCharacteristics.getLoopDataInputRef()); builder.setLoopDataOutputRef(loopCharacteristics.getLoopDataOutputRef()); builder.setDataInputItemRef(loopCharacteristics.getDataInputItemRef()); builder.setDataOutputItemRef(loopCharacteristics.getDataOutputItemRef()); return builder; }
private void createBusinessDataInstancesForMultiInstance(SActivityDefinition activityDefinition, SFlowNodeInstance flowNodeInstance, SMultiInstanceLoopCharacteristics miLoop) throws SDataInstanceException { final SBusinessDataDefinition outputBusinessData = activityDefinition.getBusinessDataDefinition(miLoop.getDataOutputItemRef()); final SRefBusinessDataInstanceBuilderFactory instanceFactory = BuilderFactory.get(SRefBusinessDataInstanceBuilderFactory.class); if (outputBusinessData != null) { final SRefBusinessDataInstance outputRefInstance = instanceFactory.createNewInstanceForFlowNode(outputBusinessData.getName(), flowNodeInstance.getId(), null, outputBusinessData.getClassName()).done(); addRefBusinessData(outputRefInstance); } final SBusinessDataDefinition inputBusinessData = activityDefinition.getBusinessDataDefinition(miLoop.getDataInputItemRef()); if (inputBusinessData != null) { try { final SMultiRefBusinessDataInstance loopDataRefInstance = (SMultiRefBusinessDataInstance) refBusinessDataService.getRefBusinessDataInstance( miLoop.getLoopDataInputRef(), flowNodeInstance.getParentProcessInstanceId()); final List<Long> dataIds = loopDataRefInstance.getDataIds(); final SRefBusinessDataInstance inputRefInstance = instanceFactory.createNewInstanceForFlowNode(inputBusinessData.getName(), flowNodeInstance.getId(), dataIds.get(flowNodeInstance.getLoopCounter()), inputBusinessData.getClassName()).done(); addRefBusinessData(inputRefInstance); } catch (final SRefBusinessDataInstanceNotFoundException | SBonitaReadException e) { throw new SDataInstanceException(e); } } }
private void createBusinessDataInstancesForMultiInstance(SActivityDefinition activityDefinition, SFlowNodeInstance flowNodeInstance, SMultiInstanceLoopCharacteristics miLoop) throws SDataInstanceException { final SBusinessDataDefinition outputBusinessData = activityDefinition.getBusinessDataDefinition(miLoop.getDataOutputItemRef()); final SRefBusinessDataInstanceBuilderFactory instanceFactory = BuilderFactory.get(SRefBusinessDataInstanceBuilderFactory.class); if (outputBusinessData != null) { final SRefBusinessDataInstance outputRefInstance = instanceFactory.createNewInstanceForFlowNode(outputBusinessData.getName(), flowNodeInstance.getId(), null, outputBusinessData.getClassName()).done(); addRefBusinessData(outputRefInstance); } final SBusinessDataDefinition inputBusinessData = activityDefinition.getBusinessDataDefinition(miLoop.getDataInputItemRef()); if (inputBusinessData != null) { try { final SMultiRefBusinessDataInstance loopDataRefInstance = (SMultiRefBusinessDataInstance) refBusinessDataService.getRefBusinessDataInstance( miLoop.getLoopDataInputRef(), flowNodeInstance.getParentProcessInstanceId()); final List<Long> dataIds = loopDataRefInstance.getDataIds(); final SRefBusinessDataInstance inputRefInstance = instanceFactory.createNewInstanceForFlowNode(inputBusinessData.getName(), flowNodeInstance.getId(), dataIds.get(flowNodeInstance.getLoopCounter()), inputBusinessData.getClassName()).done(); addRefBusinessData(inputRefInstance); } catch (final SRefBusinessDataInstanceNotFoundException | SBonitaReadException e) { throw new SDataInstanceException(e); } } }