在ctx中可以取到当前任务信息吗
justfunxin opened this issue · comments
在 Run(ctx run.ExecuteContext, params interface{}) 的 ctx 中可以取到当前任务相关信息吗
dagId
dagInsId
taskId : 节点ID
或者如何能获取到呢
打印log的时候,输出一些信息
可以使用
mod.GetStore().GetTaskIns()
来获取,参考 #10 ,不过通常来说不建议在action去获取状态,背景是怎样的呢
这个接口需要taskInsId,这个在action内部能取到吗?
看源码,调用Run的时候,是在TaskInstance内调用的。只传递了t.Context进来,t的相关信息可以传进去吗
if t.Status == TaskInstanceStatusInit {
beforeAct, ok := act.(run.BeforeAction)
if ok {
if err := beforeAct.RunBefore(t.Context, params); err != nil {
return fmt.Errorf("run before failed: %w", err)
}
}
if err := t.SetStatus(TaskInstanceStatusRunning); err != nil {
return err
}
if err := act.Run(t.Context, params); err != nil {
return fmt.Errorf("run failed: %w", err)
}
if err := t.SetStatus(TaskInstanceStatusEnding); err != nil {
return err
}
}
看上去是合理的诉求,我觉得可以把运行时的DagIInstane和TaskInstance都注入到Context。
我51可以写个PR,也欢迎你直接提PR。
@kangarooxin 已经在 #20 中支持,现在你可以在action中使用如下语句获取
func Run(ctx ExecuteContext, params interface{}) error {
taskIns, ok := entity.CtxRunningTaskIns(ctx.Context())
}
@kangarooxin 已经在 #20 中支持,现在你可以在action中使用如下语句获取
func Run(ctx ExecuteContext, params interface{}) error { taskIns, ok := entity.CtxRunningTaskIns(ctx.Context()) }
好的,辛苦