Creating a Workflow

Before initiating an workflow, we need to establish a definition file. Let’s begin by creating a simple one with the provided YAML
---
name: "my-workflow"
stages:
  - send:
      source:
        account:
          id: "world"
          ledger: "flows-demo-001"
      destination:
        account:
          id: "deposits:${depositID}"
          ledger: "flows-demo-001"
      amount:
        amount: 100
        asset: "JPY"
Let’s save this file as my-workflow.yaml. We can now create the workflow using the following command:
fctl orchestration workflows create my-workflow.yaml
Executing the above command will save this workflow, and return an ID that can be used to execute it as a workflow instance. The output of the above command should look like this:
[SUCCESS] Workflow created with ID: e6415ff5-1d83-4853-998a-cac09ae1513c
For the sake of learning the available commands, let’s verify that the workflow was successfully saved by listing all our created workflows:
fctl orchestration workflows list

Executing a Workflow

Alright; we have now created our first workflow, but nothing has happened yet within the ledger flows-demo-001 that we used in the workflow definition. Let’s jump straight to the fun part and execute our workflow as a workflow instance. We can do so using the following command:
fctl orchestration workflows run <workflow_id> --variable depositID=1234

Checking a Workflow instance status

Workflow instances are living entities. Their current state of execution and termination can be checked using the following command:
fctl orchestration instances show dff3791d-b82c-4ed5-bf35-e954872cd2af

Debugging a Workflow instance

If you’re having trouble understanding what a workflow instance is currently doing, you can use the following command to get a detailed view of its current internal state:
fctl orchestration instances describe dff3791d-b82c-4ed5-bf35-e954872cd2af

Terminating a Workflow instance

There are cases where you might want to terminate a workflow instance, e.g. when you want to recreate it after making changes to definition or restart it after a failure with different variables. If you want to do so, you can simply use the following command:
fctl orchestration instances stop dff3791d-b82c-4ed5-bf35-e954872cd2af