我已部署的.bpmn2文件无法识别alfresco rest-api中(/ processs POST)的processBody中设置的自定义变量

时间:2018-10-26 12:52:58

标签: workflow alfresco activiti

我通过我的户外工作流程控制台通过用户任务部署了以下.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文件中可见吗?

任何帮助将不胜感激:)

2 个答案:

答案 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 
               }
}