OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ubl-ndrsc message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: RE: [ubl-ndrsc] Position Paper: Modeling Roles in UBL revision 3


Eve,

I really like this idea and would respond as follows to your questions:

> - Should types that are functionally abstract (i.e., are never used
>    directly in assigning a type to a native UBL element) be declared
>    literally abstract, so that extension designers couldn't use them
>    directly themselves without further work?

Yes, unless I misunderstand the question. This would eliminate the risk that
people would use the abstract type directly, and would serve a useful
documentation purpose by identifying the type as a base for extensions
rather than as a type to be used in its own right.

> - What are the criteria for creating a more deeply nested type
>    hierarchy in any one case?  To what extent should structural
>    commonalities be factored into the ancestor type?

This cuts to the heart of good object-oriented design. They key here is that
the hierarchy should only branch if there are concrete differences between
the branches. For example, if OrderHeaderType, InvoiceHeaderType and
ASNHeaderType all have something in common, they could have a common base
type called HeaderType. If OrderHeaderType and ASNHeaderType have some
further similarities because they are both used by buying organizations,
there could be an additional type (derived from HeaderType) called
BuyerHeaderType which they are derived from.

That said, I would avoid making more than one abstract level if at all
possible, since I'm guessing it would confuse people not familiar with OO
concepts.

> - How should ancestor types be documented in the dictionary?  What
>    kinds of "things" are they?

Maybe one criterion for creating an ancestor type in the first place should
be that it is a "thing" that can be defined in some useful way. If there
isn't something specific you can say about HeaderType, it probably isn't a
type...

Matt


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC