func()

in flow/engine.go [47:67]


func (e *Engine) Start(ctx context.Context, param *WorkflowParam) (string, error) {
	metrics.Inc(constants.MetricsEngine, constants.MetricsStartRequest)
	r, err := e.workflowDAL.SelectStartTask(ctx, model.WorkflowTask{WorkflowID: param.ID})
	if err != nil {
		return "", err
	}
	if r == nil {
		return "", ErrWorkflowNotExists
	}
	var workflowInstanceID = uuid.New().String()
	if err = e.workflowDAL.InsertInstance(ctx, &model.WorkflowInstance{
		WorkflowID: param.ID, WorkflowInstanceID: workflowInstanceID,
		WorkflowStatus: constants.WorkflowInstanceProcessStatus,
	}); err != nil {
		return "", err
	}
	var w = model.WorkflowTaskInstance{WorkflowInstanceID: workflowInstanceID, WorkflowID: param.ID,
		TaskID: r.TaskID, TaskInstanceID: uuid.New().String(), Status: constants.TaskInstanceWaitStatus,
		Input: param.Input, IsStart: true}
	return workflowInstanceID, e.queue.Publish([]*model.WorkflowTaskInstance{&w})
}