# Introduction

GO-DAG is a framework developed using the Go language. It is utilized to structure a sequence of subtasks into a directed acyclic graph based on their dependencies' order and oversee the execution process.

This project strictly adheres to zero external dependencies, relying solely on internal code packages (excluding testing requirements).

Currently, the released versions include:

* [workflow/simple](https://github.com/rhosocial/go-dag/blob/main/workflow/simple) ([docs](https://docs.go-dag.dev.rho.social/basic-usage/use-simple.dag), [imports](https://pkg.go.dev/github.com/rhosocial/go-dag/workflow/simple?tab=imports))

## A Simple Example

Here is the execution graph:

<figure><img src="https://1486875518-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Foyezdgt4RCgef0Y2fFzx%2Fuploads%2F3ifA40P3QhSJcFG37jhn%2Fimage.png?alt=media&#x26;token=2d842ba9-b733-4104-bdd9-6ede317376f7" alt=""><figcaption><p>a simple example</p></figcaption></figure>

After the completion of the **t:input** task, which dispatches its output to both **c:transit1** and **c:transit2** channels, the tasks **t:t11** and **t:t12** will commence simultaneously. They will then transmit their respective output results to the **t:transit1** and **t:transit2** channels. Subsequently, the **t:output** task will resume its execution solely upon receiving data from both **c:t21** and **c:t22** channels.

***

## Link

* GitHub: <https://github.com/rhosocial/go-dag>
* Go Package: <https://pkg.go.dev/github.com/rhosocial/go-dag>

***

To access specific usage instructions, please click on the table of contents located on the left side of the page.
