簡體   English   中英

AWS SWF java 框架中的手動暫停和恢復功能

[英]Manual pause and resume functionality in AWS SWF java framework

SWF 是否原生支持 java 框架中的手動暫停和恢復工作流功能? 如果沒有,有什么方法可以實現該語義?

編輯:我實現了以下示例,似乎正在使用初始測試。 有什么可以打破的。 我的工作流程將長時間運行(約 3-5 小時),相同的活動會多次使用不同的參數。

import com.amazonaws.services.simpleworkflow.flow.annotations.Asynchronous;
import com.amazonaws.services.simpleworkflow.flow.core.Promise;
import com.amazonaws.services.simpleworkflow.flow.core.Settable;

public class GreeterWorkflowImpl implements GreeterWorkflow {
  private GreeterActivitiesClient operations = new GreeterActivitiesClientImpl();
  Settable<Void> paused = new Settable<>();
  public void greet() {
    Promise<String> fs = getGreeting(0, operations.getName());
    print(fs);
  }

  @Asynchronous
  private Promise<String> getGreeting(int count, Promise<String> name)
  {
    if (count > 10)
      return name;

    return getGreeting(count, name, paused);
  }

  @Asynchronous
  private Promise<String> getGreeting(int count, Promise<String> name, Settable<Void> paused) {

    Promise<String> returnString = operations.getGreeting(name.get());
    return getGreeting(count + 1, returnString);
  }

  @Asynchronous
  private void print(Promise<String> finalString)
  {
    System.out.println("Final String is " + finalString.get());
  }

  // @Signal method
  @Override
  public void pause() {
    paused = new Settable<>();
  }

  // @Signal method
  @Override
  public void resume() {
    paused.set(null);
  }
}

如果您收到多個恢復信號,您將再次設置暫停的可設置(已經准備好),因此您最終可能會遇到未處理的 IllegalStateException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM