Purpose
This guide explains how developers can use and contribute to the framework modules in:
/ajapro
The directory contains multiple Chenile framework repositories plus samples and docs.
Directory Map
chenile-parent: Super parent BOM/parent POM used to align framework versions.chenile-core: Core runtime modules (chenile-core,chenile-base,chenile-http,stm,owiz,utils, etc.).chenile-security: Security modules (chenile-security,chenile-security-api, interceptors, cucumber sec utils).chenile-mqtt: Messaging integrations (MQTT/Kafka/pub-sub, cloud-edge-switch).chenile-proxies: HTTP/event proxy framework modules.chenile-query-workflow-blueprints: Query/workflow APIs, services, and blueprint utilities.chenile-process-management: Long-running process orchestration modules.chenile-service-registry: Service registry API/delegate/service.chenile-bdd: BDD/integration-test helpers.chenile-others: Additional modules (cache, filewatch, scheduler, config maven plugin).chenile-samples: Sample apps showing framework usage.cheniledocs.github.io: Documentation site (this repo).
Prerequisites
- JDK 25 (current
chenile-parentsets<java.version>25</java.version>). - Maven (used in all module builds).
- Git.
- GNU Make (recommended; all framework repos provide Make targets).
- Optional:
xmlstarlet(required by/ajapro/update_all.sh).
Quick Start For Framework Consumers
If you are building your own service using Chenile:
- Use
org.chenile:chenile-parentas the parent in yourpom.xml. - Set
<chenile.parent.version>to the version you want to consume. - Add only the module dependencies your service needs.
Example:
<parent>
<groupId>org.chenile</groupId>
<artifactId>chenile-parent</artifactId>
<version>2.1.12</version>
</parent>
<dependencies>
<dependency>
<groupId>org.chenile</groupId>
<artifactId>chenile-core</artifactId>
</dependency>
<dependency>
<groupId>org.chenile</groupId>
<artifactId>chenile-http</artifactId>
</dependency>
<dependency>
<groupId>org.chenile</groupId>
<artifactId>chenile-security</artifactId>
</dependency>
</dependencies>
Use module-specific artifacts only when required (for example chenile-kafka, workflow-service, process-service, service-registry-service).
Local Build Workflow
Each framework repo follows the same pattern:
- Enter a module repo, for example:
cd /ajapro/chenile-core - Build with the repo’s version file:
make build
This runs Maven using a revision value from the module version file (for example chenile-core-version.txt).
Equivalent direct Maven command:
mvn -Drevision=$(cat chenile-core-version.txt) install
Useful common targets across repos:
make cleanmake javadocmake test-javadocmake prepare-deploymake deploy
Working Across Multiple Repos
Use the top-level script to align child repo parent versions to the current chenile-parent value:
cd /ajapro
./update_all.sh
What it does:
- Reads
chenile.parent.versionfromchenile-parent/pom.xml. - Updates
<parent><version>in each sibling repopom.xml. - Shows a summary.
- Optionally commits and pushes updated repos.
Recommended Developer Flow
- Build and publish/install
chenile-parentchanges first. - Build changed framework repos (
chenile-core,chenile-security, etc.). - Validate behavior in
chenile-samples. - Update docs in
cheniledocs.github.ioif APIs/config changed.
Choosing the Right Framework Modules
- Use
chenile-corefor base service runtime, interceptors, STM/orchestration internals. - Add
chenile-securityfor authentication/authorization flows. - Add
chenile-proxiesfor local/remote proxy abstraction. - Add
chenile-mqttfor MQTT/Kafka/pub-sub messaging integrations. - Add
chenile-query-workflow-blueprintsfor query/workflow patterns and utilities. - Add
chenile-process-managementwhen implementing long-running orchestration. - Add
chenile-service-registryfor service discovery/registry use cases. - Add
chenile-bddand cucumber utils for integration-level BDD testing.
Validate With Samples
Use chenile-samples to verify upgrades or new feature behavior before consuming in product code:
cd /ajapro/chenile-samples
mvn install
Then run the sample app relevant to your module area.
Troubleshooting
- Version drift across repos:
Run
/ajapro/update_all.sh. - Build errors from Java version mismatch: Ensure JDK 25 is active.
- Dependency mismatch:
Keep services on a single
chenile-parentversion and avoid mixing module versions manually.