我已经开始使用简单的工作流服务来学习亚马逊网络服务。我已经完成了用于开发的 eclipse 设置,并从这里成功完成了 hello world 工作流应用程序。
为了在 Web 平台上使用相同的应用程序,我尝试创建 AWS Web 项目并从 servlet 调用工作流方法。servlet 运行没有任何错误,并且输出打印到控制台。如果我希望工作流返回打印在控制台上的字符串消息,需要进行哪些更改?
我已经开始使用简单的工作流服务来学习亚马逊网络服务。我已经完成了用于开发的 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);
如果您想要结果,那么只需创建一个线程,当结果填充到方法中时,您将获得数据。但这不是连续运行线程的好方法。
从工作流返回值需要执行的步骤是:
以下是应用于 AWS 提供的 HelloWorld 示例的所有这些更改的示例。下面的 HelloWorld 示例从工作流返回一个值并在客户端打印该值。
https://github.com/aquesnel/aws-sdk-java/commit/87a80b5946f02283faecaa7436828ecd1c43921c
你的用例是什么?返回值的工作流通常是一个坏主意(除非它是子工作流),因为工作流是异步的且运行时间很长。启动它的控制台应用程序应该能够退出而不影响工作流执行。