private boolean hasLocalOrInheritedData(final SProcessDefinition processDefinition, final SFlowElementContainerDefinition processContainer) { // processContainer is different of processDefinition.getProcessContainer() if it's a sub-process return !processContainer.getDataDefinitions().isEmpty() || !processDefinition.getProcessContainer().getDataDefinitions().isEmpty(); }
private boolean hasLocalOrInheritedData(final SProcessDefinition processDefinition, final SFlowElementContainerDefinition processContainer) { // processContainer is different of processDefinition.getProcessContainer() if it's a sub-process return !processContainer.getDataDefinitions().isEmpty() || !processDefinition.getProcessContainer().getDataDefinitions().isEmpty(); }
public void setProcessDefinition(final SProcessDefinition processDefinition) { this.processDefinition = processDefinition; final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final List<SDataDefinition> dataDefinitions = processContainer.getDataDefinitions(); dataMap = new HashMap<>(dataDefinitions.size()); invertedDataMap = new HashMap<>(dataDefinitions.size()); for (final SDataDefinition dataDef : dataDefinitions) { dataMap.put(dataDef.getName(), dataDef.getDefaultValueExpression()); invertedDataMap.put(dataDef.getDefaultValueExpression(), dataDef.getName()); } }
public void setProcessDefinition(final SProcessDefinition processDefinition) { this.processDefinition = processDefinition; final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final List<SDataDefinition> dataDefinitions = processContainer.getDataDefinitions(); dataMap = new HashMap<>(dataDefinitions.size()); invertedDataMap = new HashMap<>(dataDefinitions.size()); for (final SDataDefinition dataDef : dataDefinitions) { dataMap.put(dataDef.getName(), dataDef.getDefaultValueExpression()); invertedDataMap.put(dataDef.getDefaultValueExpression(), dataDef.getName()); } }
public void createDataInstances(final SProcessInstance processInstance, final SFlowElementContainerDefinition processContainer, final SProcessDefinition processDefinition, final SExpressionContext expressionContext, final List<SOperation> operations, final Map<String, Object> context, SExpressionContext expressionContextToEvaluateOperations) throws SDataInstanceNotWellFormedException, SExpressionTypeUnknownException, SExpressionEvaluationException, SExpressionDependencyMissingException, SInvalidExpressionException, SDataInstanceException, SFlowNodeNotFoundException, SFlowNodeReadException { final List<SDataDefinition> sDataDefinitions = processContainer.getDataDefinitions(); final List<SDataInstance> sDataInstances = new ArrayList<>(sDataDefinitions.size()); for (final SDataDefinition sDataDefinition : sDataDefinitions) { sDataInstances .add(createDataInstance(processInstance, expressionContext, operations, context, expressionContextToEvaluateOperations, sDataDefinition)); } if (hasLocalOrInheritedData(processDefinition, processContainer)) { // we create here only normal data, not transient because there is no transient on process createDataForProcess(sDataInstances); } debugLogVariableInitialized(processInstance, processDefinition); }
public void createDataInstances(final SProcessInstance processInstance, final SFlowElementContainerDefinition processContainer, final SProcessDefinition processDefinition, final SExpressionContext expressionContext, final List<SOperation> operations, final Map<String, Object> context, SExpressionContext expressionContextToEvaluateOperations) throws SDataInstanceNotWellFormedException, SExpressionTypeUnknownException, SExpressionEvaluationException, SExpressionDependencyMissingException, SInvalidExpressionException, SDataInstanceException, SFlowNodeNotFoundException, SFlowNodeReadException { final List<SDataDefinition> sDataDefinitions = processContainer.getDataDefinitions(); final List<SDataInstance> sDataInstances = new ArrayList<>(sDataDefinitions.size()); for (final SDataDefinition sDataDefinition : sDataDefinitions) { sDataInstances .add(createDataInstance(processInstance, expressionContext, operations, context, expressionContextToEvaluateOperations, sDataDefinition)); } if (hasLocalOrInheritedData(processDefinition, processContainer)) { // we create here only normal data, not transient because there is no transient on process createDataForProcess(sDataInstances); } debugLogVariableInitialized(processInstance, processDefinition); }
private void deleteDataInstancesIfNecessary(final SProcessInstance processInstance, final SProcessDefinition processDefinition) throws SDataInstanceException { boolean dataPresent = true; if (processDefinition != null) { dataPresent = processDefinition.getProcessContainer().getDataDefinitions().size() > 0; } dataInstanceService.deleteLocalDataInstances(processInstance.getId(), DataInstanceContainer.PROCESS_INSTANCE.toString(), dataPresent); }
private void deleteDataInstancesIfNecessary(final SProcessInstance processInstance, final SProcessDefinition processDefinition) throws SDataInstanceException { boolean dataPresent = true; if (processDefinition != null) { dataPresent = processDefinition.getProcessContainer().getDataDefinitions().size() > 0; } dataInstanceService.deleteLocalDataInstances(processInstance.getId(), DataInstanceContainer.PROCESS_INSTANCE.toString(), dataPresent); }
@Override public List<DataDefinition> getProcessDataDefinitions(final long processDefinitionId, final int startIndex, final int maxResults) throws ProcessDefinitionNotFoundException { List<DataDefinition> subDataDefinitionList = Collections.emptyList(); final TenantServiceAccessor tenantAccessor; tenantAccessor = getTenantAccessor(); final ProcessDefinitionService processDefinitionService = tenantAccessor.getProcessDefinitionService(); try { final SProcessDefinition sProcessDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SFlowElementContainerDefinition processContainer = sProcessDefinition.getProcessContainer(); final List<SDataDefinition> sdataDefinitionList = processContainer.getDataDefinitions(); final List<DataDefinition> dataDefinitionList = ModelConvertor.toDataDefinitions(sdataDefinitionList); if (startIndex >= dataDefinitionList.size()) { return Collections.emptyList(); } final int toIndex = Math.min(dataDefinitionList.size(), startIndex + maxResults); subDataDefinitionList = new ArrayList<>(dataDefinitionList.subList(startIndex, toIndex)); return subDataDefinitionList; } catch (final SProcessDefinitionNotFoundException e) { throw new ProcessDefinitionNotFoundException(e); } catch (final SBonitaException e) { throw new RetrieveException(e); } }
@Override public List<DataDefinition> getProcessDataDefinitions(final long processDefinitionId, final int startIndex, final int maxResults) throws ProcessDefinitionNotFoundException { List<DataDefinition> subDataDefinitionList = Collections.emptyList(); final TenantServiceAccessor tenantAccessor; tenantAccessor = getTenantAccessor(); final ProcessDefinitionService processDefinitionService = tenantAccessor.getProcessDefinitionService(); try { final SProcessDefinition sProcessDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SFlowElementContainerDefinition processContainer = sProcessDefinition.getProcessContainer(); final List<SDataDefinition> sdataDefinitionList = processContainer.getDataDefinitions(); final List<DataDefinition> dataDefinitionList = ModelConvertor.toDataDefinitions(sdataDefinitionList); if (startIndex >= dataDefinitionList.size()) { return Collections.emptyList(); } final int toIndex = Math.min(dataDefinitionList.size(), startIndex + maxResults); subDataDefinitionList = new ArrayList<>(dataDefinitionList.subList(startIndex, toIndex)); return subDataDefinitionList; } catch (final SProcessDefinitionNotFoundException e) { throw new ProcessDefinitionNotFoundException(e); } catch (final SBonitaException e) { throw new RetrieveException(e); } }
@Override public int getNumberOfProcessDataDefinitions(final long processDefinitionId) throws ProcessDefinitionNotFoundException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final ProcessDefinitionService processDefinitionService = tenantAccessor.getProcessDefinitionService(); try { final SProcessDefinition sProcessDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SFlowElementContainerDefinition processContainer = sProcessDefinition.getProcessContainer(); return processContainer.getDataDefinitions().size(); } catch (final SProcessDefinitionNotFoundException e) { throw new ProcessDefinitionNotFoundException(e); } catch (final SBonitaException e) { throw new RetrieveException(e); } }
@Override public int getNumberOfProcessDataDefinitions(final long processDefinitionId) throws ProcessDefinitionNotFoundException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final ProcessDefinitionService processDefinitionService = tenantAccessor.getProcessDefinitionService(); try { final SProcessDefinition sProcessDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SFlowElementContainerDefinition processContainer = sProcessDefinition.getProcessContainer(); return processContainer.getDataDefinitions().size(); } catch (final SProcessDefinitionNotFoundException e) { throw new ProcessDefinitionNotFoundException(e); } catch (final SBonitaException e) { throw new RetrieveException(e); } }