mirror of https://github.com/dapr/quickstarts.git
Signed-off-by: Marc Duiker <marcduiker@users.noreply.github.com> |
||
---|---|---|
.. | ||
ShippingApp | ||
WorkflowApp | ||
resources | ||
README.md | ||
dapr.yaml | ||
order-workflow.http |
README.md
Combined Workflow Patterns
This tutorial demonstrates how several workflow patterns can be combined in a single, more realistic, workflow. Some of the workflow activities are using other Dapr APIs, such as state management, service invocation, and Pub/Sub.
Inspect the code
The demo consist of two applications:
WorkflowApp
is the main application that orchestrates an order process in theOrderWorkflow
.ShippingApp
is a supporting service that is being called by theOrderWorkflow
.
The OrderWorkflow
combines task chaining, fan-out/fan-in, and waiting for external patterns.
graph LR
SW((Start
Workflow))
EW((End
Workflow))
subgraph OrderWorkflow
direction LR
CHKI[Check inventory]
CHKD[Check shipping
destination]
IF1{Success?}
PAY[Process
payment]
UPD[Update
inventory]
REG[Register
shipment]
WAIT[Wait for
confirmation]
IF2{Success?}
RI[Reimburse
customer]
end
subgraph Shipping
direction LR
REG2[registerShipment]
CHKD2[checkDestination]
end
SW --> CHKI
SW --> CHKD <--> CHKD2
CHKI --> IF1
CHKD --> IF1
IF1 --> PAY
PAY --> UPD
UPD --> REG -.->|pub/sub| REG2
REG2 -.->|pub/sub| WAIT
REG --> WAIT
WAIT --> IF2
IF2 -->|Yes| EW
IF2 -->|No| RI
RI --> EW
Run the tutorial
-
Use a terminal to navigate to the
tutorials/workflow/csharp/combined-patterns
folder. -
Build the projects using the .NET CLI.
dotnet build ./WorkflowApp/ dotnet build ./ShippingApp/
-
Use the Dapr CLI to run the Dapr Multi-App run file
dapr run -f .
-
Use the POST request in the
order-workflow.http
file to start the workflow. -
Use the GET request in the
order-workflow.http
file to get the status of the workflow. -
Stop the Dapr Multi-App run process by pressing
Ctrl+C
.