Describe in detail
Describe the present invention at each accompanying drawing, wherein Fig. 1 shows the network of being made up of the participant in the market and the market maker, this network is based on the definition of use commercial interface, and support is concluded the business to the input and output document of describing regulation according to this class interface.Network comprises a plurality of site 11-18, and they are by interconnected such as communication networks such as internet 19 or other telecommunications or data communication networks.Each site 11-19 comprises a computing machine, such as portable computer, desktop PC, workstation, grid or other data processing resource.The site comprises storer, is used to store the commercial interface definition; Processor is used for carrying out the issued transaction process of carrying out business transaction with other site of network; Computer program, they by support these services processor carry out.In addition, each site comprises a network interface, is used to provide and the communicating by letter of internet 19 or all the other communication networks.
In the environment of Fig. 1, site 11,12,14,16 and 18 expression participants in the market.The participant in the market comprises the business processing transaction kinds of goods that will set up according to the present invention or the consumer or the supplier of service.
In this example, site 15 and 17 is market maker sites.Market maker site comprises the resource that is used to register the commercial interface definition, is called the BID registration.The participant can send document to market maker site, and at place, market maker site, discerns the document and send document to the registered suitable participant that can receive these documents as input.Also the maintain the standard resources bank of form of the market maker, to make things convenient for commerce Net, the resources bank of canonical form constitutes a public commercial storehouse here, is used to set up the commercial interface definition.
In this example, participant in the market 18 directly links to each other with the market maker 17, and does not connect by internet 19.This direct network structure that expresses support for business transaction that is connected with the market maker can be various, comprises such as internet 19 common networks such as grade, and connects such as the special use of LAN (Local Area Network), perhaps as the point-to-point connection shown between site 17 and 18.The practical communication net changes a lot, and is applicable to business transaction net of the present invention.
Fig. 2 is an inspiration figure, shows the nested structure among the commercial interface definition BID, and wherein commercial interface definition BID sets up for the participant in the market in the network of the present invention.Commercial interface definition shown in Figure 2 is a data structure, and it comprises the logical organization and the storage unit of arranging according to the formal definition of file structure (such as XML document type definition DTD).The structure of Fig. 2 comprises first logical organization 200 that is used to discern a side.Relevant with logical organization 200 is, the nested logical organization that is used to carry title 201, physical address 202, the network address or unit 203 and one group of services transaction 204.Be engaged in for the everything in the service groups, an interface definition is provided, comprise affairs BID 205, affairs BID 206 and affairs BID 207.Waiting in each affairs BID, provide such logical organization, the position 209 that they are used to comprise title 208, serve, by the operation 210 of service execution, and one group of input document on network by label 211 expressions such as affairs BID 205.In addition, service BID 205 comprises one group of output document by label 212 expressions.Input sets of documentation 211 comprises the commercial interface definition of each input document that service responds, and comprises input document commercial interface definition 213,214 and 215.Each input document commercial interface definition comprises the position 217 that can find document description on title 216, the network, and as the module of carrying in document represented of field 218.Similarly, output document group 212 comprises the interface definition of output document, comprises output document BID 219, output document BID 220 and output document BID 221.For each output document BID, stipulated on title 222, the network or other local position 223 and document module 224.The definition of participant's shown in Figure 2 commercial interface comprises the actual definition of logical organization, and they will be used for the input and output document of various services, perhaps can find these definition position pointer or other reference.
Although can use other document definition structure, in preferable system, the document column of Fig. 2 is in XML document type definition DTD.In addition, affairs BID, input document BID and output document BID stipulate according to the XML document type definition.XML type document is the system of an example based on the analysis data, and described analysis data comprise flag data and character data.Logical organization in the flag data identification document, the content of character data group recognition logic structure.In addition, also carry the data of not analyzing in the document, be used for various purposes.For example, the normalized illustration of Extensible Markup Language XML 1.0 REC-XML-19980210 that on WWW.W3.ORG/TR/1998/REC-XML-19980210, announce referring to WC3 XML working group.
Therefore, in an illustrative system, virtual company has been set up by the XML coded document interconnection with business system and service and business activity acceptance and generation in the participant site in the network.For example following content is set up in the definition of the commercial interface of a specific service: if receive a BID document matching of importing with the request catalogue, will return a BID document matching of importing with catalogue so.In addition,, and can be received terminal acceptance, will return so and the invoice document matching if receive one and order BID document matching.Before XML document was imported local business system, these documents were handled in the site in the network, and wherein local business system is to set up according to any various issued transaction structures of fixed system of giving in the network.Therefore, system take apart relevant sets of documentation (such as, through the XML document group of MIMI coding), analyze them, produce " labeled message " stream.Transmit the message to the application program and the service that are fit to of for example using following incident listener model.
With the document coding of XML language to exchanging between the commerce services, wherein the XML language is set up by the resources bank that constitutes piece, and it is a kind of public business language, can set up more complicated document definition with this language.Resources bank has been stored the explanation information module, focuses on function and information that commercial field is public, comprises such as the commercial primitive of describing such as company, service and product; Such as business forms such as catalogue, order and invoices; Gauges such as address such as time, date; Classification code; And other thing that explain information is provided for the logical organization in the XML document.
The commercial interface definition is a kind of senior document, and it plays the pattern effect, is used for designing according to the present invention the interface of transaction document.Therefore, commercial interface is defined in the document of XML regulation and has erected a bridge block on the gap between the program of carrying out on the front end of the transaction services of a specific mesh points.These front ends can be realized with JAVA virtual machine or other ordinary construction that system is interconnected on network.Therefore, the commercial interface definition provides a technology, by this technology, utilizes commercial interface definition document to programme to transaction protocols.Set up the program of transaction protocols with the detailed form standard of document-type.
The commercial interface definition BID of one example based on participant in the market's document is described below, and wherein said participant in the market's document meets the XML form.Participant in the market DTD makes contact and address information be associated with the description of a kind of service and amount information to participant in the market's business information grouping.This business information comprises title, code, address, uses son to describe the specific collators system of commercial undertaking, and the pointer that is used for trade terms.In addition, by the service of participant in the market DTD sign will stipulate to wish the participant to response and the input and output document of generation.Therefore, be that the public business language that usefulness exemplifies is the document that participant in the market DTD, service DTD and issued transaction document D TD (pressing the XML regulation) formulate pattern below, comprise illustrative commentary.
Participant in the market's example
<!DOCTYPE?SCHEMA?SYSTEM ″bidl.?dtd″>
<SCHEMA>
<H1>Market?Participant?Sample?BID</H1>
<META
WHO.OWNS=″Veo?Systems″ WHO.COPYRIGHT=″Veo?Systems″
WHEN.COPYRIGHT=″1998″ DESCRIPTION=″Sample?BID″
WHO.CREATED=″*″ WHEN.CREATED=″*″
WHAT.VERSION=″*″ WHO.MODIFIED=″*″
WHEN.MODIFIED=″*″ WHEN.EFFECTIVE=″*″
WHEN.EXPIRES=″*″ WHO.EFFECTIVE=″*″
WHO.EXPIRES=″*″>
</META>
<PROLOG>
<XMLDECL?STANDALONE=″no″></XMLDECL>
<DOCTYPE?NAME=″market.participant″>
<SYSTEM>markpart.dtd</SYSTEM></DOCTYPE>
</PROLOG>
DTD?NAME=″markpart.dtd″>
<H2>Market?Participant</H2>
<H3>Market?Participant</H3>
<ELEMENTTYPE?NAME=″market.?participant″>
<EXPLAIN><TITLE>A?Market?Participant</TITLE>
<SYNOPSIS>A?business?or?person?and?its?service?interfaces.</SYNOPSIS>
<P>A?market?participant?is?a?document?definition?that?is?created?to?describe?a?business
and?at?least?one?person?with?an?email?address,and?it?presents?a?set?of?pointers?to?service
interfaces?located?on?the?network.?In?this?example,the?pointers?have?been?resolved?and?the
complete?BID?is?presented?here.</P></EXPLAIN>
<MODEL><CHOICE>
<ELEMENT?NAME=″business″></ELEMENT>
<ELEMENT?NAME=″person″></ELEMENT>
</CHOICE></MODEL></ELEMENTTYPE>
<H3>Party?Prototype</H3>
<PROTOTYPE?NAME=″party″>
<EXPLAIN><TITLE>The?Party?Prototype</TITLE></EXPLAIN>
<MODEL><SEQUENCE>
<ELEMENT?NAME=″party.name″?OCCURS=″+″></ELEMENT>
<ELEMENT?NAME=″address.set″></ELEMENT>
</SEQUENCE></MODEL>
</PROTOTYPE>
<H3>Party?Types</H3>
<ELEMENTTYPE?NAME=″business″>
<EXPLAIN><TITLE>A?Business</TITLE>
<SYNOPSIS>A?business(party)with?a?business?number?attribute.</SYNOPSIS>
<P>This?element?inherits?the?content?model?of?the?party?prototype?and?adds?a?business
number?attribute,which?serves?as?a?key?for?database?lookup.?The?business?number?may?be?used
as?a?cross-reference?to/from?customer?id,credit?limits,contacts?lists,etc.</P></EXPLAIN>
<EXTENDS?HREF=″party″>
<ATTDEF?NAME=″business.?number″><REQUIRED></REQUIRED></ATTDEF>
</EXTENDS>
</ELEMENTTYPE>
<H3>Person?Name</H3>
<ELEMENTTYPE?NAME=″person″>
<EXPLAIN><TITLE>A?Person</TITLE></EXPLAIN>
<EXTENDS?HREF=″party″>
<ATTDEF?NAME=″SSN″><IMPLIED></IMPLIED></ATTDEF>
</EXTENDS>
</ELEMENTTYPE>
<H3>Party?Name</H3>
<ELEMENTTYPE?NAME=″party.name″>
<EXPLAIN><TITLE>A?Party’s?Name</TITLE>
<SYNOPSIS>A?party’s?name?in?a?string?of?character.</SYNOPSIS></EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>Address?Set</H3>
<ELEMENTTYPE?NAME=″address.set″>
<MODEL><SEQUENCE>
<ELEMENT?NAME=″address.physical″></ELEMENT>
<ELEMENT?NAME=″telephone″?OCCURS=″*″></ELEMENT>
<ELEMENT?NAME=″fax″?OCCURS=″*″></ELEMENT>
<ELEMENT?NAME=″email″?OCCURS=″*″></ELEMENT>
<ELEMENT?NAME=″internet″?OCCURS=″*″></ELEMENT>
</SEQUENCE></MODEL>
</ELEMENTTYPE>
<H3>Physical?Address</H3>
<ELEMENTTYPE?NAME=″address.physical″>
<EXPLAIN><TITLE>Physical?Address</TITLE>
<SYNOPSIS>The?street?address,city,state,and?zip?code.</SYNOPSIS></EXPLAIN>
<MODEL><SEQUENCE>
<ELEMENT?NAME=″street″></ELEMENT>
<ELEMENT?NAME=″city″></ELEMENT>
<ELEMENT?NAME=″state″></ELEMENT>
<ELEMENT?NAME=″postcode″?OCCURS=″?″></ELEMENT>
<ELEMENT?NAME=″country″></ELEMENT>
</SEQUENCE></MODEL>
</ELEMENTTYPE>
<H3>Street</H3>
<ELEMENTTYPE?NAME=″street″>
<EXPLAIN><TITLE>Street?Address</TITLE>
<SYNOPSIS>Street?or?postal?address.</SYNOPSIS></EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>City</H3>
<ELEMENTTYPE?NAME=″city″>
<EXPLAIN><TITLE>City?Name?or?Code</TITLE>
<P>The?city?name?or?code?is?a?string?that?contains?sufficient?information?to?identify
a?city?within?a?designated?state.</P>
</EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>State</H3>
<ELEMENTTYPE?NAME=″state″>
<EXPLAIN><TITLE>State,Province?or?Prefecture?Name?or?Code</TITLE>
<P>The?state?name?or?code?contains?sufficient?information?to?identify?a?state?within
a?designated?country.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″COUNTRY.US.SUBENTITY″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Postal?Code</H3>
<ELEMENTTYPE?NAME=″postcode″>
<EXPLAIN><TITLE>Postal?Code</TITLE>
<P>A?postal?code?is?an?alphanumeric?code,designated?by?an?appropriate?postal?authority,
that?is?used?to?identify?a?location?or?region?within?the?jurisdiction?of?that?postal?authority.
Postal?authorities?include?designated?national?postal?authorities.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″string″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Country</H3>
<ELEMENTTYPE?NAME=″country″>
<EXPLAIN><TITLE>Country?Code</TITLE>
<P>A?country?code?is?a?two-letter?code,designated?by?ISO,that?is?used?to?uniquely
identify?a?country.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″country″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Network?Addresses</H3>
<ELEMENTTYPE?NAME=″telephone″>
<EXPLAIN><TITLE>Telephone?Number</TITLE>
<P>A?telephone?number?is?a?string?of?alphanumerics?and?punctuation?that?uniquely
identifies?a?telephone?service?terminal,including?extension?number.</P></EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>Fax</H3>
<ELEMENTTYPE?NAME=″fax″>
<EXPLAIN><TITLE>Fax?Number</TITLE>
<P>A?fax?number?is?a?string?of?alphanumerics?and?punctuation?that?uniquely?identifies
a?fax?service?terminal.</P>
</EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>Email</H3>
<ELEMENTTYPE?NAME=″email″>
<EXPLAIN><TITLE>Email?Address</TITLE>
<P>An?email?address?is?a?datatype-constrained?string?that?uniquely?identifies?a?mailbox
on?a?server.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″email″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Internet?Address</H3>
<ELEMENTTYPE?NAME=″internet″>
<EXPLAIN><TITLE>Internet?Address</TITLE>
<P>An?Internet?address?is?a?datatype-constrained?string?that?uniquely?identifies?a
resource?on?the?Internet?by?means?of?a?URL.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″url″></STRING></MODEL>
</ELEMENTTYPE>
</DTD>
</SCHEMA>
The service describing example
<!DOCTYPE?schema?SYSTEM?″bidl.dtd″>
<SCHEMA>
<H1>Service?Description?Sample?BID</H1>
<META
WHO.OWNS=″Veo?Systems″?WHO.COPYRIGHT=″Veo?Systems″
WHEN.COPYRIGHT=″1998″ DESCRIPTION=″Sample?BID″
WHO.CREATED=″*″ WHEN.CREATED=″*″
WHAT.VERSION=″*″ WHO.MODIFIED=″*″
WHEN.MODIFIED=″*″ WHEN.EFFECTIVE=″*″
WHEN.EXPIRES=″*″ WHO.EFFECTIVE=″*″
WHO.EXPIRES=″*″>
</META>
<PROLOG>
<XMLDECL?STANDALONE=″no″></XMLDECL>
<DOCTYPE?NAME=″service″>
<SYSTEM>service.dtd</SYSTEM></DOCTYPE>
</PROLOG>
<DTD?NAME=″service.dtd″>
<H2>Services</H2>
<H3>Includes</H3>
<!--?INCLUDE><SYSTEM>comments.bim</SYSTEM></INCLUDE?-->
<H3>Service?Set</H3>
<ELEMENTTYPE?NAME=″service.set″>
<EXPLAIN><TITLE>Service?Set</TITLE>
<SYNOPSIS>A?set?of?services.</SYNOPSIS></EXPLAIN>
<MODEL>
<ELEMENT?NAME=″service″?OCCURS=″+″></ELEMENT>
</MODEL></ELEMENTTYPE>
<H3>Services?Prototype</H3>
<PROTOTYPE?NAME=″prototype.service″>
<EXPLAIN><TITLE>Service</TITLE></EXPLAIN>
<MODEL><SEQUENCE>
<ELEMENT?NAME=″service.name″></ELEMENT>
<ELEMENT?NAME=″service.terms″?OCCURS=″+″></ELEMENT>
<ELEMENT?NAME=″service.location″?OCCURS=″+″></ELEMENT>
<ELEMENT?NAME=″service.operation″?OCCURS=″+″></ELEMENT>
</SEQUENCE></MODEL>
<!--?ATTGROUP><IMPLEMENTS
HREF=″common.attrib″></IMPLEMENTS></ATTGROUP?-->
</PROTOTYPE>
<H3>Service</H3>
<INTRO><P>A?service?is?an?addressable?network?resource?that?provides?interfaces?to
specific?operations?by?way?of?input?and?output?documents.</P></INTRO>
<ELEMENTTYPE?NAME=″service″>
<EXPLAIN><TITLE>Service</TITLE>
<P>A?service?is?defined?in?terms?of?its?name,the?location(s)?at?which?the?service?is
available,and?the?operation(s)?that?the?service?performs.</P></EXPLAIN>
<MODEL><SEQUENCE>
<ELEMENT?NAME=″service.name″></ELEMENT>
<ELEMENT?NAME=″service.location″></ELEMENT>
<ELEMENT?NAME=″service.operation″?OCCURS=″+″></ELEMENT>
<ELEMENT?NAME=″service.terms″></ELEMENT>
</SEQUENCE></MODEL>
</ELEMENTTYPE>
<H3>Service?Name</H3>
<ELEMENTTYPE?NAME=″service.name″>
<EXPLAIN><TITLE>Service?Name</TITLE>
<P>The?service?name?is?a?human-readable?string?that?ascribes?a?moniker?for?a?service.
It?may?be?employed?is?user?interfaces?and?documentation,or?for?other?purposes.</P></EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>Service?Location</H3>
<ELEMENTTYPE?NAME=″service.location″>
<EXPLAIN><TITLE>Service?Location</TITLE>
<SYNOPSIS>A?URI?of?a?service.</SYNOPSIS>
<P>A?service?location?is?a?datatype-constrained?string?that?locates?a?service?on?the
Internet?by?means?of?a?URI.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″url″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Service?Operations</H3>
<INTRO><P>A?service?operation?consists?of?a?name,location?and?its?interface,as
identified?by?the?type?of?input?document?that?the?service?operation?accepts?and?by?the?type
of?document?that?it?will?return?as?a?result.</P></INTRO>
<ELEMENTTYPE?NAME=″service.operation″>
<EXPLAIN><TITLE>Service?Operations</TITLE>
<P>A?service?operation?must?have?a?name,a?location,and?at?least?one?document?type?as
an?input,with?one?or?more?possible?document?types?returned?as?a?result?of?the?operation.</P>
</EXPLAIN>
<MODEL><SEQUENCE>
<ELEMENT?NAME=″service.operation.name″></ELEMENT>
<ELEMENT?NAME=″service.operation.location″></ELEMENT>
<ELEMENT?NAME=″service.operation.input″></ELEMENT>
<ELEMENT?NAME=″service.operation.output″></ELEMENT>
</SEQUENCE></MODEL>
</ELEMENTTYPE>
<H3>Service?Operation?Name</H3>
<ELEMENTTYPE?NAME=″service.operation.name″>
<EXPLAIN><TITLE>Service?Operation?Name</TITLE>
<P>The?service?operation?name?is?a?human-readable?string?that?ascribes?a?moniker?to?a
service?operation.It?may?be?employed?in?user?interfaces?and?documentation,or?for?other
purposes.</P></EXPLAIN>
<MODEL><STRING></STRING></MODEL>
</ELEMENTTYPE>
<H3>Service?Operation?Location</H3>
<INTRO><P>The?service?location?is?a?network?resource.That?is?to?say,a?URI.</P></INTRO>
<ELEMENTTYPE?NAME=″service.operation.location″>
<EXPLAIN><TITLE>Service?Operation?Location</TITLE>
<SYNOPSIS>A?URI?of?a?service?operation.</SYNOPSIS>
<P>A?service?operation?location?is?a?datatype-constrained?string?that?locates?a?service
operation?on?the?Internet?by?means?of?a?URL.</P></EXPLAIN>
<MODEL><STRING?DATATYPE=″url″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Service?Operation?Input?Document</H3>
<INTRO><P>The?input?to?a?service?operation?is?defined?by?its?input?document?type.That
is,the?service?operation?is?invoked?when?the?service?operation?location?receives?an?input
document?whose?type?corresponds?to?the?document?type?specified?by?this?element.</P>
<P>Rather?than?define?the?expected?input?and?output?document?types?in?the?market
participant?document,this?example?provides?pointers?to?externally-defined?BIDs.This?allows
reuse?of?the?same?BID?as?the?input?and/or?output?document?type?for?multiple?operations.In
addition,it?encourages?parallel?design?and?implementation.</P></INTRO>
<ELEMENTTYPE?NAME=″service.operation.input″>
<EXPLAIN><TITLE>Service?Operation?Input</TITLE>
<SYNOPSIS>Identifies?the?type?of?the?service?operation?input?document.</SYNOPSIS>
<P>Service?location?input?is?a?datatype-constrained?string?that?identifies?a?BID?on?the
Internet?by?means?of?a?URI.</P>
</EXPLAIN>
<MODEL><STRING?DATATYPE=″url″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Service?Operation?Output?Document?Type</H3>
<INTRO><P>The?output?of?a?service?operation?is?defined?by?its?output?document?type(s).
That?is,the?service?operation?is?expected?to?emit?a?document?whose?type?corresponds?to?the
document?type?specified?by?this?element.</P></INTRO>
<ELEMENTTYPE?NAME=″service.operation.output″>
<EXPLAIN><TITLE>Service?Operation?Output</TITLE>
<SYNOPSIS>Identifies?the?type?of?the?service?operation?output?document.</SYNOPSIS>
<P>Service?location?output?is?a?datatype-constrained?string?that?identifies?a?BID?on
the?Internet?by?means?of?a?URI.</P>
</EXPLAIN>
<MODEL><STRING?DATATYPE=″url″></STRING></MODEL>
</ELEMENTTYPE>
<H3>Service?Terms</H3>
<INTRO><P>This?is?a?simple?collection?of?string?elements,describing?the?terms?of?an
agreement.</P></INTRO>
<ELEMENTTYPE?NAME=″service.terms″>
<EXPLAIN><TITLE>Service?Terms</TITLE>
<SYNOPSIS>Describes?the?terms?of?a?given?agreement.</SYNOPSIS>
</EXPLAIN>
<MODEL><STRING?DATATYPE=″string″></STRING></MODEL>
</ELEMENTTYPE>
</DTD>
</SCHEMA>
Can be as follows, expand service DTD pattern with the service type element in the public business language resources bank.
<!ELEMENT?service.type?EMPTY>
<!ATTLIST?service.type
service.type.name(
catalog.operator
|?commercial.directory.operator
|?eft.services.provider
|?escrower
|?fulfillment.service
|?insurer
|?manufacturer
|?market.operator
|?order.originator
|?ordering.service
|?personal.services.provider
|?retailer
|?retail.aggregator
|?schema.resolution.service
|?service.provider
|?shipment.acceptor
|?shipper
|?van
|?wholesale.aggregator
)?#REQUIRED
%common.attrib;
>
Above-mentioned service type element has illustrated the explain information that is carried by the commercial interface definition, and in this example, a kind of content-form allows any one in identification one effective service inventory.Other explain information comprises data type, for example element<H3〉Internet Address</H3 〉, it comprises content-form " url " and represents with data type " string ".Also have other explain information to comprise the reflection of code to the inventory element, for example element<H3〉State</H3 〉, it comprises the code that state in the file " COUNTRY.US.SUBENTITY " is videoed.
The service describing of being mentioned by participant in the market DTD has defined the document that this service is accepted and produced when finishing service.Below basic service is described and be appointed as XML document transact.dtd.
The Transact.dtd simulation is described such as issued transaction such as invoices, perhaps the description that value is exchanged.This Doctype supports many kinds to use, so the affairs descriptive element has attributes such as the distinguish of permission invoice, performance, expression sale and request quotation.Exchange can take place between plural object, but only takes out two objects, offerer and calculating side, and these two objects are all represented with pointer, the document that pointed conforms to above-mentioned participant in the market DTD.The pointer of calculating side is selectable, so that adapt to the sale purpose.Exchange is described among the following listed module tranprim.mod to be described, and comprises price and subtotal.After exchange is described, the expense that is applied to issued transaction as a whole can be provided, and total expense must be provided.Therefore, below provide these routine affairs and described the summary document:
<!--transact.dtd?Version:?1.0-->
<!--Copyright?1998?Veo?Systems,Inc.-->
...
<!ELEMENT?transaction.description(meta?,issuer.pointer,
counterparty.pointer?,exhange.descrpt?ion+,general.charges?,
net.total?)>
<!ATTLIST?transaction.description
transaction.type(invoice?|?pro.forma?|?offer.to.sell?|?order
|?request.for.quote|request.for.bid
|?request.for.proposal?|?response.to.request.for.quote
|?response.to.request.for.bid
|?response.to.request.for.proposal)″invoice″
%common.attrib;
%altrep.attrib;
%ttl.attrib;
>
Below be representational participant in the market and the service DTD that sets up according to above-mentioned definition: participant in the market DTD
<!ELEMENT?business(party.name+,address.set)>
<!ATTLIST?business?business.number?CDATA?#REQUIRED
>
<!ELEMENT?party.name(#PCDATA)>
<!ELEMENT?city(#PCDATA)>
<!ELEMENT?internet(#PCDATA)>
<!ELEMENT?country(#PCDATA)>
<!ELEMENT?state(#PCDATA)>
<!ELEMENT?email(#PCDATA)>
<!ELEMENT?address.physical(street,city,state,postcode?,country)>
<!ELEMENT?telephone(#PCDATA)>
<!ELEMENT?person(party.name+,address.set)>
<!ATTLIST?person?SSN?CDATA?#IMPLIED
>
<!ELEMENT?fax(#PCDATA)>
<!ELEMENT?street(#PCDATA)>
<!ELEMENT?address.set(address.physical,telephone*,fax*,email*,internet*)>
<!ELEMENT?postcode(#PCDATA)>
<!ELEMENT?market.participant(business?|?person)>
Service DTD
<!ELEMENT?service.location(#PCDATA)>
<!ELEMENT?service.terms(#PCDATA)>
<!ELEMENT?service.operation.name(#PCDATA)>
<!ELEMENT?service.operation(service.operation.name,service.operation.location,
service.operation.input,service.operation.output)>
<!ELEMENT?service(service.name,service.location,service.operation+,
service.terms)>
<!ELEMENT?service.operation.input(#PCDATA)>
<!ELEMENT?service.operation.location(#PCDATA)>
<!ELEMENT?service.name(#PCDATA)>
<!ELEMENT?service.set(service+)>
<!ELEMENT?service.operation.output(#PCDATA)>
Below be a routine document that produces according to transact.dtd:
<?xml?version=″1.0″?>
<!--?rorder.?xml?Version:?1.0?-->
<!--?Copyright?1998?Veo?Systems,Inc.?-->
<!DOCTYPE?transaction.?description?SYSTEM?″urn:x-
veosystems:dtd:cbl:transact:1.0:>
<transaction.description?transaction.type=″order″>
<meta>
<urn?urn:x-veosystems:doc:00023
</urn>
<thread.id?party.assigned.by=″reqorg″>FRT876
</thread.id>
</meta>
<issuer.pointer>
<xll.locator?urllink=″reqorg.?xml″>Customer
Pointer
</xll.locator>
</issuer.pointer>
<counterparty.pointer>
<xll.locator?urllink=″compu.xml″>Catalog?entry?owner
pointer
</xll.locator>
</counterparty.pointer>
<exchange.description>
<line.item>
<product.instance>
<product.description.pointer>
<xll.locator?urllink=″cthink.xml″>Catalogue?Entry?Pointer
</xll.locator>
</product.description.pointer>
<product.specifics>
<info.description.set>
<info.description>
<xml.descriptor>
<doctype>
<dtd?system.id=″urn:x-veosystems:dtd:cbl:gprod:1.0″/>
</doctype>
<xml.descriptor.details>
<xll.xptr.frag>DESCENDANT(ALL,os)STRING(″Windows?95″)
</xll.xptr.frag>
<xll.xptr.frag>DECENDANT(ALL,p.speed)STRING(″200″)
</xll.xptr.frag>
<xll.xptr.frag>DESCENDANT(ALL,hard.disk.capacity)
STRING?(″4″)
</xll.xptr.frag>
<xll.xptr.frag>DESCENDANT(ALL,d.size)STRING(″14.1″)
</xll.xptr.frag>
</xml.descriptor.details>
</xml.descriptor>
</info.description>
</info.description.set>
</product.specifics>
<quantity>1
</quantity>
</product.instance>
<shipment.coordinates.set>
<shipment.coordinates>
<shipment.destination>
<address.set>
<address.named>SW-1
</address.named>
<address.physical>
<building.sublocation>208C</building.sublocation>
<location.in.street>123
</location.in.street>
<street>Frontage?Rd.
</street>
<city>Beltway
</city>
<country.subentity.us
country.subentity.us.name=″MD″/>
<postcode>20000
</postcode>
</address.physical>
<telephone>
<telephone.number>617-666-2000
</telephone.number>
<telephone.extension>1201
</telephone.extension>
</telephone>
</address.set>
</shipment.destination>
<shipment.special>No?deliveries?after?4?PM</shipment.special>
</shipment.coordinates>
</shipment.coordinates.set>
<payment.set>
<credit.card
issuer.name=″VISA″
instrument.number=″3787-812345-67893″
expiry.date=″12/97″
currency.code=″USD″/>
<amount.group>
<amount.monetary?currency.code=″USD″>3975
</amount.monetary>
</amount.group>
</payment.set>
</line.item>
</exhange.description>
</transaction.description>
Therefore, the invention provides a technology, utilize this technology, the participant in the market can discern itself, and the type of identification input document and the type of output document, utilizes these recognition results participant in the market will carry out business activity.Be not included in by the ad hoc fashion of contained content in transaction all the other sides or this these documents of local processing and set up commercial relations and carry out in the process of issued transaction.
Fig. 3 provides a reduced graph, shows according to the participant site in the network of the present invention.Site shown in Figure 3 comprises a network interface 300, and it links to each other with communication network on port 301.Network interface links to each other with document syntax analyzer 301.Syntax analyzer 301 will offer translator module 302 from the logical organization of input document, translator module will be imported document translation and become the operable form of main transaction system, and conversely the output of main procedure is translated into commercial interface definition in output document form document matching form so that be sent to the destination.The definition of the commercial interface of storage responds in 302 pairs of participant's modules 303 of syntax analyzer 301 and translater.
The signal event that will send from the output data structure and the syntax analyzer 301 of translater 302 offers issued transaction process front end 304 together.Front end 304 among embodiment comprises that JAVA virtual machine or other similarly are suitable for the interface of communicating by letter between the different sites of network.The incident of 304 pairs of syntax analyzers 301 of issued transaction front end and translater 302 expressions responds, and sends the suitable function that links to each other with the participant in business system and the network to so that will import data.Therefore the issued transaction process front end in Fig. 3 example 304 and business function 305, database function 306, such as other enterprise features 307 such as accounting and book keeping operations, and link to each other with processor 308 with special incident listener, wherein install 308 and be designed to the represented incident of response syntax analyzer.
Syntax analyzer 301 obtains the similar order of going up in the example, perhaps according to other document of commercial interface definition regulation, and produces one group of incident, and described incident is known with local matter Processing Structure (such as one group of JAVA incident of JAVA virtual machine).
Syntax analyzer of the present invention does not link to each other with the program of listening to incident according to the reception document.Satisfy the reception document of certain specification explanation or each marker field of full document and work to listen to function command, handle so that begin.Therefore, listen to program and finish the business logic relevant with document information.For example, relevant with address element program can be the code that postcode is come into force by the inspection database.These listeners are by registering subscription event with the document router, and router sends to relevant incident to they interested all users.
For example, can monitor the order of afore mentioned rules with the program of the incident of listening to the syntax analyzer generation, this program can link to each other document or its content with the order loading routine.The description of product that receives in the purchase order will call a program, to check stock.Then, the address information that receives in the purchase order will be called a program, to check the availability of delivery service.Buyer's information field in the document can call some processes, to check the purchase order history of credit rating, perhaps provides to promote or similarly handle on the basis of known consumer's identity.
Complicated listener can be configured and constitutes original listener.For example, the order listener can comprise and call the inventory listener that provides the last period, perhaps can be to himself calling the inventory member.Notice that the application program of listener operation can not be this machine XML process or this machine JAVA process.In these cases, object can be converted to the desired form of reception conversion application.When application program is finished processing, the XML form is changed back in its output, so that be transferred to other site in the network.
As can be seen, above-mentioned market participates in the document-type description and the description of affairs document-type comprises a reflection that schematically is used for the document logical block, and comprise the SGML based on natural language.Other natural language attribute of natural language mark and XML is convenient to XML phenotypic marker language is used for explanation to commercial interface definition, service describing and to the description of input and output document.
Participant's module 303 is except the definition of storage commercial interface, also comprise a program compiler, it is used for compiling object or other data structure that issued transaction process front end 304 will use, wherein issued transaction process front end 304 is corresponding to the logical organization of input in the document, and translater 302 is compiled.Therefore, when changing owing to the affairs that relate to as the participant, the participant can revise or upgrade the commercial interface definition, so translater 302 and syntax analyzer 301 will keep up-to-date automatically.
In a preferred embodiment, use program compiler to produce one group of JAVA incident corresponding to grove type SGML, be mainly " performance group " that standard component structural information group increases each element.International standard ISO/IEC10179:1996 (E), the semantic and descriptive language (DSSSL) of infotech--processing language--document-type.XML document is become one group of global event, so that contrast normal analytical model, in normal analytical model, the output of syntax analyzer remains inner data structure.Be suitable for the programming structure that each site issued transaction front end uses by the element of XML document being translated into JAVA incident or other, can obtain rich functions using by place, the site of transaction document.
Therefore, issued transaction process front end 304 can openly be operated, and subscribes and can increase the listener program and need not know or influence that other listens to the structure of program in the system.Each listener 305,306,307 among Fig. 3 and 308 keeps a formation, and front end 304 is by this formation guiding incident.This can make a plurality of listeners handle by himself step parallel processing incident.
In addition, according to the present invention, the application program of listener operation does not need this machine XML function, perhaps this machine function that is complementary with the input document format.If issued transaction process front end 304 is JAVA interfaces, these listeners can be the JAVA functions so, or according to the function of unique issued transaction structure operation.In these cases, object can be converted to the desired form of reception application program.When the application program of listener finishes, the document format that defines defined as commercial interface in the module 303 is changed back in its output.Therefore, translater 302 links to each other with network interface 300, and being directly used in provides the document of organizing, as output.
The listener that links to each other with the issued transaction front end can comprise the listener that is used for importing the document listener, is used to import the concrete element of document, and the listener that is used for being stored in the attribute of importing the document element-specific.This can carry out different and realize flexibly the issued transaction process at participant site place, so that filter and response input document.
Fig. 4 shows the process that receives and handle the input document for the system of Fig. 3.Therefore, to begin be to receive a document (step 400) at network interface to process.Syntax analyzer is in response to commercial interface definition identification Doctype (401).Utilize this commercial interface definition (it has stored the DTD of XML format file), document is carried out grammatical analysis (step 402).Next, the element with document becomes nominative formula (step 403) with attributed translation.In this example, the XML logical organization is translated into the JAVA object, this object be loaded with the XML element data and with such as obtaining and be provided with the relevant methods of data such as function.Next, main object is passed to the processing front end (step 404) of being engaged in of taking charge.In response to syntax analyzer and the represented incident of translater, these objects are offered some process.Execution is used to receive the process of document elements, and produces an output (step 405).Output translated into as commercial interface define defined output document form (step 406).In this example, translation proceeds to the form of XML document from the form of JAVA object.At last, by network interface output document is sent to the destination.
Fig. 5 has described the event generating/incident listener mechanism of system shown in Figure 3 in more detail.In general, method shown in Figure 5 is concise to JAVA JDK 1.1 event models.In this model, consider three kinds of objects.First kind to as if event object, it comprises the information that incident takes place.Many kinds of event objects can be arranged, and they are corresponding to all contingent different event.Second kind to as if event generating, its surveillance operation, and when some thing takes place when the generation event object.The third is the incident listener, and it listens to the event object that is produced by event generating.The incident listener is generally listened to special event generating, such as clicking on specific window with Genius mouse.The incident listener calls " increasing the incident listener " on event generating.This model is applicable to the environment of Fig. 3, and in the environment of Fig. 3, response analysis and passing by such as the represented object curve of XML document produces each object.
System shown in Figure 5 comprises a common XML syntax analyzer 500.This syntax analyzer can be realized with the readjustment model of standard.When the analysis incident took place, syntax analyzer called the ad hoc approach in the application, the appropriate information in passing a parameter.Therefore, single application program 501 and syntax analyzer are together.Represented as square frame 502, application program encapsulates the information that syntax analyzer provided in the XML event object, and sends it to many incident listeners of having discerned itself.502 pairs of syntax analyzers of event group are fully independently.Incident 502 can be offered any many listeners and any multithreading (thread) on any number machine.In another case, incident is based on element structure message block ESIS.Therefore, they comprise the inventory that the importance by file structure constitutes, such as the beginning and the end of element, perhaps to the identification of attribute.XML (and SGML) syntax analyzer generally is used as one group of default information with the ESIS structure, returns its application program for syntax analyzer.
Special-purpose ESIS listener 503 is linked to each other with one group of incident 502.This listener 503 is realized ESIS listener API, and listens to all the XML incidents from one or more makers.Elementary event maker 504 is a kind of special-purpose ESIS listeners, and it also is an XML event generating.Its listener only is to the interested object of the incident of specific type element.For example in the HTML environment, listener is only interested in the order, this just<OL and</OL documentation section between the label.In another example, listener is listened to " party.name " element according to public business language from the above document that exemplifies, perhaps " service.name " element; Processing events is carried the data that the schematic reflection with element is complementary to guarantee element; And work according to receiving the required process in site.
This permission system has less object, and they listen to the specific part of document, such as an addition price part.Because listener can increase from maker and delete itself, so can there be a listener only to listen to use html document<head〉part.Owing to the height recursive nature of this reason and XML document, thus can write out the code of height targeted, and write out the listener of setting out.For example,<OL〉listener can set up<LI〉listener, its mode is totally independent of<UL〉(inventory of not ordering) listener sets up it<LI〉mode of listener.Another kind method is, sets up a listener that produces graphical user interface, sets up another listener with same inputted search digital library.Therefore, regard document as carry out program, check that with application program is each one section concise data structure is opposite by listener.If write application program in this way, will entire document not put into internal memory so, with executive utility.
The next listener that links to each other with event group 502 is an attribute filtrator 505.The plain filtrator 504 of attribute filtrator 505 picture dots equally is the attribute event maker according to the ESIS listener model.The listener that is used for the attribute filtrator has been stipulated its interested attribute, and receives the incident of any element with this regulation attribute.Therefore for example, the script management device receives only the elementary event with font attribute, such as<P FONT=" Times Roman "/p 〉.
Elementary event maker 504 provides this dvielement object, so that make element listener 504A specialization.
Attribute event maker 505 offers attribute listener 505A with the attribute event object.Equally, converting to from a kind of Doctype on the meaning of alternative SGML/XML conversion, attributes object is offered a kind of " structure " with attribute.Therefore, the structure of 505B allows a specific attribute to have a differentiable specific names.The element that only has this regulation attribute just can become the part of output document, and the element term in the output document is the property value in the input document.For example, be HTML as fruit structure 505B, go here and there so:
<PURCHASES?HTML=″OL″><ITEM?HTML=″LI″><NAME
HTML=″B″>STUFF</NAME><PRICE
HTML=″B″>123</PRICE></ITEM></PURCHASES>
Translate into:
<OL><LI><B>STUFF</B><B>123</B></LI></OL>
This is correct HTML.
The next module that links to each other with event group 502 is that tree constitutes device.Tree constitutes device and gets an XML flow of event, and produces the tree of representing basic file.Tree constitutes a kind of preferred versions of device 506 according to the normalized illustration of W3C (referring to, http://www.w3.org/TR/1998/WD-DOM-19980720), produces DOM Document Object Model DOM object 507.But, can handle most of requirements with the listener in the flow of event, what the version of tree was applicable to the inquiry supported around document, site reorders, creates new document, and supports to can be used to repeatedly to produce the data structure structure in the internal memory of same flow of event, for example resembles repeatedly analytical documentation.Special use can be constituted device 508 and link to each other,, adapt to a specific performance so that be the special subtree of various piece formation of document with tree formation device 506.
Except response input document, can also provide other source of XML incident.Therefore, the primitive event stream by pass by DOM object tree and regeneration are set up during to document analysis produces flow of event 510.This permission system show document analyzed several times.
The idea that makes object pass by tree and produce flow of event can be generalized to beyond the DOM object tree, is generalized to any object tree that can address inquires to.Therefore, JAVA walking device 512 can be the application program of JAVA beans member tree 513 of passing by.Walking device pass by all field that can openly visit and methods.Walking device is followed the tracks of the object that it had been visited, and guarantees not enter endless loop.JAVA incident 514 is event types that JAVA walking device 512 produces.This generally includes the information of most of types that can derive from object.This is the JAVA equivalent of ESIS, and allows identical programmed method is applied to generally will be used for the XML of JAVA object, although especially for the JAVA beans.
JAVA to XML event generating 515 has been constructed JAVA listener and JAVA event generating.Its receives the flow of event 514 from JAVA walking device 512, and translation chosen, so that the JAVA Object table is shown as XML document.In a preferred embodiment, event generating 515 exploitation JAVA beans API.Each observed object becomes an element, and element term is identical with item name.In element, each embedding grammar also becomes such element, and its content is the value of returning by call method.If it is an object or an array of objects, so to they walkings in turn.
Fig. 6 has described the application-specific set up on Fig. 5 framework.This application program obtains in XML document 600, and is applied to syntax analyzer/maker 601.Produce ESIS incident 602 and provide it to attribute maker 603 and tree formation device 604.The attribute maker is corresponding to the maker 505 of Fig. 5.It offers incident " structure " 505B, so that for example HTML output is translated in the XML input.Represented as square frame 605, these incidents of parallel processing, and handle with listener.The output of listener is offered document Write 506, and then, the XML form is got back in translation, exports.Therefore for example, application program shown in Figure 6 is got XML document, and output comprises a kind of html document of form.Then, this form is sent to browser, and the result is converted back into XML.For this exercise, structuring concept provides the reflection from XML to HTML.Comprise three kinds of structures among Fig. 6, a kind of structure that html document is provided is such as form and tabulation; Stipulated the text that will show for second kind, such as the input field sign on the visit device document; The third has described input field itself.Under the HTML form, require in the XML document to keep the element of XML document structure to become invisible field.This is applicable to that by such signal reconstruct XML document wherein the client is translated into HTTP mailing message with described information, beams back server.Each architecture obtains the input document, and converts thereof into the architecture based on the HTML subclass.Listen to the incident of the listener output html document of these incidents, these incidents walk to document Write object then.Document Write object is listened to the XML incident, and they are converted back to XML document.In this example, listen to the element maker of architecture for all, the document Write is to liking a listener.
The make of Fig. 5 and processing module shown in Figure 6 has been represented an embodiment of syntax analyzer and issued transaction process front end in Fig. 3 system.As seen from the figure, provide a kind of interface very flexibly,,, carried out various issued transaction processes in response to the document format of input XML document or other structure by this interface.
Fig. 7 shows the similar site with Fig. 3, and difference is that it comprises that the commercial interface definition constitutes device module 700.Therefore, the system of Fig. 7 comprises network interface 701, document syntax analyzer 702 and document translation device 703.Translater 703 offers issued transaction front end 704 with other output, and issued transaction front end 704 with listen to function such as business function 705, database 706, enterprise feature 707 and other common listener with processor 708 etc. and link to each other.As shown in Figure 7, the commercial interface definition constitutes device 700 and comprises user interface, public commercial storehouse CBL resources bank, is used to read the process of replenishing the commercial interface definition, and program compiler.User interface relies on public commercial base resource storehouse and sets up commercial interface definition with helping enterprise, and reads the ability of replenishing the commercial interface definition.Therefore, the input document that replenishes the commercial interface definition can be appointed as the output document of particular transaction, and the output document that replenishes the commercial interface definition can be appointed as the input of this issued transaction process.Use similar method, can become the definition of affairs commercial interface with the component groups of selecting from the CBL resources bank.Use the CBL resources bank to encourage to use standardized document format, such as the above-mentioned pattern that exemplifies (bidl) document, logical organization and explain information when constituting the commercial interface definition, wherein the commercial interface definition is easy to be adopted by other people in the network.
The commercial interface definition constitutes device module 700 and also comprises a program compiler, and it is with generating translater 703, the object that translater is produced according to the affair processing architecture of taking charge, and administrative analysis function 702.
Fig. 8 is a didactic figure, shows the logical organization in the resources bank that is stored in commercial interface definition formation device 700.Therefore, party concerned's commercial interface definition 800 is represented in the resources bank storage, comprises for example consumer BID 801, catalogue storehouse BID 802, warehouse BID 803 and auction storehouse BID 804.Therefore, the new participant on the online market can be elected to be a kind of standardization BID that meets its business activity most the basic interface description.In addition, resources bank will be stored one group and serve commercial interface definition 805.For example, can store purchase order and enter that BID 806, purchase order follow the tracks of BID 807, purchase order is fulfiled BID 808 and directory service BID 809.When the new participant in the market constituted a commercial interface definition, it can select to be stored in the commercial interface definition of the standardization service in the resources bank.
Except party concerned and service BID, shown in field 810, input and output document BID is stored in the resources bank.Therefore, can report BID 814 with purchase order BID 811, invoice BID 812, request quotation BID813, product available quantity, and purchase order state BID 815 is stored in the resources bank.
Except being appointed as the commercial interface definition of DTD (Document Type Definition) according to XML in preferred embodiment, shown in field 816, resources bank is stored the explain information of semantic reflection form.Therefore, the semanteme reflection that is used for predetermined weight 817, currency 818, size 819, product identifiers 820 and product performance 821 in this example can be stored in resources bank.In addition, explain information provides type for the data structure in the document logical structure.
In addition, shown in square frame 822, can be stored in the resources bank forming the logical organization of using when commercial interface defines.Therefore, square frame 825 can be provided for providing the form 823 of address signal, the form of quotation signal 824 is provided and provides contractual relation every form.When network enlarges, the CBL resources bank also will enlarge and standardization, so that new participant's increase and more convenient to the modification of commercial interface definition.
Fig. 9 shows the process that constitutes the commercial interface definition with Fig. 7 system.Process starts from showing that to the user BID constitutes device graphic interface (step 900).System accepts user's input, participant, service and document information (step 901) that identification is produced by graphic interface.
Next, response is retrieved any logical organization that is cited, explain information and document definition and/or service definition (step 902) by user's input of graphical user interface from resources bank.In next step,,, visit any additional commercial interface definition or the member (step 903) of commercial interface definition by search engine, web browser or the similar means of customization by other participant who chooses by user's input in the network.Set up participant's document definition (step 904) with the information of collecting.Set up the translater (step 905) of document with program compiler to host and host to document.Set up the primary architectural data structure (step 906) corresponding with program compiler with definition, and the commercial interface that mailing has been set up on network definition, such as being posted in World Wide Web website or other place, make it for other site addressable (step 907) in the network.
The online service that potential trading partner company is provided is told in the commercial interface definition, and which document to call these services with.Therefore, accept with their and the document that produces with service definition in the commercial interface definition.In the fragment of following XML service definition, this point is described.
<service>
<service.name>Order?Service</service.name>
<service.location>www.veosystems.com/order</service.location>
<service.op>
<service.op.name>Submit?Order</service.op.name>
<service.op.inputdoc>www.commerce.net/po.dtd</service.op.inputdoc>
<service.op.outputdoc>
www.veosystems.com/invoice.dtd</service.op.outputdoc>
</service.op>
<service.op>
<service.op.name>Track?Order</service.op.name>
<service.op.inputdoc>www.commerce.net
/request.track.dtd<service.op.inputdoc>
<service.op.outputdoc>
www.veosystems.com/response.track.dtd<service.op.outputdoc>
</service.op>
</service>
This XML fragment has defined the service of being made up of two affairs, and a kind of affairs are to obtain purchase order, and another kind of affairs are used to follow the tracks of them.If will effectively ask to send to the Weg address of regulation, a kind of contact or promise of fulfillment service represented in each definition so.Here purchase order service needs a kind of input document, and the document meets standard in the resources bank " po.dtd " DTD (Document Type Definition), and it can be local, perhaps is stored in the industry scope registration on the network.If this purchase order can be fulfiled in a site, it will return a document that meets customization " invoice.dtd " so, and its definition is local.In fact, company promise to undertake with send purchase order anyone make business, wherein purchase order meets the XML normalized illustration that its requires.Without any need for arrangement formerly.
DTD is formal Specification explanation or the grammer with document of given type; It has described the order that element, its attribute and they must occur.For example, purchase order generally comprises the buyer and the seller's title and address, a set product and describes, and such as term and conditions such as price and Shipping Dates.For example in electronic data interchange EDI, X12 850 is a kind of purchase order models commonly used.
Resources bank encourages to use for the public semantic component of reusing of many commercial fields to develop the XML document model.This class document can usually be understood from their common message unit, even they can show very difficultly.This is the effect in public commercial base resource storehouse.
Public commercial base resource is made up of the information model of general commercial notion, and described notion comprises:
● such as the commercial primitive of describing such as company, service and product;
● such as business forms such as catalogue, purchase order and invoices;
● gauge, date and time, position, classification code.
This information table is shown as one group of open-ended, disclosed XML constitutes piece, company can customize and assemble these and constitute piece, develops the XML application program fast.Atom CBL element has realized that the message of industry sends standard and pact, such as the standard ISO code that is used for country, currency, address and time.Rudimentary CBL semanteme is also to the analysis of (such as, Dublin nuclear) of the metadata frame of the recommendation of Internet resources.
The element of next grade constitutes pieces with these and realizes basic business form, such as the form of those forms of using in X12 EDI issued transaction and those use when forming internet standard (such as open transaction agreement OTP and open purchase OBI on the internet).
The emphasis of CBL is (to describe primitive such as commerce such as company, service and products for all commercial fields public function and information; Such as business forms such as catalogue, purchase order and invoices; Gauge, period and time, position, classification code).CBL constitutes (for example, to following rule encoding, promptly " the date/month part/time " in regulation Europe is to " month/date/time " of the U.S. in discrete CBL model) on possible semantic criteria or industry pact.
CBL is a kind of language that is used for design application.It is designed to connect the gap between XML " the document world " and JAVA " the programming world " or other issued transaction architecture.Pattern embodied the philosophical thinking of a kind of " programming " with document, in the method, the detailed form normalized illustration of Doctype is main source, can generate various relevant forms by this main source.These forms comprise the XML DTD, the JAVA object that are used for CBL, be used for the example of XML and corresponding JAVA object is changed mutually and the program of supporting documentation.
CBL sets up single source, program compiler by this source can automatic creation system nearly all fragment.CBL comes work by expanding SGML/XML, and SGML/XML is commonly used to formally define the structure of particular document type, so that comprise the normalized illustration of the semanteme relevant with each information element and attribute.Can expand limited group that forms by the most of character types of SGML/XML, to define any kind of data type.
Here be a fragment about " time on date " module from the CBL definition:
<!--datetime.mod?Version:?1.0-->
<!--Copyright?1998?Veo?Systems,Inc.-->
...
<!ELEMENT?year(#PCDATA)>
<!ATTLIST?year
schema?CDATA#FIXED″urn:x-veosystems:stds:iso:8601:3.8″
>
<!ELEMENT?month(#PCDATA)>
<!?ATTLIST?month
schema?CDATA?#FIXED″urn:x-veosystems:stds:iso:8601:3.12″
>
...
In this fragment, element " year " is defined as character data, and relevant " pattern " attribute also is defined as character data, the mode-definition that it will " year " is that 3.8 of ISO 8601 standards save.
This " time on date " CBL module in fact is defined as the example of pattern DTD.At first, definition module title.Then, " time on date " element " year " is restricted to the semanteme of ISO 8601.
<!DOCTYPE?SCHEMA?SYSTEM″schema.dtd″>
<SCHEMA><H1>Date?and?Time?Module</H1>
...
<ELEMNTTYPE?NAME=″year″DATATYPE=″YEAR″><MODEL>
<STRING
DATATYPE=″YEAR″></STRING></MODEL>
<ATTDEF?NAME=:schema:iso8601″DATATYPE=″CDATA″>
<FIXED>3.8
Gregorian?calendar</FIXED></ATTDEF></ELEMENTTYPE>
...
Above-mentioned participant in the market who exemplifies and service module also are stored in the CBL resources bank.
In Figure 10, by customizing common purchase order DTD 1001, increase the information 1002 about transporting weight more specifically, define aviation bill 1000.Common purchase order 1001 is initial all with relevant address, date and time, currency, and the CBL module of selling the product description of advocating peace is assembled.Therefore, use CBL obviously to quicken the exploitation and the enforcement of XML business applications.The more important thing is that CBL makes the easier interconnection of business applications.
In CBL, expand XML with a kind of pattern.Being extended for the XML element has increased strongly-typed, causes to be easy to make content effective.For example, can be with element<CPU_clock_speed〉being defined as one, to have one group of effective value be the { integer of 100,133,166,200,233,266 Mhz}.Pattern has also increased the level of class-subclass, causes to be easy to by class definition illustration information.For example, laptop computer can be described as a computing machine of feature additional labels such as having relevant display type and battery life.These and other expansion has made things convenient for the input of data, and the automatic translation between XML and traditional OO and relational data model.
Therefore, by program compiler, JAVA beans and the complete BID of transcode operation, program compiler is that the practical examples of participant and service produces DTD as mentioned above, and the JAVA beans are corresponding to the logical organization in the DTD example, and transcode is used for from XML to JAVA and from the conversion of JAVA to XML.In other systems, also generate document, be presented on the user interface, perhaps print, so that the use of object by the user.
For above-mentioned participant in the market who exemplifies and service DTD, the JAVA beans that generated by program compiler are described below (using for simplicity's sake, some redactions):
import?com.veo.vsp.doclet.meta.Document;
public?class?AddressPhysical?extends?Document?{
public?static?final?String?DOC_TYPE?=?″address.?physical″;
String?mStreet;
String?mCity;
public?final?static?int?AK=0;
public?final?static?int?AL=1;
public?final?static?int?AR=2;
public?final?static?int?AZ=3;
public?final?static?int?CA=?4;
...
public?final?static?int?WI=48;
public?final?static?int?WV=49;
public?final?static?int?WY=50;
int?mState;
String?mPostcode;
public?final?static?int?AD=51;
public?final?static?int?AE=52;
public?final?static?int?AF=53;
public?final?static?int?AG=54;
public?final?static?int?AI=55;
public?final?static?int?AM=56;
...
int?mCountry;
public?AddressPhysical(){
super(DOC_TYPE);
mStreet=new?String();
mCity=new?String();
this.mState=-1;
mPostcode=null;
this.mCountry=-1:
}
public?AddressPhysical(String?doc_type){
super(doc_type);
mStreet=new?String();
mCity=new?String();
this.mState=-1;
mPostcode=null;
this.mCountry=-1;
}
static?public?AddressPhysical?initAddressPhysical(String?iStreet,String?iCity,int
iState,String?iPostcode,int?iCountry){
AddressPhysical?obj=new?AddressPhysical();
obj.initializeAll(iStreet,iCity,iState,iPostcode,iCountry);
return?obj;
}
public?void?initializeAll(String?iStreet,String?iCity,int?iState,String?iPostcode,
int?iCountry){
mStreet=iStreet;
mCity=iCity;
mState=iState;
mPostcode=iPostcode;
mCountry=iCountry;
}
public?String?getStreet(){
return?mStreet;
}
public?String?getStreetToXML()?{
if(getStreet()==null)?return?null;
char[]c=getStreet().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x])?{
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″):
break;
case?’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setStreet(String?inp){
this.mStreet=inp;
}
public?void?streetFromXML(String?n){
setStreet(n);
}
public?String?getCity(){
return?mCity;
}
public?String?getCityToXML(){
if(getCity()==null)return?null;
char[]c=getCity().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”?:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setCity(String?inp){
this.mCity=inp;
}
public?void?cityFromXML(String?n){
setCity?(n);
}
public?int?getState(){
return?mState;
}
public?String?getStateToXML(){
switch(mState){
case?AK:return″AK″;
case?AL:return″AL″;
case?AR:return″AR″;
case?AZ:return″AZ″;
...
}
return?null;
}
public?void?setState(int?inp){
this.?mState=inp;
}
public?void?stateFromXML(String?s){
if(s.equals(″AK″))mState=AK;
else?if(s.equals(″AL″))mState=AL;
else?if(s.equals(″AR″))mState=AR;
else?if(s.equals(″AZ″))mState=AZ;
...
}
public?String?getPostcode(){
return?mPostcode;
}
public?String?getPostcodeToXML(){
if(getPostcode()==null)return?null;
char[]c=getPostcode().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″"?;″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setPostcode(String?inp){
this.mPostcode=inp;
}
public?void?postcodeFromXML(String?n){
setPostcode(n);
}
public?int?getCountry(){
return?mCountry;
}
public?String?getCountryToXML(){
switch(mCountry){
case?AD:return″AD″;
case?AE:return″AE″;
case?AF:return″AF″;
...
}
return?null;
}
public?void?setCountry(int?inp){
this.mCountry=inp;
}
public?void?countryFromXML(String?s){
if(s.equals(″AD″))mCountry=AD;
else?if(s.equals(″AE″))mCountry=AE;
else?if(s.equals(″AF″))mCountry=AF;
else?if(s.equals(″AG″))mCountry=AG;
else?if?(s.equals(″AI″))mCountry=AI;
..
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?AddressSet?extends?Document?{
public?static?final?String?DOC_TYPE=″address.set″;
AddressPhysical?mAddressPhysical;
String[]mTelephone;
String[]mFax;
String[]mEmail;
String[]mInternet;
public?AddressSet(){
super(DOC_TYPE);
this.mAddressPhysical=new?AddressPhysical();
mTelephone=null;
mFax=null;
mEmail=null;
mInternet=null;
}
public?AddressSet(String?doc_type){
super(doc_type);
this.mAddressPhysical=new?AddressPhysical();
mTelephone=null;
mFax=null;
mEmail=null;
mInternet=null;
}
static?public?AddressSet?initAddressSet(AddressPhysical?iAddressPhysical,String[]
iTelephone,String[]iFax,String[]iEmail,String[]iInternet){
AddressSet?obj=new?AddressSet();
obj.initializeAll(iAddressPhysical,iTelephone,iFax,iEmail,iInternet);
return?obj;
}
public?void?initializeAll(AddressPhysical?iAddressPhysical,String[]
iTelephone,String[]iFax,String[]iEmail,String[]iInternet){
mAddressPhysical=iAddressPhysical;
mTelephone=iTelephone;
mFax=iFax;
mEmail=iEmail;
mInternet=iInternet;
}
public?AddressPhysical?getAddressPhysical(){
return?mAddressPhysical;
}
public?void?setAddressPhysical(AddressPhysical?inp){
this.mAddressPhysical=inp;
}
public?String[]getTelephone(){
return?mTelephone;
}
public?String?getTelephone(int?index){
if(this.mTelephone==null)
return?null;
if(index>=this.mTelephone.length)
return?null;
if(index<0&&-index>this.mTelephone.length)
return?null;
if(index>=0)return?this.mTelephone[index];
return?this.mTelephone[this.mTelephone.length+index];
}
public?String[]getTelephoneToXML(){
String[]valArr=getTelephone();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for(int?z=0;z<nvArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch?(c[x])?{
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setTelephone(int?index,String?inp){
if(this.mTelephone==null){
if(index<0){
this.mTelephone=new?String[1];
this.mTelephone[0]=inp;
}else{
this.mTelephone=new?String[index+1];
this.mTelephone[index]=inp;
}
}else?if(index<0){
String[]newTelephone=new?String[this.mTelephone.length+1];
java.lang.System.arraycopy((Object)mTelephone,0,
(Object)newTelephone,0,this.mTelephone.length);
newTelephone[newTelephone.length-1]=inp;
mTelephone=newTelephone;
}else?if(index>=this.mTelephone.length){
String[]newTelephone=new?String[index+1];
java.lang.System.arraycopy((Object)mTelephone,0,
(Object)newTelephone,0,this.mTelephone.length);
newTelephone[index]=inp;
mTelephone=newTelephone;
}else{
this.mTelephone[index]=inp;
}
}
public?void?setTelephone(String[]inp){
this.mTelephone=inp;
}
public?void?telephoneFromXML(String?n){
setTelephone(-1,n);
}
public?String[]getFax(){
return?mFax;
}
public?String?getFax(int?index){
if(this.mFax==null)
return?null;
if(index>=this.mFax.length)
return?null
if(index<0&&-index>this.mFax.length)
return?null
if(index>=0)return?this.mFax[index];
return?this.mFax[this.mFax.length+index];
}
public?String[]getFaxToXML(){
String[]valArr=getFax();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for(int?z=0;z<nvArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<?;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setFax(int?index,String?inp){
if?(this.mFax==null){
if(index<0){
this.mFax=new?String[1];
this.mFax[0]=inp;
}else{
this.mFax=new?String[index+1];
this.mFax[index]=inp;
}
}else?if(index<0){
String[]newFax=new?String[this.mFax.length+1];
java.lang.System.arraycopy((Object)mFax,0,(Object)newFax,0,
this.mFax.length);
newFax[newFax.length-1]=inp;
mFax=newFax;
}else?if(index>=this.mFax.length){
String[]newFax=new?String[index+1];
java.lang.System.arraycopy((Object)mFax,0,(Object)newFax,0,
this.mFax.length);
newFax[index]=inp;
mFax=newFax;
}else{
this.mFax[index]=inp;
}
}
public?void?setFax(String[]inp){
this.mFax=inp;
}
public?void?faxFromXML(String?n){
setFax(-1,n);
}
public?String[]getEmail(){
return?mEmail;
}
public?String?getEmail(int?index){
if(this.mEmail==null)
return?null;
if(index>=this.mEmail.length)
return?null;
if(index<0&&-index>this.mEmail.length)
return?null;
if(index>=0)return?this.mEmail[index];
return?this.mEmail[this.mEmail.length+index];
}
public?String[]getEmailToXML(){
String[]valArr=getEmail();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for(int?z=0;z<nvArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setEmail(int?index,String?inp){
if(this.mEmail==null){
if(index<0){
this.mEmail=new?String[1];
this.mEmail[0]=inp;
}else{
this.mEmail=new?String[index+1];
this.mEmail[index]=inp;
}
}else?if(index<0){
String[]newEmail=new?String[this.mEmail.length+1];
java.lang.System.arraycopy((Object)mEmail,0,Object)newEmail,0,
this.mEmail.length);
newEmail[newEmail.length-1]=inp;
mEmail=newEmail;
}else?if(index>=this.mEmail.length){
String[]newEmail=new?String[index+1];
java.lang.System.arraycopy((Object)mEmail,0,(Object)newEmail,0,
this.mEmail.length);
newEmail[index]=inp;
mEmail=newEmail;
}else{
this.mEmail[index]=inp;
}
}
public?void?setEmail(String[]inp)?{
this.mEmail=inp;
}
public?void?emailFromXML(String?n){
setEmail(-1,n);
}
public?String[]getInternet(){
return?mInternet;
}
public?String?getInternet(int?index){
if(this.mInternet==null)
return?null;
if(index>=this.mInternet.length)
return?null;
if(index<0&&-index>this.mInternet.length)
return?null;
if(index>=0)return?this.mInternet[index];
return?this.mInternet[this.mInternet.length+index];
}
public?String[]getInternetToXML(){
String[]valArr=getInternet();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for(int?z=0;z<nvArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″)?;
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setInternet(int?index,String?inp){
if(this.mInternet==null){
if(index<0){
this.mInternet=new?String[1];
this.mInternet[0]=inp;
}else{
this.mInternet=new?String[index+1];
this.mInternet[index]=inp;
}
}else?if(index<0){
String[]newInternet=new?String[this.mInternet.length+1];
java.lang.System.arraycopy((Object)mInternet,0,
(Object)newInternet,0,this.?mInternet.length);
newInternet[newInternet.length-1]=inp;
mInternet=newInternet;
}else?if(index>=this.mInternet.length){
String[]newInternet=new?String[index+1];
java.lang.System.arraycopy((Object)mInternet,0,
(Object)newInternet,0,this.mInternet.length);
newInternet[index]=inp;
mInternet=newInternet;
}else{
this.mInternet[index]=inp;
}
}
public?void?setInternet(String[]inp){
this.mInternet=inp;
}
public?void?internetFromXML(String?n){
setInternet(-1,n);
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?Business?extends?Party{
public?static?final?String?DOC_TYPE=″business″;
String?aBusinessNumber;
public?Business(){
super(DOC_TYPE);
aBusinessNumber=new?String();
}
public?Business(String?doc_type){
super(doc_type);
aBusinessNumber=new?String();
}
static?public?Business?initBusiness(String?iBusinessNumber,String[]iPartyName,
AddressSet?iAddressSet){
Business?obj=new?Business();
obj.initializeAll(iBusinessNumber,iPartyName,iAddressSet);
return?obj;
}
public?void?initializeAll(String?iBusinessNumber,String[]iPartyName,AddressSet
iAddressSet){
aBusinessNumber=iBusinessNumber;
super.initializeAll(iPartyName,iAddressSet);
}
public?String?getBusinessNumber(){
return?aBusinessNumber;
}
public?String?getBusinessNumberToXML(){
if(getBusinessNumber()==null)return?null;
char[]c=getBusinessNumber().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setBusinessNumber(String?inp){
this.aBusinessNumber=inp;
}
public?void?businessNumberFromXML(String?n){
setBusinessNumber(n);
}
}
import?com.veo.vsp.doclet.meta.Document;
public?class?Party?extends?Document{
public?static?final?String?DOC_TYPE=″party″;
String[]mPartyName;
AddressSet?mAddressSet;
public?Party(){
super(DOC_TYPE);
mPartyName=new?String[0];
this.mAddressSet=new?AddressSet();
}
public?Party(String?doc_type){
super(doc_type);
mPartyName=new?String[0];
this.mAddressSet=new?AddressSet();
}
static?public?Party?initParty(String[]iPartyName,AddressSet?iAddressSet){
Party?obj=new?Party();
obj.initializeAll(iPartyName,iAddressSet);
return?obj;
}
public?void?initializeAll(String[]iPartyName,AddressSet?iAddressSet){
mPartyName=iPartyName;
mAddressSet=iAddressSet;
}
public?String[]getPartyName(){
return?mPartyName;
}
public?String?getPartyName(int?index){
if(this.mPartyName==null)
return?null;
if(index>=this.mPartyName.length)
return?null;
if(index<0&&-index>this.mPartyName.length)
return?null;
if(index>=0)return?this.mPartyName[index];
return?this.mPartyName[this.mPartyName.length+index];
}
public?String[]getPartyNameToXML(){
String[]valArr=getPartyName();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for?int?z=0;z<nyArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append?(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setPartyName(int?index,String?inp){
if(this.mPartyName==null){
if(index<0){
this.mPartyName=new?String[1];
this.mPartyName[0]=inp;
}else{
this.mPartyName=new?String[index+1];
this.mPartyName[index]=inp;
}
}else?if(index<0){
String[]newPartyName=new?String[this.mPartyName.length+1];
java.lang.System.arraycopy((Object)mPartyName,0,
(Object)newPartyName,0,this.mPartyName.length);
newPartyName[newPartyName.length-1]=inp;
mPartyName=newPartyName;
}else?if(index>=this.mPartyName.length){
String[]newPartyName=new?String[index+1];
java.lang.System.arraycopy((Object)mPartyName,0,
(Object)newPartyName,0,this.mPartyName.length);
newPartyName[index]=inp;
mPartyName=newPartyName;
}else{
this.mPartyName[index]=inp;
}
}
public?void?setPartyName(String[]inp){
this.mPartyName=inp;
}
public?void?partyNameFromXML(String?n){
setPartyName(-1,n);
}
public?AddressSet?getAddressSet(){
return?mAddressSet;
}
public?void?setAddressSet(AddressSet?inp){
this.mAddressSet=inp;
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?Person?extends?Party{
public?static?final?String?DOC_TYPE=″person″;
String?aSSN;
public?Person(){
super(DOC_TYPE);
aSSN=null;
}
public?Person(String?doc_type){
super(doc_type);
aSSN=null;
}
static?public?Person?initPerson(String?iSSN,String[]iPartyName,AddressSet
iAddressSet){
Person?obj=new?Person();
obj.initializeAll(iSSN,iPartyName,iAddressSet);
return?obj;
}
public?void?initializeAll(String?iSSN,String[]iPartyName,AddressSet?iAddressSet){
aSSN=iSSN;
super.initializeAll(iPartyName,iAddressSet);
}
public?String?getSSN(){
return?aSSN;
}
public?String?getSSNToXML(){
if(getSSN()==null)return?null;
char[]c=getSSN().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<?;″);
break:
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setSSN(String?inp){
this.aSSN=inp;
}
public?void?sSNFromXML(String?n){
setSSN(n);
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?PrototypeService?extends?Document{
public?static?final?String?DOC_TYPE=″prototype.service″;
String?mServiceName;
String[]mServiceTerms;
String[]mServiceLocation;
ServiceOperation[]mServiceOperation;
public?PrototypeService(){
super(DOC_TYPE);
mServiceName=new?String();
mServiceTerms=new?String[0];
mServiceLocation=new?String[0];
this.mServiceOperation=new?ServiceOperation[0];
}
public?PrototypeService(String?doc_type){
super(doc_type):
mServiceName=new?String();
mServiceTerms=new?String[0];
mServiceLocation=new?String[0];
this.mServiceOperation=new?ServiceOperation[0];
}
static?public?PrototypeService?initPrototypeService(String?iServiceName,String[]
iServiceTerms,String[]iServiceLocation,ServiceOperation[]iServiceOperation){
PrototypeService?obj=new?PrototypeService();
obj.initializeAll(iServiceName,iServiceTerms,iServiceLocation,
iServiceOperation);
return?obj;
}
public?void?initializeAll(String?iServiceName,String[]iServiceTerms,String[]
iServiceLocation,ServiceOperation[]iServiceOperation){
mServiceName=iServiceName;
mServiceTerms=iServiceTerms;
mServiceLocation=iServiceLocation;
mServiceOperation=iServiceOperation;
}
public?String?getServiceName(){
return?mServiceName;
}
public?String?getServiceNameToXML(){
if(getServiceName()==null)return?null;
char[]c=getServiceName().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break:
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceName(String?inp){
this.mServiceName=inp;
}
public?void?serviceNameFromXML(String?n){
setServiceName(n);
}
public?String[]getServiceTerms(){
return?mServiceTerms;
}
public?String?getServiceTerms(int?index){
if(this.mServiceTerms==null)
return?null;
if(index>=this.mServiceTerms.length)
return?null;
if(index<0&&-index>this.mServiceTerms.length)
return?null;
if(index>=0)return?this.mServiceTerms[index];
return?this.mServiceTerms[this.mServiceTerms.length+index];
}
public?String[]getServiceTermsToXML(){
String[]valArr=getServiceTerms();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for(int?z=0;z<nvArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0:?x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setServiceTerms(int?index,String?inp){
if(this.mServiceTerms==null){
if(index<0){
this.mServiceTerms=new?String[1];
this.mServiceTerms[0]=inp;
}else{
this.mServiceTerms=new?String[index+1];
this.mServiceTerms[index]=inp;
}
}else?if(index<0){
String[]newServiceTerms=new?String[this.mServiceTerms.length+1];
java.lang.System.arraycopy((Object)mServiceTerms,0,
(Object)newServiceTerms,0,this.mServiceTerms.length);
newServiceTerms[newServiceTerms.length-1]=inp;
mServiceTerms=newServiceTerms;
}else?if(index>=this.mServiceTerms.length){
String[]newServiceTerms=new?String[index+1];
java.lang.System.arraycopy((Object)mServiceTerms,0,
(Object)newServiceTerms,0,this.mServiceTerms.length);
newServiceTerms[index]=inp;
mServiceTerms=newServiceTerms;
}else{
this.mServiceTerms[index]=inp;
}
}
public?void?setServiceTerms(String[]inp){
this.mServiceTerms=inp;
}
public?void?serviceTermsFromXML(String?n){
setServiceTerms(-1,n);
}
public?String[]getServiceLocation(){
return?mServiceLocation;
}
public?String?getServiceLocation(int?index){
if(this.mServiceLocation==null)
return?null;
if(index>=this.mServiceLocation.length)
return?null;
if(index<0&&-index>this.mServiceLocation.length)
return?null;
if(index>=0)return?this.mServiceLocation[index];
return?this.mServiceLocation[this.mServiceLocation.length+index];
}
public?String[]getServiceLocationToXML(){
String[]valArr=getServiceLocation();
if(valArr==null)return?null;
String[]nvArr=new?String[valArr.length];
for(int?z=0;z<nvArr.length;z++){
char[]c=valArr[z].toCharArray();
StringBuffer?st=new?StringBuffer();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case”’:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
nvArr[z]=sb.toString();
}
return?nvArr;
}
public?void?setServiceLocation(int?index,String?inp){
if(this.mServiceLocation==null){
if(index<0){
this.mServiceLocation=new?String[1];
this.mServiceLocation[0]=inp;
}else{
this.mServiceLocation=new?String[index+1];
this.mServiceLocation[index]=inp;
}
}else?if(index<0){
String[]newServiceLocation=new
String[this.mServiceLocation.length+1];
java.lang.System.arraycopy((Object)mServiceLocation,0,
(Object)newServiceLocation,0,this.mServiceLocation.length);
newServiceLocation[newServiceLocation.length-1]=inp;
mServiceLocation=newServiceLocation;
}else?if(index>=this.mServiceLocation.length){
String[]newServiceLocation=new?String[index+1];
java.lang.System.arraycopy((Object)mServiceLocation, 0,
(Object)newServiceLocation,0,this.mServiceLocation.length);
newServiceLocation[index]=inp;
mServiceLocation=newServiceLocation;
}else{
this.mServiceLocation[index]=inp;
}
}
public?void?setServiceLocation(String[]inp){
this.mServiceLocation=inp;
}
public?void?serviceLocationFromXML(String?n){
setServiceLocation(-1,n);
}
public?ServiceOperation[]getServiceOperation(){
return?mServiceOperation;
}
public?ServiceOperation?getServiceOperation(int?index){
if?(this.mServiceOperation==null)
return?null;
if(index>=this.mServiceOperation.length)
return?null;
if(index<0&&-index>this.mServiceOperation.length)
return?null;
if(index>=0)return?this.mServiceOperation[index];
return?this.mServiceOperation[this.mServiceOperation.length+index];
}
public?void?setServiceOperation(int?index,ServiceOperation?inp){
if(this.mServiceOperation==null){
if(index<0){
this.mServiceOperation=new?ServiceOperation[1];
this.mServiceOperation[0]=inp;
}else{
this.mServiceOperation=new?ServiceOperation[index+1];
this.mServiceOperation[index]=inp;
}
}else?if(index<0){
ServiceOperation[]newServiceOperation=new
ServiceOperation[this.mServiceOperation.length+1];
java.lang.System.arraycopy((Object)mServiceOperation,0,
(Object)newServiceOperation,0,this.mServiceOperation.length);
newServiceOperation[newServiceOperation.length-1]=inp;
mServiceOperation=newServiceOperation;
}else?if(index>=this.mServiceOperation.length){
ServiceOperation[]newServiceOperation=new?ServiceOperation[index+1]:
java.lang.System.arraycopy((Object)mServiceOperation,0,
(Object)newServiceOperation,0,this.mServiceOperation.length);
newServiceOperation[index]=inp;
mServiceOperation=newServiceOperation;
}else{
this.mServiceOperation[index]=inp;
}
}
public?void?setServiceOperation(ServiceOperation[]inp){
this.mServiceOperation=inp;
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?Service?extends?Document{
public?static?final?String?DOC_TYPE=″service″;
String?mServiceName;
String?mServiceLocation;
ServiceOperation[]mServiceOperation;
String?mServiceTerms;
public?Service(){
super(DOC_TYPE);
mServiceName=new?String();
mServiceLocation=new?String();
this.mServiceOperation=new?ServiceOperation[0];
mServiceTerms=new?String();
}
public?Service(String?doc_type){
super(doc_type);
mServiceName=new?String();
mServiceLocation=new?String();
this.mServiceOperation=new?ServiceOperation[0];
mServiceTerms=new?String();
}
static?public?Service?initService(String?iServiceName,String
iServiceLocation,ServiceOperation[]iServiceOperation,String?iServiceTerms){
Service?obj=new?Service();
obj.initializeAll(iServiceName,iServiceLocation,iServiceOperation,
iServiceTerms);
return?obj;
}
public?void?initializeAll(String?iServiceName,String
iServiceLocation,ServiceOperation[]iServiceOperation,String?iServiceTerms){
mServiceName=iServiceName;
mServiceLocation=iServiceLocation;
mServiceOperation=iServiceOperation;
mServiceTerms=iServiceTerms;
}
public?String?getServiceName(){
return?mServiceName;
}
public?String?getServiceNameToXML(){
if(getServiceName()==null)return?null;
char[]c=getServiceName().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″):
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceName(String?inp){
this.mServiceName=inp;
}
public?void?serviceNameFromXML(String?n){
setServiceName(n);
}
public?String?getServiceLocation(){
return?mServiceLocation:
}
public?String?getServiceLocationToXML(){
if(getServiceLocation()==null)return?null;
char[]c=getServiceLocation().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<?;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”?:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceLocation(String?inp){
this.mServiceLocation=inp;
}
public?void?serviceLocationFromXML(String?n){
setServiceLocation(n);
}
public?ServiceOperation[]getServiceOperation(){
return?mServiceOperation;
}
public?ServiceOperation?getServiceOperation(int?index){
if(this.mServiceOperation==null)
return?null;
if(index>=this.mServiceOperation.length)
return?null;
if(index<0&&-index>this.mServiceOperation.length)
return?null;
if(index>=0)return?this.mServiceOperation[index];
return?this.mServiceOperation[this.mServiceOperation.length+index];
}
public?void?setServiceOperation(int?index,ServiceOperation?inp){
if(this.mServiceOperation==null){
if(index<0){
this.mServiceOperation=new?ServiceOperation[1];
this.mServiceOperation[0]=inp;
}else{
this.mServiceOperation=new?ServiceOperation[index+1];
this.mServiceOperation[index]=inp;
}
}else?if(index<0){
ServiceOperation[]newServiceOperation=new
ServiceOperation[this.mServiceOperation.length+1];
java.lang.System.arraycopy((Object)mServiceOperation,0,
(Object)newServiceOperation,0,this.mServiceOperation.length);
newServiceOperation[newServiceOperation.length-1]=inp;
mServiceOperation=newServiceOperation;
}else?if(index>=this.mServiceOperation.length){
ServiceOperation[]newServiceOperation=new?ServiceOperation[index+1];
java.lang.System.arraycopy((Object)mServiceOperation,0,
(Object)newServiceOperation,0,this.mServiceOperation.?length);
newServiceOperation[index]=inp;
mServiceOperation=newServiceOperation;
}else{
this.mServiceOperation[index]=inp;
}
}
public?void?setServiceOperation(ServiceOperation[]inp){
this.mServiceOperation=inp;
}
public?String?getServiceTerms(){
return?mServiceTerms;
}
public?String?getServiceTermsToXML(){
if(getServiceTerms()==null)?return?null;
char[]c=getServiceTerms().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceTerms(String?inp){
this.mServiceTerms=inp;
}
public?void?serviceTermsFromXML(String?n){
setServiceTerms(n);
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?ServiceOperation?extends?Document{
public?static?final?String?DOC_TYPE=″service.operation″;
String?mServiceOperationName;
String?mServiceOperationLocation;
String?mServiceOperationlnput;
String?mServiceOperationOutput;
public?ServiceOperation(){
super(DOC_TYPE);
mServiceOperationName=new?String();
mServiceOperationLocation=new?String();
mServiceOperationInput=new?String();
mServiceOperationOutput=new?String();
}
public?ServiceOperation(String?doc_type){
super(doc_type);
mServiceOperationName=new?String();
mServiceOperationLocation=new?String();
mServiceOperationInput=new?String();
mServiceOperationOutput=new?String();
}
static?public?ServiceOperation?initServiceOperation(String?iServiceOperationName,
String?iServiceOperationLocation,String?iServiceOperationInput,String
iServiceOperationOutput){
ServiceOperation?obj=new?ServiceOperation();
obj.initializeAll(iServiceOperationName,iServiceOperationLocation,
iServiceOperationInput,iServiceOperationOutput);
return?obj;
}
public?void?initializeAll(String?iServiceOperationName,String
iServiceOperationLocation,String?iServiceOperationInput,String
iServiceOperationOutput){
mServiceOperationName=iServiceOperationName;
mServiceOperationLocation=iServiceOperationLocation;
mServiceOperationInput=iServiceOperationInput;
mServiceOperationOutput=iServiceOperationOutput;
}
public?String?getServiceOperationName(){
return?mServiceOperationName;
}
public?String?getServiceOperationNameToXML(){
if(getServiceOperationName()==null)return?null;
char[]c=getServiceOperationName().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceOperationName(String?inp){
this.mServiceOperationName=inp;
}
public?void?serviceOperationNameFromXML(String?n){
setServiceOperationName(n);
}
public?String?getServiceOperationLocation(){
return?mServiceOperationLocation;
}
public?String?getServiceOperationLocationToXML(){
if(getServiceOperationLocation()==null)return?null;
char[]c=getServiceOperationLocation().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceOperationLocation(String?inp){
this.mServiceOperationLocation=inp;
}
public?void?serviceOperationLocationFromXML(String?n){
setServiceOperationLocation(n);
}
public?String?getServiceOperationInput(){
return?mServiceOperationInput;
}
public?String?getServiceOperationInputToXML(){
if(getServiceOperationInput()==null)return?null;
char[]c=getServiceOperationInput().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceOperationInput(String?inp){
this.mServiceOperationInput=inp;
}
public?void?serviceOperationInputFromXML(String?n){
setServiceOperationInput(n);
}
public?String?getServiceOperationOutput(){
return?mServiceOperationOutput;
}
public?String?getServiceOperationOutputToXML(){
if(getServiceOperationOutput()==null)return?null;
char[]c=getServiceOperationOutput().toCharArray();
StringBuffer?sb=new?StringBuffer();
for(int?x=0;x<c.length;x++){
switch(c[x]){
case’>’:
sb.append(″>;″);
break;
case’<’:
sb.append(″<;″);
break;
case’&’:
sb.append(″&;″);
break;
case’″’:
sb.append(″";″);
break;
case’\”:
sb.append(″";″);
break;
default:
if(Character.isDefined(c[x]))
sb.append(c[x]);
}
}
return?sb.toString();
}
public?void?setServiceOperationOutput(String?inp){
this.mServiceOperationOutput=inp;
}
public?void?serviceOperationOutputFromXML(String?n){
setServiceOperationOutput(n);
}
}
package?com.veo.xdk.dev.schema.test.blib;
import?com.veo.vsp.doclet.meta.Document;
public?class?ServiceSet?extends?Document{
public?static?final?String?DOC_TYPE=″service.set″;
Service[]mService;
public?ServiceSet(){
super(DOC_TYPE);
this.mService=new?Service[0];
}
public?ServiceSet(String?doc_type){
super(doc_type);
this.mService=new?Service[0];
}
static?public?ServiceSet?initServiceSet(Service[]iService){
ServiceSet?obj=new?ServiceSet();
obj.initializeAll(iService);
return?obj;
}
public?void?initializeAll(Service[]iService){
mService=iService;
}
public?Service[]getService(){
return?mService;
}
public?Service?getService(int?index){
if(this.mService==null)
return?null;
if(index>=this.mService.length)
return?null;
if(index<0&&-index>this.mService.length)
return?null;
if(index>=0)return?this.mService[index];
return?this.mService[this.mService.length+index];
}
public?void?setService(int?index,Service?inp){
if(this.mService==null){
if(index<0){
this.mService=new?Service[1];
this.mService[0]=inp;
}else{
this.mService=new?Service[index+1];
this.mService[index]=inp;
}
}else?if(index<0){
Service[]newService=new?Service[this.mService.length+1];
java.lang.System.arraycopy((Object)mService,0,
(Object)newService,0,this.mService.length);
newService[newService.length-1]=inp;
mService=newService;
}else?if(index>=this.mService.length){
Service[]newService=new?Service[index+1];
java.lang.System.arraycopy((Object)mService,0,
(Object)newService,0,this.mService.length);
newService[index]=inp;
mService=newService;
}else{
this.mService[index]=inp;
}
}
public?void?setService(Service[]inp){
this.mService=inp;
}
}
Except above-mentioned JAVA beans, generation transcode also as described below is used for from the translation of JAVA to XML and from the translation of XML to JAVA:
Java?to?XML
<!DOCTYPE?tree?SYSTEM″tree.dtd″>
<tree?source=″null″pass-through=″false″>
<before>
<vardef?name=″attribute.def″>
<element?source=″ATTRIBUTE″class=″NAME″type=″5″position=″-2″>
<parse>
<data?class=″java.lang.String″position=″-2″/>
</parse>
</element>
</vardef>
<vardef?name=″pcdata.def″>
<element?source=″PCDATA″class=″NAME″type=″4″position=″-2″>
<parse>
<data?class=″999″type=″6″position=″-2″/>
</parse>
</element>
</vardef>
<vardef?name=″content.def″>
<element?source=″PCDATA″>
<parse>
<data?class=″999″type=″6″position=″-2″/>
</parse>
</element>
</vardef>
<vardef?name=″ServiceSet.var″>
<element?source=″com.veo.xdk.dev.schema.test.blib.ServiceSet″class=″service.set″
type=″4″position=″-2″>
<parse>
<callvar?name=″Service.var″/>
</parse>
</element>
</vardef>
<vardef?name=″PrototypeService.var″>
<element?source=″com.veo.xdk.dev.schema.test.blib.PrototypeService″class=
″prototype.service″type=″4″position=″-2″>
<parse>
<callvar?name=″pcdata.def″parms=″setSource?ServiceNameToXML?setGenerator
service.name″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceTermsToXML?setGenerator
service.terms″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceLocationToXML?setGenerator
service.location″/>
<callvar?name=″ServiceOperation.var″/>
</parse>
</element>
</vardef>
<vardef?name=″Service.var″>
<element?source=″com.veo.xdk.dev.schema.test.blib.Service″class=″service″type=
″8″position=″0″>
<parse>
<callvar?name=″pcdata.def″parms=″setSource?ServiceNameToXML?setGenerator
service.name″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceLocationToXML?setGenerator
service.location″/>
<callvar?name=″ServiceOperation.var″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceTermsToXML?setGenerator
service.terms″/>
</parse>
</element>
</vardef>
<vardef?name=″ServiceOperation.var″>
<element?source=″com.veo.xdk.dev.schema.test.blib.ServiceOperation″class=
″service.operation″type=″4″position=″-2″>
<parse>
<callvar?name=″pcdata.def″parms=″setSource?ServiceOperationNameToXML?setGenerator
service.operation.name″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceOperationLocationToXML
setGenerator?service.operation.location″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceOperationInputToXML?setGenerator
service.operation.input″/>
<callvar?name=″pcdata.def″parms=″setSource?ServiceOperationOutputToXML
setGenerator?service.operation.output″/>
</parse>
</element>
</vardef>
</before>
<parse>
<callvar?name=″ServiceSet.var″/>
<callvar?name=″PrototypeService.var″/>
<callvar?name=″Service.var″/>
<callvar?name=″ServiceOperation.var″/>
</parse>
</tree>
XML?to?Java
<!DOCTYPE?tree?SYSTEM″tree.dtd″>
<tree?source=″null″pass-through=″false″>
<before>
<vardef?name=″business.var″>
<element?source=″business″
class=″com.veo.xdk.dev.schema.test.blib.Business″
type=″7″setter=″setBusiness″>
<before>
<onattribute?name=″business.number″>
<actions>
<callmeth?name=″businessNumberFromXML″>
<parms>
<getattr?name=″business.number″/>
</parms>
</callmeth>
</actions>
</onattribute>
</before>
<parse>
<callvar?name=″party.name.var″parms=″setPosition-1″/>
<callvar?name=″address.set.var″/>
</parse>
</element>
</vardef>
<vardef?name=″party.name.var″>
<element?source=″party.name″setter=″partyNameFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″city.var″>
<element?source=″city″setter=″cityFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″internet.var″>
<element?source=″internet″setter=″internetFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″country.var″>
<element?source=″country″setter=″countryFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″state.var″>
<element?source=″state″setter=″stateFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″email.var″>
<element?source=″email″setter=″emailFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″address.physical.var″>
<element?source=″address.physical″
class=″com.veo.xdk.dev.schema.test.blib.AddressPhysical″
type=″7″setter=″setAddressPhysical″>
<before>
</before>
<parse>
<callvar?name=″street.var″parms=″setPosition?-1″/>
<callvar?name=″city.var″parms?=″setPosition?-1″/>
<callvar?name=″state.var″parms=″setPosition?-1″/>
<callvar?name=″postcode.var″parms=″setPosition?-1″/>
<callvar?name=″country.var″parms=″setPosition?-1″/>
</parse>
</element>
</vardef>
<vardef?name=″telephone.var″>
<element?source=″telephone″setter=″telephoneFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″person.var″>
<element?source=″person″
class=″com.veo.xdk.dev.schema.test.blib.Person″
type=″7″setter=″setPerson″>
<before>
<onattribute?name=″SSN″>
<actions>
<callmeth?name=″sSNFromXML″>
<parms>
<getattr?name=″SSN″/>
</parms>
</callmeth>
</actions>
</onattribute>
</before>
<parse>
<callvar?name=″party.name.var″parms=″setPosition?-1″/>
<callvar?name=″address.set.var″/>
</parse>
</element>
</vardef>
<vardef?name=″fax.var″>
<element?source=″fax″setter=″faxFromXML″position=″-1″class=″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″street.var″>
<element?source=″street″setter=″streetFromXML″position=″-1″class=
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″address.set.var″>
<element?source=″address.set″
class=″com.veo.xdk.dev.schema.test.blib.AddressSet″
type=″7″setter=″setAddressSet″>
<before>
</before>
<parse>
<callvar?name=″address.physical.var″/>
<callvar?name=″telephone.var″?parms=″setPosition?-1″/>
<callvar?name=″fax.var″parms=″setPosition?-1″/>
<callvar?name=″email.var″parms=″setPosition?-1″/>
<callvar?name=″internet.var″parms=″setPosition?-1″/>
</parse>
</element>
</vardef>
<vardef?name=?″postcode.var″>
<element?source=″postcode″setter=″postcodeFromXML″position=″-1″class
″java.lang.String″>
<parse>
<data?class=″java.lang.String″position=″0″/>
</parse>
</element>
</vardef>
<vardef?name=″market.participant.var″>
<element?source=″market.participant″
class=″com.veo.xdk.dev.schema.test.blib.MarketParticipant″
type=″7″position=″0″>
<before>
</before>
<parse>
<callvar?name=″business.var″/>
<callvar?name=″person.var″/>
</parse>
</element>
</vardef>
</before>
<parse>
<callvar?name=″business.var″/>
<callvar?name=″party.name.var″/>
<callvar?name=″city.var″/>
<callvar?name=″internet.var″/>
<callvar?name=″country.var″/>
<callvar?name=″state.var″/>
<callvar?name=″email.var″/>
<callvar?name=″address.physical.var″/>
<callvar?name=″telephone.var″/>
<callvar?name=″person.var″/>
<callvar?name=″fax.var″/>
<callvar?name=″street.var″/>
<callvar?name=″address.set.var″/>
<callvar?name=″postcode.var″/>
<callvar?name=″market.participant.var″/>
</parse>
</tree>
Makefiles:
#
#?this?makefile?was?generated?by?bic?version?0.0.?05/02/1998
#
#
#
#
#?get?the?package?name?from?the?package?argument?passed?to?SchemaGen
PACKAGE_NAME=com/veo/xdk/dev/schema/test/blib
JAVA_SOURCES?+=?\
MarketParticipant.java\
Business.java\
Person.java\
Party.java\
AddressPhysical.java\
AddressSet.java\
MAKEFILE_MASTER_DIR=xxx
include?$(MAKEFILE_MASTER_DIR)/Makefile.master
all::$(JAVA_CLASSES)
#
#?this?makefile?was?generated?by?bic?version?0.0.?05/02/1998
#
#
#
#
#?get?the?package?name?from?the?package?argument?passed?to?SchemaGen
PACKAGE_NAME=com/veo/xdk/dev/schema/test/blib
JAVA_SOURCES?+=?\
ServiceSet.java\
PrototypeService.java\
Service.java\
ServiceOperation.java\
MAKEFILE_MASTER_DIR=xxx
include?$(MAKEFILE_MASTER_DIR)/Makefile.master
all::$(JAVA_CLASSES)
At last, be as an example below, the XML document example that generates in working time according to above-mentioned model:
<!DOCTYPE?market.participant?SYSTEM″market.participant.dtd″>
<market.participant>
<business?business.number=″1234567890″>
<party.name>IBM</party.name>
<address.set>
<address.physical>
<street>1?IBM?Way</street>
<city>Palo?Alto</city>
<state>CA</state>
<postcode>94304</postcode>
<country>USA</country>
</address.physical>
....
<telephone>123?456-7890</telephone>
<fax>123?456?0987</fax>
</address.set>
</business>
</market.participant>
<!DOCTYPE?service?SYSTEM?″service.dtd″>
<service.set>
<service>
<service.name>Order?Service</service.name>
<service.location>www.ibm.com/order</service.location>
<service.operation>
<service.operation.name>Submit?Order</service.operation.name>
<service.operation.location>www.ibm.com/order/submit</service.location>
<service.operation.input>urn:x-
ibm:services:order:operations:po.dtd</service.operation.input>
<service.operation.output>urn:x-
ibm:services:order:operations:poack.dtd</service.operation.output>
</service.operation>
<service.operation>
<service.operation.name>Track?Order</service.operation.name>
<service.operation.location>www.ibm.com/order/track</service.location>
<service.operation.input>urn:x-
ibm:services:order:operations:track.irequest.dtd</service.operation.input>
<service.operation.output>urn:x-
ibm:services:order:operations:track.iresponse.dtd</service.operation.output>
</service.operation>
</service>
</service.set>
Utilize various tool and BID applied in any combination program (towing is provided, abandons and form the compiles user interface), developers can be set up the commercial interface definition, and produces commercial interface definition fine formation, effective with the XML document form.Therefore, the exemplary commercial interface definition that example was used, was used for the IBM order service and orders other order service of laptop computer from IBM by Ingram Micro working time.(it doesn't matter between applicant and IBM or the Ingram Micro).Utilize these processes, the user can set up a kind of system and allow to use the document of the definition according to the present invention that commercial interface is programmed.
By the following explanation that purchase order is handled, can further understand CBL of the present invention and the effect of BID processor under the XML/JAVA environment.
The A of company defines its purchase order Doctype with a visible programmed environment, wherein said programmed environment comprises a storehouse of being made up of CBL DTD and module, and CBL DTD and module all are with public business language element definition, so they comprise data type and other explain information.The PO of the A of company can just provide more generally " affairs document " scope in CBL storehouse only to comprise minimum customization, and perhaps it can be constructed by address, period and CBL modules such as time, currency fully.
The document (such as above-mentioned transact.dtd) that is used for general " affairs document " normalized illustration represented set up by module and with the mode of the CBL normalized illustration of the mutual chain of other CBL DTD.
Program compiler obtains the purchase order definition, and generates several different object forms.All these object forms can be derived by " tree " conversion of original normalized illustration.The most important place of this example is:
(a) be used for the XML DTD of purchase order
(b) JAVA beans, the data structure (setting up the structure of JAVA class, shape ginseng, data type, method and exception) of its encapsulation purchase order corresponding to the information in the purchase order mode-definition.
(c) " extradition " program, the purchase order that it will meet purchase order DTD converts purchase order JAVA beans to, perhaps they is loaded into database, perhaps sets up HTML (perhaps XSL format sheet), is used for purchase order is presented at browser.
(d) " non-extradition " program, it is the extracted data value from purchase order JAVA beans, and converts them to meet with purchase order DTD XML document.
Return script now.Purchase applications produces a purchase order, and this purchase order meets the DTD that is appointed as service interface for the supplier who accepts purchase order.
Syntax analyzer resolves into information flow about its contained element and property value with purchase order DTD with the purchase order example.Then, by wrap up these " characteristic groups " with the JAVA code, convert them to corresponding JAVA event object.In fact, this conversion is regarded the fragment of mark XML document as customize in the programming language instruction, and its grammer is defined by DTD.Can handle these JAVA incidents with the extradition application program that program compiler generates now, so that " loading " JAVA beans data structure.
Convert XML document the incident of one group of JAVA application program to so that handle, this does not resemble the normal analytical model that syntax analyzer output is kept as internal data structure, and processing just begins after analysis finishes.Response BID definition, be to make processor have multi-purpose key based on the processing of incident, because its allows to begin to handle the document application program of setting out once first incident of sending.
Be used for of the mode-definition generation of the JAVA program of " listening to " all kinds incident by those incidents.These listeners are the programs that are used for finishing the business logic relevant with XML definition among the CBL, and for example relevant with " address " element can be by checking that database makes the effective code of postcode.These listeners are by coming " order " incident to the document router registers, and wherein the document router guides relevant incident to all to they users interest.
This announcement and subscribe architecture and represent to increase new listener program, and need not know or do not influence existing listener program.Each listener all has a formation, and router is introduced this formation with its incident, and this formation can make the step parallel processing incident of a plurality of listeners with himself.
For the purchase order that exemplifies, can there be listener here with following purposes:
● purchase order, it can link to each other with the order loading routine,
● product description, it can check stock position,
● address information, it can check Fed Ex or other postal delivery service,
● buyer's information, it can be checked and order history (about credit rating, perhaps promoting, is who similarly handles according to known customer perhaps).
Can create complicated listener (for example, the purchase order listener can comprise and call these listeners here, and perhaps they can be called by self) by configuration to original listener.
Figure 11 shows the market maker site in Fig. 1 network.Market maker site comprises the basic structure of Fig. 3 system, comprises network interface 1101, and document syntax analyzer 1102, the document translater 1103 to host and host to document, and front end 1104 are referred to as router in this example.Market maker's module 1105 in this example comprises that one group of commercial interface definition or other are enough to identifier, the CBL resources bank for the participant support the market fabricator's function in the market, and program compiler, and all these is participant in the market's service.Router one 104 comprises that the participant registers and the document filtrator, they come route to select the input document corresponding to the incident of translater output place generation and by syntax analyzer according to element between participant's registration and the listener and attribute filtrator, and they are offered the XML event generating.Therefore, some participant in the market can register and receive the document that satisfies preset parameter.For example, can filter document at router one 104 places with following input document, described input document is according to specific DTD, and comprises such as product forward purchasing number and perhaps to purchase the attributes such as ceiling price of document request in advance greater than threshold value.Then, only send those corresponding to documents of information of in router one 104 places and participant's registration, being registered to registered participant.
Router one 104 can also provide this landlord to serve 1105 and 1106, therefore plays the participant and the market maker in the market.In general, the document that traversal router one 104 receives so that determine the destination that these documents should be sent to, if must pass back by translater 1103 once more, and spreads out of network interface 1101 here, arrives destination separately.
The market maker is a server, and it bundles with the commerce services outside one group of inside, to produce enterprise or trading crowd like the void.Server perhaps sends to ERP system with purchase order by the product data request is switched to LIST SERVER, comes the input document is carried out grammatical analysis, and calls suitable service.Server is also handled translation duties, will from the information of company's XML document video the used document format of transaction party concerned with and the desired data layout of legacy system.
For above-mentioned service definition, when company sent a purchase order, the XML syntax analyzer in the server converted the purchase order example to message event stream with purchase order DTD.Then, send these incidents to such application program, these application programs are compiled into the incident with certain type of handling; In some cases, by the internet with information completely send to different enterprises.In the example of purchase order, some application programs can work to the information from syntax analyzer:
● the order loading routine is processed into a complete message with purchase order;
● ERP system is checked the stock of product described in the purchase order;
● customer database checking or renewal client's address;
● the schedule that carrier uses the address information arrangement to send;
● bank gives Trading Authorization with credit card information.
The transaction party concerned only needs to reach an agreement with regard to structure, content and the sequence of the business document of their exchange, does not need the details of API is reached an agreement.How handling document and producing what action is that strictness is decided by the enterprise that service is provided.This has improved from system-level integrated to enterprise-level.This makes enterprise show the clear and stable interface with other business partner, although its internal technology is implemented, tissue or handle in exist and change.
Figure 12,13 and 14 shows in Figure 11 system, the process of carrying out at place, market maker site.In Figure 12,, receive input document (step 1200) from former participant site at the network interface place.Document is carried out grammatical analysis (step 1201).Document translation is become host's form, for example from XML to JAVA (step 1202).Send formative incident of host and object to router services (step 1203) then.Identification is registered and is used for receiving according to Doctype and document content the service (step 1204) of document.Send the part of document or document to be identified service (step 1205).Serve (step 1206) in response to document content.Produce the output data (step 1207) of service.Convert output to document format, for example become XML form (step 1208) from the JAVA format conversion.At last, output document is sent to participant site (step 1209).
Enrolled for service is a kind of function by router administration.Therefore, as shown in figure 13, accept participant in the market's document (step 1300) at the network interface place.The commercial interface of participant in the market's document storage in market maker site defined in the resources bank (step 1301).In addition, document is carried out grammatical analysis (step 1302).The document translation of analyzing is become host's form (step 1303).Next, document is sent to router services (step 1304).Router services comprises a listener, and it is identified as enrolled for service the destination (step 1305) of document according to Doctype and content.Send the element of document or document to enrolled for service (1306).In enrolled for service, according to the required service regulation explanation (step 1307) of commercial interface definition retrieval.If at step 1308 collection service normalized illustration, set router services filtrator (step 1309) according to commercial interface definition and service normalized illustration so.Produce registration and confirm data (step 1310).Registration confirms that data-switching becomes document format (step 1311).At last, will confirm that document sends to the participant site, and represent to have done successful registration (step 1312) to the market maker to the participant.
Figure 14 illustration the process of set required service normalized illustration in the step 1307.Beginning of this process is that the commercial interface definition of the service that the participant in the market supported is positioned (step 1400).For example, carry out access to netwoks, come retrieval service definition (step 1401) by the Email transaction or to the resources bank site.The service regulation explanation is stored in the BID resources bank (step 1402).Carry out grammatical analysis (step 1403) to serving commercial interface definition document.The document translation of analyzing is become nominative formula (step 1404).Send main object to router services (step 1405).According to Doctype and content recognition enrolled for service (step 1406).At last, according to the process of Figure 13, send the information in the commercial interface definition document of service to enrolled for service (step 1407), for using.
The sequence that Figure 15 shows processor, member and manages the input data according to the present invention in market maker site everywhere.Market maker site is included in the communication agent 1500 at network interface place.Communication agent links to each other with XML syntax analyzer 1501, and the XML syntax analyzer offers XML processor 1502 with incident.The XML processor offers the document router with incident.The document router provides a document services 1504, and document services 1504 provides an interface, and the document that is used for receiving offers enterprise's answer software 1505 of main system.Communication agent 1500 is internet interfaces, and it comprises the suitable protocol stack of support such as HTTP, SMTP, FTP or other agreement.Therefore, the input data can arrive by the grammer of XML grammer, ascii data grammer or other suitable specific communication channel.All are become XML with the document translation that non-XML grammer receives, and send the XML syntax analyzer to.With translation table 1506 translations of support from non-XML form to the XML form.
Document after the conversion is offered syntax analyzer 1501.The XML syntax analyzer is according to the DTD (Document Type Definition) of its coupling the XML document that receives being carried out grammatical analysis.If the discovery mistake, syntax analyzer is beamed back communication agent 1500 with document so.Commercial interface definition compiler BIDC 1507 plays commercial interface definition of data compiler.By compiling BID data, set up the dtd file of XML syntax analyzer, corresponding to the JAVA beans of dtd file and the translation rule of dtd file being translated into the JAVA beans.By with reference to these instruments, the XML example is translated into the JAVA example.Therefore, BID compiler 1507 storage DTD documents 1508, and produce corresponding JAVA document 1509.XML document is sent to the processor 1502 of they being translated into the JAVA form.In a preferable system, the JAVA document that the generation state is identical with the DTD (Document Type Definition) that receives by the XML form.Send the JAVA beans to document router one 503.Document router one 503 receives the JAVA beans, and sends the class that receives to suitable document services with registration procedure (for example using above-mentioned incident listener architecture).Receive the effect of interface of document services 1504 enterprises answer software of the document of JAVA beans forms from router one 503.This comprises enrolled for service 1510, and the listener of XML incident is coupled by this enrolled for service and input traffic, and comprises service managerZ-HU 1511, is used to manage will import document and send suitable service to.1511 pairs of enrolled for service of document services manager manage, and keep the document consistance.
Document services is with any special API or use such as more common forms such as CORBA/COM interface or other architectures, communicates by letter with back-end system.
Figure 16 provides the inspiration figure of the market maker of the present invention and participant in the market's structure.Therefore, as shown in figure 16, can have and logically organize E-commerce market of the present invention.At the top of tissue, set up market maker site 1600.Market maker site comprises the resource that is used to set up market 1601.This class resource comprises market enrolled for service etc.Enterprise 1602 is defined in registration in the market 1601 by announcing commercial interface.Commercial interface has defined the service 1603 of enterprise with the business transaction of participation.Affairs 1604 and the 1605 definition input and output of service 1603 usefulness documents, and delimit the trade relations between the participant in the transaction.Document comprises content 1606, and content 1606 is loaded with the participant of every transaction.Participant in the market and the used mode of market maker's contents processing are totally independent of the e-business network of setting up according to the present invention based on document.Generally speaking, provide a kind of sane, scalable, structure intuitively, it can provide the ecommerce on the communication network.
Therefore, the present invention provides a kind of platform based on the XML processor in the system that exemplifies, and with XML document as the interface between the loosely connected business system.Document transmits between enterprise, and is handled by the participant site before entering company's business system.Therefore, platform can make electronic commerce applications work between enterprise, and each business system carries out work by specifying one group of public business document and form with different inside business platform, process and semanteme.
According to the present invention, set up virtual enterprise by interconnect business system and service, and main document with enterprise's acceptance and generation (the XML coding) defines to virtual enterprise:
● " if you issue my catalog request, I will issue your catalogue "
● " if you issue my a purchase order, and I can accept, and I will issue your invoice so ".
For the purpose of illustration and description, provide above-mentioned description to preferred embodiment of the present invention.Do not attempt to be exhaustive or to limit the invention to the precise forms that is disclosed.Obviously, for a person skilled in the art, can carry out many variations and change.Scope of the present invention is limited by following claims and equivalent right thereof.