Architecture
High-Level Data Flowβ
The platform is bidirectional. One FileSpec in the registry drives both directions β it is the single source of truth for parsing, correction, validation, and file generation.
FileSpec has two optional sections: the existing inbound fields/rules, and a new outbound: OutboundConfig block. A spec can be inbound-only, outbound-only, or fully bidirectional β with zero code changes. See Events β File Pipeline for the full design.
Transformation Pipeline (Detail)β
Each record flows through five deterministic stages. No stage throws β errors accumulate on the record.
Error Severity Routingβ
Open/Closed Extension Modelβ
Add a parser or writer by implementing one interface + @Component. Spring discovers it automatically β zero changes to ParserRegistry or TransformationPipeline.
Key Classesβ
| Class | Package | Role |
|---|---|---|
FileSpec | core.spec.model | Root spec β drives everything |
ParsedRecord | core.spec.model | Universal record flowing through the pipeline |
ParserRegistry | core.spec.registry | Auto-discovers parsers and routes by format |
TransformationPipeline | core.pipeline | Orchestrates the full flow |
CorrectionEngine | core.transformers | Applies the CorrectionRule list |
ValidationEngine | core.validators | Applies the ValidationRule list |
KafkaRecordWriter | core.writers | Writes ParsedRecord β Kafka as JSON |
TransformService | api.service | Bridge: HTTP request β pipeline |
SpecService | api.service | In-memory spec store (replace with JPA for production) |
OutboundConfig | core.spec.model | Outbound section of FileSpec β field mappings, generator format, rules |
EventMapper | core.transformers | Projects ParsedRecord β FileRecord using FieldMapping list |
FileGenerator | core.generators | Interface for file format writers (NACHA, CSV, SWIFTβ¦) |
GeneratorRegistry | core.generators | Auto-discovers @Component FileGenerator beans |
EventToFilePipeline | core.pipeline | Orchestrates map β correct β validate β generate |