@Override public List<Problem> checkResolution(final SProcessDefinition processDefinition) { final List<SBusinessDataDefinition> businessDataDefinitions = processDefinition.getProcessContainer().getBusinessDataDefinitions(); if (businessDataDefinitions.isEmpty()) { return Collections.emptyList(); } final List<Problem> problems = new ArrayList<>(); final Set<String> entityClassNames = businessDataRepository.getEntityClassNames(); for (final SBusinessDataDefinition sBusinessDataDefinition : businessDataDefinitions) { final String className = sBusinessDataDefinition.getClassName(); if (!entityClassNames.contains(className)) { final Problem problem = new ProblemImpl(Level.ERROR, sBusinessDataDefinition.getName(), "business data", "The business data '" + sBusinessDataDefinition.getName() + "' with the class name '" + className + "', is not managed by the current version of the BDM"); problems.add(problem); } } return problems; }
private void initializeBusinessData(SFlowElementContainerDefinition processContainer, final SProcessInstance sInstance, final SExpressionContext expressionContext) throws SBonitaException { final List<SBusinessDataDefinition> businessDataDefinitions = processContainer.getBusinessDataDefinitions(); for (final SBusinessDataDefinition bdd : businessDataDefinitions) { final SExpression expression = bdd.getDefaultValueExpression(); if (bdd.isMultiple()) { final List<Long> dataIds = initializeMultipleBusinessDataIds(expressionContext, expression); final SRefBusinessDataInstanceBuilderFactory instanceFactory = BuilderFactory.get(SRefBusinessDataInstanceBuilderFactory.class); final SRefBusinessDataInstance instance = instanceFactory.createNewInstance(bdd.getName(), sInstance.getId(), dataIds, bdd.getClassName()) .done(); refBusinessDataService.addRefBusinessDataInstance(instance); } else { final Long primaryKey = initializeSingleBusinessData(expressionContext, expression); final SRefBusinessDataInstanceBuilderFactory instanceFactory = BuilderFactory.get(SRefBusinessDataInstanceBuilderFactory.class); final SRefBusinessDataInstance instance = instanceFactory.createNewInstance(bdd.getName(), sInstance.getId(), primaryKey, bdd.getClassName()) .done(); refBusinessDataService.addRefBusinessDataInstance(instance); } } }
@Override public SBusinessDataDefinition getBusinessDataDefinition(final String name) { if (name == null) { return null; } boolean found = false; SBusinessDataDefinition businessData = null; final Iterator<SBusinessDataDefinition> iterator = sBusinessDataDefinitions.iterator(); while (iterator.hasNext() && !found) { final SBusinessDataDefinition currentBusinessData = iterator.next(); if (currentBusinessData.getName().equals(name)) { found = true; businessData = currentBusinessData; } } return businessData; }
private void initializeBusinessData(SFlowElementContainerDefinition processContainer, final SProcessInstance sInstance, final SExpressionContext expressionContext) throws SBonitaException { final List<SBusinessDataDefinition> businessDataDefinitions = processContainer.getBusinessDataDefinitions(); for (final SBusinessDataDefinition bdd : businessDataDefinitions) { final SExpression expression = bdd.getDefaultValueExpression(); if (bdd.isMultiple()) { final List<Long> dataIds = initializeMultipleBusinessDataIds(expressionContext, expression); final SRefBusinessDataInstanceBuilderFactory instanceFactory = BuilderFactory.get(SRefBusinessDataInstanceBuilderFactory.class); final SRefBusinessDataInstance instance = instanceFactory.createNewInstance(bdd.getName(), sInstance.getId(), dataIds, bdd.getClassName()) .done(); refBusinessDataService.addRefBusinessDataInstance(instance); } else { final Long primaryKey = initializeSingleBusinessData(expressionContext, expression); final SRefBusinessDataInstanceBuilderFactory instanceFactory = BuilderFactory.get(SRefBusinessDataInstanceBuilderFactory.class); final SRefBusinessDataInstance instance = instanceFactory.createNewInstance(bdd.getName(), sInstance.getId(), primaryKey, bdd.getClassName()) .done(); refBusinessDataService.addRefBusinessDataInstance(instance); } } }
@Override public SBusinessDataDefinition getBusinessDataDefinition(final String name) { if (name == null) { return null; } boolean found = false; SBusinessDataDefinition businessData = null; final Iterator<SBusinessDataDefinition> iterator = sBusinessDataDefinitions.iterator(); while (iterator.hasNext() && !found) { final SBusinessDataDefinition currentBusinessData = iterator.next(); if (currentBusinessData.getName().equals(name)) { found = true; businessData = currentBusinessData; } } return businessData; }
@Override public List<Problem> checkResolution(final SProcessDefinition processDefinition) { final List<SBusinessDataDefinition> businessDataDefinitions = processDefinition.getProcessContainer().getBusinessDataDefinitions(); if (businessDataDefinitions.isEmpty()) { return Collections.emptyList(); } final List<Problem> problems = new ArrayList<>(); final Set<String> entityClassNames = businessDataRepository.getEntityClassNames(); for (final SBusinessDataDefinition sBusinessDataDefinition : businessDataDefinitions) { final String className = sBusinessDataDefinition.getClassName(); if (!entityClassNames.contains(className)) { final Problem problem = new ProblemImpl(Level.ERROR, sBusinessDataDefinition.getName(), "business data", "The business data '" + sBusinessDataDefinition.getName() + "' with the class name '" + className + "', is not managed by the current version of the BDM"); problems.add(problem); } } return problems; }
@Override public SBusinessDataDefinition getBusinessDataDefinition(final String name) { if (name == null) { return null; } boolean found = false; SBusinessDataDefinition businessData = null; final Iterator<SBusinessDataDefinition> iterator = businessDataDefinitions.iterator(); while (iterator.hasNext() && !found) { final SBusinessDataDefinition currentBusinessData = iterator.next(); if (currentBusinessData.getName().equals(name)) { found = true; businessData = currentBusinessData; } } return businessData; }
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); } } }
@Override public SBusinessDataDefinition getBusinessDataDefinition(final String name) { if (name == null) { return null; } boolean found = false; SBusinessDataDefinition businessData = null; final Iterator<SBusinessDataDefinition> iterator = businessDataDefinitions.iterator(); while (iterator.hasNext() && !found) { final SBusinessDataDefinition currentBusinessData = iterator.next(); if (currentBusinessData.getName().equals(name)) { found = true; businessData = currentBusinessData; } } return businessData; }
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); } } }
public int getNumberOfInstancesToCreateFromInputRef(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance, final SMultiInstanceLoopCharacteristics miLoop, final int numberOfInstanceMax) throws SDataInstanceException, SActivityStateExecutionException { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SBusinessDataDefinition businessData = processContainer.getBusinessDataDefinition(miLoop.getLoopDataInputRef()); if (businessData == null) { return getNumberOfInstanceToCreateFromSimpleData(processDefinition, flowNodeInstance, miLoop, numberOfInstanceMax); } try { return refBusinessDataService.getNumberOfDataOfMultiRefBusinessData(businessData.getName(), flowNodeInstance.getParentProcessInstanceId()); } catch (final SBonitaReadException sbre) { throw new SActivityStateExecutionException(sbre); } }
public int getNumberOfInstancesToCreateFromInputRef(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance, final SMultiInstanceLoopCharacteristics miLoop, final int numberOfInstanceMax) throws SDataInstanceException, SActivityStateExecutionException { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SBusinessDataDefinition businessData = processContainer.getBusinessDataDefinition(miLoop.getLoopDataInputRef()); if (businessData == null) { return getNumberOfInstanceToCreateFromSimpleData(processDefinition, flowNodeInstance, miLoop, numberOfInstanceMax); } try { return refBusinessDataService.getNumberOfDataOfMultiRefBusinessData(businessData.getName(), flowNodeInstance.getParentProcessInstanceId()); } catch (final SBonitaReadException sbre) { throw new SActivityStateExecutionException(sbre); } }