Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents

 

BLLanguageExtension Handler

Message transformation configuration is an XML file with rules for FIX tag/value manipulations. The root element is <Mapping> element. It encloses all other elements in configuration file.

...

There are two optional action blocks – ActionIfTrue and ActionIfFalse. Success actions will be executed one-by-one once rule’s conditions evaluated as true. Otherwise, ActionIfFalse actions sequence will be executed.


<Condition> elements

Conditions are used for rule triggering. <Condition> element can consist of two elements - <Inclusions> and <Exclusions> (both are mandatory). Check's value for <Inclusions> tag is calculated as is. Check's value for <Exclusions> tag is inverted (logical NOT) after calculation. There is only one attribute ("Name", optional) in this element. It is unique within current XML configuration file.

...

Code Block
languagehtml/xml
<Condition Name="IsOrderFlow">
    <Inclusion>
        <FieldEqualsTo Field="35">
            <Val>D</Val>
            <Val>G</Val>
            <Val>F</Val>
            <Val>8</Val>
            <Val>9</Val>
        </FieldEqualsTo>
    </Inclusion>
    <Exclusion/>
</Condition>

There is only one concrete check in the example - the FieldEqualsTo check. The condition is evaluated as true in case of 35th tag in a message is equal to one of D, G, F, 8, 9 value only.

 

Code Block
languagehtml/xml
<Condition Name="NotIsOrderFlow">
  <Inclusion/>
  <Exclusion>
    <FieldEqualsTo Field="35">
      <Val>D</Val>
      <Val>G</Val>
      <Val>F</Val>
      <Val>8</Val>
      <Val>9</Val>
      </ FieldEqualsTo>
    </Exclusion>
</Condition>

 

 

In the example the condition is evaluated as true in case of 35th tag in a message is not equal to one of D, G, F, 8, 9 value only.

 

...

<FieldEqualsTo> check

 

Code Block
languagehtml/xml
<FieldEqualsTo Field="35">
  <Val>D</Val>
  <Val>G</Val>
  <Val>F</Val>
</FieldEqualsTo>

There is an attribute (mandatory) in the check - "Field". <FieldEqualsTo> element checks if tag is equal to the value from given <Val> list.

...

<MsgType> check

 

Code Block
languagehtml/xml
<MsgType>

               

  <Val>D</Val>

               

  <Val>G</Val>

               

  <Val>F</Val>


</MsgType>

 

<MsgType> element checks if MsgType (35) of current FIX message is equal to one of the value from given <Val> list. Actually it does the same as FieldEqualsTo check but a bit faster.

 

...

<FieldExists> check

 

<FieldExists>
               
Code Block
languagehtml/xml
 <FieldExists>
  <Val>20109</Val>

               

  <Val>20049</Val>


</FieldExists>

 

<FieldExists> element checks given fields presence in message and results in true if at least one field is present.

<FieldExists Field=“20109”

Code Block
languagehtml/xml
 <FieldExists Field="20109" />

Slightly different syntax with the Field attribute.

...

 

<FieldContains> check

 

Code Block
languagehtml/xml
<FieldContains Field=
”18”>
               
"18">
  <Val>R</Val>

               

  <Val>T</Val>


</FieldContains>

 

<FieldContains> element checks if multi string value in the given field contains one of the value from given <Val> list.

Code Block
languagehtml/xml
<FieldContains Field=
”18”
"18" Delimiter=
”|”>
               
"|">
  <Val>R</Val>

               

  <Val>T</Val>


</FieldContains>
 

The “Delimiter” attribute contains the delimiter used in multi value string. It is optional; default value is space.

 

...

 

<FieldIsGreaterThan> check

 

...

Code Block
languagehtml/xml
 <FieldIsGreaterThan Field="44" Value="100"/>

<FieldIsGreaterThan> checks if given field greater than “Value”. Absence of the tag defined by “Field” cause fail.

 

...

<FieldIsLessThan> check

 

Code Block
languagehtml/xml
<FieldIsLessThan Field=
”44”
"44" Value=
”100”
"100"/>

<FieldIsLessThan> checks if given field less than “Value”. Absence of the tag defined by “Field” cause fail.

 

...

<FieldBeginsWith> check

 

Code Block
languagehtml/xml
<FieldBeginsWith Field=
“6780”
"6780" StartPos=
“6” CaseSensitive= “true”>               
"6" CaseSensitive= "true">
  <Val>L</Val>

  <Val>N</Val>
               <Val>BC<

  <Val>BC</Val>

</FieldBeginsWith>

<FieldBeginsWith> checks if “Field” begins with one of the substring from given list.

“Field” and “StartPos” attributes are mandatory.

The “StartPos” attribute refers to symbols within a string from 0.

Default value for “CaseSensetive” attribute is “true”. The attribute is optional.

...

<FieldLengthGreaterOrEqual> check

 

<FieldLengthGreaterOrEqual Field="6780" Length="7"/>

<FieldLengthGreaterOrEqual> checks if the length of the “Field” tag is greater or equal to the “Length” attribute. Both attributes are mandatory.

...

<FieldIsToday> check

 

<FieldIsToday Field=“42” />

 

<FieldIsToday> checks if “Field” contains date/time value in UTC and equals to Today.

 

...

<FieldCheckBits> check

 

<FieldCheckBits Field="5047" Value="0x02000000" />

<FieldCheckBits> treats the Field as integer and checks if it contains the HEX value defined by the “Value” attribute. Bitwise AND operation is used within the check.