Try a vendor today, swap them for a competitor tomorrow, or remove the feature entirely — at the same trivial cost. Pull ready-made capabilities (risk monitoring, metrics analysis, ML inference, sensor fusion, forecasting) into your application without writing any integration code.
Capabilities ship as ordinary Java. No middleware glue layer, no proprietary runtime to learn, no framework lock-in. The vendor wrote it once; your application uses it as if it had always been part of your own codebase.
The mechanism that makes this trivial is the cloud integration service: it wires the vendor's subgraph into your application at compile time, so dropping in a new capability costs no more than dropping in a JAR.
acme_metrics 1.1 is live in the playground todaySwapping a vendor costs one Spring XML edit and a recompile. Removing a feature costs one Spring XML edit and a recompile. Adding a new vendor costs one Spring XML edit and a recompile. The substrate handles the rest.
.java that captures every
detail of how your library was wired in..java file. One artifact for security review,
compliance sign-off, and audit.fluxtion-runtime + the vendor JAR + your code. No transitive
framework, no surprise dependencies.Adopting a third-party library normally means writing and maintaining a stack of integration code yourself. With Fluxtion that stack disappears:
| Without Fluxtion | With Fluxtion |
|---|---|
| Custom integration adapter per library | Drop the JAR on the classpath |
| Configuration mapping — YAML, properties, custom DSLs | One or two Spring XML beans |
| Lifecycle plumbing — init order, shutdown propagation | Generated for you |
| Event-dispatch wiring between vendor code and your code | Inferred from field references at compile time |
| Per-vendor security and audit review | One reviewable Java file covers the whole stack |
The two-ctor contract, what to publish, a worked example.
Bean wiring, generated artifacts, live playground example.
Every node class in your JAR ships two constructors:
public class MetricsAggregator {
private final MetricsCollector collector;
// 1. No-arg ctor — ease-of-use authoring.
// Spring XML / drag-and-drop / LLM-emitted topologies can
// reference this bean without wiring dependencies manually.
// Internally builds dependent nodes and delegates.
public MetricsAggregator() {
this(new MetricsCollector());
}
// 2. Field-matching ctor — Fluxtion source-gen picks this one
// when emitting reconstruction code. Parameters map onto
// the renderable fields one-for-one.
public MetricsAggregator(MetricsCollector collector) {
this.collector = collector;
}
@OnTrigger
public boolean onCollectorUpdate() { ... }
}That's the whole contract. Spring instantiates your bean via the no-arg ctor; the
dependent node becomes a private field; Fluxtion source-gen walks that field at compile
time and discovers MetricsCollector as a transitive node — without it ever
appearing in the integrator's XML.
fluxtion-runtime as a provided dependency. Your consumer's
runtime already has it.Every Fluxtion vendor library gets these substrate properties for free — your code only writes the domain logic, the rest is generated when the integrator compiles:
init / start / stop / tearDown in dependency order automatically.telaminai/acme_metrics — 3 event types + 8 nodes (3 collectors / aggregator / averager / alerter / 2 publishers). Includes a JUnit smoke test that compiles the subgraph in-process via FluxtionSpring and asserts state across every node. Use it as a template.
Drop the JAR on your classpath. Reference the library's entry-point beans in your Spring XML — usually one or two — without mentioning the internal nodes.
<bean id="aggregator" class="com.acme.metrics.MetricsAggregator"/>
<bean id="publisher" class="com.acme.metrics.MetricsPublisher">
<constructor-arg ref="aggregator"/>
</bean>Two beans in XML. The generated processor contains eight nodes — the library's three collectors, three transformers (aggregator, averager, alerter), and two publishers. All wired by trigger edges Fluxtion inferred from constructor field types.
.java file showing every node the library contributed — same review
workflow as your own code..graphml rendering of the full topology — your compliance team can
read it..class that only depends on fluxtion-runtime + the library JAR at deployment time.switch statements, no per-event dispatch glue — Fluxtion emits it from
the topology you composed.init() / start() / stop() / tearDown() propagate through every node in
dependency order. You call one method on the processor; the substrate fans out the rest.init(), feed events, read state.Open the playground — pulls the library as a real maven artifact, runs the AOT build, prints the output. Generated source + graphml are both visible in the project tree.
Or — read the library source at telaminai/acme_metrics, or see how the vendor-JAR pattern fits alongside other authoring channels on Code-gen at a glance.
Fork acme_metrics as your starting point. The pom layout, the two-ctor contract, and the JUnit smoke test transfer directly. Tell us what you're building — we'll list your library here when it's published.