Package org.bonitasoft.engine.execution
Class ProcessExecutorImpl
- java.lang.Object
-
- org.bonitasoft.engine.execution.ProcessExecutorImpl
-
- All Implemented Interfaces:
ContainerExecutor,ProcessExecutor
public class ProcessExecutorImpl extends java.lang.Object implements ProcessExecutor
- Author:
- Baptiste Mesta, Matthieu Chaffotte, Yanyan Liu, Elias Ricken de Medeiros, Hongwen Zang, Celine Souchet
-
-
Field Summary
Fields Modifier and Type Field Description protected ActivityInstanceServiceactivityInstanceServiceprotected BPMInstancesCreatorbpmInstancesCreatorprotected ClassLoaderServiceclassLoaderServiceprotected ConnectorServiceconnectorServiceprotected EventsHandlereventsHandlerprotected ExpressionResolverServiceexpressionResolverServiceprotected ExpressionServiceexpressionServiceprotected ProcessInstanceServiceprocessInstanceService
-
Constructor Summary
Constructors Constructor Description ProcessExecutorImpl(ActivityInstanceService activityInstanceService, ProcessInstanceService processInstanceService, TechnicalLoggerService logger, FlowNodeExecutor flowNodeExecutor, WorkService workService, ProcessDefinitionService processDefinitionService, GatewayInstanceService gatewayInstanceService, ProcessResourcesService processResourcesService, ConnectorService connectorService, ConnectorInstanceService connectorInstanceService, ClassLoaderService classLoaderService, OperationService operationService, ExpressionResolverService expressionResolverService, ExpressionService expressionService, EventService eventService, java.util.Map<java.lang.String,SProcessInstanceHandler<SEvent>> handlers, DocumentService documentService, ContainerRegistry containerRegistry, BPMInstancesCreator bpmInstancesCreator, EventsHandler eventsHandler, FlowNodeStateManager flowNodeStateManager, BusinessDataRepository businessDataRepository, RefBusinessDataService refBusinessDataService, TransitionEvaluator transitionEvaluator, ContractDataService contractDataService, BPMWorkFactory workFactory, BPMArchiverService bpmArchiverService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidchildFinished(long processDefinitionId, long parentId, SFlowNodeInstance childFlowNode)Method called to notify this container executor that a child reached the given stateprotected SProcessInstancecreateProcessInstance(SProcessDefinition processDefinition, long starterId, long starterSubstituteId, long callerId)protected voidexecuteConnectors(SProcessDefinition processDefinition, SProcessInstance sProcessInstance, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectorsList)FlowNodeStateexecuteFlowNode(SFlowNodeInstance flowNodeInstance, java.lang.Long executerId, java.lang.Long executerSubstituteId)Execute a flow node in the context of this container executorprotected voidexecuteOperations(java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, SExpressionContext expressionContext, SExpressionContext expressionContextToEvaluateOperations, SProcessInstance sProcessInstance)java.lang.StringgetHandledType()protected org.bonitasoft.engine.bpm.document.DocumentValuegetInitialDocumentValue(SProcessDefinition sDefinition, java.util.Map<SExpression,org.bonitasoft.engine.bpm.document.DocumentValue> evaluatedDocumentValues, SDocumentDefinition document)protected voidhandleEventSubProcess(SProcessDefinition sProcessDefinition, SProcessInstance sProcessInstance, long subProcessDefinitionId)voidhandleProcessCompletion(SProcessDefinition sProcessDefinition, SProcessInstance sProcessInstance, boolean hasActionsToExecute)protected booleaninitialize(long userId, SProcessDefinition sProcessDefinition, SProcessInstance sProcessInstance, SExpressionContext expressionContextToEvaluateOperations, java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, SFlowElementContainerDefinition processContainer, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectors, FlowNodeSelector selectorForConnectorOnEnter, java.util.Map<java.lang.String,java.io.Serializable> processInputs)protected voidinitializeBusinessData(SFlowElementContainerDefinition processContainer, SProcessInstance sInstance, SExpressionContext expressionContext)protected voidinitializeStringIndexes(SProcessInstance sInstance, SProcessDefinition sProcessDefinition, SFlowElementContainerDefinition processContainer)booleanregisterConnectorsToExecute(SProcessDefinition processDefinition, SProcessInstance sProcessInstance, org.bonitasoft.engine.bpm.connector.ConnectorEvent activationEvent, FlowNodeSelector selectorForConnectorOnEnter)protected voidremoveDuplicatedInclusiveGatewayTransitions(SProcessDefinition processDefinition, java.util.List<STransitionDefinition> chosenGatewaysTransitions)SProcessInstancestart(long processDefinitionId, long targetSFlowNodeDefinitionId, long starterId, long starterSubstituteId, SExpressionContext expressionContextToEvaluateOperations, java.util.List<SOperation> operations, long callerId, long subProcessDefinitionId, java.util.Map<java.lang.String,java.io.Serializable> processInputs)SProcessInstancestart(long starterId, long starterSubstituteId, java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectorsWithInput, FlowNodeSelector selector, java.util.Map<java.lang.String,java.io.Serializable> processInputs)protected SProcessInstancestart(long starterId, long starterSubstituteId, SExpressionContext expressionContextToEvaluateOperations, java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectors, long callerId, FlowNodeSelector selector, java.util.Map<java.lang.String,java.io.Serializable> processInputs)SProcessInstancestartElements(SProcessInstance sProcessInstance, FlowNodeSelector selector)protected voidvalidateContractInputs(java.util.Map<java.lang.String,java.io.Serializable> processInputs, SProcessDefinition sProcessDefinition)
-
-
-
Field Detail
-
activityInstanceService
protected final ActivityInstanceService activityInstanceService
-
processInstanceService
protected final ProcessInstanceService processInstanceService
-
classLoaderService
protected final ClassLoaderService classLoaderService
-
expressionResolverService
protected final ExpressionResolverService expressionResolverService
-
expressionService
protected final ExpressionService expressionService
-
connectorService
protected final ConnectorService connectorService
-
bpmInstancesCreator
protected final BPMInstancesCreator bpmInstancesCreator
-
eventsHandler
protected final EventsHandler eventsHandler
-
-
Constructor Detail
-
ProcessExecutorImpl
public ProcessExecutorImpl(ActivityInstanceService activityInstanceService, ProcessInstanceService processInstanceService, TechnicalLoggerService logger, FlowNodeExecutor flowNodeExecutor, WorkService workService, ProcessDefinitionService processDefinitionService, GatewayInstanceService gatewayInstanceService, ProcessResourcesService processResourcesService, ConnectorService connectorService, ConnectorInstanceService connectorInstanceService, ClassLoaderService classLoaderService, OperationService operationService, ExpressionResolverService expressionResolverService, ExpressionService expressionService, EventService eventService, java.util.Map<java.lang.String,SProcessInstanceHandler<SEvent>> handlers, DocumentService documentService, ContainerRegistry containerRegistry, BPMInstancesCreator bpmInstancesCreator, EventsHandler eventsHandler, FlowNodeStateManager flowNodeStateManager, BusinessDataRepository businessDataRepository, RefBusinessDataService refBusinessDataService, TransitionEvaluator transitionEvaluator, ContractDataService contractDataService, BPMWorkFactory workFactory, BPMArchiverService bpmArchiverService)
-
-
Method Detail
-
executeFlowNode
public FlowNodeState executeFlowNode(SFlowNodeInstance flowNodeInstance, java.lang.Long executerId, java.lang.Long executerSubstituteId) throws SFlowNodeExecutionException
Description copied from interface:ContainerExecutorExecute a flow node in the context of this container executor- Specified by:
executeFlowNodein interfaceContainerExecutor- Parameters:
flowNodeInstance- The flow node instanceexecuterId- The identifier of the user which execute the flow nodeexecuterSubstituteId- The identifier of the delegated user which execute the flow node- Returns:
- The new state of the flow node after execution
- Throws:
SFlowNodeExecutionException- Throw if there is an error when execute the flow node
-
registerConnectorsToExecute
public boolean registerConnectorsToExecute(SProcessDefinition processDefinition, SProcessInstance sProcessInstance, org.bonitasoft.engine.bpm.connector.ConnectorEvent activationEvent, FlowNodeSelector selectorForConnectorOnEnter) throws SBonitaException
- Specified by:
registerConnectorsToExecutein interfaceProcessExecutor- Throws:
SBonitaException
-
createProcessInstance
protected SProcessInstance createProcessInstance(SProcessDefinition processDefinition, long starterId, long starterSubstituteId, long callerId) throws SProcessInstanceCreationException
-
executeOperations
protected void executeOperations(java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, SExpressionContext expressionContext, SExpressionContext expressionContextToEvaluateOperations, SProcessInstance sProcessInstance) throws SBonitaException
- Throws:
SBonitaException
-
initialize
protected boolean initialize(long userId, SProcessDefinition sProcessDefinition, SProcessInstance sProcessInstance, SExpressionContext expressionContextToEvaluateOperations, java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, SFlowElementContainerDefinition processContainer, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectors, FlowNodeSelector selectorForConnectorOnEnter, java.util.Map<java.lang.String,java.io.Serializable> processInputs) throws SBonitaException- Throws:
SBonitaException
-
initializeBusinessData
protected void initializeBusinessData(SFlowElementContainerDefinition processContainer, SProcessInstance sInstance, SExpressionContext expressionContext) throws SBonitaException
- Throws:
SBonitaException
-
getInitialDocumentValue
protected org.bonitasoft.engine.bpm.document.DocumentValue getInitialDocumentValue(SProcessDefinition sDefinition, java.util.Map<SExpression,org.bonitasoft.engine.bpm.document.DocumentValue> evaluatedDocumentValues, SDocumentDefinition document) throws SBonitaReadException
- Throws:
SBonitaReadException
-
childFinished
public void childFinished(long processDefinitionId, long parentId, SFlowNodeInstance childFlowNode) throws SBonitaExceptionDescription copied from interface:ContainerExecutorMethod called to notify this container executor that a child reached the given state- Specified by:
childFinishedin interfaceContainerExecutor- Parameters:
processDefinitionId- The identifier of the process definitionparentId- The identifier of the parent of the flow node- Throws:
SBonitaException
-
handleProcessCompletion
public void handleProcessCompletion(SProcessDefinition sProcessDefinition, SProcessInstance sProcessInstance, boolean hasActionsToExecute) throws SBonitaException
- Specified by:
handleProcessCompletionin interfaceProcessExecutor- Throws:
SBonitaException
-
removeDuplicatedInclusiveGatewayTransitions
protected void removeDuplicatedInclusiveGatewayTransitions(SProcessDefinition processDefinition, java.util.List<STransitionDefinition> chosenGatewaysTransitions)
-
start
public SProcessInstance start(long starterId, long starterSubstituteId, java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectorsWithInput, FlowNodeSelector selector, java.util.Map<java.lang.String,java.io.Serializable> processInputs) throws SProcessInstanceCreationException, SContractViolationException
- Specified by:
startin interfaceProcessExecutor- Throws:
SProcessInstanceCreationExceptionSContractViolationException
-
start
public SProcessInstance start(long processDefinitionId, long targetSFlowNodeDefinitionId, long starterId, long starterSubstituteId, SExpressionContext expressionContextToEvaluateOperations, java.util.List<SOperation> operations, long callerId, long subProcessDefinitionId, java.util.Map<java.lang.String,java.io.Serializable> processInputs) throws SProcessInstanceCreationException, SContractViolationException
- Specified by:
startin interfaceProcessExecutor- Throws:
SProcessInstanceCreationExceptionSContractViolationException
-
initializeStringIndexes
protected void initializeStringIndexes(SProcessInstance sInstance, SProcessDefinition sProcessDefinition, SFlowElementContainerDefinition processContainer) throws SExpressionTypeUnknownException, SExpressionEvaluationException, SExpressionDependencyMissingException, SInvalidExpressionException, SProcessInstanceModificationException
-
start
protected SProcessInstance start(long starterId, long starterSubstituteId, SExpressionContext expressionContextToEvaluateOperations, java.util.List<SOperation> operations, java.util.Map<java.lang.String,java.lang.Object> context, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectors, long callerId, FlowNodeSelector selector, java.util.Map<java.lang.String,java.io.Serializable> processInputs) throws SProcessInstanceCreationException, SContractViolationException
-
validateContractInputs
protected void validateContractInputs(java.util.Map<java.lang.String,java.io.Serializable> processInputs, SProcessDefinition sProcessDefinition) throws SContractViolationException- Throws:
SContractViolationException
-
executeConnectors
protected void executeConnectors(SProcessDefinition processDefinition, SProcessInstance sProcessInstance, java.util.List<org.bonitasoft.engine.bpm.connector.ConnectorDefinitionWithInputValues> connectorsList) throws SConnectorException
- Throws:
SConnectorException
-
handleEventSubProcess
protected void handleEventSubProcess(SProcessDefinition sProcessDefinition, SProcessInstance sProcessInstance, long subProcessDefinitionId) throws SBonitaException
- Throws:
SBonitaException
-
startElements
public SProcessInstance startElements(SProcessInstance sProcessInstance, FlowNodeSelector selector) throws SProcessInstanceCreationException, SFlowNodeExecutionException
- Specified by:
startElementsin interfaceProcessExecutor- Throws:
SProcessInstanceCreationExceptionSFlowNodeExecutionException
-
getHandledType
public java.lang.String getHandledType()
- Specified by:
getHandledTypein interfaceContainerExecutor- Returns:
- The handled type
-
-