# Your first workflow

Source: https://openflow.run/en/docs/guides/first-workflow/
Language: en
Product version: 0.1.0-beta.77

Pass a name through a small workflow and return a greeting without calling an external service.

You need access to an Open Flow deployment and its Workbench. For a local installation, follow the [quickstart](https://openflow.run/en/quickstart/). The example uses only built-in nodes and local Code execution.

## Import the example

Download the workflow file below and import it in the Workbench. Import creates an unpublished Draft with new Flow and Revision identities. It does not copy Runs, publications, account credentials, or permissions.

Start supplies a name, Value supplies a prefix, Code combines them, and Outputs declares the workflow result.

**Input**
{"name":"Ada"}

**Expected result**
{"message":"Hello, Ada!"}

**Before running**
An Open Flow deployment is needed to execute or import this example. The preview itself runs offline.

[Download workflow](https://openflow.run/docs/examples/first-workflow.openflow.json)

## Inspect the four nodes

1.  **Start** declares a required string parameter named `name`.
2.  **Greeting settings** stores the string `Hello` as a reusable Value.
3.  **Compose greeting** binds `name` from Start and `prefix` from Value, then returns a `message`.
4.  **Workflow result** maps that message to the Flow’s declared business output.

Select each node in the preview to inspect it. In the Workbench, connect execution paths and bind inputs separately. A line between nodes determines when the target can execute; it does not select an input value.

## Run the Draft

Choose Start in the Run menu and provide:

```json
{ "name": "Ada" }
```

The Code node runs this ES module:

```javascript
export default ({ name, prefix }) => ({
  message: `${prefix}, ${name}!`
});
```

A successful Run returns:

```json
{ "message": "Hello, Ada!" }
```

Inspect the Run to see node inputs and results. The Flow’s business output comes from Outputs; returning a value from Code alone does not declare a workflow output.

## Change and publish

Change the prefix, test the Draft again, and publish when the result is correct. Draft edits do not change the current Live version. A successful publication makes a fixed version available for production Runs.

Continue with [testing and publication](https://openflow.run/en/docs/guides/test-and-publish/index.md), or add [Condition](https://openflow.run/en/docs/nodes/condition/index.md) and [Approval](https://openflow.run/en/docs/nodes/approval/index.md) to control later work.

## Sources

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#workflow-outputs)
