我通过我的户外工作流程控制台通过用户任务部署了以下.bpmn2文件,该文件将根据传递的变量“ Y”
分配给用户 <process isExecutable="true" id="step4reconfigure41" name="Reconfigure step 4">
<startEvent id="start"
activiti:formKey="wf:submitAdhocTask" />
<sequenceFlow id='flow1'
sourceRef='start'
targetRef='adhocTask' />
<userTask id="adhocTask" name="First user Task"
activiti:formKey="wf:adhocTask">
<documentation> First task </documentation>
<extensionElements>
<activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
if(execution.getVariable("Y") == 22){
task.assignee = 'userA';
}
else if(execution.getVariable("Y") != 22){
task.assignee = 'userB';
}
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
我成功地从alfresco工作流控制台启动了该过程,例如:
- 开始Y = 22
成功读取变量并成功应用.bpmn2文件中描述的分配逻辑,这很成功。
我想要执行与使用 alfresco rest-api 相同的方案。
根据api-explorer文档,我必须将 / processes(POST)端点与如下所示的processBody一起使用
{ “ processDefinitionKey”:“字符串”, “变量”:{ “ bpm_assignee”:“字符串”, “ bpm_sendEMailNotifications”:是的, “ bpm_workflowPriority”:0 } }
我试图像这样将变量“ Y”传递给processBody:
{ “ processDefinitionKey”:“测试”, “变量”:{ “ Y”:“ 5”, “ bpm_sendEMailNotifications”:是的, “ bpm_workflowPriority”:0 } }
不幸的是,即使进程正常启动,也没有设置变量“ Y”,我通过 / processes / {processId} / variables 端点对其进行了测试。
我应该怎么做才能执行与工作流程相同的操作 控制台(通过启动时传递变量)通过其余api?如何 这个变量在我的.bpmn2文件中可见吗?
任何帮助将不胜感激:)
答案 0 :(得分:1)
如果无法使用现成的REST API来执行所需的操作,则可以编写自己的Java支持的Web脚本。控制器可以使用Alfresco工作流程API WorkflowService.startWorkflow method来启动工作流程并传递参数。
REST API可能使用相同的API。如果确实如此,这可能也无法正常工作。如果发生这种情况,请启动调试器并逐步浏览Alfresco源码,以查看发生了什么。
答案 1 :(得分:0)
最后,我设法通过“展开”放置在其上的 bpmnModel.xml 来解决此问题 WEB-INF / lib / alfresco-repository- {version} .jar / alfresco / model / ,并在“ bpm:startTask”内部添加了一个额外的属性
<property name="bpm:Y">
<type>d:text</type>
</property>
重启服务器,并通过添加新的自定义参数(通过添加到请求中)来成功创建新进程
{
"processDefinitionKey": "test",
"variables": {
"bpm_Y": "5",
"bpm_sendEMailNotifications": true,
"bpm_workflowPriority": 0
}
}