How akram48616/flowforge works
FlowForge is a distributed workflow orchestration platform. A client submits a workflow through the gateway; the workflow service validates and stores its dependency graph. An execution request leads the execution service to fetch that definition, track task state, and dispatch ready tasks through Kafka. Workers execute task types and publish results; execution coordination handles retries, stale-dispatch recovery, and terminal status, which notifications consume. The README documents these cross-service flows; internal links not established by the supplied source excerpts are omitted.
Main entry points: ExecutionService.java Execution Service · WorkflowService.java Workflow Service · ServiceRegistryApplication.java Service Registry · ApiGatewayApplication.java API Gateway
Components 21
API ingress
- API Gateway
api-gateway/src/main/java/com/example/gateway/ApiGatewayApplication.java
Workflow definitions
- Workflow Service
workflow-service/src/main/java/com/example/workflow/service/WorkflowService.java - Cycle Detection
workflow-service/src/main/java/com/example/workflow/service/CycleDetector.java - Workflow MySQL
Execution runtime
- Execution Service
execution-service/src/main/java/com/example/execution/service/ExecutionService.java - DAG Executor
execution-service/src/main/java/com/example/execution/service/DagExecutor.java - Recovery Scheduler
execution-service/src/main/java/com/example/execution/service/SchedulerService.java - Distributed Lock
execution-service/src/main/java/com/example/execution/service/DistributedLockService.java - Execution MySQL
- Result Consumer
execution-service/src/main/java/com/example/execution/kafka/TaskResultConsumer.java
Task processing
- Worker Service
worker-service/src/main/java/com/example/worker/service/WorkerService.java - Task Consumer
worker-service/src/main/java/com/example/worker/kafka/TaskConsumer.java - Task Executors
worker-service/src/main/java/com/example/worker/executor - Result Producer
worker-service/src/main/java/com/example/worker/kafka/TaskResultProducer.java - Notification Service
notification-service/src/main/java/com/example/notification/kafka/WorkflowStatusConsumer.java
Coordination services
- Kafka
- Dead-letter Topic
- Workflow Status Topic
- Redis
- Service Registry
service-registry/src/main/java/com/example/registry/ServiceRegistryApplication.java
Other components
- Client
Connections 26
- Client → API Gateway: submits requests
README.md - API Gateway → Workflow Service: routes requests
README.md - API Gateway → Execution Service: routes requests
README.md - Workflow Service → Cycle Detection: validates DAG
README.md - Workflow Service → Workflow MySQL: persists definitions
README.md - Execution Service → Workflow Service: fetches DAG
README.md - Execution Service → DAG Executor: advances DAG
README.md - Execution Service → Execution MySQL: stores run state
README.md - Execution Service → Kafka: dispatches tasks
README.md - Kafka → Task Consumer: delivers tasks
README.md - Task Consumer → Worker Service: routes tasks
README.md - Worker Service → Task Executors: executes task types
README.md - Worker Service → Result Producer: publishes results
README.md - Result Producer → Kafka: sends task results
README.md - Kafka → Result Consumer: delivers results
README.md - Result Consumer → Execution Service: advances execution
README.md - Recovery Scheduler → Kafka: requeues stale tasks
README.md - Execution Service → Dead-letter Topic: publishes exhausted tasks
README.md - Execution Service → Workflow Status Topic: publishes terminal status
README.md - Workflow Status Topic → Notification Service: delivers status
README.md - Execution Service → Redis: coordinates locks
README.md - API Gateway → Service Registry: registers with
README.md - Workflow Service → Service Registry: registers with
README.md - Execution Service → Service Registry: registers with
README.md - Worker Service → Service Registry: registers with
README.md - Notification Service → Service Registry: registers with
README.md