Normalized Message properties are commonly used to specify metadata that is associated with message content. javax.jbi.security.subject and javax.jbi.message.protocol.type are two examples of standard normalized Message properties defined in the JBI Specification.
Normalized Message properties are used to provide additional capabilities in Open ESB, such as:
Getting and Setting transport context properties. For example, HTTP headers in the incoming HTTP request, or file names read by the File Binding Component
Getting and Setting protocol specific headers or context properties (SOAP headers)
Getting and Setting additional message metadata. For example. a unique message identifier, or an endpoint name associated with a message
Dynamic configurations. For example, to dynamically overwrite the statically configured destination file name at runtime
Some of the use cases mentioned above require protocol/binding specific properties, typically used by a particular binding component. Other properties are considered common or general purpose properties that all participating JBI components make use of, for example, the message ID property, which can be utilized to uniquely identify or track a given message in the integration.
The Normalized Message properties are accessed from the BPEL Designer Mapper view. When you expand a variable's Properties folder it exposes the variables predefined NM properties. If the specific NM property you need is not currently listed, additional NM properties can be added.
Predefined Normalized Message properties are ready for use, from a variable's Properties file.
From the Design View diagram, select the activity with the process you want to edit.
Click Mapper to switch to the Mapper view of the BPEL process.
From the Output pane, expand the Variable you want to edit and its Properties file.
The Properties file contains the predefined Normalized Message (NM) properties.
To use a predefined NM Property, select the property and use it to build an expression or an assign.
If the specific NM Property you want is not listed, you can add additional NM properties.
There are two options available when adding NM Properties:
Add NM Property Shortcut: This option typically supports simple type properties, in that it does not grant access to some data within the NM Property.
Add NM Property: This option provides access to data within the NM property used to build expressions.
From the Output or Input panes of the BPEL Mapper, expand the node for the variable to which you want to add an NM property. Right-click that variables Properties directory node and select Add NM Property Shortcut from the pop-up menu.
The Add NM Property Shortcut dialog box appears.
Enter the information for the new NM property into the the Add NM Property Shortcut dialog box, as follows:
Click OK.
The new NM property is added to the Mapper tree under the variables Properties directory. The property can now be used in assigns and to build expressions.
To edit an existing NM property shortcut, right-click the NM property shortcut in the BPEL Mapper tree and choose Edit NM Property Shortcut in the pop-up menu.
The Add NM Property Shortcut dialog box appears.
Edit the NM Property Name or Display Name, and click OK.
To delete an NM property shortcut, right-click the property in the Mapper tree.
Choose Delete NM Property Shortcut in the pop-up menu.
The NM Property Shortcut is deleted.
From the Output or Input panes of the BPEL Mapper, expand the node for the variable to which you want to add an NM property. Right-click that variables Properties directory node and select Add NM Property from the pop-up menu.
The Add NM Property dialog box appears.
Enter the information for the new NM property in the the Add NM Property dialog box, as follows:
Property Name: User-defined property name. This name is displayed in mapper tree and stored in WSDL file.
Type or Element:Displays the property type or element associated with the selected node in the Map Property To tree.
Associate property with message: To associate the new NM property with all variables of any message type select this checkbox.
Map Property To: The Map Property To tree displays all of the predefined NM properties. This is used to build a query or choose a property type.
When you select a node within the property tree the Type or Element and Query fields are populated automatically. Valid endpoint nodes are displayed in bold.
New NM Property: Select the New NM Property checkbox to add a specific NM property, and enter the name of the property in the New NM Property field. The new NM property is added to the Map Property To tree.
Sync with tree:When this checkbox is selected, the Query field is automatically synchronized with the selected node in the Map Property To tree.
Query: Displays the query type associated with the selected node in the Map Property To tree.
Click OK. The new NM property name is added to the tree in the BPEL Mapper, and the NM property is stored in nmPropertiesDefinitions.wsdl as a pair of elements: <vprop:property> and <vprop:propertyAlias>
The new NM property can now be used in assigns and to build expressions.
To delete a new NM property, right-click the property in the Mapper tree.
Choose Delete NM Property in the pop-up menu.
The property is deleted.
Data copied from an NM property or an NM property shortcut generates code that is similar to the following:
<from variable="inputVar" sxnmp:nmProperty="org.glassfish.openesb.file .outbound.dcom.username"/> |
Data copied from WSDL properties based on NM property generates code that is similar to the following:
<from variable="inputVar" property="ns3:DemoNMProperty"/> |
When properties and NM properties are used to build an expression, code similar to the following code is generated:
<from>concat(bpws:getVariableProperty('inputVar', 'ns3:DemoNMProperty'), sxnmp:getVariableNMProperty('inputVar','org.glassfish.openesb.file.outbound.dcom. username'))</from> |
An NM property used in a condition generates code that is similar to the following:
<condition>sxnmp:getVariableNMProperty('inputVar', 'my.nmProperty.boolean')</condition> |
Normalized Message properties are either General, available to all participating JBI components, or protocol/binding specific, used by a particular binding component. The following General NM properties are available to all binding components.
Table 1 General Normalized Message Properties
Property Name |
Type |
Description and Use |
---|---|---|
org.glassfish.openesb.messaging.groupid |
java.lang.String |
Uniquely identifies a message with the group to which a message belongs. For example, it applies the RM sequence group number for SOAP messages, or a time stamped file name (where the file record message comes from). This property is optional. |
org.glassfish.openesb.messaging.messageid |
java.lang.String |
Uniquely identifies a message. For batch processing this might be a record number (for example, a particular record in a file), or a GUID. This property is mandatory. |
org.glassfish.openesb.messaging.lastrecord |
java.lang.String |
The value is a string representation of boolean ("true" or "false"). This property can be used to signal the last record in a group, e.g. the last record in a RM sequence for SOAP messages, or the last record in a file when multiple record processing is turned on for File BC. This property is optional. |
org.glassfish.openesb.exchange.endpointname |
java.lang.String |
The value a string representation of the endpoint name set on the exchange. This represents the endpoint name of the "owner" of the message, and could be made available by JBI runtime. |
Binding components each have their own protocol specific Normalized Message properties. These include inbound and outbound specific, as well as general NM properties for each binding component.
For a list of binding component specific NM properties, refer to the following: