buildResult 构建执行结果
()
| 955 | |
| 956 | // buildResult 构建执行结果 |
| 957 | func (execution *WorkflowExecution) buildResult() *WorkflowResult { |
| 958 | execution.mu.RLock() |
| 959 | defer execution.mu.RUnlock() |
| 960 | |
| 961 | // 构建步骤跟踪 |
| 962 | var trace []WorkflowStep |
| 963 | for _, result := range execution.NodeResults { |
| 964 | step := WorkflowStep{ |
| 965 | NodeID: result.NodeID, |
| 966 | NodeName: result.NodeName, |
| 967 | NodeType: result.NodeType, |
| 968 | Status: result.Status, |
| 969 | StartTime: result.StartTime, |
| 970 | EndTime: result.EndTime, |
| 971 | Duration: result.Duration, |
| 972 | Inputs: result.Inputs, |
| 973 | Outputs: result.Outputs, |
| 974 | Error: result.Error, |
| 975 | RetryCount: result.RetryCount, |
| 976 | Metadata: result.Metadata, |
| 977 | } |
| 978 | trace = append(trace, step) |
| 979 | } |
| 980 | |
| 981 | return &WorkflowResult{ |
| 982 | ExecutionID: execution.ID, |
| 983 | WorkflowID: execution.WorkflowID, |
| 984 | Status: execution.Status, |
| 985 | StartTime: execution.StartTime, |
| 986 | EndTime: execution.EndTime, |
| 987 | Duration: execution.EndTime.Sub(execution.StartTime), |
| 988 | Outputs: execution.Context.Outputs, |
| 989 | Errors: execution.Errors, |
| 990 | Trace: trace, |
| 991 | } |
| 992 | } |
| 993 | |
| 994 | // generateExecutionID 生成执行ID |
| 995 | func generateExecutionID() string { |
no outgoing calls
no test coverage detected