[DFDL-WG] DFDL: Floating Components in EDI X12

Steve Hanson smh at uk.ibm.com
Wed Apr 15 07:47:08 CDT 2009


>From last week's call:

6. 'Floating' definitions
A known element, the position of which can be anywhere in a sequence of 
other elements - is this something DFDL needs to support?  Capability is 
offered by IBM's WTX product.  Can be used for comments, but DFDL plans to 
handle comments post 1.0 using an explicit mechanism or using layering. 
Real purpose of floating component is for older EDI formats where there is 
a segment that can appear anywhere, and can appear any number of times. 
Action raised for IBM to provide a concrete example for discussion. The 
issue for DFDL is how does a floating component appear in the DFDL 
infoset, and how does it validate in the sequence. One possibility is a 
property dfdl:floating=yes/no and if an element has that property set, it 
can be expected anywhere when parsing, but appears in the correct point in 
the sequence in the parsed infoset, On unparsing it must appear in in the 
correct point in the sequence, and is output in that place.

036
SH: Provide use case for floating component in a sequence
08/04: Raised

Example below, kindly supplied by Stephanie Fetzer of IBM.

Regards

Steve Hanson
Programming Model Architect
WebSphere Message Brokers
Hursley, UK
Internet: smh at uk.ibm.com
Phone (+44)/(0) 1962-815848



FLOATING COMPONENTS
At one point In X12 segments could be: 

M (Mandatory)   This segment must be present
O (Optional)            Trading Partners decide on the use of this segment
F (Floating)            This segment may appear anywhere within the 
transaction. This designator has been discontinued.

    The NTE segment was the only usage of a floating component (meaning 
that it could appear anywhere within the bounds of the transaction) in 
X12.   It was used in many transactions but the most notable use was the 
850 (Purchase Order), where it was used in versions up to and including 
3060.  With version 3070 the NTE segment was removed from the 850.  In 
other transactions the NTE continues to be allowed, but it's position is 
now fixed in the transaction set.

IMPLEMENTATION

WTX Pack for X12 EDI Currently supports 8 version of X12 which allow the 
NTE component to float.  Below is an example of the implementation of NTE 
within these older  850 versions.  The NTE segment is defined as a 
physical segment along with all of the other non-floating segments in the 
SEGMENT partition of the type tree.




Then, instead of being used as a component in the Transaction it is 
defined as floating in the Transaction.


Now that cover the cases where the NTE segment could occur before during 
or after the components in the Transaction, however, the Transaction also 
included loops.



So for each of the loops the NTE could appear in any position there as 
well so each loop had the NTE defined as a floating component.



And for Loops that contain Loops - each child look had NTE defined as a 
floating Component





...Until we have defined the floating component for every construct which 
could contain segments.

HOW WIDELY USED in X12:

In the 2003 version we support Floating Components in the:
810,820,830,832,840,843,846,850,855,856,860,861,
862,863,865,867,869,870

In the 2040 version we support Floating Components in the:
810,820,830,832,840,843,846,850,855,856,860,861,
862,863,865,867

In 3010 version we support Floating Components in the:
810,820,830,832,840,843,846,850,855,856,860,861,
862,863,865,867

In 3020 version we support Floating Components in the:
810,830,832,840,843,846,850,855,856,860,861,862,
863,865,867

In 3030 version we support Floating Component in the:
810,830,832,840,843,846,850,855,856,860,861,862,
863,865,867

In 3040 version we support Floating Component in the:
810,830,832,840,843,850,855,856,860,861,862,863,865

In 3050 version we support Floating Components in the:
810,830,832,840,843,850,855,856,860,861,862,863,865

In 3060 version we support Floating Component in the:
850,860

In 3070 version and above we support Floating Components in:
{NONE}




DISCUSSION:
It is generally accepted that floating components are a 'bad idea' but 
they do crop up occasionally.  Although X12 now has a policy to not allow 
floating components for newer version they are still allowed in older 
versions.  Alternatives for modelling these are not very appealing.  They 
really cannot be unordered as everything except the NTE segment is 
ordered.  Another alternative is to have a choice at each possible 
position in the transaction of the ordered component and the NTE.  That 
just is not practical from a modelling perspective and would result in 
something that could not be mapped to or from without great acrobatics.

WTX users often use the Floating Component construct as a short-cut to 
avoid to avoid complex structures.  To be honest they are probably 
overused in existing user-created trees (outside of the packs) as it is 
very tempting  when your primary focus is validation to say...."I can have 
this thing appear almost anywhere" - I'll just slap it in as a FC. Where 
often come choice groups would be more appropriate.

The functional down-side of floating components is trying to create them 
on output.  As the floating component has no fixed location you can not 
map to it.  In the case of the NTE, users generally determine a fixed 
place to output the NTE and add the segment there (as optional so as to 
not impact input validation) so that the contents on an NTE can be mapped.
  






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $610E2C302892545E.jpg
Type: image/jpeg
Size: 67995 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0007.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $76849A86E56697FC.jpg
Type: image/jpeg
Size: 23504 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0008.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $61489A36E990CF3.jpg
Type: image/jpeg
Size: 31365 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0009.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $B3F367BD8AF6DA4.jpg
Type: image/jpeg
Size: 109237 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0010.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $818BCC88014C715.jpg
Type: image/jpeg
Size: 29669 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0011.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $2C7D50DC3CB1E71A.jpg
Type: image/jpeg
Size: 62103 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0012.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: $203353D5D76D8F1.jpg
Type: image/jpeg
Size: 29267 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090415/491f0867/attachment-0013.jpg 


More information about the dfdl-wg mailing list