in internal/dal/workflow.go [453:488]
func (w *workflowDALImpl) doBuildSwitchTaskRelation(workflow *pmodel.Workflow, state pmodel.State,
taskIDs map[string]string) []*model.WorkflowTaskRelation {
s, ok := state.(*pmodel.DataBasedSwitchState)
if !ok {
return nil
}
var rel []*model.WorkflowTaskRelation
if !s.DefaultCondition.End.Terminate {
var r = model.WorkflowTaskRelation{}
r.WorkflowID = workflow.ID
r.FromTaskID = taskIDs[state.GetName()]
r.ToTaskID = constants.TaskEndID
r.Status = constants.NormalStatus
r.CreateTime = time.Now()
r.UpdateTime = time.Now()
rel = append(rel, &r)
}
for _, condition := range s.DataConditions {
var r = model.WorkflowTaskRelation{}
r.WorkflowID = workflow.ID
r.FromTaskID = taskIDs[state.GetName()]
r.Status = constants.NormalStatus
r.CreateTime = time.Now()
r.UpdateTime = time.Now()
if c, ok := condition.(*pmodel.TransitionDataCondition); ok {
r.ToTaskID = taskIDs[c.Transition.NextState]
r.Condition = c.Condition
}
if c, ok := condition.(*pmodel.EndDataCondition); ok {
r.ToTaskID = constants.TaskEndID
r.Condition = c.Condition
}
rel = append(rel, &r)
}
return rel
}