У меня есть требование использовать AWS Simple Workflow (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
}
};
}
}