mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Workflow JavaScript API
----------------------- Overview -------- The WorkflowManager bean is available in the root scripting scope. It provides a simplified object oriented API giving JavaScript scripts access to Workflow Service operations. Through the WorkflowManager object, scripts can do things like - get latest versions of all deployed workflow definitions - get assigned tasks, pooled tasks etc. - get workflow paths - get workflow instances - start a new workflow instance - delete a workflow instance, cancel a workflow instance - get all tasks belonging to a workflow path - end a task - etc. etc. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6479 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -140,4 +140,12 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean id="workflowScript" parent="baseJavaScriptExtension" class="org.alfresco.repo.workflow.jsapi.WorkflowManager">
|
||||||
|
<property name="extensionName">
|
||||||
|
<value>workflow</value>
|
||||||
|
</property>
|
||||||
|
<property name="workflowService">
|
||||||
|
<ref bean="WorkflowService"/>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
</beans>
|
</beans>
|
||||||
|
@@ -0,0 +1,173 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have received a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.workflow.jsapi;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
|
public class WorkflowDefinition
|
||||||
|
{
|
||||||
|
/** Workflow Service reference */
|
||||||
|
private WorkflowService workflowService;
|
||||||
|
|
||||||
|
/** Workflow definition id */
|
||||||
|
private final String id;
|
||||||
|
|
||||||
|
/** Workflow definition name */
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/** Workflow definition version */
|
||||||
|
private final String version;
|
||||||
|
|
||||||
|
/** Workflow definition title */
|
||||||
|
private final String title;
|
||||||
|
|
||||||
|
/** Workflow definition description */
|
||||||
|
private final String description;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new instance of <code>WorkflowDefinition</code> from a
|
||||||
|
* CMR workflow object model WorkflowDefinition instance
|
||||||
|
*
|
||||||
|
* @param cmrWorkflowDefinition an instance of WorkflowDefinition from the CMR workflow object model
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowDefinition(final org.alfresco.service.cmr.workflow.WorkflowDefinition cmrWorkflowDefinition,
|
||||||
|
final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = cmrWorkflowDefinition.id;
|
||||||
|
this.name = cmrWorkflowDefinition.name;
|
||||||
|
this.version = cmrWorkflowDefinition.version;
|
||||||
|
this.title = cmrWorkflowDefinition.title;
|
||||||
|
this.description = cmrWorkflowDefinition.description;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of WorkflowDefinition
|
||||||
|
*
|
||||||
|
* @param id workflow definition ID
|
||||||
|
* @param name name of workflow definition
|
||||||
|
* @param version version of workflow definition
|
||||||
|
* @param title title of workflow definition
|
||||||
|
* @param description description of workflow definition
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowDefinition(final String id, final String name, final String version,
|
||||||
|
final String title, final String description, WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.version = version;
|
||||||
|
this.title = title;
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value of 'id' property
|
||||||
|
*
|
||||||
|
* @return the id
|
||||||
|
*/
|
||||||
|
public String getId()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value of 'name' property
|
||||||
|
*
|
||||||
|
* @return the name
|
||||||
|
*/
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value of 'version' property
|
||||||
|
*
|
||||||
|
* @return the version
|
||||||
|
*/
|
||||||
|
public String getVersion()
|
||||||
|
{
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value of 'title' property
|
||||||
|
*
|
||||||
|
* @return the title
|
||||||
|
*/
|
||||||
|
public String getTitle()
|
||||||
|
{
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value of 'description' property
|
||||||
|
*
|
||||||
|
* @return the description
|
||||||
|
*/
|
||||||
|
public String getDescription()
|
||||||
|
{
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start workflow instance from workflow definition
|
||||||
|
*
|
||||||
|
* @param properties properties (map of key-value pairs used to populate the
|
||||||
|
* start task properties
|
||||||
|
* @return the initial workflow path
|
||||||
|
*/
|
||||||
|
public WorkflowPath startWorkflow(Map<QName, Serializable> properties)
|
||||||
|
{
|
||||||
|
org.alfresco.service.cmr.workflow.WorkflowPath cmrWorkflowPath =
|
||||||
|
workflowService.startWorkflow(id, properties);
|
||||||
|
return new WorkflowPath(cmrWorkflowPath, workflowService);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get active workflow instances of this workflow definition
|
||||||
|
*
|
||||||
|
* @return the active workflow instances spawned from this workflow definition
|
||||||
|
*/
|
||||||
|
public synchronized List<WorkflowInstance> getActiveInstances()
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowInstance> cmrWorkflowInstances = workflowService.getActiveWorkflows(this.id);
|
||||||
|
List<WorkflowInstance> activeInstances = new ArrayList<WorkflowInstance>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowInstance cmrWorkflowInstance : cmrWorkflowInstances)
|
||||||
|
{
|
||||||
|
activeInstances.add(new WorkflowInstance(cmrWorkflowInstance, workflowService));
|
||||||
|
}
|
||||||
|
|
||||||
|
return activeInstances;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,174 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have received a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.workflow.jsapi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class representing an active or in-flight workflow
|
||||||
|
*
|
||||||
|
* @author glenj
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WorkflowInstance
|
||||||
|
{
|
||||||
|
/** Workflow Manager reference */
|
||||||
|
private WorkflowService workflowService;
|
||||||
|
|
||||||
|
/** Workflow instance id */
|
||||||
|
private final String id;
|
||||||
|
|
||||||
|
/** Workflow instance description */
|
||||||
|
private final String description;
|
||||||
|
|
||||||
|
/** Flag this Workflow instance as active-'true' or complete-'false' */
|
||||||
|
private boolean active;
|
||||||
|
|
||||||
|
/** Workflow instance start date */
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
/** Workflow instance end date */
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of <code>WorkflowInstance</code>
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @param description
|
||||||
|
* @param active
|
||||||
|
* @param startDate
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowInstance(final String id, final String description, final Date startDate,
|
||||||
|
final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.description = description;
|
||||||
|
this.active = true;
|
||||||
|
this.startDate = startDate;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new instance of <code>WorkflowInstance</code> from a
|
||||||
|
* WorkflowInstance object from the CMR workflow object model
|
||||||
|
*
|
||||||
|
* @param cmrWorkflowInstance CMR workflow instance
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowInstance(final org.alfresco.service.cmr.workflow.WorkflowInstance
|
||||||
|
cmrWorkflowInstance, final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = cmrWorkflowInstance.id;
|
||||||
|
this.description = cmrWorkflowInstance.description;
|
||||||
|
this.active = cmrWorkflowInstance.active;
|
||||||
|
this.startDate = cmrWorkflowInstance.startDate;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all paths for the specified workflow instance
|
||||||
|
*/
|
||||||
|
public List<WorkflowPath> getPaths(final String instanceId)
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowPath> cmrPaths = workflowService.getWorkflowPaths(instanceId);
|
||||||
|
List<WorkflowPath> paths = new ArrayList<WorkflowPath>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowPath cmrPath : cmrPaths)
|
||||||
|
{
|
||||||
|
paths.add(new WorkflowPath(cmrPath, workflowService));
|
||||||
|
}
|
||||||
|
return paths;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for 'id' property
|
||||||
|
*
|
||||||
|
* @return the id
|
||||||
|
*/
|
||||||
|
public String getId()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for 'description' property
|
||||||
|
*
|
||||||
|
* @return the description
|
||||||
|
*/
|
||||||
|
public String getDescription()
|
||||||
|
{
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get state for 'active' property
|
||||||
|
*
|
||||||
|
* @return the active
|
||||||
|
*/
|
||||||
|
public boolean isActive()
|
||||||
|
{
|
||||||
|
return active;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for 'startDate' property
|
||||||
|
*
|
||||||
|
* @return the startDate
|
||||||
|
*/
|
||||||
|
public Date getStartDate()
|
||||||
|
{
|
||||||
|
return startDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for 'endDate' property
|
||||||
|
*
|
||||||
|
* @return the endDate
|
||||||
|
*/
|
||||||
|
public Date getEndDate()
|
||||||
|
{
|
||||||
|
return endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel workflow instance
|
||||||
|
*/
|
||||||
|
public void cancel()
|
||||||
|
{
|
||||||
|
workflowService.cancelWorkflow(this.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete workflow instance
|
||||||
|
*/
|
||||||
|
public void delete()
|
||||||
|
{
|
||||||
|
workflowService.deleteWorkflow(this.id);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have received a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.workflow.jsapi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.repo.processor.BaseProcessorExtension;
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowTaskState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Workflow Manager serves as the main entry point for scripts
|
||||||
|
* to create and interact with workflows.
|
||||||
|
* It is made available in the root scripting scope
|
||||||
|
*
|
||||||
|
* @author glenj
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WorkflowManager extends BaseProcessorExtension
|
||||||
|
{
|
||||||
|
/** Workflow Service to make calls to workflow service API */
|
||||||
|
private WorkflowService workflowService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get deployed workflow definition by ID
|
||||||
|
*
|
||||||
|
* @param id the workflow definition ID
|
||||||
|
* @return the workflow definition matching the given ID
|
||||||
|
*/
|
||||||
|
public WorkflowDefinition getDefinition(String id)
|
||||||
|
{
|
||||||
|
org.alfresco.service.cmr.workflow.WorkflowDefinition cmrWorkflowDefinition =
|
||||||
|
workflowService.getDefinitionById(id);
|
||||||
|
return new WorkflowDefinition(cmrWorkflowDefinition, workflowService);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the workflow service property
|
||||||
|
*
|
||||||
|
* @param workflowService the workflow service
|
||||||
|
*/
|
||||||
|
public void setWorkflowService(final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get assigned tasks
|
||||||
|
*
|
||||||
|
* @param authority the authority
|
||||||
|
* @param state filter by specified workflow task state
|
||||||
|
* @return the list of assigned tasks
|
||||||
|
*/
|
||||||
|
public List<WorkflowTask> getAssignedTasks(final String authority, final WorkflowTaskState state)
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowTask> cmrAssignedTasks = workflowService.getAssignedTasks(authority, state);
|
||||||
|
List<WorkflowTask> assignedTasks = new ArrayList<WorkflowTask>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowTask cmrTask : cmrAssignedTasks)
|
||||||
|
{
|
||||||
|
assignedTasks.add(new WorkflowTask(cmrTask, workflowService));
|
||||||
|
}
|
||||||
|
|
||||||
|
return assignedTasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Workflow Instance by ID
|
||||||
|
*
|
||||||
|
* @param workflowInstanceID ID of the workflow instance to retrieve
|
||||||
|
* @return the workflow instance for the given ID
|
||||||
|
*/
|
||||||
|
public WorkflowInstance getInstance(String workflowInstanceID)
|
||||||
|
{
|
||||||
|
org.alfresco.service.cmr.workflow.WorkflowInstance cmrWorkflowInstance = workflowService.getWorkflowById(workflowInstanceID);
|
||||||
|
return new WorkflowInstance(cmrWorkflowInstance, workflowService);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get pooled tasks
|
||||||
|
*
|
||||||
|
* @param authority the authority
|
||||||
|
* @param state filter by specified workflow task state
|
||||||
|
* @return the list of assigned tasks
|
||||||
|
*/
|
||||||
|
public List<WorkflowTask> getPooledTasks(final String authority, final WorkflowTaskState state)
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowTask> cmrPooledTasks = workflowService.getPooledTasks(authority);
|
||||||
|
List<WorkflowTask> pooledTasks = new ArrayList<WorkflowTask>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowTask cmrPooledTask : cmrPooledTasks)
|
||||||
|
{
|
||||||
|
pooledTasks.add(new WorkflowTask(cmrPooledTask, workflowService));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pooledTasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get task by id
|
||||||
|
*
|
||||||
|
* @param id task id
|
||||||
|
* @return the task (null if not found)
|
||||||
|
*/
|
||||||
|
public WorkflowTask getTask(String id)
|
||||||
|
{
|
||||||
|
org.alfresco.service.cmr.workflow.WorkflowTask cmrWorkflowTask = workflowService.getTaskById(id);
|
||||||
|
return new WorkflowTask(cmrWorkflowTask, workflowService);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the latest versions of the deployed, workflow definitions
|
||||||
|
*
|
||||||
|
* @return the latest versions of the deployed workflow definitions
|
||||||
|
*/
|
||||||
|
public List<WorkflowDefinition> getLatestDefinitions()
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowDefinition> cmrDefinitions = workflowService.getDefinitions();
|
||||||
|
List<WorkflowDefinition> workflowDefs = new ArrayList<WorkflowDefinition>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowDefinition cmrDefinition : cmrDefinitions)
|
||||||
|
{
|
||||||
|
workflowDefs.add(new WorkflowDefinition(cmrDefinition, workflowService));
|
||||||
|
}
|
||||||
|
|
||||||
|
return workflowDefs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all versions of the deployed workflow definitions
|
||||||
|
*
|
||||||
|
* @return all versions of the deployed workflow definitions
|
||||||
|
*/
|
||||||
|
public List<WorkflowDefinition> getAllDefinitions()
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowDefinition> cmrDefinitions = workflowService.getAllDefinitions();
|
||||||
|
List<WorkflowDefinition> workflowDefs = new ArrayList<WorkflowDefinition>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowDefinition cmrDefinition : cmrDefinitions)
|
||||||
|
{
|
||||||
|
workflowDefs.add(new WorkflowDefinition(cmrDefinition, workflowService));
|
||||||
|
}
|
||||||
|
|
||||||
|
return workflowDefs;
|
||||||
|
}
|
||||||
|
}
|
156
source/java/org/alfresco/repo/workflow/jsapi/WorkflowPath.java
Normal file
156
source/java/org/alfresco/repo/workflow/jsapi/WorkflowPath.java
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have received a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.workflow.jsapi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowNode;
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class that represents a path of execution through a workflow.
|
||||||
|
*
|
||||||
|
* A simple workflow consists of only one root path of execution.
|
||||||
|
* That path may branch at some subsequent transition, so that execution
|
||||||
|
* follows multiple paths through the workflow.
|
||||||
|
*
|
||||||
|
* @author glenj
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WorkflowPath
|
||||||
|
{
|
||||||
|
/** Unique ID for workflow path */
|
||||||
|
private final String id;
|
||||||
|
|
||||||
|
/** State of workflow path 'true':active 'false':complete */
|
||||||
|
private boolean active;
|
||||||
|
|
||||||
|
/** Workflow node that the path has reached */
|
||||||
|
private WorkflowNode node;
|
||||||
|
|
||||||
|
/** Workflow instance path is part of */
|
||||||
|
private WorkflowInstance instance;
|
||||||
|
|
||||||
|
/** Workflow Service reference */
|
||||||
|
private WorkflowService workflowService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of a workflow path
|
||||||
|
*
|
||||||
|
* @param id workflow path ID
|
||||||
|
* @param node workflow node the path has reached
|
||||||
|
* @param instance instance to which the workflow path belongs
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowPath(final String id, final WorkflowNode node, final WorkflowInstance instance,
|
||||||
|
final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.node = node;
|
||||||
|
this.instance = instance;
|
||||||
|
this.active = false;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of WorkflowPath from an instance of the WorkflowPath
|
||||||
|
* class provided by the CMR workflow model
|
||||||
|
*
|
||||||
|
* @param cmrWorkflowPath an instance of WorkflowPath from the CMR
|
||||||
|
* workflow object model
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowPath(final org.alfresco.service.cmr.workflow.WorkflowPath cmrWorkflowPath,
|
||||||
|
final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = cmrWorkflowPath.id;
|
||||||
|
this.node = cmrWorkflowPath.node;
|
||||||
|
this.instance = new WorkflowInstance(cmrWorkflowPath.instance, workflowService);
|
||||||
|
this.active = cmrWorkflowPath.active;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of a workflow path from
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>id</code> property
|
||||||
|
*
|
||||||
|
* @return the id
|
||||||
|
*/
|
||||||
|
public String getId()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>active</code> property
|
||||||
|
*
|
||||||
|
* @return the active
|
||||||
|
*/
|
||||||
|
public boolean isActive()
|
||||||
|
{
|
||||||
|
return active;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>node</code> property
|
||||||
|
*
|
||||||
|
* @return the node
|
||||||
|
*/
|
||||||
|
public WorkflowNode getNode()
|
||||||
|
{
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>instance</code> property
|
||||||
|
*
|
||||||
|
* @return the instance
|
||||||
|
*/
|
||||||
|
public WorkflowInstance getInstance()
|
||||||
|
{
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all tasks associated with this workflow path
|
||||||
|
*
|
||||||
|
* @return all the tasks associated with this workflow path instance
|
||||||
|
*/
|
||||||
|
public List<WorkflowTask> getTasks()
|
||||||
|
{
|
||||||
|
List<org.alfresco.service.cmr.workflow.WorkflowTask> cmrTasks = workflowService.getTasksForWorkflowPath(id);
|
||||||
|
List<WorkflowTask> tasks = new ArrayList<WorkflowTask>();
|
||||||
|
for (org.alfresco.service.cmr.workflow.WorkflowTask cmrTask : cmrTasks)
|
||||||
|
{
|
||||||
|
tasks.add(new WorkflowTask(cmrTask, workflowService));
|
||||||
|
}
|
||||||
|
|
||||||
|
return tasks;
|
||||||
|
}
|
||||||
|
}
|
213
source/java/org/alfresco/repo/workflow/jsapi/WorkflowTask.java
Normal file
213
source/java/org/alfresco/repo/workflow/jsapi/WorkflowTask.java
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have received a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.workflow.jsapi;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents a workflow task (an instance of a workflow
|
||||||
|
* task definition)
|
||||||
|
*
|
||||||
|
* @author glenj
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WorkflowTask
|
||||||
|
{
|
||||||
|
/** Unique ID for workflow task */
|
||||||
|
private final String id;
|
||||||
|
|
||||||
|
/** Name for workflow task */
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/** Title for workflow task */
|
||||||
|
private final String title;
|
||||||
|
|
||||||
|
/** Description of workflow task */
|
||||||
|
private final String description;
|
||||||
|
|
||||||
|
/** Properties (key/value pairs) */
|
||||||
|
private Map<QName, Serializable> properties;
|
||||||
|
|
||||||
|
/** Whether task is complete or not - 'true':complete, 'false':in-progress */
|
||||||
|
private boolean complete = false;
|
||||||
|
|
||||||
|
/** Whether task is pooled or not */
|
||||||
|
private boolean pooled = false;
|
||||||
|
|
||||||
|
/** Workflow Service reference */
|
||||||
|
private WorkflowService workflowService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of a workflow task (instance of a workflow task definition)
|
||||||
|
*
|
||||||
|
* @param id workflow task ID
|
||||||
|
* @param name workflow task name
|
||||||
|
* @param title workflow task title
|
||||||
|
* @param description workflow task description
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowTask(final String id, final String name, final String title, final String description,
|
||||||
|
final WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.title = title;
|
||||||
|
this.description = description;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of a workflow task from a WorkflowTask from the CMR
|
||||||
|
* workflow object model
|
||||||
|
*
|
||||||
|
* @param cmrWorkflowTask an instance of WorkflowTask from CMR workflow object model
|
||||||
|
* @param workflowService reference to the Workflow Service
|
||||||
|
*/
|
||||||
|
public WorkflowTask(final org.alfresco.service.cmr.workflow.WorkflowTask cmrWorkflowTask,
|
||||||
|
WorkflowService workflowService)
|
||||||
|
{
|
||||||
|
this.id = cmrWorkflowTask.id;
|
||||||
|
this.name = cmrWorkflowTask.name;
|
||||||
|
this.title = cmrWorkflowTask.title;
|
||||||
|
this.description = cmrWorkflowTask.description;
|
||||||
|
this.workflowService = workflowService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>id</code> property
|
||||||
|
*
|
||||||
|
* @return the id
|
||||||
|
*/
|
||||||
|
public String getId()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>name</code> property
|
||||||
|
*
|
||||||
|
* @return the name
|
||||||
|
*/
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>title</code> property
|
||||||
|
*
|
||||||
|
* @return the title
|
||||||
|
*/
|
||||||
|
public String getTitle()
|
||||||
|
{
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>description</code> property
|
||||||
|
*
|
||||||
|
* @return the description
|
||||||
|
*/
|
||||||
|
public String getDescription()
|
||||||
|
{
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the <code>properties</code> property
|
||||||
|
*
|
||||||
|
* @return the properties
|
||||||
|
*/
|
||||||
|
public Map<QName, Serializable> getProperties()
|
||||||
|
{
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the value of the <code>properties</code> property
|
||||||
|
*
|
||||||
|
* @param properties the properties to set
|
||||||
|
*/
|
||||||
|
public void setProperties(Map<QName, Serializable> properties)
|
||||||
|
{
|
||||||
|
this.properties = properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the task is complete
|
||||||
|
* 'true':complete, 'false':in-progress
|
||||||
|
*
|
||||||
|
* @return the complete
|
||||||
|
*/
|
||||||
|
public boolean isComplete()
|
||||||
|
{
|
||||||
|
return complete;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether the task is complete or in-progress
|
||||||
|
* 'true':complete, 'false':in-progress
|
||||||
|
*
|
||||||
|
* @param complete the complete to set
|
||||||
|
*/
|
||||||
|
public void setComplete(boolean complete)
|
||||||
|
{
|
||||||
|
this.complete = complete;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether this task is pooled or not
|
||||||
|
*
|
||||||
|
* @return 'true': task is pooled, 'false': task is not pooled
|
||||||
|
*/
|
||||||
|
public boolean isPooled()
|
||||||
|
{
|
||||||
|
return pooled;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether task is pooled('true') or not('false')
|
||||||
|
*
|
||||||
|
* @param pooled the pooled to set
|
||||||
|
*/
|
||||||
|
public void setPooled(boolean pooled)
|
||||||
|
{
|
||||||
|
this.pooled = pooled;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* End the task
|
||||||
|
*
|
||||||
|
* @param transition transition to end the task for
|
||||||
|
*/
|
||||||
|
public void endTask(String transitionId)
|
||||||
|
{
|
||||||
|
workflowService.endTask(this.id, transitionId);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user