题
我有一个露天文档引用;我要找的是访问该文件附有工作流和通过JavaScript完成它(或者前进到下一个过渡)的方式。
几乎在网络上的每个实例示出了如何启动工作流程,并从dashlet我可以调用任务命令处理器(/露天/命令/任务/结束/ [/过渡]),如果我知道该任务ID,但如何做我从服务器端Web脚本只从文档参考启动同样的事情?
有必须从文件访问的工作流和编程管理它们的方法。
解决方案
从一个文件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);
}
其他提示
好了,我还是不知道如何转型,但也有几件事情,我发现了。
首先,我可以访问工作流程文档中参与并取消:
for each (workflow in document.activeWorkflows) {
workflow.cancel();
}
不过,我还是不太清楚如何进步的任务。我可以得到任务,用它做什么:
var task = workflow.getTask(taskId);
task.endTask(transitionId);
...但我仍然不知道如何去任务id或transitionId编程方式或通过露天。
编辑:计算出来,如在工作流processdefinition XML定义transitionId实际上转换名:
<transition name="SomeTransitionId" to="end">
此外,为了获得从工作流任务可以通过路径遍历的列表(workflow.getPaths()),然后通过与path.getTasks任务()。
不隶属于 StackOverflow