Set Variable
The SetVariable EIP is used for setting an Exchange variable.
Options
The Set Variable eip supports the following options which are listed below.
| Name | Description | Default | Type |
|---|---|---|---|
note | The note for this node. | String | |
description | The description for this node. | String | |
disabled | Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime. | false | Boolean |
name | Required Name of variable to set a new value. The simple language can be used to define a dynamic evaluated variable name. Otherwise a constant name will be used. | String | |
expression | Required The expression whose result is used as the variable value. | ExpressionDefinition |
Message Body
The message body at each side of the Set Variable EIP: EIP input is the body it needs, EIP output the body after it, and Steps the body its own steps start with.
| Side | Body | Description |
|---|---|---|
EIP output |
| Sets a variable: the body stays as it was. |
The bodies are the ones with the default options. A side that is not listed is not known, and tooling does not guess it. The carriers, the sides and the tools that use them are described in Message Body Types.
Example
The following example shows how to set a variable on the exchange in a Camel route:
-
Java
-
XML
-
YAML
from("direct:a")
.setVariable("myVar", constant("test"))
.to("direct:b"); <route>
<from uri="direct:a"/>
<setVariable name="myVar">
<constant>test</constant>
</setVariable>
<to uri="direct:b"/>
</route> - route:
from:
uri: direct:a
steps:
- setVariable:
name: myVar
expression:
constant:
expression: test
- to:
uri: direct:b Setting a variable from a message header
You can also set a variable with the value from a message header.
-
Java
-
XML
-
YAML
from("direct:a")
.setVariable("foo", header("bar"))
.to("direct:b"); <route>
<from uri="direct:a"/>
<setVariable name="foo">
<header>bar</header>
</setVariable>
<to uri="direct:b"/>
</route> - route:
from:
uri: direct:a
steps:
- setVariable:
name: foo
expression:
header:
expression: bar
- to:
uri: direct:b Setting variable with the current message body
It is of course also possible to set a variable with a value from anything on the Exchange such as the message body, where we use the Simple language to refer to the message body:
-
Java
-
XML
-
YAML
from("direct:a")
.setVariable("myBody", simple("${body}"))
.to("direct:b"); <route>
<from uri="direct:a"/>
<setVariable name="myBody">
<simple>${body}</simple>
</setVariable>
<to uri="direct:b"/>
</route> - route:
from:
uri: direct:a
steps:
- setVariable:
name: myBody
expression:
simple:
expression: "${body}"
- to:
uri: direct:b