Thành phần không thực sự ... mọi thứ. Chúng giống như các macro trong FIX DataDictionary. Nhiều thư cần cùng một tập hợp các trường, do đó, thay vì chỉ định các trường giống nhau trong mọi thư, DD xác định thành phần mà các thư khác có thể bao gồm.
Một nhóm, mặt khác, là một điều rất thực tế. Đó là một chuỗi các trường lặp lại sẽ xuất hiện 0 hoặc nhiều lần trong một tin nhắn.
Giao diện lập trình của QuickFIX phần lớn bỏ qua các thành phần dưới dạng một khái niệm. Bạn không thể trích xuất một thành phần từ một tin nhắn, bởi vì một thành phần không phải là một khái niệm trong QF; bạn chỉ cần trích xuất các trường như bất kỳ trường nào khác.
Ví dụ giả thiết: Hai định nghĩa thông báo sau đây giống hệt nhau.
1: Với một thành phần
<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: Nếu không có một thành phần
<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>
Thấy không? Một thành phần là khá nhiều chỉ là một vĩ mô.
Dù bằng cách nào nó được xác định, bạn chỉ cần gọi msg.GetHeater()
(hoặc bất kỳ thứ gì).
Nguồn
2015-04-21 14:12:11
Cảm ơn bạn rất nhiều !!! Lời giải thích rất tốt! Bạn có thể giải thích cho tôi cách QuickFix (/ J) biết những trường nào chứa một nhóm không? Ví dụ: thành phần "Các bên" chỉ có một phần tử: Nhóm "NoPartyID". Tôi biết nhóm này là gì .. Trong tệp FIX44.xml (được tải xuống từ http://quickfixengine.org/), xuất hiện từ "NoPartyID" chỉ hai lần. Khi đã định nghĩa thành phần "Các bên" (dòng 2416) và định nghĩa của trường (dòng 5217).Làm thế nào biết Java các lĩnh vực của nhóm "NoPartyIDs"? Sẽ tốt hơn nếu xml-file sẽ có một thẻ, nơi nhóm sẽ được định nghĩa ?! –
mrbela
Um ... "NoPartyIDs" * là * một thẻ nhóm. Và nó chứa các trường của nhóm. –
Có .. Nhưng điều này không được định nghĩa trong tệp XML, phải không? Vì vậy, nó phải được định nghĩa trong một số lớp Java trong việc thực hiện QuickFix ?! – mrbela