func()

in job_instance.go [74:94]


func (ji *JobInstance[T]) start(ctx context.Context) {
	// create root step instance
	ji.rootStep = newStepInstance(ji.Definition.rootStep, ji)
	ji.rootStep.task = asynctask.NewCompletedTask(ji.input)
	ji.rootStep.state = StepStateCompleted
	ji.steps[ji.rootStep.GetName()] = ji.rootStep
	ji.stepsDag.AddNode(ji.rootStep)

	// construct job instance graph, with TopologySort ordering
	orderedSteps := ji.Definition.stepsDag.TopologicalSort()
	for _, stepDef := range orderedSteps {
		if stepDef.GetName() == ji.Definition.GetName() {
			continue
		}
		ji.steps[stepDef.GetName()] = stepDef.createStepInstance(ctx, ji)

		if ji.jobOptions.RunSequentially {
			ji.steps[stepDef.GetName()].Waitable().Wait(ctx)
		}
	}
}