I componenti non sono davvero ... cose. Sono come macro in FIX DataDictionary. Molti messaggi richiedono lo stesso set di campi, quindi, anziché specificare gli stessi campi in ogni messaggio, il DD definisce un componente che altri messaggi possono includere.
Un gruppo, d'altra parte, è una cosa molto reale. È una sequenza ripetuta di campi che appariranno 0 o più volte in un messaggio.
L'interfaccia di programmazione di QuickFIX ignora in gran parte i componenti come concetto. Non puoi estrarre un componente da un messaggio, perché un componente non è un concetto in QF; basta estrarre i campi come qualsiasi altro campo.
Un esempio ipotetico: Le seguenti due definizioni di messaggi sono identiche.
1: Con un componente
<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: Senza un componente
<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>
Vedi? Un componente è praticamente solo una macro.
In entrambi i casi è definito, si finisce semplicemente chiamando msg.GetHeater()
(o qualsiasi altra cosa).
fonte
2015-04-21 14:12:11
Grazie mille !!! Ottima spiegazione! Puoi spiegarmi come QuickFix (/ J) sa quali campi contengono per un gruppo? Ad esempio il componente "Parti" ha un solo elemento: Raggruppa "NoPartyIDs". So cosa è questo gruppo .. Nel file FIX44.xml (scaricato da http://quickfixengine.org/) appare la parola "NoPartyIDs" solo due volte. Una volta nella definizione del componente "Parti" (riga 2416) e la definizione del campo (riga 5217).Conosce Java i campi del gruppo "NoPartyIDs"? Sarebbe meglio se il file xml avesse un -tag in cui il gruppo sarebbe stato definito ?! –
mrbela
Um ... "NoPartyIDs" * è * un tag di gruppo. E contiene i campi del gruppo. –
Sì .. Ma questo non è definito nel file XML, non è vero? Quindi deve essere definito in alcune classi Java nell'implementazione QuickFix ?! – mrbela