错误通过JavaScript启动工作流

Error Start workflow via JavaScript

本文关键字:启动 工作流 JavaScript 错误      更新时间:2023-09-26

我无法通过Web脚本启动工作流。

我创建了workflow.get.js:文件

var nodeId = args.nodeid; //fdadc86f-d996-472d-8267-850a63573b02
var workflowName = args.w; //jbpm$wf:adhoc
var document = search.findNode("workspace://SpacesStore/" + nodeId); 
var workflowAction = actions.create("start-workflow"); 
workflowAction.parameters.workflowName = workflowName; 
workflowAction.parameters["bpm:workflowDescription"] = "Please edit: " + document.name; 
workflowAction.parameters["bpm:assignees"] = [people.getPerson("admin"), people.getPerson("admin")];
var futureDate = new Date(); 
futureDate.setDate(futureDate.getDate() + 7); 
workflowAction.parameters["bpm:workflowDueDate"] = futureDate; 
workflowAction.execute(document);

workflow.get.desc.xml

  <webscript>
  <shortname>Start Workflow</shortname>
  <description>Testando Start Workflow</description>
  <url>/workflow?nodeid={idfile}&amp;&amp;w={namewf}</url>
  <format default="html">argument</format>
  <authentication>admin</authentication>
  <transaction>required</transaction>
</webscript>

和workflow.get.html.ftl

The ${args.w} started!

当我点击http://localhost:8080/alfresco/service/workflow?nodeId=fdadc86f-d996-472d-8267-850a63573b02&w=jbpm$wf:adhoc返回错误

06190076包装异常(带状态模板):06190474无法执行脚本'/triggerworkflow.get.js(在存储库中workspace://SpacesStore/CompanyHome/Data Dictionary/Web Scripts)':06190473找不到方法org.alfresco.repo.jscript.ScriptAction.execute(org.mozilla.javascript.Undefine)。(在存储库存储中workspace://SpacesStore/Company主页/数据字典/Web脚本)#11)

异常:org.alfresco.error.AlfrescoRuntimeException-08200041类型错误:无法从null读取属性"name"(workspace://SpacesStore/Company主页/数据字典/Web脚本扩展/Workflow/Workflow.get.js#7)

org.alfresco.repo.jscript.RinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:469)

异常:org.alfresco.scripts.ScriptException-08200042无法执行脚本'/Workflow/Workflow.get.js(在存储库存储中workspace://SpacesStore/Company主页/数据字典/Web脚本扩展)':08200041类型错误:无法读取属性"name"从null(workspace://SpacesStore/Company主页/数据字典/Web脚本扩展/Workflow/Workflow.get.js#7)

org.alfresco.repo.jscript.RinoScriptProcessor.execute(RhinoScriptProcessor.java:183)

异常:org.springframework.extensions.webscripts.WebScriptException-08200035包装异常(带状态模板):08200042无法执行脚本'/Workflow/Workflow.get.js(在存储库中workspace://SpacesStore/Company主页/数据字典/Web脚本扩展)':08200041类型错误:无法从null读取属性"name"(workspace://SpacesStore/Company主页/数据字典/Web脚本扩展/工作流/workflow.get.js#7)

org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebService.java:742)有人帮我吗?

您的问题是在一个地方调用参数,在另一个地方则调用不同的参数:

var nodeId = args.nodeid; //fdadc86f-d996-472d-8267-850a63573b02
var workflowName = args.w; //jbpm$wf:adhoc

<url>/workflow?nodeid={idfile}&amp;&amp;w={namewf}</url>

你需要让他们同意!我建议,考虑到你似乎已经在客户端使用的URL,将你的webscript描述符URL更改为:

<url>/workflow?nodeid={nodeid}&amp;w={w}</url>

你还应该添加逻辑来检查给定的节点是否真的存在-search.findNode可以返回null,所以你应该在继续之前进行检查(例如,如果没有找到,则给出404)

此外,如果您希望

,则可以使用utils.getNodeFromString(String)

请尝试使用此代码启动您的工作流程,用此代码替换workflow.get.js的代码,并根据您的要求更改所有属性。

function startWorkflow()
{
    var workflowAction = workflow.getDefinitionByName("activiti$test_wf");
    var package= workflow.createPackage();
    var wfparams = new Array();
    wfparams["model_prefix:req_props_name"] = value2;
    wfparams["bpm:assignee"] = people.getPerson("ADMIN");
    workflowAction.startWorkflow(package, wfparams);
    }
}
startWorkflow();