问题描述
Query - Query 是将这个内部状态暴露给外部世界。查询公开为外部实体调用的异步回调。
异步回调是什么意思?
Doc 说,Query 有两个限制 1)。不应改变工作流的状态 2)。不会有任何阻塞操作。
@Override
public String queryGreeting() {
greeting = "val";
return greeting;
}
但我确实改变了查询方法中的变量,它正在改变值。
是否只是坚信我们不应该在查询方法中编写可变或阻塞代码?
我没有发现查询和信号之间有任何区别。即使在完成工作流后也会调用查询方法,而 Signal 不会?
我的理解正确吗?
解决方法
查询不应改变工作流变量。这将破坏工作流恢复。
信号可以改变任何工作流数据以及调用活动等阻塞操作。