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

Zla*_*tko 5 javascript java alfresco

我正在尝试在Alfresco webscript中获取文档附加到的工作流列表,但我有点卡住了.

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

我知道"工作流"对象,它为我提供了当前用户的工作流列表,但这不是我的问题的解决方案.

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

Zla*_*tko 5

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

var nodeR = search.findNode('workspace://SpacesStore/'+doc.nodeRef);
    for each ( wf in nodeR.activeWorkflows )
    { 
        // Do whatever here.
    }
Run Code Online (Sandbox Code Playgroud)


小智 5

我使用 packageContains 关联来查找文档的工作流程。下面我在 Alfresco JavaScript 中发布了用于活动工作流程(如 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();
Run Code Online (Sandbox Code Playgroud)