代码之家  ›  专栏  ›  技术社区  ›  Zlatko

是否可以在Alfresco中获取文档所附加到的工作流列表

  •  5
  • Zlatko  · 技术社区  · 14 年前

    我试图在一个alfrescowebscript中获取文档所附加到的工作流列表,但我有点卡住了。

    我最初的问题是,我有一个文件列表,当前用户可能有分配给他的工作流和这些文档。所以,现在我想创建一个webscript,它将查找文件夹中的所有文档,并将文档列表与任务引用(如果当前用户有)组合在一起。

    那么,我可以得到一个特定文档附加到的工作流列表吗?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Zlatko    14 年前

    好吧,为了将来的参考,我找到了一种从javascript获取文档上所有活动工作流的方法:

    var nodeR = search.findNode('workspace://SpacesStore/'+doc.nodeRef);
        for each ( wf in nodeR.activeWorkflows )
        { 
            // Do whatever here.
        }
    
        2
  •  4
  •   Witek    12 年前

    下面我用alfrescojavascript发布了活动工作流(zladuric回答)和所有工作流的代码:

    /*global search, logger, workflow*/
    var getWorkflowsForDocument, getActiveWorkflowsForDocument;
    
    getWorkflowsForDocument = function () {
        "use strict";
        var doc, parentAssocs, packages, packagesLen, i, pack, props, workflowId, instance, isActive;
        //
        doc = search.findNode("workspace://SpacesStore/8847ea95-108d-4e08-90ab-34114e7b3977");
        parentAssocs = doc.getParentAssocs();
        packages = parentAssocs["{http://www.alfresco.org/model/bpm/1.0}packageContains"];
        //
        if (packages) {
            packagesLen = packages.length;
            //
            for (i = 0; i < packagesLen; i += 1) {
                pack = packages[i];
                props = pack.getProperties();
                workflowId = props["{http://www.alfresco.org/model/bpm/1.0}workflowInstanceId"];
                instance = workflow.getInstance(workflowId);
                /* instance is org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance */
                isActive = instance.isActive();
                logger.log(" + instance: " + workflowId + " (active: " + isActive + ")");
            }
        }
    };
    
    getActiveWorkflowsForDocument = function () {
        "use strict";
        var doc, activeWorkflows, activeWorkflowsLen, i, instance;
        //
        doc = search.findNode("workspace://SpacesStore/8847ea95-108d-4e08-90ab-34114e7b3977");
        activeWorkflows = doc.activeWorkflows;
        activeWorkflowsLen = activeWorkflows.length;
        for (i = 0; i < activeWorkflowsLen; i += 1) {
            instance = activeWorkflows[i];
            /* instance is org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance */
            logger.log(" - instance: " + instance.getId() + " (active: " + instance.isActive() + ")");
        }
    }
    
    
    getWorkflowsForDocument();
    getActiveWorkflowsForDocument();
    
        3
  •  4
  •   BenMorel Manish Pradhan    11 年前

    不幸的是javascript API没有公开所有的工作流函数。看起来获取附加到文档的工作流实例列表只能在Java(或Java支持的webscripts)中使用。

    List<WorkflowInstance> workflows = workflowService.getWorkflowsForContent(node.getNodeRef(), true);
    

    http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/web-client/source/java/org/alfresco/web/ui/repo/component/UINodeWorkflowInfo.java

    若要访问已分配任务的用户,则需要使用 获取工作流路径 WorkflowService的方法。