错误通过JavaScript

时间:2016-07-19 10:07:39

标签: javascript alfresco

我无法通过网络脚本启动工作流程。

我创建了文件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&amp; w = jbpm $ wf:adhoc返回错误

  

06190076 Wrapped Exception(带状态模板):06190474无法执行脚本&#39; /triggerworkflow.get.js(在存储库存储工作区:// SpacesStore / Company Home / Data Dictionary / Web Scripts)&#39; :06190473无法找到方法org.alfresco.repo.jscript.ScriptAction.execute(org.mozilla.javascript.Undefined)。 (在存储库商店workspace:// SpacesStore / Company Home / Data Dictionary / Web Scripts)#11)

     

异常:org.alfresco.error.AlfrescoRuntimeException - 08200041 TypeError:无法读取属性&#34; name&#34;从null   (workspace:// SpacesStore / Company Home / Data Dictionary / Web Scripts Extensions / Workflow / workflow.get.js#7)

     

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

     

异常:org.alfresco.scripts.ScriptException - 08200042无法执行脚本&#39; /Workflow/workflow.get.js   (在存储库存储工作区:// SpacesStore / Company Home / Data Dictionary / Web Scripts Extensions)&#39;:08200041 TypeError:无法读取   财产&#34;名称&#34; from null(workspace:// SpacesStore / Company Home / Data Dictionary / Web Scripts Extensions / Workflow / workflow.get.js#7)

     

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

     

异常:org.springframework.extensions.webscripts.WebScriptException - 08200035 Wrapped Exception(带状态模板):   08200042无法执行脚本&#39; /Workflow/workflow.get.js(在存储库存储工作区:// SpacesStore / Company Home / Data Dictionary / Web Scripts Extensions)&#39;   :08200041 TypeError:无法读取属性&#34; name&#34; from null(workspace:// SpacesStore / Company Home / Data Dictionary / Web Scripts Extensions / Workflow /   workflow.get.js#7)

     

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

2 个答案:

答案 0 :(得分:0)

你的问题是你在一个地方召唤一件事,而在另一个地方召唤另一件事:

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

vs

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

你需要得到那些同意!我建议,鉴于您似乎已经从客户端使用的URL,更改您的webscript描述符URL以匹配您使用的URL,

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

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

另外,如果您愿意

,可以使用utils.getNodeFromString(String)

答案 1 :(得分:0)

请尝试使用此代码启动您的工作流程, 使用此代码替换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();