Generated Artifacts ​
Generated Classes in Detail ​
Role-Specific Output Directories ​
Generated sources are written into role-specific directories under target/generated-sources/pipeline, one per deployment role. Packaging relies on these directories instead of class-name patterns.
Build configuration notes:
- Pass
-Apipeline.generatedSourcesDir=target/generated-sources/pipelineto the compiler duringcompileonly, to avoid warnings duringtestCompile. - Register the role directories as sources for IDEs via
build-helper-maven-plugin. - If tests reference generated classes (e.g., REST resources), register the same directories as test sources in
generate-test-sources.
Generated Pipeline Metadata ​
The build also emits runtime metadata under META-INF/pipeline/:
order.json: resolved runtime execution ordertelemetry.json: item-boundary and parent-step telemetry metadatareplay-topology.json: replay and live-topology metadata used by execution-event playback and trace-aware topology surfaces
If you package a grouped runtime such as monolith or pipeline-runtime, keep these resources aligned with the runtime artifact that will execute the pipeline.
gRPC Adapter Generation ​
The gRPC adapter acts as a server-side endpoint that:
- Receives gRPC requests
- Uses the inbound mapper to convert gRPC objects to domain objects
- Calls the actual service implementation
- Uses the outbound mapper to convert domain objects to gRPC responses
// Generated class structure (simplified)
public class ServiceNameGrpcService extends ServiceNameGrpc.ServiceNameImplBase {
@Inject
PaymentRecordInboundMapper inboundMapper;
@Inject
PaymentStatusOutboundMapper outboundMapper;
@Inject
ServiceName service; // Your actual service implementation
@Override
public Uni<PaymentGrpcOut> remoteProcess(PaymentGrpcIn request) {
// Delegates to an inline GrpcReactiveServiceAdapter based on the streaming shape
return /* adapter */.remoteProcess(request);
}
}gRPC Step Class Generation ​
The step class acts as a client-side component that:
- Connects to the gRPC service
- Implements the pipeline step interface
- Handles the conversion between domain objects and gRPC calls
// Generated class structure
@ApplicationScoped
public class ServiceNameGrpcClientStep implements StepOneToOne<DomainIn, DomainOut> {
@Inject
@GrpcClient("service-name")
StubClass grpcClient;
public Uni<DomainOut> applyOneToOne(DomainIn input) {
// Convert domain to gRPC
GRpcIn grpcInput = convertDomainToGrpc(input);
// Call remote service
return grpcClient.remoteProcess(grpcInput);
}
}Orchestrator Application Structure ​
The orchestrator application coordinates pipeline execution by using the PipelineExecutionService to connect all generated steps:
// Orchestrator application that coordinates execution
@CommandLine.Command(...)
public class OrchestratorApplication implements QuarkusApplication, Callable<Integer> {
@Inject
PipelineExecutionService pipelineExecutionService;
public Integer call() {
// Create input stream from input parameter
Multi<DomainInput> inputStream = createInputStream(input);
// Execute pipeline using the injected service
// The service discovers all registered step implementations through dependency injection
pipelineExecutionService.executePipeline(inputStream)
.collect().asList()
.await().indefinitely();
return CommandLine.ExitCode.OK;
}
}The actual pipeline execution is handled by the PipelineExecutionService which discovers all available step implementations through the StepsRegistry.
Generated Code Verification ​
Viewing Generated Sources ​
Generated sources can be found in the target directory:
# Generated pipeline sources location
target/generated-sources/pipeline/
# Generated classes location
target/classes/Debugging Generation Issues ​
Enable verbose logging to debug generation issues:
# application.properties
quarkus.log.category."org.pipelineframework.processor".level=DEBUG