Skip to main content

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​

ClassPackageRole
FileSpeccore.spec.modelRoot spec β€” drives everything
ParsedRecordcore.spec.modelUniversal record flowing through the pipeline
ParserRegistrycore.spec.registryAuto-discovers parsers and routes by format
TransformationPipelinecore.pipelineOrchestrates the full flow
CorrectionEnginecore.transformersApplies the CorrectionRule list
ValidationEnginecore.validatorsApplies the ValidationRule list
KafkaRecordWritercore.writersWrites ParsedRecord β†’ Kafka as JSON
TransformServiceapi.serviceBridge: HTTP request β†’ pipeline
SpecServiceapi.serviceIn-memory spec store (replace with JPA for production)
OutboundConfigcore.spec.modelOutbound section of FileSpec β€” field mappings, generator format, rules
EventMappercore.transformersProjects ParsedRecord β†’ FileRecord using FieldMapping list
FileGeneratorcore.generatorsInterface for file format writers (NACHA, CSV, SWIFT…)
GeneratorRegistrycore.generatorsAuto-discovers @Component FileGenerator beans
EventToFilePipelinecore.pipelineOrchestrates map β†’ correct β†’ validate β†’ generate