in internal/dal/workflow.go [157:191]
func (w *workflowDALImpl) SelectTaskInstance(ctx context.Context, condition model.WorkflowTaskInstance) (*model.
WorkflowTaskInstance, error) {
var r model.WorkflowTaskInstance
if err := workflowDB.WithContext(ctx).Where(&condition).Order("create_time desc").
First(&r).Error; err != nil {
if err == gorm.ErrRecordNotFound {
return nil, nil
}
return nil, err
}
var err error
var tasks []*model.WorkflowTask
var childTasks []*model.WorkflowTaskRelation
var taskActions []*model.WorkflowTaskAction
var handlers []func() error
handlers = append(handlers, func() error {
tasks, err = w.selectTask(context.Background(), r.WorkflowID, []string{r.TaskID})
return err
})
handlers = append(handlers, func() error {
childTasks, err = w.selectTaskRelation(context.Background(), r.WorkflowID, r.TaskID)
return err
})
handlers = append(handlers, func() error {
taskActions, err = w.selectTaskAction(context.Background(), r.WorkflowID, []string{r.TaskID})
if err != nil {
return err
}
return nil
})
if err = util.GoAndWait(handlers...); err != nil {
return nil, err
}
return w.completeTaskInstance(r, tasks, childTasks, taskActions)
}