簡體   English   中英

AWS SWF-工作流程的返回結果

[英]AWS SWF - Return result of workflow

我已經開始通過簡單的工作流服務學習亞馬遜網絡服務。 我已經完成了Eclipse的開發設置,並從這里成功完成了hello world工作流應用程序。

為了在Web平台上使用同一應用程序,我嘗試創建AWS Web項目並從servlet調用工作流方法。 該Servlet可以正常運行,並且輸出將打印到控制台。 如果我希望工作流返回控制台上打印的字符串消息,需要進行哪些更改?

在亞馬遜AWS論壇上發布了同樣的問題。 他們還沒有關於AWS Simple Workflow Framework的明確文檔。 你可以在這里查看

AWS Workflow 異步執行,因此生成的代碼返回類型為何為空。 如果您想要的話可​​以通過使用獲得

GetWorkflowExecutionHistoryRequest historyRequest = new GetWorkflowExecutionHistoryRequest();
historyRequest.setDomain(domain);
historyRequest.setExecution(workflowExecution);
historyRequest.setReverseOrder(true);
History workflowExecutionHistory = service.getWorkflowExecutionHistory(historyRequest);

如果需要結果,則只需創建一個線程,當結果填充到方法中時,您將獲取數據。 但這不是連續運行線程的好方法。

您的用例是什么? 返回值的工作流通常是一個壞主意(除非它是子工作流),因為工作流是異步的並且可以長時間運行。 啟動它的控制台應用程序應該能夠退出而不影響工作流程的執行。

從工作流返回值所需執行的步驟是:

  • 讓工作流程聲明其返回值是一個Promise,其中包含您要返回的類型。
  • 讓工作流返回一個Promise(或Settable),並帶有您要返回的值。
  • 讓客戶端使用DescribeWorkflowExecutionRequest API檢查工作流程是否關閉並完成
  • 讓客戶端使用GetWorkflowExecutionHistoryRequest API從工作流歷史記錄中獲取結果
  • 使用工作流的DataConverter將結果反序列化為所需的結果對象。

以下是適用於AWS提供的HelloWorld示例的所有這些更改的示例。 下面的HelloWorld示例從工作流返回一個值,並在客戶端中打印該值。

https://github.com/aquesnel/aws-sdk-java/commit/87a80b5946f02283faecaa7436828ecd1c43921c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM