【问题标题】:AWS SWF - Workflow passing activity results with signals driving the workflowAWS SWF - 工作流传递活动结果以及驱动工作流的信号
【发布时间】:2020-08-10 19:14:27
【问题描述】:

我需要使用 AWS 简单工作流 (SWF) 进行编排类型的系统设计。有父应用程序启动此子工作流,然后向工作流发出信号以处理活动。我有一个工作流程启动并等待信号发生,然后才能开始进行活动工作。一旦完成一项活动,它将通过关闭父工作流上的活动来报告。

如何等待信号并使用信号调用的另一个活动的结果?

我是否需要查看活动结果的执行历史记录,而不是依赖于在决策中执行此工作?

感谢您的帮助

代码示例:

@SuppressWarnings("unused")
@Slf4j
public class ChildWorkflowImpl implements ChildWorkflow {
    private final Settable<Message> firstStepReceived = new Settable<>();
    private final Settable<Message> secondStepReceived = new Settable<>();


    @Autowired
    private FirstActivityClient firstActivityClient;

    @Autowired
    private SecondActivityClient secondActivityClient;


    @Autowired
    private AmazonSimpleWorkflow amazonSimpleWorkflow;

    @Override
    public void startWorkflow(SubsystemMessage subsystemMessage) {

        //wait for signal to start
        new Task(firstStepReceived) {
            @Override
            protected void doExecute() throws Throwable {
                //Initiate Activity

                startStage(firstStepReceived.get(););
            }
        };

        //wait for second signal but pass in data from first activity
        new Task(secondStepReceived) {
            @Override
            protected void doExecute() throws Throwable {

            }
        };


    }

    public void firstStep(Message message) {
        Promise<FirstActivityResponse> firstActivity = firstActivityClient.execute();

        //wait for signal for disable
        new Task(firstActivity) {
            public void doExecute() {
                //report back status for stage by closing parent activity
            }
        };
    }

    public void secondStep(FirstActivityResponse response) {
        Promise<SecondActivityResponse> secondActivityResponse = secondActivityClient.execute(response);

        new Task(secondActivityResponse) {
            public void doExecute() {
                //report back status for stage
            }
        };

    }
}

【问题讨论】:

    标签: java amazon-web-services amazon-swf


    【解决方案1】:

    您将信号方法添加到工作流接口并使用 Settable 通知工作流代码的其他部分有关信号。请参阅 this documentation 页面中的可设置文档。

    顺便说一句。我建议查看temporal.io,它是 SWF 的一个大大改进的版本,它支持同步编程,没有所有这些讨厌的任务。

    【讨论】:

      猜你喜欢
      • 2014-06-09
      • 2016-06-19
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多