Are the activities strictly sequential?

It may be that first comes Activity2 then Activity?

	workflow.ExecuteActivity(ctx, activities.Activity, name).Get(ctx, &result)
	workflow.ExecuteActivity(ctx, activities.Activity2, name).Get(ctx, &result)
//register workflows & activities
	w.RegisterWorkflow(workflows.Workflow)
	w.RegisterActivity(activities.Activity)
	w.RegisterActivity(activities.Activity2)

Hi @tempuser1

As per documentation: Get blocks until the future is ready. When ready it either returns non nil error or assigns result value to the provided pointer.

so the second line of your code (ExecuteActivity ā†’ Activity2 ) is not going to be executed until the invocation to the first activity (ExecuteActivity ā†’ Activity ) has finished.

Are you experiencing any issues?

1 Like

so far everything is going well,

Iā€™m studying the documentation .and decided to clarify this point, I was confused by the fact that the workers work asynchronously, for some reason I thought that activities can also work like this

@tempuser1

Activities are executed by workers. When you invoke ExecuteActivity from your workflow code, the SDK will send a command to the server which will create a ScheduleActivityTask, if there is a worker available (for the activityTaskQueue) it will pick up the task and execute it.

The first part of this video mentions it, The 4 Types of Timeouts in Temporal - YouTube I would recommend you to see the full video.

So ExecuteActivity is an asynchronous invocation, calling Get will block your code until the activity is completed/failed.
This repository is a good place to start, GitHub - temporalio/samples-go: Temporal Go SDK samples, just in case you have not heard about it.