0

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

几乎网络上的每个示例都显示了如何启动工作流,如果我知道任务 ID,我可以从 dashlet 调用任务命令处理器 (/alfresco/command/task/end/[/transition]),但我该怎么做仅从文档参考开始的服务器端 Web 脚本的相同内容?

必须有一种方法可以从文档访问工作流并以编程方式对其进行管理。

4

2 回答 2

1

从文档 nodeRef 中,您可以像这样发出当前任务的信号:

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/<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);
}
于 2010-06-18T20:33:11.370 回答
0

好吧,我仍然不知道如何过渡,但我发现了一些事情。

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

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.getPaths()),然后使用 path.getTasks() 遍历任务。

于 2010-04-08T19:12:47.333 回答