FIX Message Object Model

In contrast to flat model the object model allows addressing messages and fields by names. This interface is slower than the flat model, however it may appear to be more user-friendly.

Creating messages

There is a dedicated package for each FIX protocol version and a dedicated class for each message type. To create a "new order single" message by means of the object model simply create an instance of the corresponding class.

import com.epam.fix.model.fix44.message.NewOrderSingle;
// ...

// Create a "New order single" message for FIX 4.4
NewOrderSingle order = new NewOrderSingle();

Accessing fields

Fields can be accessed by names.

// Create an "Execution Report" message for FIX 4.2
ExecutionReport exec = new ExecutionReport();

// Set ClOrdID field to "2247"
// Set ExecType field to Fill
exec.setTransactTime(new GregorianCalendar());
// Remove the OrderID field from message

Repeating groups

Repeating groups are represented as Collections.

final NewOrderSingle newOrderSingle = new NewOrderSingle();
final Collection<NewOrderSingle.AllocsGroup> allocsGroups = new ArrayList<NewOrderSingle.AllocsGroup>();
final int noAllocs = 1;
for (int indexOfLoop = 0; indexOfLoop < noAllocs; indexOfLoop++) {
    final NewOrderSingle.AllocsGroup allocsGroup = AllocsGroup();

Combining the flat and object models

You can use a factory or the fromFIX(FIXFieldList fieldlist) method to create an object message from the flat one.

byte[] bytes =
    "8=FIX.4.4\u00019=140\u000135=D\u000149=TESTI\u000156=TESTA\u000134=4\u000150=30737\u000197=Y" +
        "\u000152=20030204-08:46:14\u000111=90001008\u000155=TESTB\u000154=1\u000160=20060217-10:00:00" +
FIXFieldList msg = RawFIXUtil.getFIXFieldList(bytes);

// fromFIX
NewOrderSingle order = new NewOrderSingle();

// factory
com.epam.fix.model.fix44.Factory factory = new com.epam.fix.model.fix44.Factory();
order = (NewOrderSingle) factory.fromFIX(msg)

You can use the void toFIX(FIXFieldList l) method to get a flat message from the object one.

FIXFieldList msg = new FIXFieldList();
order.toFix(msg); // adds fields from order to msg

Sending object messages

To send an object message get the flat representation and send it.

Generated on 10 Feb 2022 for FIXAntennaJava by  doxygen 1.6.1