https://github.com/indeedeng/iwf
iWF is a WorkflowAsCode microservice orchestration platform offering an orchestration coding framework and service for building resilient, fault-tolerant, scalable long-running processes
https://github.com/indeedeng/iwf
cron-scheduler distributed-process distributed-system distributed-transactions durable-timer golang java message-queue open-source orchestration orchestrator persistence process python timer workflow workflow-as-code workflow-engine
Last synced: 16 days ago
JSON representation
iWF is a WorkflowAsCode microservice orchestration platform offering an orchestration coding framework and service for building resilient, fault-tolerant, scalable long-running processes
- Host: GitHub
- URL: https://github.com/indeedeng/iwf
- Owner: indeedeng
- License: mit
- Created: 2022-07-26T18:11:41.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T19:06:46.000Z (6 months ago)
- Last Synced: 2024-10-29T20:26:10.928Z (6 months ago)
- Topics: cron-scheduler, distributed-process, distributed-system, distributed-transactions, durable-timer, golang, java, message-queue, open-source, orchestration, orchestrator, persistence, process, python, timer, workflow, workflow-as-code, workflow-engine
- Language: Go
- Homepage:
- Size: 12.2 MB
- Stars: 530
- Watchers: 27
- Forks: 55
- Open Issues: 86
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-temporal - iWF - DSL workflow framework built on Temporal. (Frameworks / Terraform Providers)
- awesome-workflow-engines - iWF - iWF is a WorkflowAsCode API orchestration platform offering an orchestration coding framework and service for building resilient, fault-tolerant, scalable long-running processes. (Full fledged product)
README
# iWF project - main & server repo
[](http://iworkflow-slack.work)
[](https://pkg.go.dev/github.com/indeedeng/iwf)
[](https://goreportcard.com/report/github.com/indeedeng/iwf)
[](https://app.codecov.io/gh/indeedeng/iwf/branch/main)[](https://github.com/indeedeng/iwf/actions/workflows/ci-cadence-integ-test.yml)
[](https://github.com/indeedeng/iwf/actions/workflows/ci-temporal-integ-test.yml)**iWF will make you a 10x developer!**
iWF is an API orchestration platform for building resilient, fault-tolerant, scalable long-running applications.
It offers an orchestration **coding framework** with abstractions for durable timers, async/background execution with backoff retry,
KV storage, RPC, and message queues. You will build long-running reliable processes faster than ever.# What is iWF
## Use case study/examples
* [SAGA pattern](https://medium.com/@qlong/saga-pattern-deep-dive-with-indeed-workflow-engine-b7e82c59e51f?sk=672abd70b0e092d4cda7788276c5a241)
* [Java samples](https://github.com/indeedeng/iwf-java-samples/tree/main/src/main/java/io/iworkflow/workflow/money/transfer), [Golang samples](https://github.com/indeedeng/iwf-golang-samples/tree/main/workflows/moneytransfer), [Python samples](https://github.com/indeedeng/iwf-python-samples/tree/main/moneytransfer)
* [User sign-up/registry in Python/Java](https://github.com/indeedeng/iwf/wiki/Use-case-study-%E2%80%90%E2%80%90-user-signup-workflow)
* [Abstracted microservice orchestration in Java/Golang](https://github.com/indeedeng/iwf/wiki/Use-case-study-%E2%80%90%E2%80%90-Microservice-Orchestration)
* Employer & JobSeeker engagement in [Java](https://github.com/indeedeng/iwf-java-samples/tree/main/src/main/java/io/iworkflow/workflow/engagement) or [Golang](https://github.com/indeedeng/iwf-golang-samples/blob/main/workflows/engagement)
* Subscription Workflow in [Java](https://github.com/indeedeng/iwf-java-samples/tree/main/src/main/java/io/iworkflow/workflow/subscription) or [Golang](https://github.com/indeedeng/iwf-golang-samples/blob/main/workflows/subscription)## Basic concepts
* [Basic concepts overview](https://github.com/indeedeng/iwf/wiki/Basic-concepts-overview)
* [WorkflowState](https://github.com/indeedeng/iwf/wiki/WorkflowState)
* [RPC](https://github.com/indeedeng/iwf/wiki/RPC)
* [Persistence](https://github.com/indeedeng/iwf/wiki/Persistence)See more in [iWF wiki](https://github.com/indeedeng/iwf/wiki).
# How to use
As a coding framework, iWF provides three SDKs to use with:
* [iWF Java SDK](https://github.com/indeedeng/iwf-java-sdk) and [samples](https://github.com/indeedeng/iwf-java-samples)
* [iWF Golang SDK](https://github.com/indeedeng/iwf-golang-sdk) and [samples](https://github.com/indeedeng/iwf-golang-samples)
* [iWF Python SDK](https://github.com/indeedeng/iwf-python-sdk) and [samples](https://github.com/indeedeng/iwf-python-samples)The iWF SDKs required a server to run against. See below options to run the server locally. See [iWF wiki](https://github.com/indeedeng/iwf/wiki) for production
## Using all-in-one docker image
This is the simplest option to run the server locally for development.
Run the docker command to start the container for:
* IWF service: http://localhost:8801/
* Temporal WebUI: http://localhost:8233/
* Temporal service: localhost:7233
```shell
docker pull iworkflowio/iwf-server-lite:latest && docker run -p 8801:8801 -p 7233:7233 -p 8233:8233 -e AUTO_FIX_WORKER_URL=host.docker.internal --add-host host.docker.internal:host-gateway -it iworkflowio/iwf-server-lite:latest
```## Using docker image & docker-compose
This option runs Temporal in separate container with slightly more power (more search attributes allowed).
Checkout this repo, and run:
```shell
docker pull iworkflowio/iwf-server:latest && docker-compose -f ./docker-compose/docker-compose.yml up
```This by default will run Temporal server with it, again:
* IWF service: http://localhost:8801/
* Temporal WebUI: http://localhost:8233/
* Temporal service: localhost:7233# Support
Join our Slack channel! [](http://iworkflow-slack.work)
You can also post in our [Discussion](https://github.com/indeedeng/iwf/discussions), or raise an issue.
# Contributing
Check out our [CONTRIBUTING](https://github.com/indeedeng/iwf/blob/main/CONTRIBUTING.md) page.
# Posts & Articles & Reference
* [Why I created Indeed Workflow Engine](https://medium.com/@qlong/a-letter-to-cadence-temporal-and-workflow-tech-community-b32e9fa97a0c)
* [Durable Timers in Indeed Workflow Engine](https://medium.com/@qlong/iwf-deep-dive-workflowstate-durable-timer-1-0bb89e6d6fd4?sk=6095e32b5ad677b6ea4f3c604751ece5)
* Cadence community spotlights
* [#1](https://cadenceworkflow.io/blog/2023/01/31/community-spotlight-january-2023/)
* [#2](https://cadenceworkflow.io/blog/2023/11/30/community-spotlight-update-november-2023/)
* [#3](https://cadenceworkflow.io/blog/2023/08/31/community-spotlight-august-2023/)
* iWF is an abstracted Temporal [framework](https://github.com/temporalio/awesome-temporal). Same for [Cadence](https://github.com/uber/cadence#cadence).
* [How ContinueAsNew is built in iWF](https://medium.com/@qlong/guide-to-continueasnew-in-cadence-temporal-workflow-using-iwf-as-an-example-part-1-c24ae5266f07)