Java AWS SWF-返回工作流的结果

Java AWS SWF-返回工作流的结果,java,servlets,amazon-web-services,amazon-swf,Java,Servlets,Amazon Web Services,Amazon Swf,我已经开始学习使用简单工作流服务的amazon web服务。我已经完成了eclipse开发设置,并从中成功地完成了hello world工作流应用程序 为了在web平台上使用相同的应用程序,我尝试创建AWSWeb项目并从servlet调用工作流方法。servlet运行时没有任何错误,输出被打印到控制台。如果我希望工作流返回打印在控制台上的字符串消息,需要做哪些更改?在amazon aws论坛上发布的相同问题。他们没有关于AWS简单工作流框架的清晰文档。你可以查一下 AWS工作流异步执行,,因此生

我已经开始学习使用简单工作流服务的amazon web服务。我已经完成了eclipse开发设置,并从中成功地完成了hello world工作流应用程序


为了在web平台上使用相同的应用程序,我尝试创建AWSWeb项目并从servlet调用工作流方法。servlet运行时没有任何错误,输出被打印到控制台。如果我希望工作流返回打印在控制台上的字符串消息,需要做哪些更改?

在amazon aws论坛上发布的相同问题。他们没有关于AWS简单工作流框架的清晰文档。你可以查一下

AWS工作流异步执行,因此生成的代码返回类型为空。如果你想,那么你可以通过使用

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

若您想要结果,那个么只需创建一个线程,当结果填充到方法中时,您将获得数据。但这不是连续运行线程的好方法。

您的用例是什么?工作流返回一个值通常是一个坏主意(除非它是子工作流),因为工作流是异步的且长期运行的。启动它的控制台应用程序应该能够在不影响工作流执行的情况下退出。

要从工作流返回值,需要执行以下步骤:

  • 让工作流声明其返回值是包含要返回的类型的承诺
  • 让工作流返回一个承诺(或一个可设置的承诺),其中包含要返回的值
  • 让客户端使用DescribeWorkflowExecutionRequestAPI检查工作流是否已关闭和完成
  • 让客户端使用GetWorkflowExecutionHistoryRequestAPI从工作流历史记录中获取结果
  • 使用工作流的DataConverter将结果反序列化为所需的结果对象
下面是应用于AWS提供的HelloWorld示例的所有这些更改的示例。下面的HelloWorld示例从工作流返回一个值,并在客户端打印该值