Компоненты на самом деле не ... вещи. Они похожи на макросы в FIX DataDictionary. Многим сообщениям нужен один и тот же набор полей, поэтому вместо указания одинаковых полей в каждом сообщении DD определяет компонент, который могут включать другие сообщения.
Группа, с другой стороны, является очень реальной вещью. Это повторяющаяся последовательность полей, которая будет отображаться 0 или более раз в сообщении.
Интерфейс программирования QuickFIX в значительной степени игнорирует компоненты как концепцию. Вы не можете извлечь компонент из сообщения, потому что компонент не является концепцией в QF; вы просто извлекаете поля, как любое другое поле.
Гипотетический пример: Следующие два определения сообщений являются точно такими же.
1: С компонентом
<message name="Automobile" msgtype="X" msgcat="app">
<field name="Wheel" required="Y"/>
<field name="Bumper" required="Y"/>
<component name="Dashboard" required="Y"/>
</message>
<component name="Dashboard">
<field name="Radio" required="Y"/>
<field name="AirConditioner" required="Y"/>
<field name="Heater" required="Y"/>
</component>
2: Без компонента
<message name="Automobile" msgtype="X" msgcat="app">
<field name="Wheel" required="Y"/>
<field name="Bumper" required="Y"/>
<field name="Radio" required="Y"/>
<field name="AirConditioner" required="Y"/>
<field name="Heater" required="Y"/>
</message>
See? Компонент - это всего лишь макрос.
В любом случае это определено, вы просто в конечном итоге вызываете msg.GetHeater()
(или что-то еще).
Спасибо большое !!! Очень хорошее объяснение! Можете ли вы объяснить мне, как QuickFix (/ J) знает, какие поля содержат группу? Например, компонент «Стороны» имеет только один элемент: группа «NoPartyID». Я знаю, что это за группа. В файле FIX44.xml (скачан из http://quickfixengine.org/) слово «NoPartyIDs» появляется только дважды. Однажды в определении компонента «Стороны» (строка 2416) и определении поля (строка 5217).Как узнать Java в полях группы «NoPartyID»? Было бы лучше, если бы xml-файл имел бы -tag, где группа была бы определена ?! –
mrbela
Um ... "NoPartyIDs" * - * тег группы. И он содержит поля группы. –
Да .. Но это не определено в XML-файле, не так ли? Поэтому он должен быть определен в некоторых классах Java в реализации QuickFix ?! – mrbela