org.alfresco.repo.workflow.activiti
Class ActivitiWorkflowEngine

java.lang.Object
  extended by org.alfresco.repo.workflow.BPMEngine
      extended by 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

Field Summary
protected static java.lang.String ERR_FIND_COMPLETED_TASK_INSTS
           
protected static java.lang.String ERR_FIRE_EVENT_NOT_SUPPORTED
           
 
Constructor Summary
ActivitiWorkflowEngine()
           
 
Method Summary
 void afterPropertiesSet()
          
 WorkflowInstance cancelWorkflow(java.lang.String workflowId)
          Cancel an "in-flight" Workflow instance
 WorkflowInstance deleteWorkflow(java.lang.String workflowId)
          Delete an "in-flight" Workflow instance
 WorkflowDeployment deployDefinition(java.io.InputStream workflowDefinition, java.lang.String mimetype)
          Deploy a Workflow Definition
 WorkflowDeployment deployDefinition(java.io.InputStream workflowDefinition, java.lang.String mimetype, java.lang.String name)
          Deploy a Workflow Definition
 WorkflowTask endTask(java.lang.String taskId, java.lang.String transition)
          End the Task (i.e.
 WorkflowPath fireEvent(java.lang.String pathId, java.lang.String event)
          Fire custom event against specified path
 java.util.List getActiveWorkflows()
          Gets all "in-flight" active workflow instances.
 java.util.List getActiveWorkflows(java.lang.String workflowDefinitionId)
          Gets all "in-flight" active workflow instances of the specified Workflow Definition
 java.util.List getAllDefinitions()
          Gets all deployed Workflow Definitions (with all previous versions)
 java.util.List getAllDefinitionsByName(java.lang.String workflowName)
          Gets all (including previous) Workflow Definitions for the given unique name
 java.util.List getAssignedTasks(java.lang.String authority, WorkflowTaskState state)
          Gets all tasks assigned to the specified authority
 java.util.List getCompletedWorkflows()
          Gets all completed workflow instances.
 java.util.List getCompletedWorkflows(java.lang.String workflowDefinitionId)
          Gets all "in-flight" completed workflow instances of the specified Workflow Definition
 WorkflowDefinition getDefinitionById(java.lang.String workflowDefinitionId)
          Gets a Workflow Definition by unique Id
 WorkflowDefinition getDefinitionByName(java.lang.String workflowName)
          Gets a Workflow Definition by unique name
 byte[] getDefinitionImage(java.lang.String workflowDefinitionId)
          Gets a graphical view of the Workflow Definition
 java.util.List getDefinitions()
          Gets all deployed Workflow Definitions
protected  java.lang.String getExecutionIdFromPath(java.lang.String workflowPath)
           
 java.util.Map getPathProperties(java.lang.String pathId)
          Gets the properties associated with the specified path (and parent paths)
 java.util.List getPooledTasks(java.util.List authorities)
          Gets the pooled tasks available to the specified authority
 WorkflowTask getStartTask(java.lang.String workflowInstanceId)
          Gets all active timers for the specified workflow
 WorkflowTask getTaskById(java.lang.String taskId)
          Gets a Task by unique Id
 java.util.List getTaskDefinitions(java.lang.String workflowDefinitionId)
          Gets the Task Definitions for the given Workflow Definition
 java.util.List getTasksForWorkflowPath(java.lang.String pathId)
          Gets all Tasks associated with the specified path
 java.util.List getTimers(java.lang.String workflowId)
          Gets all active timers for the specified workflow
 WorkflowInstance getWorkflowById(java.lang.String workflowId)
          Gets a specific workflow instances
 java.io.InputStream getWorkflowImage(java.lang.String workflowInstanceId)
          Gets a graphical view of the workflow instance
 java.util.List getWorkflowPaths(java.lang.String workflowId)
          Gets all Paths for the specified Workflow instance
 java.util.List getWorkflows()
          Gets all workflow instances (both active and completed).
 java.util.List getWorkflows(java.lang.String workflowDefinitionId)
          Gets all "in-flight" workflow instances (both active and completed) of the specified Workflow Definition
 boolean hasWorkflowImage(java.lang.String workflowInstanceId)
          Determines if a graphical view of the workflow instance exists
 boolean isDefinitionDeployed(java.io.InputStream workflowDefinition, java.lang.String mimetype)
          Is the specified Workflow Definition already deployed? Note: the notion of "already deployed" may differ between bpm engines.
 java.util.List queryTasks(WorkflowTaskQuery query)
          Query for tasks
 void setActivitiUtil(ActivitiUtil activitiUtil)
           
 void setAuthorityManager(WorkflowAuthorityManager authorityManager)
          Sets the Authority DAO /**
 void setCompanyHomePath(java.lang.String companyHomePath)
          Sets the Company Home Path
 void setCompanyHomeStore(java.lang.String companyHomeStore)
          Sets the Company Home Store
 void setFactory(WorkflowObjectFactory factory)
           
 void setMessageService(MessageService messageService)
           
 void setNamespaceService(org.alfresco.service.namespace.NamespaceService namespaceService)
           
 void setNodeConverter(WorkflowNodeConverter nodeConverter)
           
 void setNodeService(org.alfresco.service.cmr.repository.NodeService nodeService)
          Sets the Node Service
 void setPersonService(PersonService personService)
          Sets the Person Service
 void setPropertyConverter(ActivitiPropertyConverter propertyConverter)
           
 void setTenantService(org.alfresco.repo.tenant.TenantService tenantService)
           
 void setTypeConverter(ActivitiTypeConverter typeConverter)
           
 void setUnprotectedSearchService(org.alfresco.service.cmr.search.SearchService unprotectedSearchService)
          Set the unprotected search service - so we can find the node ref for company home when folk do not have read access to company home TODO: review use with DC
 WorkflowPath signal(java.lang.String pathId, java.lang.String transitionId)
          Signal the transition from one Workflow Node to another within an "in-flight" process.
 WorkflowTask startTask(java.lang.String taskId)
          Start the specified Task Note: this is an optional task operation.
 WorkflowPath startWorkflow(java.lang.String workflowDefinitionId, java.util.Map parameters)
          Start a Workflow Instance
 WorkflowTask suspendTask(java.lang.String taskId)
          Suspend the specified Task
 void undeployDefinition(java.lang.String workflowDefinitionId)
          Undeploy an exisiting Workflow Definition TODO: Determine behaviour when "in-flight" workflow instances exist
 WorkflowTask updateTask(java.lang.String taskId, java.util.Map properties, java.util.Map add, java.util.Map remove)
          Update the Properties and Associations of a Task
 
Methods inherited from class org.alfresco.repo.workflow.BPMEngine
createGlobalId, createLocalId, getEngineId, setBPMEngineRegistry, setEngineId
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ERR_FIRE_EVENT_NOT_SUPPORTED

protected static final java.lang.String ERR_FIRE_EVENT_NOT_SUPPORTED
See Also:
Constant Field Values

ERR_FIND_COMPLETED_TASK_INSTS

protected static final java.lang.String ERR_FIND_COMPLETED_TASK_INSTS
See Also:
Constant Field Values
Constructor Detail

ActivitiWorkflowEngine

public ActivitiWorkflowEngine()
Method Detail

afterPropertiesSet

public void afterPropertiesSet()
                        throws java.lang.Exception

Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
Overrides:
afterPropertiesSet in class BPMEngine
Throws:
java.lang.Exception

cancelWorkflow

public WorkflowInstance cancelWorkflow(java.lang.String workflowId)
Cancel an "in-flight" Workflow instance

Specified by:
cancelWorkflow in interface WorkflowComponent
Parameters:
workflowId - the workflow instance to cancel
Returns:
an updated representation of the workflow instance

deleteWorkflow

public WorkflowInstance deleteWorkflow(java.lang.String workflowId)
Delete an "in-flight" Workflow instance

Specified by:
deleteWorkflow in interface WorkflowComponent
Parameters:
workflowId - the workflow instance to cancel
Returns:
an updated representation of the workflow instance

deployDefinition

public WorkflowDeployment deployDefinition(java.io.InputStream workflowDefinition,
                                           java.lang.String mimetype)
Deploy a Workflow Definition

Specified by:
deployDefinition in interface WorkflowComponent
Parameters:
workflowDefinition - the content object containing the definition
mimetype - (optional) the mime type of the workflow definition
Returns:
workflow deployment descriptor

deployDefinition

public WorkflowDeployment deployDefinition(java.io.InputStream workflowDefinition,
                                           java.lang.String mimetype,
                                           java.lang.String name)
Deploy a Workflow Definition

Specified by:
deployDefinition in interface WorkflowComponent
Parameters:
workflowDefinition - the content object containing the definition
mimetype - (optional) the mime type of the workflow definition
name - (optional) a name to represent the deployment
Returns:
workflow deployment descriptor

fireEvent

public WorkflowPath fireEvent(java.lang.String pathId,
                              java.lang.String event)
Fire custom event against specified path

Specified by:
fireEvent in interface WorkflowComponent
Parameters:
pathId - the workflow path to fire event on
event - name of event
Returns:
workflow path (it may have been updated as a result of firing the event

getActiveWorkflows

public java.util.List getActiveWorkflows()
Gets all "in-flight" active workflow instances.

Specified by:
getActiveWorkflows in interface WorkflowComponent
Returns:
the list of "in-flight" workflow instances

getCompletedWorkflows

public java.util.List getCompletedWorkflows()
Gets all completed workflow instances.

Specified by:
getCompletedWorkflows in interface WorkflowComponent
Returns:
the list of "in-flight" workflow instances

getWorkflows

public java.util.List getWorkflows()
Gets all workflow instances (both active and completed).

Specified by:
getWorkflows in interface WorkflowComponent
Returns:
the list of "in-flight" workflow instances

getActiveWorkflows

public java.util.List getActiveWorkflows(java.lang.String workflowDefinitionId)
Gets all "in-flight" active workflow instances of the specified Workflow Definition

Specified by:
getActiveWorkflows in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
Returns:
the list of "in-flight" workflow instances

getAllDefinitions

public java.util.List getAllDefinitions()
Gets all deployed Workflow Definitions (with all previous versions)

Specified by:
getAllDefinitions in interface WorkflowComponent
Returns:
the deployed (and previous) workflow definitions

getAllDefinitionsByName

public java.util.List getAllDefinitionsByName(java.lang.String workflowName)
Gets all (including previous) Workflow Definitions for the given unique name

Specified by:
getAllDefinitionsByName in interface WorkflowComponent
Parameters:
workflowName - workflow name e.g. jbpm$wf:review
Returns:
the deployed workflow definition (or null if not found)

getCompletedWorkflows

public java.util.List getCompletedWorkflows(java.lang.String workflowDefinitionId)
Gets all "in-flight" completed workflow instances of the specified Workflow Definition

Specified by:
getCompletedWorkflows in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
Returns:
the list of "in-flight" workflow instances

getDefinitionById

public WorkflowDefinition getDefinitionById(java.lang.String workflowDefinitionId)
Gets a Workflow Definition by unique Id

Specified by:
getDefinitionById in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
Returns:
the deployed workflow definition

getDefinitionByName

public WorkflowDefinition getDefinitionByName(java.lang.String workflowName)
Gets a Workflow Definition by unique name

Specified by:
getDefinitionByName in interface WorkflowComponent
Parameters:
workflowName - workflow name e.g. jbpm$wf:review
Returns:
the deployed workflow definition

getDefinitionImage

public byte[] getDefinitionImage(java.lang.String workflowDefinitionId)
Gets a graphical view of the Workflow Definition

Specified by:
getDefinitionImage in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
Returns:
graphical image of workflow definition

getDefinitions

public java.util.List getDefinitions()
Gets all deployed Workflow Definitions

Specified by:
getDefinitions in interface WorkflowComponent
Returns:
the deployed workflow definitions

getPathProperties

public java.util.Map getPathProperties(java.lang.String pathId)
Gets the properties associated with the specified path (and parent paths)

Specified by:
getPathProperties in interface WorkflowComponent
Parameters:
pathId - workflow path id
Returns:
map of path properties

getTaskDefinitions

public java.util.List getTaskDefinitions(java.lang.String workflowDefinitionId)
Gets the Task Definitions for the given Workflow Definition

Specified by:
getTaskDefinitions in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
Returns:
the deployed task definitions (or null if not found)

getTasksForWorkflowPath

public java.util.List getTasksForWorkflowPath(java.lang.String pathId)
Gets all Tasks associated with the specified path

Specified by:
getTasksForWorkflowPath in interface WorkflowComponent
Parameters:
pathId - the path id
Returns:
the list of associated tasks

getExecutionIdFromPath

protected java.lang.String getExecutionIdFromPath(java.lang.String workflowPath)

getTimers

public java.util.List getTimers(java.lang.String workflowId)
Gets all active timers for the specified workflow

Specified by:
getTimers in interface WorkflowComponent
Returns:
the list of active timers

getWorkflowById

public WorkflowInstance getWorkflowById(java.lang.String workflowId)
Gets a specific workflow instances

Specified by:
getWorkflowById in interface WorkflowComponent
Parameters:
workflowId - the id of the workflow to retrieve
Returns:
the workflow instance

getWorkflowPaths

public java.util.List getWorkflowPaths(java.lang.String workflowId)
Gets all Paths for the specified Workflow instance

Specified by:
getWorkflowPaths in interface WorkflowComponent
Parameters:
workflowId - workflow instance id
Returns:
the list of workflow paths

getWorkflows

public java.util.List getWorkflows(java.lang.String workflowDefinitionId)
Gets all "in-flight" workflow instances (both active and completed) of the specified Workflow Definition

Specified by:
getWorkflows in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
Returns:
the list of "in-flight" workflow instances

isDefinitionDeployed

public boolean isDefinitionDeployed(java.io.InputStream workflowDefinition,
                                    java.lang.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:
isDefinitionDeployed in interface WorkflowComponent
Parameters:
workflowDefinition - the definition to check
mimetype - the mimetype of the definition
Returns:
true => already deployed

signal

public WorkflowPath signal(java.lang.String pathId,
                           java.lang.String transitionId)
Signal the transition from one Workflow Node to another within an "in-flight" process.

Specified by:
signal in interface WorkflowComponent
Parameters:
pathId - the workflow path to signal on
Returns:
the updated workflow path

startWorkflow

public WorkflowPath startWorkflow(java.lang.String workflowDefinitionId,
                                  java.util.Map parameters)
Start a Workflow Instance

Specified by:
startWorkflow in interface WorkflowComponent
Parameters:
workflowDefinitionId - the workflow definition id
parameters - the initial set of parameters used to populate the "Start Task" properties
Returns:
the initial workflow path

undeployDefinition

public void undeployDefinition(java.lang.String workflowDefinitionId)
Undeploy an exisiting Workflow Definition TODO: Determine behaviour when "in-flight" workflow instances exist

Specified by:
undeployDefinition in interface WorkflowComponent
Parameters:
workflowDefinitionId - the id of the definition to undeploy

hasWorkflowImage

public boolean hasWorkflowImage(java.lang.String workflowInstanceId)
Determines if a graphical view of the workflow instance exists

Specified by:
hasWorkflowImage in interface WorkflowComponent
Parameters:
workflowInstanceId - the workflow instance id
Returns:
true if there is a workflow instance diagram available

getWorkflowImage

public java.io.InputStream getWorkflowImage(java.lang.String workflowInstanceId)
Gets a graphical view of the workflow instance

Specified by:
getWorkflowImage in interface WorkflowComponent
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

setNodeService

public void setNodeService(org.alfresco.service.cmr.repository.NodeService nodeService)
Sets the Node Service

Parameters:
nodeService -

setCompanyHomePath

public void setCompanyHomePath(java.lang.String companyHomePath)
Sets the Company Home Path

Parameters:
companyHomePath -

setCompanyHomeStore

public void setCompanyHomeStore(java.lang.String companyHomeStore)
Sets the Company Home Store

Parameters:
companyHomeStore -

setUnprotectedSearchService

public void setUnprotectedSearchService(org.alfresco.service.cmr.search.SearchService unprotectedSearchService)
Set the unprotected search service - so we can find the node ref for company home when folk do not have read access to company home TODO: review use with DC

Parameters:
unprotectedSearchService -

setPersonService

public void setPersonService(PersonService personService)
Sets the Person Service

Parameters:
personService -

setAuthorityManager

public void setAuthorityManager(WorkflowAuthorityManager authorityManager)
Sets the Authority DAO /**

Parameters:
authorityManager - the authorityManager to set

endTask

public WorkflowTask endTask(java.lang.String taskId,
                            java.lang.String transition)
End the Task (i.e. complete the task)

Specified by:
endTask in interface TaskComponent
Parameters:
taskId - the task id to end
Returns:
the updated task

getAssignedTasks

public java.util.List getAssignedTasks(java.lang.String authority,
                                       WorkflowTaskState state)
Gets all tasks assigned to the specified authority

Specified by:
getAssignedTasks in interface TaskComponent
Parameters:
authority - the authority
state - filter by specified workflow task state
Returns:
the list of assigned tasks

getPooledTasks

public java.util.List getPooledTasks(java.util.List authorities)
Gets the pooled tasks available to the specified authority

Specified by:
getPooledTasks in interface TaskComponent
Returns:
the list of pooled tasks

getTaskById

public WorkflowTask getTaskById(java.lang.String taskId)
Gets a Task by unique Id

Specified by:
getTaskById in interface TaskComponent
Parameters:
taskId - the task id
Returns:
the task

queryTasks

public java.util.List queryTasks(WorkflowTaskQuery query)
Query for tasks

Specified by:
queryTasks in interface TaskComponent
Parameters:
query - the filter by which tasks are queried
Returns:
the list of tasks matching the specified query

getStartTask

public WorkflowTask getStartTask(java.lang.String workflowInstanceId)
Gets all active timers for the specified workflow

Specified by:
getStartTask in interface TaskComponent
Returns:
the list of active timers

startTask

public WorkflowTask startTask(java.lang.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:
startTask in interface TaskComponent
Parameters:
taskId - the task to start
Returns:
the updated task

suspendTask

public WorkflowTask suspendTask(java.lang.String taskId)
Suspend the specified Task

Specified by:
suspendTask in interface TaskComponent
Returns:
the update task

updateTask

public WorkflowTask updateTask(java.lang.String taskId,
                               java.util.Map properties,
                               java.util.Map add,
                               java.util.Map remove)
Update the Properties and Associations of a Task

Specified by:
updateTask in interface TaskComponent
Parameters:
taskId - the task id to update
properties - 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

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(org.alfresco.repo.tenant.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(org.alfresco.service.namespace.NamespaceService namespaceService)
Parameters:
namespaceService - the namespaceService to set


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.