Sequence field example
Consider the following XML fragment:
<root>
<prices instr="MSFT">
<info>1.04</info>
<info type="SELL">1.03</info>
</prices>
<prices instr="IBM">
<info type="BUY"></info>
<info type="SELL">1.06</info>
</prices>
</root>
Suppose that the following properties are set in the XML codec section of the IAF configuration file:
<property name="XMLField" value="Test"/>
<property name="sequenceField" value="Test.root/prices/@instr"/>
<property name="sequenceField" value="Test.root/prices/info/@type"/>
<property name="sequenceField" value="Test.root/prices/info/text()"/>
<property name="ensurePresent" value="Test.root/prices/info/@type"/>
<property name="ensurePresent" value="Test.root/prices/info/text()"/>
<property name="separator:Test.root/prices" value="(prices)"/>
With these property values, the XML fragment maps to the following normalized event fields:
"Test.root/" =
"Test.root/prices#1/" =
"Test.root/prices#1/info#1/" =
"Test.root/prices#1/info#2/" =
"Test.root/prices#2/" =
"Test.root/prices#2/info#1/" =
"Test.root/prices#2/info#2/" =
"Test.root/prices/@instr" = ["(prices)", "MSFT", "(prices)", "IBM"]
"Test.root/prices/info/@type" =
["(prices)", "", "SELL", "(prices)", "BUY", "SELL"]
"Test.root/prices/info/text()"=
["(prices)", "1.04", "1.03", "(prices)", "", "1.06"]
If you define the following mapping rules in the IAF configuration file, you can map these normalized event fields to and from string fields in a sequence field of an Apama event.
<mapping-rules>
<map transport="Test.root/prices/@instr"
apama="instruments" type="reference"
referencetype="sequence <string>" default="[]"/>
<map transport="Test.root/prices/info/@type"
apama="types" type="reference"
referencetype="sequence <string>" default="[]"/>
<map transport="Test.root/prices/info/text()"
apama="prices" type="reference"
referencetype="sequence <string>" default="[]"/>
</mapping-rules>