From 37d1b15b9170bcd3166983a8914b5c069567e348 Mon Sep 17 00:00:00 2001 From: Aaron Crawfis Date: Mon, 24 May 2021 10:27:00 -0700 Subject: [PATCH] Replat the workflows docs (#1497) * Replat the workflows docs * Add more docs --- .../integrations/workflows.md | 222 +++++++++++++++++- daprdocs/static/code/workflow.json | 82 +++++++ daprdocs/static/images/workflows-diagram.png | Bin 0 -> 47758 bytes 3 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 daprdocs/static/code/workflow.json create mode 100644 daprdocs/static/images/workflows-diagram.png diff --git a/daprdocs/content/en/developing-applications/integrations/workflows.md b/daprdocs/content/en/developing-applications/integrations/workflows.md index f32b44366..5dc904208 100644 --- a/daprdocs/content/en/developing-applications/integrations/workflows.md +++ b/daprdocs/content/en/developing-applications/integrations/workflows.md @@ -6,4 +6,224 @@ description: "Learn how to build workflows using Dapr Workflows and Logic Apps" weight: 4000 --- -To enable developers to easily build workflow applications that use Dapr’s capabilities including diagnostics and multi-language support, you can use Dapr workflows. Dapr integrates with workflow engines such as Logic Apps runtime. For more information read [cloud-native workflows using Dapr and Logic Apps](https://cloudblogs.microsoft.com/opensource/2020/05/26/announcing-cloud-native-workflows-dapr-logic-apps/) and visit the [Dapr workflow](https://github.com/dapr/workflows) repo to try out the samples. \ No newline at end of file +Dapr Workflows is a lightweight host that allows developers to run cloud-native workflows locally, on-premises or any cloud environment using the [Azure Logic Apps](https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-overview) workflow engine and Dapr. + +## Benefits + +By using a workflow engine, business logic can be defined in a declarative, no-code fashion so application code doesn't need to change when a workflow changes. Dapr Workflows allows you to use workflows in a distributed application along with these added benefits: + +- **Run workflows anywhere**: on your local machine, on-premises, on Kubernetes or in the cloud +- **Built-in observability**: tracing, metrics and mTLS through Dapr +- **gRPC and HTTP endpoints** for your workflows +- Kick off workflows based on **Dapr bindings** events +- Orchestrate complex workflows by **calling back to Dapr** to save state, publish a message and more + +Diagram of Dapr Workflows + +## How it works + +Dapr Workflows hosts a gRPC server that implements the Dapr Client API. + +This allows users to start workflows using gRPC and HTTP endpoints through Dapr, or start a workflow asynchronously using Dapr bindings. +Once a workflow request comes in, Dapr Workflows uses the Logic Apps SDK to execute the workflow. + +## Supported workflow features + +### Supported actions and triggers + +- [HTTP](https://docs.microsoft.com/en-us/azure/connectors/connectors-native-http) +- [Schedule](https://docs.microsoft.com/en-us/azure/logic-apps/concepts-schedule-automated-recurring-tasks-workflows) +- [Request / Response](https://docs.microsoft.com/en-us/azure/connectors/connectors-native-reqres) + +### Supported control workflows + +- [All control workflows](https://docs.microsoft.com/en-us/azure/connectors/apis-list#control-workflow) + +### Supported data manipulation + +- [All data operations](https://docs.microsoft.com/en-us/azure/connectors/apis-list#manage-or-manipulate-data) + +### Not supported + +- [Managed connectors](https://docs.microsoft.com/en-us/azure/connectors/apis-list#managed-connectors) + +## Example + +Dapr Workflows can be used as the orchestrator for many otherwise complex activities. For example, invoking an external endpoint, saving the data to a state store, publishing the result to a different app or invoking a binding can all be done by calling back into Dapr from the workflow itself. + +This is due to the fact Dapr runs as a sidecar next to the workflow host just as if it was any other app. + +Examine [workflow2.json](/code/workflow.json) as an example of a workflow that does the following: + +1. Calls into Azure Functions to get a JSON response +2. Saves the result to a Dapr state store +3. Sends the result to a Dapr binding +4. Returns the result to the caller + +Since Dapr supports many pluggable state stores and bindings, the workflow becomes portable between different environments (cloud, edge or on-premises) without the user changing the code - *because there is no code involved*. + +## Get started + +Prerequisites: + +1. Install the [Dapr CLI]({{< ref install-dapr-cli.md >}}) +2. [Azure blob storage account](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-create-account-block-blob?tabs=azure-portal) + +### Self-hosted + +1. Make sure you have the Dapr runtime initialized: + + ```bash + dapr init + ``` + +1. Set up the environment variables containing the Azure Storage Account credentials: + + {{< tabs Windows "macOS/Linux" >}} + + {{% codetab %}} + ```bash + export STORAGE_ACCOUNT_KEY= + export STORAGE_ACCOUNT_NAME= + ``` + {{% /codetab %}} + + {{% codetab %}} + ```bash + set STORAGE_ACCOUNT_KEY= + set STORAGE_ACCOUNT_NAME= + ``` + {{% /codetab %}} + + {{< /tabs >}} + +1. Move to the workflows directory and run the sample runtime: + + ```bash + cd src/Dapr.Workflows + + dapr run --app-id workflows --protocol grpc --port 3500 --app-port 50003 -- dotnet run --workflows-path ../../samples + ``` + +1. Invoke a workflow: + + ```bash + curl http://localhost:3500/v1.0/invoke/workflows/method/workflow1 + + {"value":"Hello from Logic App workflow running with Dapr!"} + ``` + +### Kubernetes + +1. Make sure you have a running Kubernetes cluster and `kubectl` in your path. + +1. Once you have the Dapr CLI installed, run: + + ```bash + dapr init --kubernetes + ``` + +1. Wait until the Dapr pods have the status `Running`. + +1. Create a Config Map for the workflow: + + ```bash + kubectl create configmap workflows --from-file ./samples/workflow1. json + ``` + +1. Create a secret containing the Azure Storage Account credentials. Replace the account name and key values below with the actual credentials: + + ```bash + kubectl create secret generic dapr-workflows --from-literal=accountName= --from-literal=accountKey= + ``` + +1. Deploy Dapr Worfklows: + + ```bash + kubectl apply -f deploy/deploy.yaml + ``` + +1. Create a port-forward to the dapr workflows container: + + ```bash + kubectl port-forward deploy/dapr-workflows-host 3500:3500 + ``` + +1. Invoke logic apps through Dapr: + + ```bash + curl http://localhost:3500/v1.0/invoke/workflows/method/workflow1 + + {"value":"Hello from Logic App workflow running with Dapr!"} + ``` + +## Invoking workflows using Dapr bindings + +1. First, create any [Dapr binding]({{< ref components-reference >}}) of your choice. See [this]({{< ref howto-triggers >}}) How-To tutorial. + + In order for Dapr Workflows to be able to start a workflow from a Dapr binding event, simply name the binding with the name of the workflow you want it to trigger. + + Here's an example of a Kafka binding that will trigger a workflow named `workflow1`: + + ```yaml + apiVersion: dapr.io/v1alpha1 + kind: Component + metadata: + name: workflow1 + spec: + type: bindings.kafka + metadata: + - name: topics + value: topic1 + - name: brokers + value: localhost:9092 + - name: consumerGroup + value: group1 + - name: authRequired + value: "false" + ``` + +1. Next, apply the Dapr component: + + {{< tabs Self-hosted Kubernetes >}} + + {{% codetab %}} + Place the binding yaml file above in a `components` directory at the root of your application. + {{% /codetab %}} + + {{% codetab %}} + ```bash + kubectl apply -f my_binding.yaml + ``` + {{% /codetab %}} + + {{< /tabs >}} + +1. Once an event is sent to the bindings component, check the logs Dapr Workflows to see the output. + + {{< tabs Self-hosted Kubernetes >}} + + {{% codetab %}} + In standalone mode, the output will be printed to the local terminal. + {{% /codetab %}} + + {{% codetab %}} + On Kubernetes, run the following command: + + ```bash + kubectl logs -l app=dapr-workflows-host -c host + ``` + {{% /codetab %}} + + {{< /tabs >}} + +## Example + +Watch an example from the Dapr community call: + + + +## Additional resources + +- [Blog announcement](https://cloudblogs.microsoft.com/opensource/2020/05/26/announcing-cloud-native-workflows-dapr-logic-apps/) +- [Repo](https://github.com/dapr/workflows) \ No newline at end of file diff --git a/daprdocs/static/code/workflow.json b/daprdocs/static/code/workflow.json new file mode 100644 index 000000000..ee221dc85 --- /dev/null +++ b/daprdocs/static/code/workflow.json @@ -0,0 +1,82 @@ +{ + "definition": { + "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", + "actions": { + "Function": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "https://daprfunc.azurewebsites.net/api/HttpTrigger1" + }, + "runAfter": {} + }, + "SaveState": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "http://localhost:3500/v1.0/state/statestore", + "body": [ + { + "key": "mystate", + "value": "@body('Function')" + } + ], + "headers": { + "Content-Type": "application/json" + } + }, + "runAfter": { + "Function": [ + "Succeeded" + ] + } + }, + "SendToServiceBus": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "http://localhost:3500/v1.0/bindings/servicebus", + "body": { + "data": { + "message": "@body('Function')" + } + }, + "headers": { + "Content-Type": "application/json" + } + }, + "runAfter": { + "SaveState": [ + "Succeeded" + ] + } + }, + "Response": { + "inputs": { + "body": { + "value": "@body('Function')" + }, + "statusCode": 200 + }, + "runAfter": { + "SendToServiceBus": [ + "Succeeded" + ] + }, + "type": "Response" + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "parameters": {}, + "triggers": { + "manual": { + "inputs": { + "schema": {} + }, + "kind": "Http", + "type": "Request" + } + } + } + } \ No newline at end of file diff --git a/daprdocs/static/images/workflows-diagram.png b/daprdocs/static/images/workflows-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8c95d4ef85e9dca11019d3716e5b7eadd1ad7554 GIT binary patch literal 47758 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 H+-d&@m+w1> literal 0 HcmV?d00001