Interface WorkflowService
- All Known Implementing Classes:
WorkflowServiceImpl
@AlfrescoPublicApi
public interface WorkflowService
Workflow Service.
Client facing API for interacting with Alfresco Workflows and Tasks.
- Author:
- davidc
-
Method Summary
Modifier and TypeMethodDescriptioncancelWorkflow(String workflowId) Cancel an "in-flight" Workflow instancecancelWorkflows(List<String> workflowIds) Cancel a batch of "in-flight" Workflow instancesvoidcheckDeploymentCategory(String engineId, InputStream workflowDefinition) Checks if the deployment for supplied workflow definition has the proper categorylongcountTasks(WorkflowTaskQuery workflowTaskQuery) Get the number of tasks matching the given querylongcountWorkflows(WorkflowInstanceQuery workflowInstanceQuery) Get count of workflow instancescreatePackage(NodeRef container) Create a Workflow Package (a container of content to route through the Workflow).deleteWorkflow(String workflowId) Delete a Workflow instance.deployDefinition(String engineId, InputStream workflowDefinition, String mimetype) Deploy a Workflow Definition to the Alfresco RepositorydeployDefinition(String engineId, InputStream workflowDefinition, String mimetype, String name) Deploy a Workflow Definition to the Alfresco RepositorydeployDefinition(String engineId, InputStream workflowDefinition, String mimetype, String name, boolean fullAccess) Deploy a Workflow Definition to the Alfresco RepositorydeployDefinition(NodeRef workflowDefinition) Deploy a Workflow Definition to the Alfresco Repository Note: The specified content object must be of type bpm:workflowdefinition.End the Task (i.e. complete the task)Fire custom event against specified pathGets all active workflow instances.getActiveWorkflows(String workflowDefinitionId) Gets all active workflow instances of the specified Workflow DefinitionGets all deployed Workflow Definitions (with all previous versions)getAllDefinitionsByName(String workflowName) Gets all (including previous) Workflow Definitions for the given unique namegetAssignedTasks(String authority, WorkflowTaskState state) Gets all tasks assigned to the specified authoritygetAssignedTasks(String authority, WorkflowTaskState state, boolean lazyInitialization) Gets all tasks assigned to the specified authorityGets all completed workflow instances.getCompletedWorkflows(String workflowDefinitionId) Gets all completed workflow instances of the specified Workflow DefinitiongetDefinitionById(String workflowDefinitionId) Gets a Workflow Definition by unique IdgetDefinitionByName(String workflowName) Gets the latest Workflow Definition by unique namebyte[]getDefinitionImage(String workflowDefinitionId) Gets a graphical view of the Workflow DefinitionGets latest deployed Workflow DefinitionsgetPackageContents(String taskId) Get a list of node refs to all the package contents for the given task id.getPackageContents(NodeRef packageRef) Get a list of node refs to all the package contents.getPathProperties(String pathId) Gets the properties associated with the specified path (and parent paths)getPooledTasks(String authority) Gets the pooled tasks available to the specified authoritygetPooledTasks(String authority, boolean lazyinitialization) Gets the pooled tasks available to the specified authoritygetStartTask(String workflowInstanceId) Gets the start task instance for the given workflow instance.getStartTasks(List<String> workflowInstanceIds, boolean sameSession) Gets the start task instances for the given workflow instances.getTaskById(String taskId) Gets a Task by unique IdgetTaskDefinitions(String workflowDefinitionId) Gets the Task Definitions for the given Workflow DefinitiongetTasksForWorkflowPath(String pathId) Gets all Tasks associated with the specified pathGets all active timers for the specified workflowgetWorkflowById(String workflowId) Gets a specific workflow instancesgetWorkflowImage(String workflowInstanceId) Gets a graphical view of the workflow instancegetWorkflowPaths(String workflowId) Gets all Paths for the specified Workflow instance.Gets all workflow instances (both active and completed).getWorkflows(String workflowDefinitionId) Gets all workflow instances (both active and completed) of the specified Workflow DefinitiongetWorkflows(WorkflowInstanceQuery workflowInstanceQuery) Gets all "in-flight" workflow instances according to the specified workflowInstanceQuery parametergetWorkflows(WorkflowInstanceQuery workflowInstanceQuery, int maxItems, int skipCount) Gets maxItems "in-flight" workflow instances according to the specified workflowInstanceQuery parameter Get maxItems and skipCount parameters form requestgetWorkflowsForContent(NodeRef packageItem, boolean active) Gets the Workflows that act upon the specified Repository content.booleanhasWorkflowImage(String workflowInstanceId) Determines if a graphical view of the workflow instance existsbooleanisDefinitionDeployed(String engineId, InputStream workflowDefinition, String mimetype) Is the specified Workflow Definition already deployed?booleanisDefinitionDeployed(NodeRef workflowDefinition) Is the specified Workflow Definition already deployed?booleanbooleanisTaskClaimable(WorkflowTask task, String username) Determines if the given user can claim the given taskbooleanisTaskClaimable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can claim the given taskbooleanisTaskEditable(WorkflowTask task, String username) Determines if the given user can edit the given taskbooleanisTaskEditable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can edit the given taskbooleanisTaskReassignable(WorkflowTask task, String username) Determines if the given user can reassign the given taskbooleanisTaskReassignable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can reassign the given taskbooleanisTaskReleasable(WorkflowTask task, String username) Determines if the given user can release the given taskbooleanisTaskReleasable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can release the given taskqueryTasks(WorkflowTaskQuery query) Deprecated.queryTasks(WorkflowTaskQuery query, boolean sameSession) Query for tasksSignal the transition from one Workflow Node to anotherstartWorkflow(String workflowDefinitionId, Map<QName, Serializable> parameters) Start a Workflow InstancestartWorkflowFromTemplate(NodeRef templateDefinition) Start a Workflow Instance from an existing "Start Task" template node held in the Repository.voidundeployDefinition(String workflowDefinitionId) Undeploy an exisiting Workflow Definition TODO: Determine behaviour when "in-flight" workflow instances existupdateTask(String taskId, Map<QName, Serializable> properties, Map<QName, List<NodeRef>> add, Map<QName, List<NodeRef>> remove) Update the Properties and Associations of a Task
-
Method Details
-
deployDefinition
@Auditable(parameters={"engineId","workflowDefinition","mimetype"}, recordable={true,false,true}) WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype) Deploy a Workflow Definition to the Alfresco Repository- Parameters:
engineId- the bpm engine idworkflowDefinition- the workflow definitionmimetype- the mimetype of the workflow definition- Returns:
- workflow deployment descriptor
-
deployDefinition
@Auditable(parameters={"engineId","workflowDefinition","mimetype","name"}, recordable={true,false,true,true}) WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype, String name) Deploy a Workflow Definition to the Alfresco Repository- Parameters:
engineId- the bpm engine idworkflowDefinition- the workflow definitionmimetype- the mimetype of the workflow definitionname- a name representing the deployment- Returns:
- workflow deployment descriptor
- Since:
- 4.0
-
deployDefinition
@Auditable(parameters={"engineId","workflowDefinition","mimetype","name","fullAccess"}, recordable={true,false,true,true,true}) WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype, String name, boolean fullAccess) Deploy a Workflow Definition to the Alfresco Repository- Parameters:
engineId- the bpm engine idworkflowDefinition- the workflow definitionmimetype- the mimetype of the workflow definitionname- a name representing the deployment- Returns:
- workflow deployment descriptor
- Since:
- 4.0
-
deployDefinition
@Auditable(parameters="workflowDefinition") WorkflowDeployment deployDefinition(NodeRef workflowDefinition) Deploy a Workflow Definition to the Alfresco Repository Note: The specified content object must be of type bpm:workflowdefinition. This type describes for which BPM engine the definition is appropriate.- Parameters:
workflowDefinition- the content object containing the definition- Returns:
- workflow deployment descriptor
-
isDefinitionDeployed
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.- Parameters:
workflowDefinition- the content object containing the definition- Returns:
- true => already deployed
-
isDefinitionDeployed
@Auditable(parameters={"engineId","workflowDefinition","mimetype"}, recordable={true,false,true}) boolean isDefinitionDeployed(String engineId, 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.- Parameters:
engineId- the bpm engine idworkflowDefinition- the definition to checkmimetype- the mimetype of the definition- Returns:
- true => already deployed
-
checkDeploymentCategory
@Auditable(parameters={"engineId","workflowDefinition"}, recordable={true,false}) void checkDeploymentCategory(String engineId, InputStream workflowDefinition) Checks if the deployment for supplied workflow definition has the proper category- Parameters:
engineId- the bpm engine idworkflowDefinition- the definition to check
-
undeployDefinition
Undeploy an exisiting Workflow Definition TODO: Determine behaviour when "in-flight" workflow instances exist- Parameters:
workflowDefinitionId- the id of the definition to undeploy
-
getDefinitions
Gets latest deployed Workflow Definitions- Returns:
- the latest deployed workflow definitions
-
getAllDefinitions
Gets all deployed Workflow Definitions (with all previous versions)- Returns:
- the deployed (and previous) workflow definitions
-
getDefinitionById
@Auditable(parameters="workflowDefinitionId") WorkflowDefinition getDefinitionById(String workflowDefinitionId) Gets a Workflow Definition by unique Id- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the deployed workflow definition (or null if not found)
-
getDefinitionByName
Gets the latest Workflow Definition by unique name- Parameters:
workflowName- workflow name e.g. activiti$activitiReview- Returns:
- the deployed workflow definition (or null if not found)
-
getAllDefinitionsByName
@Auditable(parameters="workflowName") List<WorkflowDefinition> getAllDefinitionsByName(String workflowName) Gets all (including previous) Workflow Definitions for the given unique name- Parameters:
workflowName- workflow name e.g. activiti$activitiReview- Returns:
- the deployed workflow definition (or null if not found)
-
getDefinitionImage
@Auditable(parameters="workflowDefinitionId") byte[] getDefinitionImage(String workflowDefinitionId) Gets a graphical view of the Workflow Definition- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- image view of the workflow definition
-
getTaskDefinitions
@Auditable(parameters="workflowDefinitionId") List<WorkflowTaskDefinition> getTaskDefinitions(String workflowDefinitionId) Gets the Task Definitions for the given Workflow Definition- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the deployed task definitions (or null if not found)
-
startWorkflow
@Auditable(parameters={"workflowDefinitionId","parameters"}) WorkflowPath startWorkflow(String workflowDefinitionId, Map<QName, Serializable> parameters) Start a Workflow Instance- Parameters:
workflowDefinitionId- the workflow definition idparameters- the initial set of parameters used to populate the "Start Task" properties- Returns:
- the initial workflow path
-
startWorkflowFromTemplate
@Auditable(parameters="templateDefinition") WorkflowPath startWorkflowFromTemplate(NodeRef templateDefinition) Start a Workflow Instance from an existing "Start Task" template node held in the Repository. The node must be of the Type as described in the Workflow Definition.- Parameters:
templateDefinition- the node representing the Start Task properties- Returns:
- the initial workflow path
-
getActiveWorkflows
@Auditable(parameters="workflowDefinitionId") List<WorkflowInstance> getActiveWorkflows(String workflowDefinitionId) Gets all active workflow instances of the specified Workflow Definition- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the list of "in-flight" workflow instances
-
getCompletedWorkflows
@Auditable(parameters="workflowDefinitionId") List<WorkflowInstance> getCompletedWorkflows(String workflowDefinitionId) Gets all completed workflow instances of the specified Workflow Definition- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the list of "in-flight" workflow instances
- Since:
- 3.4
-
getWorkflows
@Auditable(parameters="workflowDefinitionId") List<WorkflowInstance> getWorkflows(String workflowDefinitionId) Gets all workflow instances (both active and completed) of the specified Workflow Definition- Parameters:
workflowDefinitionId- the workflow definition id- Returns:
- the list of "in-flight" workflow instances
- Since:
- 3.4
-
getWorkflows
Gets all "in-flight" workflow instances according to the specified workflowInstanceQuery parameter- Parameters:
workflowInstanceQuery- WorkflowInstanceQuery
-
getWorkflows
List<WorkflowInstance> getWorkflows(WorkflowInstanceQuery workflowInstanceQuery, int maxItems, int skipCount) Gets maxItems "in-flight" workflow instances according to the specified workflowInstanceQuery parameter Get maxItems and skipCount parameters form request- Parameters:
workflowInstanceQuery- WorkflowInstanceQuerymaxItems- intskipCount- int- Returns:
- maxItems workflow instances
-
countWorkflows
Get count of workflow instances- Parameters:
workflowInstanceQuery- WorkflowInstanceQuery- Returns:
- count of workflow instances
-
getActiveWorkflows
Gets all active workflow instances.- Returns:
- the list of "in-flight" workflow instances
- Since:
- 4.0
-
getCompletedWorkflows
Gets all completed workflow instances.- Returns:
- the list of "in-flight" workflow instances
- Since:
- 4.0
-
getWorkflows
List<WorkflowInstance> getWorkflows()Gets all workflow instances (both active and completed).- Returns:
- the list of "in-flight" workflow instances
- Since:
- 4.0
-
getWorkflowById
Gets a specific workflow instances- Parameters:
workflowId- the id of the workflow to retrieve- Returns:
- the workflow instance (or null if not found)
-
getWorkflowPaths
Gets all Paths for the specified Workflow instance. NOTE: It only returns information for an active Workflow instance.- Parameters:
workflowId- workflow instance id- Returns:
- the list of workflow paths
-
getPathProperties
Gets the properties associated with the specified path (and parent paths)- Parameters:
pathId- workflow path id- Returns:
- map of path properties
-
cancelWorkflow
Cancel an "in-flight" Workflow instance- Parameters:
workflowId- the workflow instance to cancel- Returns:
- an updated representation of the workflow instance
-
cancelWorkflows
@Auditable(parameters="workflowIds") List<WorkflowInstance> cancelWorkflows(List<String> workflowIds) Cancel a batch of "in-flight" Workflow instances- Parameters:
workflowIds- List of the workflow instances to cancel- Returns:
- List of updated representations of the workflow instances
-
deleteWorkflow
Delete a Workflow instance. NOTE: This will force a delete, meaning that the workflow instance may not go through all the appropriate cancel events.- Parameters:
workflowId- the workflow instance to cancel- Returns:
- an updated representation of the workflow instance
-
signal
@Auditable(parameters={"pathId","transitionId"}) WorkflowPath signal(String pathId, String transitionId) Signal the transition from one Workflow Node to another- Parameters:
pathId- the workflow path to signal ontransitionId- the transition id to follow (or null, for the default transition)- Returns:
- the updated workflow path
-
fireEvent
Fire custom event against specified path- 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
-
getTasksForWorkflowPath
Gets all Tasks associated with the specified path- Parameters:
pathId- the path id- Returns:
- the list of associated tasks
-
getStartTask
Gets the start task instance for the given workflow instance.- Parameters:
workflowInstanceId- String- Returns:
- WorkflowTask
-
getStartTasks
@Auditable(parameters="pathIds") List<WorkflowTask> getStartTasks(List<String> workflowInstanceIds, boolean sameSession) Gets the start task instances for the given workflow instances.- Parameters:
sameSession- indicates that the returnedWorkflowTaskelements will be used in the same session. Iftrue, the returned List will be a lazy loaded list providing greater performance.
-
hasWorkflowImage
Determines if a graphical view of the workflow instance exists- Parameters:
workflowInstanceId- the workflow instance id- Returns:
- true if there is a workflow instance diagram available
- Since:
- 4.0
-
getWorkflowImage
@Auditable(parameters="workflowInstanceId", recordReturnedObject=false) InputStream getWorkflowImage(String workflowInstanceId) Gets a graphical view of the workflow instance- Parameters:
workflowInstanceId- the workflow instance id- Returns:
- image view of the workflow instance as an InputStream or null if a diagram is not available
- Since:
- 4.0
-
getTimers
Gets all active timers for the specified workflow- Returns:
- the list of active timers
-
getTaskById
Gets a Task by unique Id- Parameters:
taskId- the task id- Returns:
- the task (or null, if not found)
-
getAssignedTasks
@Auditable(parameters={"authority","state","lazyInitialization"}) List<WorkflowTask> getAssignedTasks(String authority, WorkflowTaskState state, boolean lazyInitialization) Gets all tasks assigned to the specified authority- Parameters:
authority- the authoritystate- filter by specified workflow task statelazyInitialization- hint to the underlying workflow-engine to allow returningWorkflowTasks which aren't fully initialized but will be when the required values are required. Iftrue, the returned enities should be used inside of the transaction-boundaries of this service-call. Iffalse, fully initialized entities are returned, just as withgetAssignedTasks(String, WorkflowTaskState).
It's a hint to the underlying workflow-engine and may be ignored by the actual implementation.- Returns:
- the list of assigned tasks
-
getAssignedTasks
@Auditable(parameters={"authority","state","lazy"}) List<WorkflowTask> getAssignedTasks(String authority, WorkflowTaskState state) Gets all tasks assigned to the specified authority- Parameters:
authority- the authoritystate- filter by specified workflow task state- Returns:
- the list of assigned tasks
-
getPooledTasks
Gets the pooled tasks available to the specified authority- Parameters:
authority- the authority- Returns:
- the list of pooled tasks
-
getPooledTasks
@Auditable(parameters="authority") List<WorkflowTask> getPooledTasks(String authority, boolean lazyinitialization) Gets the pooled tasks available to the specified authority- Parameters:
authority- the authoritylazyinitialization- hint to the underlying workflow-engine to allow returningWorkflowTasks which aren't fully initialized but will be when the required values are required. Iftrue, the returned enities should be used inside of the transaction-boundaries of this service-call. Iffalse, fully initialized entities are returned, just as withgetPooledTasks(String).
It's a hint to the underlying workflow-engine and may be ignored by the actual implementation.- Returns:
- the list of pooled tasks
-
queryTasks
Deprecated.Use overloaded method with thesameSessionparameter (this method defaults the parameter tofalse). -
queryTasks
@Auditable(parameters="query") List<WorkflowTask> queryTasks(WorkflowTaskQuery query, boolean sameSession) Query for tasks- 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
Get the number of tasks matching the given query- Parameters:
workflowTaskQuery- the filter by which tasks are queried- Returns:
- count of matching tasks
-
updateTask
@Auditable(parameters={"taskId","properties","add","remove"}) 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- 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
-
endTask
@Auditable(parameters={"taskId","transitionId"}) WorkflowTask endTask(String taskId, String transitionId) End the Task (i.e. complete the task)- Parameters:
taskId- the task id to endtransitionId- the task transition id to take on completion (or null, for the default transition)- Returns:
- the updated task
-
isTaskEditable
@Auditable(parameters={"task","username"}) boolean isTaskEditable(WorkflowTask task, String username) Determines if the given user can edit the given task- Parameters:
task- The task to checkusername- The user to check- Returns:
- true if the user can edit the task
- Since:
- 3.4
-
isTaskEditable
@Auditable(parameters={"task","username","refreshTask"}) boolean isTaskEditable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can edit the given task- Parameters:
task- The task to checkusername- The user to checkrefreshTask- Whether or not to refresh theWorkflowTaskbefore check is perfromed- Returns:
- true if the user can edit the task
- Since:
- 4.1
-
isTaskReassignable
@Auditable(parameters={"task","username"}) boolean isTaskReassignable(WorkflowTask task, String username) Determines if the given user can reassign the given task- Parameters:
task- The task to checkusername- The user to check- Returns:
- true if the user can reassign the task
- Since:
- 3.4
-
isTaskReassignable
@Auditable(parameters={"task","username","refreshTask"}) boolean isTaskReassignable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can reassign the given task- Parameters:
task- The task to checkusername- The user to checkrefreshTask- Whether or not to refresh theWorkflowTaskbefore check is perfromed- Returns:
- true if the user can reassign the task
- Since:
- 4.1
-
isTaskClaimable
@Auditable(parameters={"task","username"}) boolean isTaskClaimable(WorkflowTask task, String username) Determines if the given user can claim the given task- Parameters:
task- The task to checkusername- The user to check- Returns:
- true if the user can claim the task
- Since:
- 3.4
-
isTaskClaimable
@Auditable(parameters={"task","username","refreshTask"}) boolean isTaskClaimable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can claim the given task- Parameters:
task- The task to checkusername- The user to checkrefreshTask- Whether or not to refresh theWorkflowTaskbefore check is perfromed- Returns:
- true if the user can claim the task
- Since:
- 4.1
-
isTaskReleasable
@Auditable(parameters={"task","username"}) boolean isTaskReleasable(WorkflowTask task, String username) Determines if the given user can release the given task- Parameters:
task- The task to checkusername- The user to check- Returns:
- true if the user can release the task
- Since:
- 3.4
-
isTaskReleasable
@Auditable(parameters={"task","username","refreshTask"}) boolean isTaskReleasable(WorkflowTask task, String username, boolean refreshTask) Determines if the given user can release the given task- Parameters:
task- The task to checkusername- The user to checkrefreshTask- Whether or not to refresh theWorkflowTaskbefore check is perfromed- Returns:
- true if the user can release the task
- Since:
- 4.1
-
createPackage
Create a Workflow Package (a container of content to route through the Workflow). If an existing container is supplied, it's supplemented with the workflow package aspect.- Parameters:
container- (optional) a pre-created container (e.g. folder, versioned folder or layered folder)- Returns:
- the workflow package
-
getWorkflowsForContent
@Auditable(parameters={"packageItem","active"}) List<WorkflowInstance> getWorkflowsForContent(NodeRef packageItem, boolean active) Gets the Workflows that act upon the specified Repository content.- Parameters:
packageItem- the repository content item to get workflows foractive- true => active workflows only, false => completed workflows only- Returns:
- list of workflows which act upon the specified content
-
getPackageContents
Get a list of node refs to all the package contents for the given task id.- Parameters:
taskId- - the task id- Returns:
- - A list of NodeRefs
-
getPackageContents
Get a list of node refs to all the package contents.- Parameters:
packageRef- the nodeRef to the package- Returns:
- A list of nodeRefs the package is referring to
-
isMultiTenantWorkflowDeploymentEnabled
- Returns:
- true, if all workflows (in workflowDeployers) have a copy deployed per tenant and workflows can be deployed in tenant. False when workflows are shared system-wide, regardless of the tenant context.
-
sameSessionparameter (this method defaults the parameter tofalse).