【发布时间】: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