james.maes afcbb15108
QRun-IO/ci-policy: ci / fork-guard (push) Skipped
QRun-IO/ci-policy: native / fork-deny (push) Skipped
QRun-IO/ci-policy: native / dotnet-0 (push) Skipped
QRun-IO/ci-policy: ci / Scoped workflow [workflow 539bec410f7926fec3ef7fabe51934a91e0248be] (push) Successful in 11s
QRun-IO/ci-policy: ci / head-profile (push) Skipped
QRun-IO/ci-policy: ci / repository-policy (push) Skipped
QRun-IO/ci-policy: ci / application-template-0 (push) Skipped
QRun-IO/ci-policy: ci / gradle-1 (push) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (push) Skipped
QRun-IO/ci-policy: native / native-result (push) Successful in 7s
QRun-IO/ci-policy: ci / java-docker-3 (push) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (push) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (push) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (push) Skipped
QRun-IO/ci-policy: ci / node-8 (push) Skipped
QRun-IO/ci-policy: ci / node-9 (push) Skipped
QRun-IO/ci-policy: ci / node-10 (push) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (push) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (push) Skipped
QRun-IO/ci-policy: ci / source-config-13 (push) Skipped
QRun-IO/ci-policy: ci / source-config-14 (push) Skipped
QRun-IO/ci-policy: ci / android-0 (push) Skipped
QRun-IO/ci-policy: ci / original-business (push) Skipped
QRun-IO/ci-policy: ci / original-mcp (push) Skipped
QRun-IO/ci-policy: ci / original-voyage (push) Skipped
QRun-IO/ci-policy: ci / original-cli (push) Skipped
QRun-IO/ci-policy: ci / not-enrolled (push) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (push) Skipped
QRun-IO/ci-policy: ci / ci-result (push) Successful in 7s
maven / build (push) Successful in 2m21s
build / maven (push) Successful in 2m21s
Merge pull request 'ci: use shared ci-workflows Maven workflow' (#15) from ci/ci-workflows-develop into develop
2026-11-06 17:20:52 +00:00
2026-01-05 10:18:10 -06:00
2026-01-05 10:18:10 -06:00

QBit Template: Data

Template repository for creating QQQ Data QBits - reference data with table prefixing, sync processes, and Liquibase generation.

What is a Data QBit?

Data QBits provide reusable reference data sets that applications consume. They support:

  • Table prefixing for multi-instance deployment
  • Sync processes with natural key upsert
  • Liquibase generation for schema management
  • PossibleValueSources for dropdown lookups

Quick Start

Requires Java 21, Maven 3.8+, and QQQ 4.0.0. Create your repository, rename its Maven coordinates and Java package/classes, then run mvn clean verify. See Getting Started.

Structure

src/main/java/com/kingsrook/qbits/example/
├── ExampleDataQBitConfig.java       # Configuration
├── ExampleDataQBitProducer.java     # QBit registration
├── model/
│   ├── ExampleEntity.java
│   └── ExampleChildEntity.java
├── sync/
│   ├── ExampleDataSyncStep.java
│   └── ExampleDataSyncProcessMetaDataProducer.java
└── liquibase/
    └── ExampleLiquibaseGenerator.java

Key Characteristics

  • Table prefixing - shipping_country, billing_country
  • Host configuration - Backend and optional table prefix
  • Sync process - Upsert by natural key
  • Liquibase generator - Template-based, prefix-aware

Host integration

new ExampleDataQBitProducer()
   .withConfig(new ExampleDataQBitConfig().withBackendName("rdbms"))
   .produce(qInstance, "example-data");

The host must already define the backend. The example prefixes table names; adapting it for multiple instances also requires unique process and possible-value-source names and consistent references. See Getting Started.

Documentation

License

See LICENSE and NOTICE.

S
Description
Template repository for creating QQQ Data QBits - reference data with table prefixing, sync processes, and Liquibase generation
Readme
150 KiB
0 Stars 3 Watchers 0 Forks
Languages
Java 100%