2015-10-21 114 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