4. Kaoto DataMapper
Kaoto DataMapper
In addition to the regular Camel steps, Kaoto now supports a Kaoto DataMapper step to be placed in the Camel Route. The Kaoto DataMapper step provides a graphical user interface to create data mappings inside the Camel Route.
Adding a DataMapper step
- Add a Kaoto DataMapper step in your Camel route. When you
Append
,Prepend
orReplace
a step in the Kaoto Design view, you can find the Kaoto DataMapper step in the catalog.
- Click the added Kaoto DataMapper step in the Kaoto Design to open the config form.
- In the config form, click the
Configure
button.
- This will open the visual DataMapper editor.
Source and Target
In the DataMapper editor, you can see a Source
section at the left and a Target
section at the right side.
The Source
section represents the input side of your mappings, where the DataMapper step reads the data from. This is mapped to the incoming Camel Message
as well as possible Camel Variables
.
The Target
section represents the output side of your mappings, where the DataMapper step writes the data to. This is mapped to the outgoing Camel Message
.
Parameters
The Parameters
section inside the Source
section is mapped to any of the incoming Camel Variables
and Message Headers
. For example, if there is an incoming Camel Variable orderSequence
, you can consume it by adding a parameter orderSequence
in the DataMapper Source/Parameters section.
Follow the below steps to add a parameter.
- Click the plus + button on the right side of the
Parameters
title.
- Now type the parameter name and click the check button on the right.
camel-xslt-saxon
implementation, after the Camel Variables have been introduced, it is no longer recommended to store application data in Camel Exchange Properties. We encourage to use Camel Variables instead.Attaching Document Schema files
If any of Source Body
, Target Body
and/or Parameter(s)
are structured data, you can attach a schema file and visualize the data structure in a tree style view.
Follow the below steps to attach a schema file.
Place schema file(s) inside the workspace directory.
Click
Attach a schema
button in one of theSource Body
,Target Body
orParameters
sections.
- Select the schema file to attach.
- Now the document structure is rendered inside a tree.
Creating simple mappings
Creating a mapping by dragging and dropping a field
When you perform drag and drop between the source and the target, a mapping is created and a line is drawn between the fields.
Example: Mapping the Name
fields by dragging and dropping the source Name
field on the target Name
field.
Before:After:
Creating a mapping by typing an XPath expression
You can also create a mapping by entering a XPath
expression.
- Click the 3 dots context menu on the target field and choose
Add selector expression
.
- Then enter the
XPath
expression.
Creating conditional mappings
The DataMapper supports creating 3 types of conditional mappings:
if
- The mapping is created only when the specified condition is met.choose-when-otherwise
- The mapping is created depending on how the condition is satisfied. If thewhen
branch condition is satisfied, thewhen
branch mapping is created. If nowhen
branch condition is satisfied, then theotherwise
branch mapping is created.for-each
- The mapping is created for each item in the collection. Collection means multiple occurrences, which is often represented as an array.
Create a if
mapping
Click the 3 dots context menu on the target section’s field. Then select
wrap with "if"
to create a mapping.Configure the
if
condition. You can drag the source field and drop it into the input field to build a condition, or alternatively type everything manually.Configure the mapping by using drag and drop or by typing it manually.
Create a choose-when-otherwise
mapping
Click the 3 dots context menu on the target section’s field. Then select
wrap with "choose-when-otherwise"
to create a mapping.Configure the
when
condition.Configure the mapping for the
when
branch.Configure the mapping for the
otherwise
branch.If required, you can add one or more
when
branches. To add anotherwhen
branch you can click the 3 dots menu on thechoose
field in theTarget
section and then selectAdd "when"
.
Create a for-each
mapping
When a field is a collection field (means multiple occurrences, often represented as an array), you can create a for-each
mapping. The layer icon on the field indicates that it is a collection field.
Click the 3 dots context menu on the target section’s collection field. Then select
wrap with "for-each"
to create a mapping.Configure the
for-each
condition by specifying the source collection field to iterate over.Configure the mappings below. Note that the mapping field path is now a relative path from the collection field specified in the
for-each
condition.
Using XPath expression editor
XPath
editor is still under initial development and it currently supports only limited drag and drop. In future releases, more syntax assisting features will be added.If you want to write something more in XPath expression rather than just a field path, you can launch the XPath
expression editor and work with it. There is a pencil icon on the target field which launches the XPath
expression editor when you click it.
Click the pencil button on a target field which has a mapping.
This will open up the
XPath
editor.You can then type in the editor at the right or drag a
Field
from the left and drop onto the editor.You can also drag and drop
XPath
functions from theFunction
tab on the left side.Drag the function and drop it onto the editor.
Once it’s completed, click the
Close
button at the bottom left.Now you can see the new mapping in the tree view.
Delete a mapping
To delete a mapping you can click the dustbin button next to the target field.
You then have to confirm the deletion by clicking the
Confirm
button.
Delete a parameter
To delete a parameter, click the dustbin button next to the parameter.
You then have to confirm the deletion by clicking the
Confirm
button.
Detach a schema
Similar to attaching a schema you can also remove / detach a schema.
Click the
Detach schema
button.Click the
Confirm
button.