使用Java Flow Framework for SWF .
是否可以在SWF中安排特定时间的活动?让我们说,发送在2017年10月22日上午9:00运行“sendNotification” .
这些示例允许创建具有延迟的计时器,但不能在指定时间内创建 . 即使我可以根据当前时间戳和需要触发事件的目标时间来计算延迟,但是如何在工作流程执行期间获取当前时间,因为如果您尝试获取当前系统时间工作流决策程序,它在工作流中创建non-determinism并且失败 .
Date currentDate = new Date();
long sysTimeInSeconds = (currentDate.getTime() / 1000);
System.out.println("System Time : " + sysTimeInSeconds);
Promise<Void> timer = clock.createTimer((timeStampInSeconds - sysTimeInSeconds));
[由于我们使用系统当前时间,因此不允许使用上述代码]
工作流时钟的当前时间,返回工作流的开始时间,这对我没用 .
那么我如何安排特定时间的活动?
1 回答
使用WorkflowClock . 它返回正确的确定性当前时间,该时间是重放决策的时间 .
Here is the line of code将时钟更新为当前决策时间 .