Interacting with Humans in Azure Durable Functions
Humans tend to be unpredictable and asynchronous in completing a task compared to a computing service. Consider the comparison between a message arriving on a queue for an Azure Function and a message arriving on a phone for a human. It is fairly certain that the Azure Function will complete that operation almost immediately, whereas the human is likely to have a random amount of delay as they get occupied with other work.
If we are trying to complete an order workflow while depending on human input (for example, authorizing the order or packing the shipping crate), then we are creating a set of distributed transactions. The general name for this is a "Saga". There are two broad approaches to working with this:
Orchestration: This refers to having a long-running process that requires the first task to be completed, and then the second, and so on.
Choreography: In this approach, each individual microservice handles a task and publishes an...