805
}
806
807
>
clock, err := shardCtx.NewVectorClock()
api.go
808
>
if err != nil {
809
return nil, err
810
}
811
812
>
taskToken := tasktoken.NewWorkflowTaskToken(
api.go
813
>
s.namespace.ID().String(),
814
>
workflowID,
815
>
runID,
816
>
workflowTaskInfo.ScheduledEventID,
817
>
workflowTaskInfo.StartedEventID,
818
>
timestamppb.New(workflowTaskInfo.StartedTime),
819
>
workflowTaskInfo.Attempt,
820
>
clock,
821
>
workflowTaskInfo.Version,
822
>
)
823
>
serializedToken, err := tokenSerializer.Serialize(taskToken)
824
>
if err != nil {
825
return nil, err
826
}
827
>
return &historyservice.StartWorkflowExecutionResponse{
api.go
828
>
RunId: runID,
829
>
FirstExecutionRunId: firstExecutionRunID,
830
>
Clock: clock,
831
>
Started: true,
832
>
Status: enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
833
>
Link: s.generateStartedEventRefLink(runID),
834
>
EagerWorkflowTask: &workflowservice.PollWorkflowTaskQueueResponse{
835
>
TaskToken: serializedToken,
836
>
WorkflowExecution: &commonpb.WorkflowExecution{WorkflowId: workflowID, RunId: runID},
837
>
WorkflowType: request.GetWorkflowType(),
838
>
// TODO: consider getting the ID from mutable state, this was not done to avoid adding more complexity to
839
>
// the code to plumb that value through.
840
>
PreviousStartedEventId: 0,
841
>
StartedEventId: workflowTaskInfo.StartedEventID,
842
>
Attempt: workflowTaskInfo.Attempt,
843
>
History: &historypb.History{Events: historyEvents},
844
>
NextPageToken: nil,
845
>
WorkflowExecutionTaskQueue: workflowTaskInfo.TaskQueue,
846
>
ScheduledTime: timestamppb.New(workflowTaskInfo.ScheduledTime),
847
>
StartedTime: timestamppb.New(workflowTaskInfo.StartedTime),
848
>
},
849
>
}, nil
850
}
851