2015-04-21 11 views
7

Sono nuovo nel mondo FIX. Sto scrivendo un'applicazione che elabora i messaggi FIX in Java e per quello sto usando QuickFix/J. Ho scaricato il DataDictionary dalla homepage (http://quickfixengine.org/). Sto usando la versione 4.4Differenza tra "gruppo" e "componente" in QuickFix/J

Nel file xml esiste gruppi e componenti. Ma un componente può contenere nuovamente dei gruppi.

Qual è la differenza esatta tra di loro?

Grazie per il vostro aiuto !!

risposta

12

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).

+0

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

+0

Um ... "NoPartyIDs" * è * un tag di gruppo. E contiene i campi del gruppo. –

+0

Sì .. Ma questo non è definito nel file XML, non è vero? Quindi deve essere definito in alcune classi Java nell'implementazione QuickFix ?! – mrbela

2

Dal FIXWiki for Components:

blocchi componenti sono insiemi di campi dati correlati raggruppati insieme e fanno riferimento il nome del blocco componente di messaggi che vengono utilizzati in Talvolta essi sono indicati come "Gruppi"..

I blocchi di componenti sono pratici da definire e quindi riutilizzati in tipi di messaggi diversi. A volte un gruppo ripetuto è solo per un particolare messaggio e quindi non è definito come un blocco Componente.

Visualizzare un blocco componente come definizione riutilizzabile dei campi. Tale blocco componente può contenere o meno un gruppo di campi ripetuto.

Ad esempio, prendere lo Parties component block utilizzato in molti tipi di messaggi diversi (vedere "Utilizzato in" in quella pagina). Facile da definire una volta e utilizzare in molte definizioni di messaggi.