Imported from previous forum
I am trying to find a dcument which describes (i) the difference between a Block and an Implicit Block, and (ii) the difference between a Repeating Block and an Implicit Repeating Block. I don't see anyinformation in any of the specs. Is there such a document? (I also posted this to the Specifications Forum.) Thanks.
Greg
Historical difference not important now.
When we created the optimized version of FIXML every repeating group had to become a component. The overall GTC was not at that point (4.4) ready to accept this level of change. So Kevin Houstoun and I (as he was implementing the original repository) created “implicit” components to differentiate components that were required to support FIXML encoding. With FIX.5.0 we fully accepted components and the differentiation between implicit and regular components disappeared. I just checked the latest repository edition, 2010. We still have “Implicit” coded up.
The ones to watch out for are “Optimized” (I think there are only 2 of these) which was added in a frenzy of over-optimization on my part when we (Jim, Matt Simpson, Niranjana Sharma, CME, OCC) were optimizing FIXML for clearing. This “feature” was designed to remove on level of nesting where a repeating group component had a single non-repeating component (InstrumentLegGrp containing InstrumentLeg). We have deprecated this feature and will remove these from the spec in the next version of FIX. If I were writing a new encoding I would ignore “Optimized*” and just treat these components like regular components.
Added since FIX.5.0SP2 is the ability to “inline components” at a specific reference point. This was invented by Ryan Pierce as a much better approach to simplify encodings. The component itself is not marked as inlined. When a component is used within another component or message, its usage is inlined at that point.
I have a proposal I need to get in front of the Repository Working Group at the request of John Cameron to include metadata about component types, similar to how we have datatype information for documentation purposes, and although not everyone agrees, I think it might serve useful for those using the repository to generate message encodings and mappings.
Also, if you are working on codings specifically, you may wish to use the proposed encoding enhancements proposed by Alessandro of OSS Nokalva to the Repository Working Group.
We have a Repository Working Group meeting next week I believe. We need to get some of these proposals reviewed and submitted to the GTC and then get them coded up into the next repository edition.
Jim N
I am trying to find a dcument which describes (i) the difference between a Block and an Implicit Block, and (ii) the difference between a Repeating Block and an Implicit Repeating Block.
I don’t see anyinformation in any of the specs.
Is there such a document?(I also posted this to the Specifications Forum.)
Thanks.
I need to elaborate on one of Jim’s points:
We have deprecated this feature and will remove these from the spec in
the next version of FIX. If I were writing a new encoding I would
ignore “Optimized*” and just treat these components like regular
components.
While on one hand the “OptimisedImplicitBlockRepeating” components weren’t terribly well publicized, FPL’s schema generator was using them and eliminating one level of nesting. Anyone basing a FIXML implementation off of the FPL schema would be incompatible with anyone who wrote their own implementation that ignored the distinction.
All of the OptimisedImplicitBlockRepeating usages are going to be modeled using the new Inline Component Reference model Jim described, and the good news is that messages using either encoding will be identical.
Of course if the goal is just to validate Tag=Value, or to generate spec artifacts that won’t be used for FIXML, then yes, ignoring the “Optimised” is fine.