如何从相关文档中获取工作流的状态? ,关于Alfresco的文件夹规则脚本

时间:2018-09-07 08:01:27

标签: javascript alfresco alfresco-share alfresco-webscripts

我想在“工作文件夹”和“进行中的文件夹”之间移动文档  根据我启动Alfresco工作流程时工作流程的状态。这些文件夹是我在Alfresco网站中创建的。

下面的文件夹规则脚本代码无法通过我尝试的工作。然后,您知道什么,如何从相关文档中获取工作流的状态?我想要更新脚本。

var parentFolder = document.parent;
var WFstatus = workflow.parameters["bpm:status"];
if (WFstatus.indexOf('In progress') != -1){
    var dest = parentFolder.parent.childByNamePath("2.InProgress");
    document.move(dest);
}

露天版本:社区版5.2和企业版5.2.4

最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

请确认,我的理解。

您是否要根据正确的工作流程状态在两个文件夹(“工作文件夹”到“进行中的文件夹”之间)移动文件?

工作流状态可以是“活动(正在运行)”和“已完成”,但是当前任务的状态可以为“进行中”。

这是Javascript控制台代码,用于获取所选文档的工作流程和任务状态。

//Get the parents for the document node.
//If the document is attached to the workflow, then there will be multiple parents.
for(var x=0;x<document.parents.length;x++)
{
    var t = document.parents[x];
    var workflowNode;
    //Pick the bpm:package node. 
    if (t.type == "{http://www.alfresco.org/model/bpm/1.0}package")
    {
        workflowNode = t;
        logger.log(t);
        //Get the workflow instance Id
        var wfId = t.properties["bpm:workflowInstanceId"];
        logger.log(wfId)

        //get the workflow instance
        var rwf = workflow.getInstance(wfId);
        logger.log(rwf);
        logger.log("Workflow status : " + rwf.active);


        for (var pid in rwf.paths) 
        {
           var path = rwf.paths[pid];
           //Get the tasks and its status
           for (var tid in path.tasks)
           {
             var task = path.tasks[tid];
             logger.log(task);
             logger.log("Task id : "  +  task.id +" task status :" + task.properties["bpm:status"])
           }
         }
    }   

}
print("\n");
print("\n");
print("\n");
print("\n");

Sample Code

拥有任务状态后,您应该可以在文件夹之间移动文件。

希望这对您有帮助!