获取 Temporal Workflow 中 Activity 的执行结果

package main

import (
	"context"
	"fmt"
	"log"

	"go.temporal.io/api/enums/v1"
	"go.temporal.io/sdk/client"
)

func main() {
	cli, err := client.Dial(client.Options{
		HostPort:  "10.33.64.7:7233",
		Namespace: "prod",
	})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()

	ctx := context.Background()
	iter := cli.GetWorkflowHistory(
		ctx,
		"vidu20_character2video_720p_4s-2811685611418762",
		"",
		false,
		enums.HISTORY_EVENT_FILTER_TYPE_ALL_EVENT,
	)
	if err != nil {
		log.Fatal(err)
	}

	activityNames := make(map[int64]string)
	for iter.HasNext() {
		event, err := iter.Next()
		if err != nil {
			log.Fatal(err)
		}
		switch event.GetEventType() {
		case enums.EVENT_TYPE_ACTIVITY_TASK_SCHEDULED:
			attrs := event.GetActivityTaskScheduledEventAttributes()
			activityNames[event.GetEventId()] = attrs.GetActivityType().GetName()
			fmt.Printf("Activity Name: %s, Input: %v\n", attrs.GetActivityType().GetName(), attrs.GetInput())
		case enums.EVENT_TYPE_ACTIVITY_TASK_COMPLETED:
			attrs := event.GetActivityTaskCompletedEventAttributes()
			name := activityNames[attrs.GetScheduledEventId()]
			result := attrs.GetResult()
			fmt.Printf("Activity Name: %s, Completed Result: %v\n", name, result)
		}
	}
}