func MyWorkflow(ctx Context) (retErr error) {
log := workflow.GetLogger()
log.Info("starting my workflow")
defer func() {
if retErr != nil {
DoActivityCleanupError(ctx, ..)
} else {
DoActivityCleanupNoError(ctx, ...)
}
}
err := DoActivityA(ctx, ...)
if err != nil {
return err
}
...
err := DoActivityB(ctx, ...)
if err != nil {
return err
}
}
基本上有包罗万象的活动,ActivityCleanupNoError 和 ActivityCleanupError,我们想要在工作流退出时执行(特别是在我们不想在所有错误返回中重复调用 ActivityCleanupError 的错误情况下。
这适用于分布式决策吗?例如,如果工作流决策的所有权从一个工作人员转移到另一个工作人员,是否会触发原始工作人员的延迟?
额外问题:记录器是否在每次工作流运行时只强制记录一次?即使决策从一名工人转移到另一名工人?您是否希望看到日志行出现在两个工作人员的日志中?还是幕后有魔法来防止这种情况发生?