# Creating a workflow

### In Data-flo there are 3 ways to build a workflow.&#x20;

1. [Starting a new workflow from a blank canvas ](https://cgps.gitbook.io/data-flo/basics/combining-adaptors-to-create-workflows/creating-a-workflow/building-a-workflow-from-scratch)
2. [Cloning an existing or shared workflow ](https://cgps.gitbook.io/data-flo/basics/combining-adaptors-to-create-workflows/creating-a-workflow/cloning-an-existing-workflow)
3. [Importing a .dataflo file ](https://cgps.gitbook.io/data-flo/basics/combining-adaptors-to-create-workflows/creating-a-workflow/importing-a-.dataflo-file)

The idea is that you build your workflow so that it can be reused on different datasets or easily repurposed for others to use. To that end, before you start building consider the following:&#x20;

* What are you trying to accomplish with the workflow?
* Where is the data stored?
* What will you be doing with the data after it's processed?
* Who will be running this workflow once it's built?
* Is there an existing workflow that does part of what you need to do, or does something similar?

Regardless of the method, you will add adaptors to your canvas, link them together via connectors and troubleshoot your workflow to ensure it functions as intended.&#x20;

<figure><img src="https://1969044508-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVJMuSDp56RPG6HerD2nz%2Fuploads%2FA6HGorIjBhAZRiWXwdqB%2Fimage.png?alt=media&#x26;token=8fbf3b7a-7f5a-413c-a28b-eba2b4d98fef" alt="A screenshot of a workflow including import, transformation, and export adaptors linked via connectors to create a workflow"><figcaption><p>Use import, transformation, and export adaptors linked via connectors to create a workflow</p></figcaption></figure>

### Data types&#x20;

There are 8 different data types in Data-flo, and it's important to keep this in mind when you're connecting adaptors - the data type must be compatible between the output of one and the input of the next adaptor in order to connect them together to create a workflow.&#x20;

Clicking on an individual input/output/option text in an adaptor will display the data type in the side bar.

<figure><img src="https://1969044508-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVJMuSDp56RPG6HerD2nz%2Fuploads%2F42rq4YvRgLIaedZdxzrB%2Fimage.png?alt=media&#x26;token=8ab10e43-950f-48f5-a820-6633f0e51ae9" alt=""><figcaption><p>Clicking on "original column' shows you in the side bar that it requires a text data type as an input</p></figcaption></figure>

You can also find compatible adaptors by left clicking on the circle next to the input/output/option of interest and dragging your cursor onto the canvas and releasing. This will bring up all compatible adaptors in the side bar.

<table><thead><tr><th width="164">Data type</th><th>Description </th></tr></thead><tbody><tr><td>boolean </td><td>Represents values that are either True or False. This data type is only used in adaptor options, not as an adaptor input or output.</td></tr><tr><td>datatable</td><td>Represents tabular data, comprising rows and columns in a grid-like format.</td></tr><tr><td>file</td><td>Represents the contents of a file, complete with formatting, encoding, and file extension.</td></tr><tr><td>graph </td><td>Represents connected information including non-linear data such as nodes (vertices) and edges. Often used to represent networks. The graph structure can be directed or undirected.</td></tr><tr><td>list</td><td>Represents an ordered array of text or numbers treated as text. It does not have a header.  </td></tr><tr><td>dictionary</td><td>Represents a collection of key-value pairs. It is a way to associate one piece of information with another. Keys must be unique. Can contain letters, numbers and symbols.  </td></tr><tr><td>number</td><td>Represents integers and decimal numeric values. </td></tr><tr><td>text </td><td>Represents a string of alphanumeric characters of any length. Can contain letters, numbers,  symbols, URLs and regular expressions (<a href="https://regex101.com/">RegEx</a>).</td></tr></tbody></table>

#### &#x20; <a href="#examples" id="examples"></a>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cgps.gitbook.io/data-flo/basics/combining-adaptors-to-create-workflows/creating-a-workflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
