This repository serves as development environment
for the
The RealObject Application Framework
intro
Blue Marble Simulations (bm) is a Java-based multi-module Maven project focused on GPS tracking simulations. It provides client-side tooling around Traccar, integrating it with Spring Boot and Apache Camel to simulate and process real-time location data.
latest versions
[INFO] === blue marble simulations === 1.1.19
[INFO] --- blue marble parameters --- 1.1.19
[INFO] ---- GPS Trackers --- 1.1.19
[INFO] ..... gps-osmand-tracker 1.1.19
[INFO] ---- Traccar 6.12.2 Clients --- 1.1.19
[INFO] ..... traccar-openapitools-client 6.12.2 ......
[INFO] ..... traccar-api-client 6.12.2-1.1.19
[INFO] ..... traccar-realtime-client 6.12.2-1.1.19
For earlier versions check the version history
builds and releases
TODO: Quickstart
Technology Stack
Technology Stack as of v1.1.18:
| Layer | Technology | Version |
|---|---|---|
Language |
Java |
21 (LTS) |
Build |
Maven |
≥ 3.8.8 |
App Framework |
Spring Boot |
4.0.3 |
Integration / Routing |
Apache Camel |
4.18.0 |
Unit Testing |
JUnit 5 (and Camel testing) |
5.20.0 |
Integration Test Infrastructure |
Docker via Fabric8 plugin |
0.48.1 |
GPS Server |
Traccar |
6.12.2 |
Code Formatting |
Spotify fmt-maven-plugin |
2.29 |
Documentation |
AsciiDoc / AsciidoctorJ / Kroki / Mermaid |
— |
/bm-parent - Maven Multi Module
This bm-sim repository is a Maven Multi Module project with multi-tier hierarchy.
The Maven Reactor mechanism makes sure to collect all modules
and assert correct build order with every mvn command executed.
It assures that any project is build as required by another.
The Parent POM defines all dependency versions, plugin config, Docker setup for Traccar, and AsciiDoc doc generation and acts as the BOM (bill of materials) for all sub-modules.
If you are not sure about your Maven Version it is highly recommended to use the
Maven Wrapper
in the root directory!
If you modify the versioning make sure the build order matches the listing above.
Otherwise the Maven Reactor has detected inconsistencies.
/bm-tracker - GPS Tracker Simulators
This bm-tracker branch is used to develop virtual GPS Tracker Simulators
which can track real things by sending their positions frequently.
Trackers represent the 'sender' side.
For the ROAF development we want to start bottom up.
|
Important
|
All Devices in the ROAF provide GPS coordinates (lat,lon,fix) |
as a common basis for Framework development.
The ROAF vision described in the book is based on simple and platonic rules.
In order to simulate things, events and interactions of the real world,
we will need a grid for space and time.
With respect to the blue marble we might speak of Globe Positioning.
Traccar Trackers
The 'JeeTS Tracker'
If the Traccar Trackers don’t fit your business the JeeTS Book you demonstrates how to create Protocols with Message Catalogs to fit your business, how to integrate your own Tracker with the Traccar platform and your business model.
gps-osmand-tracker
The first ROAF GPS Tracker will serve as a placeholder for more customized trackers.
We will look at the standard components of a Tracking Device
and implement the most simple Tracker by using the public OsmAnd protocol.
You can find the protocol specs
here,
here and elsewhere.
The implemetation is using a SEDA queue as an async ingress with retry/backoff, being a solid Camel pattern for resilient message delivery.
/bm-traccar - Remote Traccar Access
The bm-traccar aggregator POM is the development environment
to code against the Traccar GPS Tracking Platform.
Traccar is a GPS Tracking System (GTS) written in Java and published as Open Source Software.
The System was thoroughly analyzed in the
JeeTS Project
and
JeeTS Book.
As of v1.1.8 we are developing the following three cascaded and yet independent artifacts as a layered architecture.
The separation between traccar-openapitools-client (generated), traccar-api-client (wrapper),
and traccar-realtime-client (orchestration) is deliberate and well-executed.
The Api interface acts as a clean façade hiding all REST complexity.
traccar-openapitools-client
The Traccar REST API is defined in a single openapi.yaml file,
which is processed with the
OpenAPI Generator
to generate a plain Java Client traccar-api-generated-x.y.z.jar from the
OpenAPI specification.
traccar-api-client
The traccar-api-client is a Java Client Software to provide full (remote) control over your Traccar server.
And it can be used to integrate your Tracking with your company systems,
like Human Resources-, Sales- and Fleet Management Software.
Synchronize your employees with their cars and driver information without utilizing the traccar UI.
Pull driving reports for your sales team … and much more ;)
Technically the project is a higher-level Spring Boot + Camel REST client wrapper over the Traccar API.
traccar-realtime-client
The traccar-rt-client is a Java Client Software
to provide full (remote) control over and interact
via live surveillance of your Traccar Server Scenario.
A dual-lock approach (ConcurrentHashMap for concurrent reads and synchronized (deviceMapLock)
for multi-map atomic writes) always assures a stable realtime state.