/** * @param sDefinition * The process definition to add on context * @since 6.3 */ public void setProcessDefinitionOnContext(final SProcessDefinition sDefinition) { setProcessDefinitionIdOnContext(sDefinition.getId()); setProcessDefinitionNameOnContext(sDefinition.getName()); setProcessDefinitionVersionOnContext(sDefinition.getVersion()); }
public SFlowElementContainerDefinition getContainer() { if(subProcessDefinitionId == -1) { return definition.getProcessContainer(); } final SSubProcessDefinition subProcDef = (SSubProcessDefinition) definition.getProcessContainer().getFlowNode(subProcessDefinitionId); return subProcDef.getSubProcessContainer(); }
public static ProcessDefinition toProcessDefinition(final SProcessDefinition sDefinition) { final ProcessDefinitionImpl processDefinitionImpl = new ProcessDefinitionImpl(sDefinition.getName(), sDefinition.getVersion()); processDefinitionImpl.setId(sDefinition.getId()); processDefinitionImpl.setDescription(sDefinition.getDescription()); return processDefinitionImpl; }
@Override public String toString() { return "context [containerId=" + containerId + ", containerType=" + containerType + ", processDefinitionId=" + processDefinitionId + (processDefinition != null ? ", processDefinition=" + processDefinition.getName() + " -- " + processDefinition.getVersion() : "") + "]"; }
@Override public SProcessInstanceBuilder createNewInstance(final SProcessDefinition definition) { return createNewInstance(definition.getName(), definition.getId(), definition.getDescription()); }
private List<String> checkProcessContract(Map<String, Serializable> processContractInputs, SProcessDefinition processDefinition) { return validateContract(processContractInputs, processDefinition.getContract(), processDefinition.getName()); }
@Override public void delete(SProcessDefinition processDefinition) throws SObjectModificationException { try { parameterService.deleteAll(processDefinition.getId()); } catch (SParameterProcessNotFoundException | SBonitaReadException e) { throw new SObjectModificationException("Unable to delete parameters of the process definition <" + processDefinition.getName() + ">", e); } }
private void reevaluateTransientData(final String name, final long containerId, final String containerType) throws SProcessDefinitionNotFoundException, SBonitaReadException, SFlowNodeNotFoundException, SFlowNodeReadException, SDataInstanceException, SExpressionException { SFlowNodeInstance flowNodeInstance = flowNodeInstanceService.getFlowNodeInstance(containerId); final long flowNodeDefinitionId = flowNodeInstance.getFlowNodeDefinitionId(); final long processDefinitionId = flowNodeInstance.getProcessDefinitionId(); final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SActivityDefinition flowNode = (SActivityDefinition) processDefinition.getProcessContainer() .getFlowNode(flowNodeDefinitionId); SDataDefinition dataDefinition = getTransientData(containerId).stream() .filter(data -> Objects.equals(name, data.getName())) .findFirst() .orElseThrow(() -> new SDataInstanceNotFoundException( "Transient data was not found and we were unable to reevaluate it because it was not found in the definition, name=<" + name + "> process definition=<" + processDefinition.getName() + "," + processDefinition.getVersion() + "> flow node=<" + flowNode.getName() + ">")); createDataInstance(dataDefinition, containerId, DataInstanceContainer.ACTIVITY_INSTANCE, new SExpressionContext(containerId, containerType, processDefinitionId)); }
SProcessDefinitionDeployInfoImpl createProcessDefinitionDeployInfo(DesignProcessDefinition designProcessDefinition, SProcessDefinition definition, SProcessDefinitionDesignContentImpl sProcessDefinitionDesignContent, long processId) { String displayName = designProcessDefinition.getDisplayName(); if (displayName == null || displayName.isEmpty()) { displayName = definition.getName(); } String displayDescription = designProcessDefinition.getDisplayDescription(); if (displayDescription == null || displayDescription.isEmpty()) { displayDescription = definition.getDescription(); } final SProcessDefinitionDeployInfoImpl sProcessDefinitionDeployInfo = new SProcessDefinitionDeployInfoImpl(); sProcessDefinitionDeployInfo.setName(definition.getName()); sProcessDefinitionDeployInfo.setVersion(definition.getVersion()); sProcessDefinitionDeployInfo.setProcessId(processId); sProcessDefinitionDeployInfo.setDescription(definition.getDescription()); sProcessDefinitionDeployInfo.setDeployedBy(getUserId()); sProcessDefinitionDeployInfo.setDeploymentDate(System.currentTimeMillis()); sProcessDefinitionDeployInfo.setActivationState(ActivationState.DISABLED.name()); sProcessDefinitionDeployInfo.setConfigurationState(ConfigurationState.UNRESOLVED.name()); sProcessDefinitionDeployInfo.setDisplayName(displayName); sProcessDefinitionDeployInfo.setDisplayDescription(displayDescription); sProcessDefinitionDeployInfo.setDesignContent(sProcessDefinitionDesignContent); return sProcessDefinitionDeployInfo; }
public boolean createDataInstances(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { 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 return createDataInstances(activityDefinition, flowNodeInstance, new SExpressionContext(flowNodeInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE.name(), processDefinition.getId())); } return false; }
BuilderFactory.getInstance(); final SActorBuilderFactory sActorBuilderFactory = BuilderFactory.get(SActorBuilderFactory.class); final Set<SActorDefinition> actors = processDefinition.getActors(); final Set<SActor> sActors = new HashSet<>(actors.size() + 1); final SActorDefinition actorInitiator = processDefinition.getActorInitiator(); String initiatorName = null; if (actorInitiator != null) { initiatorName = actorInitiator.getName(); final SActorBuilder sActorBuilder = sActorBuilderFactory.create(initiatorName, processDefinition.getId(), true); sActorBuilder.addDescription(actorInitiator.getDescription()); sActors.add(sActorBuilder.getActor()); final SActorBuilder sActorBuilder = sActorBuilderFactory.create(actor.getName(), processDefinition.getId(), false); sActorBuilder.addDescription(actor.getDescription()); sActors.add(sActorBuilder.getActor()); if (actorMapping != null) { final ImportActorMapping importActorMapping = new ImportActorMapping(actorMappingService,identityService); importActorMapping.execute(actorMapping,processDefinition.getId()); technicalLoggerService.log(this.getClass(), TechnicalLogSeverity.WARNING, "Error in importing the actor-mapping", e); return checkResolution(actorMappingService, processDefinition.getId()).isEmpty();
protected void validateContractInputs(final Map<String, Serializable> processInputs, final SProcessDefinition sProcessDefinition) throws SContractViolationException { final SContractDefinition contractDefinition = sProcessDefinition.getContract(); if (contractDefinition != null) { final ContractValidator validator = new ContractValidatorFactory().createContractValidator(logger, expressionService); validator.validate(sProcessDefinition.getId(), contractDefinition, processInputs); } }
public void handleThrowEvent(final SProcessDefinition processDefinition, final SSendTaskInstance sendTaskInstance, final SThrowMessageEventTriggerDefinition messageTrigger) throws SMessageInstanceCreationException, SDataInstanceException, SExpressionException, STransactionNotFoundException { final SExpressionContext expressionContext = new SExpressionContext(sendTaskInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE.name(), processDefinition.getId()); handleThrowMessage(messageTrigger, sendTaskInstance.getName(), processDefinition.getId(), expressionContext); }
@Override public void execute() throws SBonitaException { final SProcessDefinition definition = processDefinitionService.getProcessDefinition(processDefinitionId); SActorDefinition actorInitiator = definition.getActorInitiator(); Set<SActorDefinition> actors = definition.getActors(); numberOfActors = actors.size(); if ((actorInitiator != null) && !actors.contains(actorInitiator)) { numberOfActors++; } }
/** * @return true if the given Set contains the actor that is allowed to start the given process. */ @Override public Serializable execute(final Map<String, Serializable> parameters, final TenantServiceAccessor serviceAccessor) throws SCommandParameterizationException, SCommandExecutionException { this.serviceAccessor = serviceAccessor; final ActorMappingService actorMappingService = this.serviceAccessor.getActorMappingService(); final ProcessDefinitionService processDefinitionService = this.serviceAccessor.getProcessDefinitionService(); final Set<Long> actorIds = getMandatoryParameter(parameters, ACTOR_IDS_KEY, "Mandatory parameter " + ACTOR_IDS_KEY + " is missing or not convertible to Set<Long>."); final long processDefinitionId = getLongMandadoryParameter(parameters, PROCESS_DEFINITION_ID_KEY); try { final SProcessDefinition definition = processDefinitionService.getProcessDefinition(processDefinitionId); final SActor sActor = actorMappingService.getActor(definition.getActorInitiator().getName(), processDefinitionId); if (sActor != null) { for (final long actorId : actorIds) { if (sActor.getId() == actorId) { return true; } } } } catch (final SBonitaException e) { throw new SCommandExecutionException("Can't get actors For Initiator." + e); } return false; } }
@Override public Map<String, Serializable> getProcessInstanceExecutionContext(long processInstanceId) throws ProcessInstanceNotFoundException, ExpressionEvaluationException { TenantServiceAccessor tenantAccessor = getTenantAccessor(); try { SProcessInstance processInstance = getProcessInstanceService(tenantAccessor).getProcessInstance(processInstanceId); if (processInstance == null) { throw new ProcessInstanceNotFoundException("Process Instance not found " + processInstanceId); } SProcessDefinition processDefinition = tenantAccessor.getProcessDefinitionService().getProcessDefinition(processInstance.getProcessDefinitionId()); final SExpressionContext expressionContext = createExpressionContext(processInstanceId, processDefinition, CONTAINER_TYPE_PROCESS_INSTANCE, null); return evaluateContext(tenantAccessor.getExpressionResolverService(), expressionContext, processDefinition.getContext()); } catch (SProcessInstanceNotFoundException | SBonitaReadException | SProcessInstanceReadException | SProcessDefinitionNotFoundException e) { throw new ProcessInstanceNotFoundException(e); } catch (SInvalidExpressionException | SExpressionEvaluationException | SExpressionDependencyMissingException | SExpressionTypeUnknownException e) { throw new ExpressionEvaluationException(e); } }
@Override public ContractDefinition getProcessContract(final long processDefinitionId) throws ProcessDefinitionNotFoundException { try { final SProcessDefinition processDefinition = getTenantAccessor().getProcessDefinitionService().getProcessDefinition(processDefinitionId); return ModelConvertor.toContract(processDefinition.getContract()); } catch (final SProcessDefinitionNotFoundException | SBonitaReadException e) { throw new ProcessDefinitionNotFoundException(e.getMessage()); } }
private String buildProcessContext(SProcessDefinition processDefinition) { return "<id: " + processDefinitionId + ", name: " + processDefinition.getName() + ", version: " + processDefinition.getVersion() + ">."; }
@Override public void delete(SProcessDefinition processDefinition) throws SObjectModificationException { try { actorMappingService.deleteActors(processDefinition.getId()); } catch (SActorDeletionException e) { throw new SObjectModificationException("Unable to delete actors of the process definition <" + processDefinition.getName() + ">", e); } }
private void reevaluateTransientData(final String name, final long containerId, final String containerType) throws SProcessDefinitionNotFoundException, SBonitaReadException, SFlowNodeNotFoundException, SFlowNodeReadException, SDataInstanceException, SExpressionException { SFlowNodeInstance flowNodeInstance = flowNodeInstanceService.getFlowNodeInstance(containerId); final long flowNodeDefinitionId = flowNodeInstance.getFlowNodeDefinitionId(); final long processDefinitionId = flowNodeInstance.getProcessDefinitionId(); final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SActivityDefinition flowNode = (SActivityDefinition) processDefinition.getProcessContainer() .getFlowNode(flowNodeDefinitionId); SDataDefinition dataDefinition = getTransientData(containerId).stream() .filter(data -> Objects.equals(name, data.getName())) .findFirst() .orElseThrow(() -> new SDataInstanceNotFoundException( "Transient data was not found and we were unable to reevaluate it because it was not found in the definition, name=<" + name + "> process definition=<" + processDefinition.getName() + "," + processDefinition.getVersion() + "> flow node=<" + flowNode.getName() + ">")); createDataInstance(dataDefinition, containerId, DataInstanceContainer.ACTIVITY_INSTANCE, new SExpressionContext(containerId, containerType, processDefinitionId)); }