当前位置: 首页 > 知识库问答 >
问题:

在java客户端中取消和重新安排超级节奏工作流中的睡眠时间

农均
2023-03-14

如何根据信号改变节奏工作流程中的睡眠持续时间?这是使用java客户端的正确方法吗?

private int timeout;

@Override
@WorkflowMethod
public void sleepAndWakeUp(int sleepTimeout) {
    this.timeout = sleepTimeout;
    sleep();
    System.out.println("Woken up after " + this.timeout + " s sleep");
}

private void sleep() {
    int currentTimeout = this.timeout;
    Workflow.await(Duration.ofSeconds(this.timeout), () -> {
        boolean cancelTimer = currentTimeout != this.timeout;
        if(cancelTimer) {
            sleep();
        }
        return cancelTimer;
    });
}

@Override
@SignalMethod
public void snooze(int sleepTimeout) {
    this.timeout = sleepTimeout;
}

我没有发现取消和重新安排工作流Hibernate计时器的其他可能性

共有1个答案

濮阳驰
2023-03-14

下面是来自时态 Java 示例的代码:

public final class UpdatableTimer {

  private long wakeUpTime;
  private boolean wakeUpTimeUpdated;

  public void sleepUntil(long wakeUpTime) {
    this.wakeUpTime = wakeUpTime;
    do {
      wakeUpTimeUpdated = false;
      Duration sleepInterval = Duration.ofMillis(this.wakeUpTime - Workflow.currentTimeMillis());
      if (!Workflow.await(sleepInterval, () -> wakeUpTimeUpdated)) {
        break;
      }
    } while (wakeUpTimeUpdated);
  }

  public void updateWakeUpTime(long wakeUpTime) {
    this.wakeUpTime = wakeUpTime;
    this.wakeUpTimeUpdated = true;
  }

  public long getWakeUpTime() {
    return wakeUpTime;
  }
}
 类似资料:
  • 可以运行不需要连接到cadence服务器的本地活动。是否有适当的方式在本地运行工作流,以防发生cadence中断?我正在使用Go客户端。

  • 嗨,我有一个包含2个活动的工作流。场景。一个活动在执行第二个活动时完成,我需要与之通信的URL链接已关闭。现在,当该URL启动时,工作流超时。那么我该如何重启超时的工作流呢? 这个问题的灵感来自一个Github问题。

  • 假设我们需要在用户完成购物车后生成订单。 这是我们生成订单的步骤: 生成一个处于挂起状态的订单(订单微服务) 授权用户信用(会计微服务) 将购物车的状态设置为关闭(购物车微服务) 批准订单(订单微服务) 为此,我们只需创建一个节奏工作流,为每个步骤调用一个活动。 问题1:如果用户再次打开购物车或刷新页面,客户端如何检测到购物车正在创建订单?(注意:假设我们的工作流还没有被工人执行) 我的问题1解决

  • 我看到ccence cli支持cli的上述命令interface.How通过java执行此操作sdk.Im看到仅支持启动工作流。

  • 我正在设计一个工作流,打算使用cadence工作流引擎和Java客户端。看起来uber正在积极使用Go,因此Go拥有比Java Client更好的文档、Activity和其他类。这是真的吗?

  • temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?