Workflow 通过web脚本推进Alfresco工作流

Workflow 通过web脚本推进Alfresco工作流,workflow,alfresco,Workflow,Alfresco,我有一份露天文件参考;我正在寻找的是一种通过Javascript访问附加到该文档的工作流并完成它(或将其推进到下一个转换)的方法 几乎web上的每个示例都显示了如何启动工作流,如果知道任务ID,我可以从dashlet调用task command processor(/alfresco/command/task/end/[/transition]),但如何从服务器端web脚本(仅从文档引用开始)执行相同的操作 必须有一种方法可以从文档中访问工作流并以编程方式管理它们。好吧,我仍然不知道如何转换,但

我有一份露天文件参考;我正在寻找的是一种通过Javascript访问附加到该文档的工作流并完成它(或将其推进到下一个转换)的方法

几乎web上的每个示例都显示了如何启动工作流,如果知道任务ID,我可以从dashlet调用task command processor(/alfresco/command/task/end/[/transition]),但如何从服务器端web脚本(仅从文档引用开始)执行相同的操作


必须有一种方法可以从文档中访问工作流并以编程方式管理它们。

好吧,我仍然不知道如何转换,但我发现了一些事情

首先,我可以访问文档参与的工作流并将其取消:

for each (workflow in document.activeWorkflows) {
    workflow.cancel();
}
然而,我仍然不太确定如何推进任务。我可以着手完成任务并用它做些事情:

var task = workflow.getTask(taskId);
task.endTask(transitionId);
…但我仍然不知道如何通过编程或通过Alfresco访问taskId或transitionId

编辑:算出了,transitionId实际上是工作流processdefinition XML中定义的转换名称:

<transition name="SomeTransitionId" to="end">


此外,要从工作流中获取任务列表,您可以通过路径(workflow.getpath())进行迭代,然后使用path.getTasks()从文档节点执行任务。

,如果您可以像这样发送当前任务的信号:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    for (var transitionKey in task.transitions)
    {
        if (task.transitions[transitionKey] == transitionId)
        {
            path.signal(transitionId);
            break;
        }
    }
}
var docNodeRef=”workspace://SpacesStore/";
var transitionId=“某些操作”;
var theDocument=search.findNode(docNodeRef);
foreach(document.activeWorkflows中的currWorkflow)
{
var path=currWorkflow.path[currWorkflow.path.length-1];
var task=path.tasks[0];
for(task.transitions中的var transitionKey)
{
if(task.transitions[transitionKey]==transitionId)
{
路径信号(transitionId);
打破
}
}
}
如果要发出默认转换的信号,可以跳过内部循环,只需执行以下操作:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    // Signal default transition
    path.signal(null);
}
var docNodeRef=”workspace://SpacesStore/";
var transitionId=“某些操作”;
var theDocument=search.findNode(docNodeRef);
foreach(document.activeWorkflows中的currWorkflow)
{
var path=currWorkflow.path[currWorkflow.path.length-1];
var task=path.tasks[0];
//信号缺省转换
路径信号(空);
}