Application Structure
This guide describes the recommended module layout for a Pipeline Framework application and how generated artifacts fit into it.
Visual Design with Canvas
The Canvas designer at https://app.pipelineframework.org generates this structure automatically and keeps it consistent across services.
Core Modules
A typical pipeline application consists of:
- Orchestrator Runtime: Loads the pipeline order and invokes client steps.
- Step Services: Each service implements a single step.
- Common Module: Shared domain types, DTOs, gRPC messages, and mappers.
- Plugin Services (optional): Host plugin server and client code (persistence, cache, etc.).
- Framework Modules: Runtime (dependency) and Deployment (build-time).
Project Layout
text
my-pipeline-application/
├── pom.xml
├── pipeline.yaml # Optional pipeline config (or config/pipeline.yaml)
├── common/
│ └── src/main/java/... # Domain, DTOs, proto, shared mappers
├── orchestrator-svc/
│ └── src/main/java/... # Orchestrator runtime + CLI
├── step-a-svc/
│ └── src/main/java/... # Step implementation + mappers
├── step-b-svc/
│ └── src/main/java/... # Step implementation + mappers
├── plugins/
│ └── custom-plugin/ # Plugin implementation module(s)
└── persistence-svc/ # Plugin host service (gRPC)Generated Artifacts
At build time, the annotation processor generates role-specific sources into:
target/generated-sources/pipeline/<role>These are compiled and packaged into role-based classifier JARs (client steps, gRPC adapters, REST resources). The orchestrator and plugin host modules depend on the classifiers they need.