Technical Designs
A logical description of the technical concepts that the platform implements. Each design shows the components, the interfaces between them and the decisions they follow. A design describes a part that exists in the code, not a plan.
| Design | Subject |
|---|---|
| Message Bus | Apache KafkaApache KafkaA distributed event streaming platform. In CIVITAS/CORE it is used as the message bus to transport events, models and data in data flows. as the central bus: the topics, the CloudEvents envelope, the Outbox patternTransactional Outbox PatternA pattern for reliably publishing events after a database change: Entity changes and their corresponding outbox events are persisted in a single database transaction. A separate publisher process reads the outbox table and publishes events to Kafka after the transaction has committed. and the orchestrated SagaSaga PatternA pattern for coordinating long-running, multi-step operations across several components without a distributed transaction. Each step has a compensating action; if a later step fails, the compensating actions of all previously completed steps are executed in reverse order. In CIVITAS/CORE it is used for provisioning workflows that require sequential, cross-adapter operations. |
| Pipeline Engine | The requirements for a pipeline engine, and how Apache NiFiApache NiFiA stream processing and connector framework. In CIVITAS/CORE it is the pipeline engine for data integration and transformation (see ADR 047) and implements dataset-defined data flows. satisfies them |
| Model Management | Model Forge: the artifact registry, the URN identity, the dependency graph and the generated views |