按节奏理解信号和查询

问题描述

Query - Query 是将这个内部状态暴露给外部世界。查询公开为外部实体调用的异步回调。

异步回调是什么意思?

Doc 说,Query 有两个限制 1)。不应改变工作流的状态 2)。不会有任何阻塞操作。

@Override
    public String queryGreeting() {
      greeting = "val";
      return greeting;
    }

但我确实改变了查询方法中的变量,它正在改变值。

是否只是坚信我们不应该在查询方法中编写可变或阻塞代码

我没有发现查询和信号之间有任何区别。即使在完成工作流后也会调用查询方法,而 Signal 不会?

我的理解正确吗?

解决方法

查询不应改变工作流变量。这将破坏工作流恢复。

信号可以改变任何工作流数据以及调用活动等阻塞操作。