Class ActivitiWorkflowEngine
- java.lang.Object
-
- org.alfresco.repo.workflow.BPMEngine
-
- org.alfresco.repo.workflow.activiti.ActivitiWorkflowEngine
-
- All Implemented Interfaces:
TaskComponent,WorkflowComponent,WorkflowEngine,org.springframework.beans.factory.InitializingBean
public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
- Since:
- 3.4.e
- Author:
- Nick Smith, Frederik Heremans
-
-
Field Summary
Fields Modifier and Type Field Description protected ActivitiUtilactivitiUtilprotected static StringERR_FIND_COMPLETED_TASK_INSTSprotected static StringERR_FIRE_EVENT_NOT_SUPPORTEDstatic QNameQNAME_INITIATOR
-
Constructor Summary
Constructors Constructor Description ActivitiWorkflowEngine()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterPropertiesSet()WorkflowInstancecancelWorkflow(String workflowId)Cancel an "in-flight" Workflow instanceList<WorkflowInstance>cancelWorkflows(List<String> workflowIds)Cancel a batch of "in-flight" Workflow instanceslongcountTasks(WorkflowTaskQuery query)Count the number of active tasks that match the given query.longcountWorkflows(WorkflowInstanceQuery workflowInstanceQuery)Get count of workflow instancesWorkflowInstancedeleteWorkflow(String workflowId)Delete an "in-flight" Workflow instanceWorkflowDeploymentdeployDefinition(InputStream workflowDefinition, String mimetype)Deploy a Workflow DefinitionWorkflowDeploymentdeployDefinition(InputStream workflowDefinition, String mimetype, String name)Deploy a Workflow DefinitionvoiddispatchPackageUpdatedEvent(Object variableValue, String taskId, String executionId, String processInstanceId, String processDefinitionId)WorkflowTaskendTask(String taskId, String transition)End the Task (i.e.WorkflowPathfireEvent(String pathId, String event)Fire custom event against specified pathList<WorkflowInstance>getActiveWorkflows()Gets all "in-flight" active workflow instances.List<WorkflowInstance>getActiveWorkflows(String workflowDefinitionId)Gets all "in-flight" active workflow instances of the specified Workflow DefinitionList<WorkflowDefinition>getAllDefinitions()Gets all deployed Workflow Definitions (with all previous versions)List<WorkflowDefinition>getAllDefinitionsByName(String workflowName)Gets all (including previous) Workflow Definitions for the given unique nameList<WorkflowTask>getAssignedTasks(String authority, WorkflowTaskState state, boolean lazyInitialization)Gets all tasks assigned to the specified authorityList<WorkflowInstance>getCompletedWorkflows()Gets all completed workflow instances.List<WorkflowInstance>getCompletedWorkflows(String workflowDefinitionId)Gets all "in-flight" completed workflow instances of the specified Workflow DefinitionWorkflowDefinitiongetDefinitionById(String workflowDefinitionId)Gets a Workflow Definition by unique IdWorkflowDefinitiongetDefinitionByName(String workflowName)Gets a Workflow Definition by unique namebyte[]getDefinitionImage(String workflowDefinitionId)Gets a graphical view of the Workflow DefinitionList<WorkflowDefinition>getDefinitions()Gets all deployed Workflow DefinitionsMap<QName,Serializable>getPathProperties(String pathId)Gets the properties associated with the specified path (and parent paths)List<WorkflowTask>getPooledTasks(List<String> authorities, boolean lazyInitialization)Gets the pooled tasks available to the specified authorityWorkflowTaskgetStartTask(String workflowInstanceId)Gets all active timers for the specified workflowList<WorkflowTask>getStartTasks(List<String> workflowInstanceIds, boolean sameSession)Gets all start tasks for the specified workflowWorkflowTaskgetTaskById(String taskId)Gets a Task by unique IdList<WorkflowTaskDefinition>getTaskDefinitions(String workflowDefinitionId)Gets the Task Definitions for the given Workflow DefinitionList<WorkflowTask>getTasksForWorkflowPath(String pathId)Gets all Tasks associated with the specified pathList<WorkflowTimer>getTimers(String workflowId)Gets all active timers for the specified workflowWorkflowInstancegetWorkflowById(String workflowId)Gets a specific workflow instancesInputStreamgetWorkflowImage(String workflowInstanceId)Gets a graphical view of the workflow instanceList<WorkflowPath>getWorkflowPaths(String workflowId)Gets all Paths for the specified Workflow instanceList<WorkflowInstance>getWorkflows()Gets all workflow instances (both active and completed).List<WorkflowInstance>getWorkflows(String workflowDefinitionId)Gets all "in-flight" workflow instances (both active and completed) of the specified Workflow DefinitionList<WorkflowInstance>getWorkflows(WorkflowInstanceQuery workflowInstanceQuery)Gets all "in-flight" workflow instances according to the specified workflowInstanceQuery parameterList<WorkflowInstance>getWorkflows(WorkflowInstanceQuery workflowInstanceQuery, int maxItems, int skipCount)Gets maxItems "in-flight" workflow instances according to the specified workflowInstanceQuery parameterbooleanhasWorkflowImage(String workflowInstanceId)Determines if a graphical view of the workflow instance existsbooleanisDefinitionDeployed(InputStream workflowDefinition, String mimetype)Is the specified Workflow Definition already deployed? Note: the notion of "already deployed" may differ between bpm engines.List<WorkflowTask>queryTasks(WorkflowTaskQuery query)List<WorkflowTask>queryTasks(WorkflowTaskQuery query, boolean sameSession)Query for tasks Hint: useWorkflowTaskQuerysetLimit() method to limit the number of processed items if you don't really need to go through all of themvoidsetActivitiUtil(ActivitiUtil activitiUtil)voidsetAuthorityManager(WorkflowAuthorityManager authorityManager)Sets the Authority DAO /**voidsetDictionaryService(DictionaryService dictionaryService)Sets the Dictionary ServicevoidsetFactory(WorkflowObjectFactory factory)voidsetMessageService(MessageService messageService)voidsetNamespaceService(NamespaceService namespaceService)voidsetNodeConverter(WorkflowNodeConverter nodeConverter)voidsetNodeService(NodeService nodeService)Sets the Node ServicevoidsetPersonService(PersonService personService)Sets the Person ServicevoidsetPropertyConverter(ActivitiPropertyConverter propertyConverter)voidsetRepositoryHelper(Repository repositoryHelper)voidsetTenantService(TenantService tenantService)voidsetTypeConverter(ActivitiTypeConverter typeConverter)WorkflowPathsignal(String pathId, String transitionId)Signal the transition from one Workflow Node to another within an "in-flight" process.WorkflowTaskstartTask(String taskId)Start the specified Task Note: this is an optional task operation.WorkflowPathstartWorkflow(String workflowDefinitionId, Map<QName,Serializable> parameters)Start a Workflow InstanceWorkflowTasksuspendTask(String taskId)Suspend the specified TaskvoidundeployDefinition(String workflowDefinitionId)Undeploy an exisiting Workflow Definition TODO: Determine behaviour when "in-flight" workflow instances existWorkflowTaskupdateTask(String taskId, Map<QName,Serializable> properties, Map<QName,List<NodeRef>> add, Map<QName,List<NodeRef>> remove)Update the Properties and Associations of a Task-
Methods inherited from class org.alfresco.repo.workflow.BPMEngine
createGlobalId, createLocalId, getEngineId, setBPMEngineRegistry, setEngineId
-
-
-
-
Field Detail
-
ERR_FIRE_EVENT_NOT_SUPPORTED
protected static final String ERR_FIRE_EVENT_NOT_SUPPORTED
- See Also:
- Constant Field Values
-
ERR_FIND_COMPLETED_TASK_INSTS
protected static final String ERR_FIND_COMPLETED_TASK_INSTS
- See Also:
- Constant Field Values
-
QNAME_INITIATOR
public static final QName QNAME_INITIATOR
-
activitiUtil
protected ActivitiUtil activitiUtil
-
-
Method Detail
-
afterPropertiesSet
public void afterPropertiesSet() throws Exception- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Overrides:
afterPropertiesSetin classBPMEngine- Throws:
Exception
-
cancelWorkflows
public List<WorkflowInstance> cancelWorkflows(List<String> workflowIds)
Description copied from interface:WorkflowComponentCancel a batch of "in-flight" Workflow instances- Specified by:
cancelWorkflowsin interfaceWorkflowComponent- Parameters:
workflowIds- List of the workflow instances to cancel- Returns:
- List of updated representations of the workflow instances
-
cancelWorkflow
public WorkflowInstance cancelWorkflow(String workflowId)
Cancel an "in-flight" Workflow instance- Specified by:
cancelWorkflowin interfaceWorkflowComponent- Parameters:
workflowId- the workflow instance to cancel- Returns:
- an updated representation of the workflow instance
-
deleteWorkflow
public WorkflowInstance deleteWorkflow(String workflowId)
Delete an "in-flight" Workflow instance- Specified by:
deleteWorkflowin interfaceWorkflowComponent- Parameters:
workflowId- the workflow instance to cancel- Returns:
- an updated representation of the workflow instance
-
deployDefinition
public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype)
Deploy a Workflow Definition- Specified by:
deployDefinitionin interfaceWorkflowComponent- Parameters:
workflowDefinition- the content object containing the definitionmimetype- (optional) the mime type of the workflow definition- Returns:
- workflow deployment descriptor
-
deployDefinition
public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype, String name)
Deploy a Workflow Definition- Specified by:
deployDefinitionin interfaceWorkflowComponent- Parameters:
workflowDefinition- the content object containing the definitionmimetype- (optional) the mime type of the workflow definitionname- (optional) a name to represent the deployment- Returns:
- workflow deployment descriptor
-
fireEvent
public WorkflowPath fireEvent(String pathId, String event)
Fire custom event against specified path- Specified by:
fireEventin interfaceWorkflowComponent- Parameters:
pathId- the workflow path to fire event onevent- name of event- Returns:
- workflow path (it may have been updated as a result of firing the event
-
getActiveWorkflows
public List<WorkflowInstance> getActiveWorkflows()
Gets all "in-flight" active workflow instances.- Specified by:
getActiveWorkflowsin interfaceWorkflowComponent- Returns:
- the list of "in-flight" workflow instances
-
getCompletedWorkflows
public List<WorkflowInstance> getCompletedWorkflows()
Gets all completed workflow instances.- Specified by:
getCompletedWorkflowsin interfaceWorkflowComponent- Returns:
- the list of "in-flight" workflow instances
-
getWorkflows
public List<WorkflowInstance> getWorkflows()
Gets all workflow instances (both active and completed).- Specified by:
getWorkflowsin interfaceWorkflowComponent- Returns:
- the list of "in-flight" workflow instances
-
getActiveWorkflows
public List<WorkflowInstance> getActiveWorkflows(String workflowDefinitionId)
Gets all "in-flight" active workflow instances of the specified Workflow Definition- Specified by:
getActiveWorkflowsin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the list of "in-flight" workflow instances
-
getAllDefinitions
public List<WorkflowDefinition> getAllDefinitions()
Gets all deployed Workflow Definitions (with all previous versions)- Specified by:
getAllDefinitionsin interfaceWorkflowComponent- Returns:
- the deployed (and previous) workflow definitions
-
getAllDefinitionsByName
public List<WorkflowDefinition> getAllDefinitionsByName(String workflowName)
Gets all (including previous) Workflow Definitions for the given unique name- Specified by:
getAllDefinitionsByNamein interfaceWorkflowComponent- Parameters:
workflowName- workflow name e.g. activiti$activitiReview- Returns:
- the deployed workflow definition (or null if not found)
-
getCompletedWorkflows
public List<WorkflowInstance> getCompletedWorkflows(String workflowDefinitionId)
Gets all "in-flight" completed workflow instances of the specified Workflow Definition- Specified by:
getCompletedWorkflowsin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the list of "in-flight" workflow instances
-
getDefinitionById
public WorkflowDefinition getDefinitionById(String workflowDefinitionId)
Gets a Workflow Definition by unique Id- Specified by:
getDefinitionByIdin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the deployed workflow definition
-
getDefinitionByName
public WorkflowDefinition getDefinitionByName(String workflowName)
Gets a Workflow Definition by unique name- Specified by:
getDefinitionByNamein interfaceWorkflowComponent- Parameters:
workflowName- workflow name e.g. activiti$activitiReview- Returns:
- the deployed workflow definition
-
getDefinitionImage
public byte[] getDefinitionImage(String workflowDefinitionId)
Gets a graphical view of the Workflow Definition- Specified by:
getDefinitionImagein interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- graphical image of workflow definition
-
getDefinitions
public List<WorkflowDefinition> getDefinitions()
Gets all deployed Workflow Definitions- Specified by:
getDefinitionsin interfaceWorkflowComponent- Returns:
- the deployed workflow definitions
-
getPathProperties
public Map<QName,Serializable> getPathProperties(String pathId)
Gets the properties associated with the specified path (and parent paths)- Specified by:
getPathPropertiesin interfaceWorkflowComponent- Parameters:
pathId- workflow path id- Returns:
- map of path properties
-
getTaskDefinitions
public List<WorkflowTaskDefinition> getTaskDefinitions(String workflowDefinitionId)
Gets the Task Definitions for the given Workflow Definition- Specified by:
getTaskDefinitionsin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the deployed task definitions (or null if not found)
-
getTasksForWorkflowPath
public List<WorkflowTask> getTasksForWorkflowPath(String pathId)
Gets all Tasks associated with the specified path- Specified by:
getTasksForWorkflowPathin interfaceWorkflowComponent- Parameters:
pathId- the path id- Returns:
- the list of associated tasks
-
getTimers
public List<WorkflowTimer> getTimers(String workflowId)
Gets all active timers for the specified workflow- Specified by:
getTimersin interfaceWorkflowComponent- Returns:
- the list of active timers
-
getWorkflowById
public WorkflowInstance getWorkflowById(String workflowId)
Gets a specific workflow instances- Specified by:
getWorkflowByIdin interfaceWorkflowComponent- Parameters:
workflowId- the id of the workflow to retrieve- Returns:
- the workflow instance
-
getWorkflowPaths
public List<WorkflowPath> getWorkflowPaths(String workflowId)
Gets all Paths for the specified Workflow instance- Specified by:
getWorkflowPathsin interfaceWorkflowComponent- Parameters:
workflowId- workflow instance id- Returns:
- the list of workflow paths
-
getWorkflows
public List<WorkflowInstance> getWorkflows(String workflowDefinitionId)
Gets all "in-flight" workflow instances (both active and completed) of the specified Workflow Definition- Specified by:
getWorkflowsin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the list of "in-flight" workflow instances
-
isDefinitionDeployed
public boolean isDefinitionDeployed(InputStream workflowDefinition, String mimetype)
Is the specified Workflow Definition already deployed? Note: the notion of "already deployed" may differ between bpm engines. For example, different versions of the same process may be considered equal.- Specified by:
isDefinitionDeployedin interfaceWorkflowComponent- Parameters:
workflowDefinition- the definition to checkmimetype- the mimetype of the definition- Returns:
- true => already deployed
-
signal
public WorkflowPath signal(String pathId, String transitionId)
Signal the transition from one Workflow Node to another within an "in-flight" process.- Specified by:
signalin interfaceWorkflowComponent- Parameters:
pathId- the workflow path to signal ontransitionId- the transition id to follow (or null, for the default transition)- Returns:
- the updated workflow path
-
startWorkflow
public WorkflowPath startWorkflow(String workflowDefinitionId, Map<QName,Serializable> parameters)
Start a Workflow Instance- Specified by:
startWorkflowin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the workflow definition idparameters- the initial set of parameters used to populate the "Start Task" properties- Returns:
- the initial workflow path
-
undeployDefinition
public void undeployDefinition(String workflowDefinitionId)
Undeploy an exisiting Workflow Definition TODO: Determine behaviour when "in-flight" workflow instances exist- Specified by:
undeployDefinitionin interfaceWorkflowComponent- Parameters:
workflowDefinitionId- the id of the definition to undeploy
-
hasWorkflowImage
public boolean hasWorkflowImage(String workflowInstanceId)
Determines if a graphical view of the workflow instance exists- Specified by:
hasWorkflowImagein interfaceWorkflowComponent- Parameters:
workflowInstanceId- the workflow instance id- Returns:
- true if there is a workflow instance diagram available
-
getWorkflowImage
public InputStream getWorkflowImage(String workflowInstanceId)
Gets a graphical view of the workflow instance- Specified by:
getWorkflowImagein interfaceWorkflowComponent- Parameters:
workflowInstanceId- the workflow instance id- Returns:
- image view of the workflow instance as an InputStream or null if a diagram is not available
-
setPropertyConverter
public void setPropertyConverter(ActivitiPropertyConverter propertyConverter)
- Parameters:
propertyConverter- the propertyConverter to set
-
setDictionaryService
public void setDictionaryService(DictionaryService dictionaryService)
Sets the Dictionary Service- Parameters:
dictionaryService- DictionaryService
-
setNodeService
public void setNodeService(NodeService nodeService)
Sets the Node Service- Parameters:
nodeService- NodeService
-
setRepositoryHelper
public void setRepositoryHelper(Repository repositoryHelper)
- Parameters:
repositoryHelper- the repositoryHelper to set
-
setPersonService
public void setPersonService(PersonService personService)
Sets the Person Service- Parameters:
personService- PersonService
-
setAuthorityManager
public void setAuthorityManager(WorkflowAuthorityManager authorityManager)
Sets the Authority DAO /**- Parameters:
authorityManager- the authorityManager to set
-
endTask
public WorkflowTask endTask(String taskId, String transition)
End the Task (i.e. complete the task)- Specified by:
endTaskin interfaceTaskComponent- Parameters:
taskId- the task id to endtransition- the task transition id to take on completion (or null, for the default transition)- Returns:
- the updated task
-
getAssignedTasks
public List<WorkflowTask> getAssignedTasks(String authority, WorkflowTaskState state, boolean lazyInitialization)
Gets all tasks assigned to the specified authority- Specified by:
getAssignedTasksin interfaceTaskComponent- Parameters:
authority- the authoritystate- filter by specified workflow task statelazyInitialization- hint in order to return partially-initialized entities- Returns:
- the list of assigned tasks
-
getPooledTasks
public List<WorkflowTask> getPooledTasks(List<String> authorities, boolean lazyInitialization)
Gets the pooled tasks available to the specified authority- Specified by:
getPooledTasksin interfaceTaskComponent- Parameters:
authorities- the list of authoritieslazyInitialization- hint in order to return partially-initialized entities- Returns:
- the list of pooled tasks
-
getTaskById
public WorkflowTask getTaskById(String taskId)
Gets a Task by unique Id- Specified by:
getTaskByIdin interfaceTaskComponent- Parameters:
taskId- the task id- Returns:
- the task
-
queryTasks
public List<WorkflowTask> queryTasks(WorkflowTaskQuery query, boolean sameSession)
Description copied from interface:TaskComponentQuery for tasks Hint: useWorkflowTaskQuerysetLimit() method to limit the number of processed items if you don't really need to go through all of them- Specified by:
queryTasksin interfaceTaskComponent- Parameters:
query- the filter by which tasks are queriedsameSession- indicates that the returnedWorkflowTaskelements will be used in the same session. Iftrue, the returned List will be a lazy loaded list providing greater performance.- Returns:
- the list of tasks matching the specified query
-
countTasks
public long countTasks(WorkflowTaskQuery query)
Description copied from interface:TaskComponentCount the number of active tasks that match the given query.- Specified by:
countTasksin interfaceTaskComponent- Parameters:
query- the filter by which tasks are queried- Returns:
- number of matching tasks.
-
queryTasks
public List<WorkflowTask> queryTasks(WorkflowTaskQuery query)
- Specified by:
queryTasksin interfaceTaskComponent
-
getStartTasks
public List<WorkflowTask> getStartTasks(List<String> workflowInstanceIds, boolean sameSession)
Description copied from interface:TaskComponentGets all start tasks for the specified workflow- Specified by:
getStartTasksin interfaceTaskComponent- Returns:
- the list of start tasks
-
getStartTask
public WorkflowTask getStartTask(String workflowInstanceId)
Gets all active timers for the specified workflow- Specified by:
getStartTaskin interfaceTaskComponent- Returns:
- the list of active timers
-
startTask
public WorkflowTask startTask(String taskId)
Start the specified Task Note: this is an optional task operation. It may be used to track when work started on a task as well as resume a suspended task.- Specified by:
startTaskin interfaceTaskComponent- Parameters:
taskId- the task to start- Returns:
- the updated task
-
suspendTask
public WorkflowTask suspendTask(String taskId)
Suspend the specified Task- Specified by:
suspendTaskin interfaceTaskComponent- Parameters:
taskId- String- Returns:
- the update task
-
updateTask
public WorkflowTask updateTask(String taskId, Map<QName,Serializable> properties, Map<QName,List<NodeRef>> add, Map<QName,List<NodeRef>> remove)
Update the Properties and Associations of a Task- Specified by:
updateTaskin interfaceTaskComponent- Parameters:
taskId- the task id to updateproperties- the map of properties to set on the task (or null, if none to set)add- the map of items to associate with the task (or null, if none to add)remove- the map of items to dis-associate with the task (or null, if none to remove)- Returns:
- the update task
-
getWorkflows
public List<WorkflowInstance> getWorkflows(WorkflowInstanceQuery workflowInstanceQuery)
Description copied from interface:WorkflowComponentGets all "in-flight" workflow instances according to the specified workflowInstanceQuery parameter- Specified by:
getWorkflowsin interfaceWorkflowComponent- Parameters:
workflowInstanceQuery- WorkflowInstanceQuery- Returns:
- the list of "in-flight" workflow instances
-
getWorkflows
public List<WorkflowInstance> getWorkflows(WorkflowInstanceQuery workflowInstanceQuery, int maxItems, int skipCount)
Description copied from interface:WorkflowComponentGets maxItems "in-flight" workflow instances according to the specified workflowInstanceQuery parameter- Specified by:
getWorkflowsin interfaceWorkflowComponent- Parameters:
workflowInstanceQuery- WorkflowInstanceQuerymaxItems- intskipCount- int- Returns:
- maxItems workflow instances
-
countWorkflows
public long countWorkflows(WorkflowInstanceQuery workflowInstanceQuery)
Description copied from interface:WorkflowComponentGet count of workflow instances- Specified by:
countWorkflowsin interfaceWorkflowComponent- Parameters:
workflowInstanceQuery- WorkflowInstanceQuery- Returns:
- count of workflow instances
-
dispatchPackageUpdatedEvent
public void dispatchPackageUpdatedEvent(Object variableValue, String taskId, String executionId, String processInstanceId, String processDefinitionId)
-
setNodeConverter
public void setNodeConverter(WorkflowNodeConverter nodeConverter)
- Parameters:
nodeConverter- the nodeConverter to set
-
setFactory
public void setFactory(WorkflowObjectFactory factory)
- Parameters:
factory- the factory to set
-
setMessageService
public void setMessageService(MessageService messageService)
- Parameters:
messageService- the messageService to set
-
setTenantService
public void setTenantService(TenantService tenantService)
- Parameters:
tenantService- the tenantService to set
-
setTypeConverter
public void setTypeConverter(ActivitiTypeConverter typeConverter)
- Parameters:
typeConverter- the typeConverter to set
-
setActivitiUtil
public void setActivitiUtil(ActivitiUtil activitiUtil)
- Parameters:
activitiUtil- the activitiUtil to set
-
setNamespaceService
public void setNamespaceService(NamespaceService namespaceService)
- Parameters:
namespaceService- the namespaceService to set
-
-