@Override public List<Problem> checkResolution(final SProcessDefinition processDefinition) { final long processDefinitionId = processDefinition.getId(); return checkResolution(actorMappingService, processDefinitionId); }
private void setProcessClassloader(SProcessDefinition sProcessDefinition) throws SClassLoaderException { final ClassLoader localClassLoader = classLoaderService.getLocalClassLoader(ScopeType.PROCESS.name(), sProcessDefinition.getId()); Thread.currentThread().setContextClassLoader(localClassLoader); // initialize the process classloader by getting it one time try { localClassLoader.loadClass(this.getClass().getName()); } catch (final ClassNotFoundException e) { // ignore, just to load } }
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); }
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 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); } }
@Override public void delete(long processDefinitionId) throws SProcessDefinitionNotFoundException, SObjectModificationException { try { final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); businessArchiveArtifactsManager.deleteDependencies(processDefinition); processDefinitionService.delete(processDefinition.getId()); classLoaderService.removeLocalClassLoader(ScopeType.PROCESS.name(), processDefinition.getId()); } catch (SBonitaReadException | SProcessDeletionException | SDeletingEnabledProcessException | SRecorderException | SClassLoaderException e) { throw new SObjectModificationException("Unable to delete the process definition <" + processDefinitionId + ">", e); } } }
@Override public void handleEventSubProcess(final SProcessDefinition processDefinition, final SEventDefinition eventDefinition, final SEventTriggerDefinition sEventTriggerDefinition, final long subProcessId, final SProcessInstance parentProcessInstance) throws SBonitaException { final String jobName = JobNameBuilder.getTimerEventJobName(processDefinition.getId(), eventDefinition, parentProcessInstance.getId(), subProcessId); final SJobDescriptor jobDescriptor = getJobDescriptor(jobName); final List<SJobParameter> jobParameters = getJobParameters(processDefinition, eventDefinition, null, subProcessId, parentProcessInstance); STimerEventTriggerDefinition timerEventTriggerDefinition = (STimerEventTriggerDefinition) sEventTriggerDefinition; final Object timerCondition = evaluateTimerCondition(timerEventTriggerDefinition, processDefinition.getId(), parentProcessInstance.getId()); scheduleJob(timerEventTriggerDefinition, jobDescriptor, jobParameters, timerCondition); }
@Override public void execute() throws SBonitaException { processDefinitionService.disableProcessDeploymentInfo(processDefinitionId); final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); handleAutoLoginConfiguration(processDefinition); disableStartEvents(processDefinition); if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.INFO)) { logger.log(this.getClass(), TechnicalLogSeverity.INFO, "The user <" + username + "> has disabled process <" + processDefinition.getName() + "> in version <" + processDefinition.getVersion() + "> with id <" + processDefinition.getId() + ">"); } }
@Override public void execute() throws SBonitaException { final SProcessDefinition sProcessDefinition = processDefinitionService.getProcessDefinition(processId); handleAutoLoginConfiguration(sProcessDefinition); handleStartEvents(sProcessDefinition); processDefinitionService.enableProcessDeploymentInfo(processId); if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.INFO)) { logger.log(this.getClass(), TechnicalLogSeverity.INFO, "The user <" + userName + "> has enabled process <" + sProcessDefinition.getName() + "> in version <" + sProcessDefinition.getVersion() + "> with id <" + sProcessDefinition.getId() + ">"); } }
SExpressionContext createExpressionContext(long processInstanceId, SProcessDefinition processDefinition, String type, Long time) { final SExpressionContext expressionContext = new SExpressionContext(); expressionContext.setContainerId(processInstanceId); expressionContext.setContainerType(type); expressionContext.setProcessDefinitionId(processDefinition.getId()); if (time != null) { expressionContext.setTime(time); } return expressionContext; }
SExpressionContext createExpressionContext(long processInstanceId, SProcessDefinition processDefinition, String type, Long time) { final SExpressionContext expressionContext = new SExpressionContext(); expressionContext.setContainerId(processInstanceId); expressionContext.setContainerType(type); expressionContext.setProcessDefinitionId(processDefinition.getId()); if (time != null) { expressionContext.setTime(time); } return expressionContext; }
/** * @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()); }
/** * @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()); }
private void createBoundaryEvent(final SProcessDefinition processDefinition, final SActivityInstance activityInstance, final long rootProcessInstanceId, final long parentProcessInstanceId, final SFlowElementsContainerType containerType, final SBoundaryEventDefinition boundaryEventDefinition) throws SBonitaException { final SBoundaryEventInstance boundaryEventInstance = (SBoundaryEventInstance) bpmInstancesCreator.createFlowNodeInstance(processDefinition.getId(), rootProcessInstanceId, activityInstance.getParentContainerId(), containerType, boundaryEventDefinition, rootProcessInstanceId, parentProcessInstanceId, false, -1, SStateCategory.NORMAL, activityInstance.getId()); // no need to handle failed state, creation is in the same tx containerRegistry.executeFlowNodeInSameThread( boundaryEventInstance.getId(), containerType.name()); }
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; }
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; }
protected SProcessInstance instantiateProcess(final SProcessDefinition callerProcessDefinition, final SCallActivityDefinition callActivityDefinition, final SFlowNodeInstance callActivityInstance, final long targetProcessDefinitionId) throws SProcessInstanceCreationException, SContractViolationException, SExpressionException { final long callerProcessDefinitionId = callerProcessDefinition.getId(); final long callerId = callActivityInstance.getId(); final List<SOperation> operationList = callActivityDefinition.getDataInputOperations(); final SExpressionContext context = new SExpressionContext(callerId, DataInstanceContainer.ACTIVITY_INSTANCE.name(), callerProcessDefinitionId); final Map<String, Serializable> processInputs = getEvaluatedInputExpressions(callActivityDefinition.getProcessStartContractInputs(), context); return processExecutor .start(targetProcessDefinitionId, -1, 0, 0, context, operationList, callerId, -1, processInputs); }
private boolean executePostThrowEventHandlers(final SProcessDefinition sProcessDefinition, final SProcessInstance sProcessInstance, final SFlowNodeInstance child) throws SBonitaException { boolean hasActionsToExecute = false; if (sProcessInstance.hasBeenInterruptedByEvent()) { final SFlowNodeInstance endEventInstance = activityInstanceService.getFlowNodeInstance(sProcessInstance.getInterruptingEventId()); final SEndEventDefinition endEventDefinition = (SEndEventDefinition) sProcessDefinition.getProcessContainer().getFlowNode( endEventInstance.getFlowNodeDefinitionId()); hasActionsToExecute = eventsHandler.handlePostThrowEvent(sProcessDefinition, endEventDefinition, (SThrowEventInstance) endEventInstance, child); flowNodeExecutor.archiveFlowNodeInstance(endEventInstance, true, sProcessDefinition.getId()); } return hasActionsToExecute; }
@Override public void handleEventSubProcess(final SProcessDefinition processDefinition, final SEventDefinition eventDefinition, final SEventTriggerDefinition sEventTriggerDefinition, final long subProcessId, final SProcessInstance parentProcessInstance) throws SBonitaException { final SWaitingErrorEventBuilderFactory builderFact = BuilderFactory.get(SWaitingErrorEventBuilderFactory.class); final SErrorEventTriggerDefinition trigger = (SErrorEventTriggerDefinition) sEventTriggerDefinition; final SWaitingErrorEventBuilder builder = builderFact.createNewWaitingErrorEventSubProcInstance(processDefinition.getId(), parentProcessInstance.getId(), parentProcessInstance.getRootProcessInstanceId(), trigger.getErrorCode(), processDefinition.getName(), eventDefinition.getId(), eventDefinition.getName(), subProcessId); final SWaitingErrorEvent event = builder.done(); getEventInstanceService().createWaitingEvent(event); }
@Override public void handleEventSubProcess(final SProcessDefinition processDefinition, final SEventDefinition eventDefinition, final SEventTriggerDefinition sEventTriggerDefinition, final long subProcessId, final SProcessInstance parentProcessInstance) throws SBonitaException { final SWaitingErrorEventBuilderFactory builderFact = BuilderFactory.get(SWaitingErrorEventBuilderFactory.class); final SErrorEventTriggerDefinition trigger = (SErrorEventTriggerDefinition) sEventTriggerDefinition; final SWaitingErrorEventBuilder builder = builderFact.createNewWaitingErrorEventSubProcInstance(processDefinition.getId(), parentProcessInstance.getId(), parentProcessInstance.getRootProcessInstanceId(), trigger.getErrorCode(), processDefinition.getName(), eventDefinition.getId(), eventDefinition.getName(), subProcessId); final SWaitingErrorEvent event = builder.done(); getEventInstanceService().createWaitingEvent(event); }