我有Alfresco文件参考;我正在寻找的是一种访问附加到该文档的工作流程并通过Javascript完成它(或将其推进到下一个转换)的方法。
网上几乎每个例子都显示了如何启动工作流程,如果我知道任务ID,我可以从dashlet调用任务命令处理器(/ alfresco / command / task / end / [/ transition]),但是如何做我从服务器端的Web脚本开始,只从文档引用开始做同样的事情吗?
必须有一种方法可以从文档访问工作流并以编程方式管理它们。
答案 0 :(得分: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);
}
答案 1 :(得分:0)
好吧,我仍然不知道如何过渡,但我发现了一些事情。
首先,我可以访问工作流文档参与并取消它:
for each (workflow in document.activeWorkflows) {
workflow.cancel();
}
但是,我仍然不太确定如何推进任务。我可以完成任务并用它做点什么:
var task = workflow.getTask(taskId);
task.endTask(transitionId);
...但我仍然不知道如何以编程方式或通过Alfresco获取taskId或transitionId。
编辑:想通了,transitionId实际上是工作流程定义XML中定义的转换名称:
<transition name="SomeTransitionId" to="end">
此外,要从工作流中获取任务列表,您可以遍历路径(workflow.getPaths()),然后遍历使用path.getTasks()的任务。