{"repo":"cschleiden/go-workflows","free":true,"listed":false,"github":"https://github.com/cschleiden/go-workflows","clone":"git clone https://github.com/cschleiden/go-workflows.git","description":"Embedded durable workflows for Golang similar to DTFx/Cadence/Temporal","language":"Go","stars":519,"topics":["golang","go","durabletask","workflows","orchestration","workflow"],"license":"MIT","category":"workflow-automation","readme_excerpt":"Durable workflows using Go Borrows heavily from Temporal (and since it's a fork also Cadence) as well as DTFx. See also: - https://cschleiden.dev/blog/2022-02-13-go-workflows-part1/ - https://cschleiden.dev/blog/2022-05-02-go-workflows-part2/ Docs See http://cschleiden.github.io/go-workflows for the current version of the documentation. Simple example Workflow Workflows are written in Go code. The only exception is they must not use any of Go's non-deterministic features ( select , iteration over a map , etc.). Inputs and outputs for workflows and activities have to be serializable: Activities Activities can have side-effects and don't have to be deterministic. They will be executed only once and the result is persisted: Worker The worker is responsible for executing Workflows and Activities , both need to be registered with it. Backend The backend is responsible for persisting the workflow events. Currently there is an in-memory backend implementation for testing, one using SQLite, one using MySQL, one using PostgreSQL, and one using Redis. Putting it all together We can start workflows from the same process the worker runs in -- or they can be separate. Here we use the SQLite backend, spawn a single worker (which then executes both Workflows and Activities ), and then start a single instance of our workflow","default_branch":null,"files":null,"tree":[],"storefront":"/r/cschleiden","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cschleiden/go-workflows/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}