Replies: 5 comments 10 replies
|
Hi @Mounesh-S , thanks for starting this discussion and we're glad that Kaoto helped you 🙏. After reading the proposal, I think this is interesting, I would like to ask a few questions to help me understand better the goals. I'll be doing so on separate threads so we can focus on each topic (R1-4) on an individual basis. |
|
R1 · A group is a first-class thing If I'm understanding correctly, this looks like a maven archetype, but for standalone routes, is that the case? I'm wondering if scaffolding another tenant through a template would help in this case. In the past, we considered adding a "New route from a template" functionality, I think this case might be similar, but instead of a single file, it would compose a folder with multiple files in it |
|
R2 · Completion state within a group Do you mean like a checklist out of files presence? |
|
R4 · Instances on more than one axis, with a shared base and per-instance overrides This is interesting, do you mean launching the routes with different profiles and those profiles bringing different parameters? From where are you planning to launch the integrations? Through Kaoto? |





Uh oh!
There was an error while loading. Please reload this page.
Hi Kaoto team,
We build and operate a number of Camel + Quarkus integrations where the same small set of
routes is repeated many times over. We'd like to check whether the needs below belong in
Kaoto — in core, or behind an extension point — before we build anything.
We're happy to implement whichever parts you'd welcome, and equally happy to be told this
sits outside Kaoto's scope.
The shape of the problem
We integrate external systems into a platform. Work arrives in domains, and each domain
always has the same fixed set of operations. Illustrative shape (names are generic):
Every newly integrated system needs that whole set again. And each set then runs for
several customers and several environments. So one definition becomes many instances:
The important part: instances are mostly identical.
the same for every customer using it.
environment.
Today each route is a standalone
.camel.yaml, so every instance is a full copy, and a fixto a shared mapping has to be repeated in each one.
Requirements
R1 · A group is a first-class thing
What we need. A named, reusable definition that declares which routes it expects to
contain, and what they have in common — the data shape they must all produce, and a shared
error-handling policy. Each member still owns its own transformation and its own error
handling on top of that.
Without it. Related routes are unrelated files. Nothing records that they belong
together or that they must agree on an output shape.
Generically. The same idea as a project template that declares its expected contents.
R2 · Completion state within a group
What we need. A group knows it expects four members. Two are finished, one is in
progress, one hasn't been started — and the tool shows that. "Finished" should mean the
member passed its own checks, not that someone ticked a box.
Without it. Progress lives in a spreadsheet next to the editor, and it goes stale.
Generically. A checklist derived from the definition rather than maintained by hand.
R3 · Instantiate a whole group with parameters
What we need. Stamp out the entire group again with a different parameter set, in one
action, rather than recreating each route by hand.
Without it. Repeating a group is manual copying, which is where drift starts.
Generically. Camel already has the runtime half of this — RouteTemplates and Kamelets
are parameterised routes. What's missing is a UI story for instantiating a group of them
together, as a unit.
R4 · Instances on more than one axis, with a shared base and per-instance overrides
This is the requirement we'd most like your view on.
What we need. An instance is identified by more than one key — for us, integrated system
× customer × environment. Configuration should be authored once on the group and
inherited by every instance, with an instance overriding only the few values that genuinely
differ. The UI should make clear which values are inherited and which are overridden.
Without it. N instances means N copies of the same mapping, and one bug fix has to be
applied N times. This is the single biggest cost we're trying to avoid.
Generically. The same need Kustomize overlays or Spring profiles serve: one base
definition, many thin variants.
What we found in the codebase
We looked before proposing. Kaoto already has a rendering-anchor extension mechanism —
RenderingAnchorContext.registerComponent({ anchor, activationFn, component })— andKaoto's own DataMapper, ComponentMode and GroupAutoStartupSwitch register through it.
Two observations:
CanvasFormHeader,CanvasGroupTitlebar,CanvasNodeTopLeft) all sitinside the canvas node form, so there's no anchor above the level of a single route.
RenderingAnchorContextisn't exported frompublic-api, andRegisterComponentsholdsits registrations in a local
useRef, so a third party can't register without forking.So even the parts that could reasonably live outside core have no supported seam today.
We'd rather build this as a plugin than in core
None of R1–R4 has to be in Kaoto's core, if the extension surface allows it. Our preference,
in order:
For option 1, what we'd need from Kaoto is modest and not specific to us:
RenderingAnchorContext,Anchors,IRegisteredComponentfrompublic-apiRegisterComponentsaccept externally supplied registrationsuseRefWe'd be glad to contribute that groundwork regardless of whether our own features ever land.
We know this overlaps Karavan
Karavan already covers project-level organisation and lifecycle, and "a group of
integrations" arguably belongs there rather than in the designer. If the answer is "take
this to Karavan," that's genuinely useful to hear.
Where we think it may still be Kaoto's: R3 is UI for an existing Camel concept.
RouteTemplates and Kamelets are already parameterised routes; a designer that instantiates
them with a parameter set seems like designer work.
What we're asking
Kaoto would want?
like this can live in a plugin rather than a fork?
We can bring a design sketch or a proof of concept to whichever is most useful.
Thanks for Kaoto — it's been good to work with.
All reactions