使用alfresco java脚本api或通过web脚本启动工作流

使用alfresco java脚本api或通过web脚本启动工作流,alfresco,Alfresco,我想以编程方式启动工作流。所以写了一个网络脚本 执行脚本: function startWorkflow() { var workflow = actions.create("start-workflow"); workflow.parameters.workflowName = "activiti$alfGroupReview"; workflow.parameters["bpm:workflowDescription"] = "Please review "; wor

我想以编程方式启动工作流。所以写了一个网络脚本

执行脚本:

function startWorkflow()
{
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$alfGroupReview";
   workflow.parameters["bpm:workflowDescription"] = "Please review ";
   workflow.parameters["bpm:groupAssignee"] = people.getGroup( "GROUP_site_collaborators");;
   var futureDate = new Date();
   futureDate.setDate(futureDate.getDate() + 7);
   workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   workflow.execute(document);
   return ;
}
对于上面的脚本,我得到错误“文档未定义”。我指的是网络和链接

因此,我将脚本更新为:

function startWorkflow()
{
var nodeRef = "workspace://SpacesStore/25285e6c-2995-49fe-aa50-1270cefc806a";
var docNode = search.findNode(nodeRef);
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$alfGroupReview";
   workflow.parameters["bpm:workflowDescription"] = "Please review ";
   workflow.parameters["bpm:groupAssignee"] = people.getGroup( "GROUP_aloha_collaborators");;
   var futureDate = new Date();
   futureDate.setDate(futureDate.getDate() + 7);
   workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   workflow.execute(docNode);
   return ;
}
这里,nodeRef:是文档库中文档的ref

现在新的错误是:

500 Description:    An error inside the HTTP server which prevented it from fulfilling the request.

Message:    06270056 Wrapped Exception (with status template): 06270273 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/justransform/startWF.get.js': null

Exception:  org.alfresco.scripts.ScriptException - 06270273 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/justransform/startWF.get.js': null

    org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:195)

提前感谢。

此代码在以下情况下运行良好:

  • docNode不为空。您应该为此添加一个检查
  • 你的团队存在。可能值得为此添加一张支票
  • 已存在指定ID的工作流。使用工作流控制台确认这一点。例如,您提供的ID不是 开箱即用的工作流程。如果是自定义的,可能您还没有部署 工作流已成功完成,或者您的ID不正确
另外,不要使用名为“工作流”的变量。Alfresco已经定义了一个称为“工作流”的根范围对象。说到这一点,可以随意使用来调用工作流,而不是操作。不过,两者都应该有效


我使用和工作流id“activiti$activitiParallelGroupReview”(以及将工作流变量更改为workflowAct后)成功运行了您的代码。

使用Alfresco工作流API。 注意:wfDocs保存文档节点数组:

// 2 days from now
var dueDate2d = new Date((new Date()).getTime() + 2*(24*60*60*1000));

// Start workflow
var wfdef = workflow.getDefinitionByName("activiti$alfGroupReview");
if (wfdef) {
    var wfparams = new Array();
    wfparams["bpm:workflowDescription"] = "Please review";
    wfparams["bpm:groupAssignee"] = people.getGroup( "GROUP_site_collaborators");
    wfparams['bpm:workflowDueDate'] = dueDate2d;
    wfparams['bpm:workflowPriority'] = 1;
    wfparams['wf:notifyMe'] = true;

    var wfpackage = workflow.createPackage();
    for each (var n in wfDocs)
        wfpackage.addNode(n);  
    var wfpath = wfdef.startWorkflow(wfpackage, wfparams);
    var tasks = wfpath.getTasks();
    for each (task in tasks)
        task.endTask(null);
}

是否确实无法将节点作为参数传递到脚本中?如果没有,您确定这是查找节点的正确方法吗?我可以将节点作为参数传递。但在测试过程中,我使用了硬编码的node ref。我对工作流非常陌生,甚至不知道nodeRef启动工作流的必要性。感谢回复如果您想执行审阅工作流,则需要节点ref来指定哪些人应该审阅!好的,明白了。所以如果我想启动临时工作流程。上述脚本需要做哪些更改??还是我需要别的办法?杰夫,谢谢你的回复。现在,我的脚本运行成功。我们可以在不传递docNode的情况下运行脚本吗。我正在尝试启动自定义工作流,它不需要docNode引用。我尝试在没有参数的情况下调用execute()方法,但每次都出现异常。完全可以运行没有文档的工作流。您正在运行的操作需要一个文档上下文。如果你不想那样做,就不要开始行动。改用工作流API。谢谢。现在如何将多个文档添加到工作流?我在工作流api中没有看到相关的方法。此外,我还尝试使用docNodes数组调用execute方法。但是没有运气。