Как убедиться, что выполнение Workflow должно ждать получения события, а затем перейти к дальнейшему выполнению

У меня есть требование, где рабочий процесс должен начать выполнение, но он должен ждать следующих последующих событий, чтобы выполнить выполнение. События генерируются на основе вызовов API, которые служба получает от клиента. Семантика событий основана на конечном автомате. Пожалуйста, дайте мне знать, как это может быть реализовано в Java. Пожалуйста, предоставьте любой пример кода для справки.

1 ответ

Если вы используете AWS Flow Framework, внешнее событие должно использовать Signal API для уведомления экземпляра рабочего процесса. Внутри рабочего процесса он становится методом-обработчиком, таким как:

 @Workflow
 @WorkflowRegistrationOptions(
    defaultExecutionStartToCloseTimeoutSeconds = 60,
    defaultTaskStartToCloseTimeoutSeconds = 10)
 public interface MyWorkflow
 {
    @Execute(version = "1.0")
    void startMyWF(int a, String b);

    @Signal
    void signal1(int a, int b, String c);
 }

 public class MyWFImpl implements MyWorkflow
 {
   MyActivitiesClient client = new MyActivitiesClientImpl();
   @Override
   public void startMyWF(int a, String b){
     Promise<Integer> result = client.activity1();
     client.activity2(result);
   }
   @Override
   public void signal1(int a, int b, String c){
     //Process signal
      client.activity2(a + b);
   }
 }

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features.workflow.html описывает, как написать интерфейс рабочего процесса.

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/workflowimpl.html описывает, как реализовать рабочие процессы.

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/clients.html описывает, как отправлять сигналы с использованием внешнего клиента.

Другие вопросы по тегам