ShiningRush / fastflow

A lightweight, high-performance distributed workflow framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

在ctx中可以取到当前任务信息吗

justfunxin opened this issue · comments

在 Run(ctx run.ExecuteContext, params interface{}) 的 ctx 中可以取到当前任务相关信息吗

dagId
dagInsId
taskId : 节点ID

或者如何能获取到呢

可以使用 mod.GetStore().GetTaskIns() 来获取,参考 #10 ,不过通常来说不建议在action去获取状态,背景是怎样的呢

打印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())
}

好的,辛苦