2015-10-21 117 views
2

我下面的例子REST Service TaskREST服务任务

我使用

val configuration = new StandaloneProcessEngineConfiguration(); configuration.setProcessEngineName(processEngineName) 

这里是我的BPMN文件片段

<process id="approve-loan" name="Loan Approval" isExecutable="true"> 
<serviceTask id="process_task" activiti:class="com.noggin.bpm.loan.ProcessRequestDelegate" activiti:exclusive="true" name="compute&#xA;Task"> 
    <extensionElements> 
    <activiti:connector> 
     <activiti:connectorId>http-connector</activiti:connectorId> 
     <activiti:inputOutput> 
     <activiti:inputParameter name="url">http://127.0.0.1:5004/Hello/sayhello</activiti:inputParameter> 
     <activiti:inputParameter name="method">POST</activiti:inputParameter> 
     <activiti:inputParameter name="headers"> 
      <activiti:map> 
      <activiti:entry key="Accept">application/json</activiti:entry> 
      <activiti:entry key="Content-type">application/json</activiti:entry> 
      </activiti:map> 
     </activiti:inputParameter> 
     <activiti:inputParameter name="payload"><![CDATA[{"bundleId":"101","script":"def greet = {\n  \"Hello World\"\n  }\n  greet()"}]]></activiti:inputParameter> 
     <activiti:outputParameter name="isActive">Result</activiti:outputParameter> 
     </activiti:inputOutput> 
    </activiti:connector> 
    </extensionElements> 

开始我的流程引擎,我开始喜欢这个

过程
val processEngine = ProcessEngines.getProcessEngine(processEngineName) 
    val runtime   = processEngine.getRuntimeService 
    val processInstance = runtime.startProcessInstanceByKey(processInstanceKey) 

成功地,我能够将有效载荷发送到(http://127.0.0.1:5004/Hello/sayhello)。

我的问题是如何从我开始实例的位置检索响应消息。由于响应将在Json消息中发送,该消息应该被发送回过程发起者。

回答

1

我相信我在昨天发布了一个类似的问题,发布到Camunda论坛。无论哪种方式,我相信问题和答案都是一样的。

让我确定我明白你在问什么。 1.您正在使用Java API 开始实例2.您的流程定义包含一个可进行REST调用的Service Task。 3.您的JavaDelegate类使用REST调用的响应填充“Result”过程变量。 4.你想捕获响应。

如果我已经掌握了您的需求,那么我认为问题在于您了解BPMN引擎如何工作。

按照您建模的流程,流程实例将启动,进行REST调用,填充Response变量,然后立即结束。

正如您当前建模流程一样,您将无法在流程执行期间捕获响应。

您的选择: 1.将您的模型更改为使用某种消息服务发送“结果”,或者添加一个等待状态,以便您可以检索响应。 2.使用历史查询REST API(或等效的Java API)从已完成的实例中检索结果有效内容。

这实际上取决于您的使用情况,以最合适的选项。

干杯, Greg