首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS SWF java框架中的手动暂停和恢复功能

AWS SWF java框架中的手动暂停和恢复功能
EN

Stack Overflow用户
提问于 2020-05-31 13:38:18
回答 1查看 116关注 0票数 0

SWF本身是否支持java框架中的手动暂停和恢复工作流功能?如果不是,有什么方法可以实现这个语义吗?

编辑:我实现了下面的例子,似乎正在进行初始测试。有没有什么可以打破这一点的。我的工作流程将长时间运行(约3-5小时),同一活动多次使用不同的参数。

代码语言:javascript
运行
复制
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);
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-10 05:47:15

如果您收到多个恢复信号,您将再次设置暂停的可设置值(它已经准备好了),因此您可能会得到未处理的IllegalStateException

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62112022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档