From ffda0d4f499ffebd943e43bbd225129bddab91e5 Mon Sep 17 00:00:00 2001 From: Mike Hatfield Date: Fri, 15 Aug 2008 16:53:20 +0000 Subject: [PATCH] ScriptNode activeWorkflows getter. Workflow JS API constructors made public. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10386 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/jscript/ScriptNode.java | 38 ++++++++++++++++++- .../jscript/JscriptWorkflowDefinition.java | 4 +- .../jscript/JscriptWorkflowInstance.java | 4 +- .../workflow/jscript/JscriptWorkflowNode.java | 4 +- .../workflow/jscript/JscriptWorkflowPath.java | 4 +- .../workflow/jscript/JscriptWorkflowTask.java | 4 +- .../jscript/JscriptWorkflowTransition.java | 4 +- 7 files changed, 49 insertions(+), 13 deletions(-) diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java index f33796ea24..d0c65d5bea 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptNode.java +++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java @@ -48,6 +48,7 @@ import org.alfresco.repo.thumbnail.ThumbnailDetails; import org.alfresco.repo.thumbnail.ThumbnailRegistry; import org.alfresco.repo.thumbnail.script.ScriptThumbnail; import org.alfresco.repo.version.VersionModel; +import org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance; import org.alfresco.scripts.ScriptException; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.Action; @@ -74,6 +75,8 @@ import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.VersionHistory; import org.alfresco.service.cmr.version.VersionType; +import org.alfresco.service.cmr.workflow.WorkflowInstance; +import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; @@ -133,7 +136,7 @@ public class ScriptNode implements Serializable, Scopeable /** The target associations from this node */ private ScriptableQNameMap targetAssocs = null; - /** The source assoications to this node */ + /** The source associations to this node */ private ScriptableQNameMap sourceAssocs = null; /** The child associations for this node */ @@ -147,6 +150,9 @@ public class ScriptNode implements Serializable, Scopeable /** The versions of this node */ private Scriptable versions = null; + + /** The active workflows acting on this node */ + private Scriptable activeWorkflows = null; protected ServiceRegistry services = null; private NodeService nodeService = null; @@ -2269,6 +2275,35 @@ public class ScriptNode implements Serializable, Scopeable } return nodes; } + + + // ------------------------------------------------------------------------------ + // Workflow methods + + /** + * Get active workflow instances this node belongs to + * + * @return the active workflow instances this node belongs to + */ + public Scriptable getActiveWorkflows() + { + if (this.activeWorkflows == null) + { + WorkflowService workflowService = this.services.getWorkflowService(); + + List workflowInstances = workflowService.getWorkflowsForContent(this.nodeRef, true); + Object[] jsWorkflowInstances = new Object[workflowInstances.size()]; + int index = 0; + for (WorkflowInstance workflowInstance : workflowInstances) + { + jsWorkflowInstances[index++] = new JscriptWorkflowInstance(workflowInstance, this.services, this.scope); + } + this.activeWorkflows = Context.getCurrentContext().newArray(this.scope, jsWorkflowInstances); + } + + return this.activeWorkflows; + } + // ------------------------------------------------------------------------------ // Helper methods @@ -2380,6 +2415,7 @@ public class ScriptNode implements Serializable, Scopeable this.isContainer = null; this.parent = null; this.primaryParentAssoc = null; + this.activeWorkflows = null; } /** diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowDefinition.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowDefinition.java index dac5e91b19..8ac4485617 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowDefinition.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowDefinition.java @@ -78,7 +78,7 @@ public class JscriptWorkflowDefinition implements Serializable * @param serviceRegistry reference to the Service Registry * @param scope the root scripting scope for this object */ - JscriptWorkflowDefinition(final WorkflowDefinition cmrWorkflowDefinition, + public JscriptWorkflowDefinition(final WorkflowDefinition cmrWorkflowDefinition, final ServiceRegistry serviceRegistry, final Scriptable scope) { this.id = cmrWorkflowDefinition.id; @@ -101,7 +101,7 @@ public class JscriptWorkflowDefinition implements Serializable * @param serviceRegistry reference to the Service Registry * @param scope root scripting scope for this object */ - JscriptWorkflowDefinition(final String id, final String name, final String version, + public JscriptWorkflowDefinition(final String id, final String name, final String version, final String title, final String description, ServiceRegistry serviceRegistry, final Scriptable scope) { diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowInstance.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowInstance.java index e63a0edfc9..a7fc963f17 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowInstance.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowInstance.java @@ -77,7 +77,7 @@ public class JscriptWorkflowInstance implements Serializable * @param serviceRegistry Service Registry instance * @param scope the root scripting scope for this object */ - JscriptWorkflowInstance(final String id, final String description, final Date startDate, + public JscriptWorkflowInstance(final String id, final String description, final Date startDate, final ServiceRegistry serviceRegistry, final Scriptable scope) { this.id = id; @@ -97,7 +97,7 @@ public class JscriptWorkflowInstance implements Serializable * @param serviceRegistry Service Registry instance * @param scope the root scripting scope for this object */ - JscriptWorkflowInstance(final WorkflowInstance + public JscriptWorkflowInstance(final WorkflowInstance cmrWorkflowInstance, final ServiceRegistry serviceRegistry, final Scriptable scope) { this.id = cmrWorkflowInstance.id; diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowNode.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowNode.java index b6e98468e4..1ad50fbcbf 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowNode.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowNode.java @@ -73,7 +73,7 @@ public class JscriptWorkflowNode implements Serializable * @param scope root scripting scope for this object * @param serviceRegistry service registry object */ - JscriptWorkflowNode(String name, String title, String description, + public JscriptWorkflowNode(String name, String title, String description, boolean isTaskNode, ArrayList transitions, Scriptable scope, ServiceRegistry serviceRegistry) { @@ -96,7 +96,7 @@ public class JscriptWorkflowNode implements Serializable * @param scope root scripting scope for this newly instantiated object * @param serviceRegistry service registry object */ - JscriptWorkflowNode(WorkflowNode workflowNode, Scriptable scope, ServiceRegistry serviceRegistry) + public JscriptWorkflowNode(WorkflowNode workflowNode, Scriptable scope, ServiceRegistry serviceRegistry) { this.name = workflowNode.name; this.title = workflowNode.title; diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowPath.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowPath.java index 3b7730f0e9..e67db51d9a 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowPath.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowPath.java @@ -77,7 +77,7 @@ public class JscriptWorkflowPath implements Serializable * @param serviceRegistry Service Registry object * @param scope the root scripting scope for this object */ - JscriptWorkflowPath(final String id, final WorkflowNode node, final JscriptWorkflowInstance instance, + public JscriptWorkflowPath(final String id, final WorkflowNode node, final JscriptWorkflowInstance instance, final ServiceRegistry serviceRegistry, final Scriptable scope) { this.id = id; @@ -97,7 +97,7 @@ public class JscriptWorkflowPath implements Serializable * @param serviceRegistry Service Registry object * @param scope the root scripting scope for this object */ - JscriptWorkflowPath(final WorkflowPath cmrWorkflowPath, + public JscriptWorkflowPath(final WorkflowPath cmrWorkflowPath, final ServiceRegistry serviceRegistry, Scriptable scope) { this.id = cmrWorkflowPath.id; diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java index 23ba51d8f2..081f65f2ad 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java @@ -77,7 +77,7 @@ public class JscriptWorkflowTask implements Serializable * @param description workflow task description * @param serviceRegistry Service Registry object */ - JscriptWorkflowTask(final String id, final String name, final String title, + public JscriptWorkflowTask(final String id, final String name, final String title, final String description, final ServiceRegistry serviceRegistry, final ScriptableQNameMap properties) { @@ -96,7 +96,7 @@ public class JscriptWorkflowTask implements Serializable * @param cmrWorkflowTask an instance of WorkflowTask from CMR workflow object model * @param serviceRegistry Service Registry object */ - JscriptWorkflowTask(final WorkflowTask cmrWorkflowTask, + public JscriptWorkflowTask(final WorkflowTask cmrWorkflowTask, final ServiceRegistry serviceRegistry) { this.id = cmrWorkflowTask.id; diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTransition.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTransition.java index 470e33c9ec..ad2f76c5d6 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTransition.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTransition.java @@ -49,7 +49,7 @@ public class JscriptWorkflowTransition implements Serializable * @param title Workflow transition title * @param description Workflow transition description */ - JscriptWorkflowTransition(String id, String title, String description) + public JscriptWorkflowTransition(String id, String title, String description) { this.id = id; this.title = title; @@ -63,7 +63,7 @@ public class JscriptWorkflowTransition implements Serializable * @param transition CMR WorkflowTransition object from which * to create a new instance of this class */ - JscriptWorkflowTransition(WorkflowTransition transition) + public JscriptWorkflowTransition(WorkflowTransition transition) { this.id = transition.id; this.title = transition.title;