# Patent

## Title
Dynamic editing support and validation of application specific information on business objects

## Abstract

Interface code is produced to use services of an enterprise information system. An application specific information schema is provided that defines the format and shape of application specific information usable in a business object schema defining the business object and the application specific information for the enterprise information system. An enterprise metadata discovery schema is also provided for anchoring the application specific information schema to complex type, element, attribute and the business object schema. The business object schema is generated using a metatdata editor. The interface code is produced using the business object schema.

## Background
BACKGROUND OF THE INVENTION
The present invention generally relates to application integration, and more particularly, to a tooling framework for supporting validation and editing of binding information for facilitating application integration.
Modern data processing systems often use Enterprise Information Systems (EIS) applications to provide the information infrastructure for an organization. An EIS provides services to clients via interfaces, whether local, remote or both. Resources provided to clients may include: a business object from an Enterprise Resource Planning (ERP) System; data stored in a database system; and data from transaction program in a transaction processing system.
If it is necessary to access these services remotely, one may turn to Web services, JavaTM 2 Platform, Enterprise Edition (J2EE) Messaging or J2EE Connector Architecture using a resource adapter (Java is a trademark of Sun Microsystems Inc. in the United States, other countries, or both). Data in a canonical form such as an Extensible Markup Language (XML) document or Java bean is exchanged. Schema (XSD files) are usually used in order to capture type information for these services.
In general, metadata is information which describes a program's interfaces (type mapping information, data structures, message formats). Extraction of metadata from a program is necessary so that appropriate connectors and adapters can be created. In this context, metadata may capture binding information that can be used to transform data in a canonical form (an XML document or Java bean generated from the schema describing the type) to the native form expected by the EIS. For example, binding information would enable transforming an XML document or a J2EE CCI Record to the native Object used in a Peoplesoft system.
This makes process and web portal development very time consuming. In prior art systems, binding information for types has been captured in proprietary formats. For example, IBM® WebSphere® Studio Application Developer Integration Edition captures binding information in Web Service Definition Language (WSDL) using a format typeMapping WSDL extensibility element. It then delegates the generation of the transform to a generator that had to be supplied by the EIS. Any editing of the binding information was done by supplying a custom editing support. CrossWorlds® Object Discovery Agent and Business Object Editor supported binding information by treating it as an opaque string. The developer has to be knowledgeable about the syntax of the binding in order to make any changes. IBM, CrossWorlds and WebSphere are trademarks of International Business Machines Inc in the United States, other countries, or both.
BRIEF SUMMARY OF THE INVENTION
According to a one aspect of the present invention, a method for producing interface code to use services of an enterprise information system comprises providing an application specific information schema defining the format and shape of application specific information usable in a business object schema defining the business object and the application specific information for the enterprise information system, providing an enterprise metadata discovery schema for anchoring the application specific information schema to complex type, element, attribute and the business object schema, generating the business object schema using a metatdata editor and generating the interface code using the business object schema.
According to another aspect of the present invention, a system for producing interface code to use services of an enterprise information system, comprises an application specific information schema defining the format and shape of application specific information usable in a business object schema defining the business object and the application specific information for the enterprise information system, an enterprise metadata discovery schema for anchoring the application specific information schema to complex type, element, attribute and the business object schema, a metadata editor for generating the business object schema, and a generator for generating the interface code using the business object schema.
According to yet another aspect of the present invention, a tooling framework for dynamic editing support and validation of application specific information on a business object for using services of an enterprise information system comprises a business object schema defining the business object and the application specific information, an application specific information schema defining the format and shape of the application specific information usable in the business object schema for the enterprise information system, and an enterprise metadata discovery schema for anchoring the application specific information schema to complex type, element and attribute, and anchoring the application specific information schema to the business object schema.
According a still further aspect of the present invention, a computer program product for producing interface code to use services of an enterprise information system comprises a computer usable medium having computer useable program code embodied therein. The computer useable program code comprises computer usable program code configured to provide an application specific information schema defining the format and shape of application specific information usable in a business object schema defining the business object and the application specific information for the enterprise information system, computer usable program code configured to provide an enterprise metadata discovery schema for anchoring the application specific information schema to complex type, element, attribute, and the business object schema, computer usable program code configured to generate the business object schema using a metatdata editor, and computer usable program code configured to generate the interface code using the business object schema.
Other aspects and features of the present invention, as defined solely by the claims, will become apparent to those ordinarily skilled in the art upon review of the following non-limited detailed description of the invention in conjunction with the accompanying figures.



BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
FIG. 1 depicts the 3 types of schemas in accordance with an aspect of the present invention.
FIGS. 2A to 2B depict the contents of an example emdSchema schema file according to an aspect of this invention.
FIGS. 3 and 4 depict each the content of an example eisSchema schema file according to an aspect of this invention of FIG. 2.
FIGS. 5A to 5F taken together depict the contents of an example businessObjectSchema file according to an aspect of this.



DETAILED DESCRIPTION OF THE INVENTION
As will be appreciated by one of skill in the art, the present invention may be embodied as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects all generally referred to herein as a “circuit” or “module.” Furthermore, the present invention may take the form of a computer program product on a computer-usable storage medium having computer-usable program code embodied in the medium.
Any suitable computer readable medium may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or physical propagation medium. More specific examples (a nonexhaustive list) of the computer-usable or computer-readable medium would include the following: a physical electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a physical transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable physical medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any physical medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
Computer program code for carrying out operations of the present invention may be written in an object oriented programming language such as Java7, Smalltalk or C++. However, the computer program code for carrying out operations of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
In this document, XML is used as the text format for the canonical form. However, it is clear to a person skilled in the art how alternative text forms may be used. XML Schema provides three elements for annotating schemas for the benefit of both human readers and applications: annotation, documentation and appInfo. The documentation element is typically the location for human readable material. The appInfo element is usually used to provide information for tools, stylesheets and other applications. In this invention, the appInfo element is used to bear application specific information (known hereafter as “ASI”). Both documentation and appInfo appear as subelements of annotation in XML documents.
An aspect of the present invention revolves around providing a mechanism to support dynamic contribution of XML schema describing the contents of appInfo tags. Since schema can be contributed that describes the contents of the appInfo tag, a tooling framework can now generically support rich editing and validation of application specific information. Presently there is no prescribed way of dynamically providing information about the content of the appinfo tag to a tooling framework for rich editing or validation. The user of a tool can add any well formed content to the appInfo. The graphical interface can only have minimal user interface support such as a text field, and validate whether its content is well formed.
In accordance with an aspect of this invention, FIG. 1 illustrates the 3 classes of schema included in a framework, denoted as exemplary emdSchema 2000, eisSchemas 3000 4000, and businessObjectSchema 5000. The business object schema 5000 (businessObjectSchema) describes business object in the EIS, specifies the ASI set that applies, and contains EIS ASI instances (XML elements). An enterprise information system schema 3000 4000 (“eisSchema”) describes the format and shape of ASI that can be used in a business object schema. There can be more than one eisSchema 3000 4000. Finally, an enterprise metatdata discovery schema 2000 (“emdSchema”) specifies the precise syntax of anchor points for schemas 3000 4000 5000 of the other two types. Each of these will be discussed in greater detail below. FIGS. 2A, 2B, 3, 4, and 5A to 5F illustrate sample schema documents for a purchase order business application.
There are two notions of anchor points in this invention relating to an emdSchema 2000. The first being able to anchor:

    
    
        application specific information schema to complexTypes;
        application specific information schema to elements; and
        application specific information schema to attributes.
    
    


The second notion of anchor points concerns the ability of anchoring the above set of schema 3000 4000 to a business object schema 5000. Thus, the schema 2000 specifies which ASI schemas 3000 4000 (eisSchema) should be used to support editing and validating of ASI.
FIGS. 2A and 2B show, when taken together, an exemplary emdSchema 2000 with both anchoring of a set of ASI Schema 3000 4000 in a first section 2A and anchoring of the complexType, element, or attribute of eisSchema 3000 4000 in a second section 2B.
The anchoring of a set of eisSchema 3000 4000 (in section A) is annotated as appInfo on the schema element declaration in the corresponding businessObjectSchema 5000. The namespace of the eisSchema 3000 4000 is identified in the exemplary businessObjectSchema 5000 using the attribute name asiNSURI of the emdSchema 2000. An optional asiSchemaLocation attribute can also be used in the businessObjectSchema 5000 to identify the location of the eisSchema 3000 4000.
The anchoring of the complexType, element, or attribute of the eisSchema 300 400 is specified as appinfo on global elements in the eisSchema 3000 4000. The global element's type describes the ASI (ASI may also reside on global complexTypes). In the exemplary emdSchema 2000, a complexType element annotationType is defined as comprising 2 attributes, annotationKind and annotationScope. The former specifies the kind of annotation anchor (one of complexType, element or attribute), associating the ASI being described to the schema component it can be used with. The attribute annotationScope specifies the scope of the annotationKind as applicable to local or global constructs of the schema, or both. This latter attribute is optional: if specified, the ASI is so scoped to either be used on local or global declarations (or possibly both) in the business object schema; if unspecified, then the ASI can be used on either declaration. This annotation provide an anchor point to determine and validate which global element declaration defined in the ASI schema can appear as annotations on local or global element, complex types and attributes declarations on the business object schema. In FIGS. 3 an 4, the annotationScope is set to local for all types (ElementASI and AttributeASI). Therefore, all instances of these types can appear only on local element declarations (as part of complexTypes) on the Business object schema.
It is possible to define multiple declarations in an eisSchema which have identical annotationTypes. In this case multiple appInfo's can appear on the same declaration in the business object schema.
Although both types of anchoring are shown to reside in the same emdSchema 2000, it is clear to a person skilled in the relevant art that these may also be contained in 2 separate schema files, one for each type of anchoring.
The provided ASI schema (also known as enterprise information schema or eisSchema) must describe the application specific information that can occur on a complexType, element, or attribute. All annotations within the appInfo tag are disambiguated with the source attribute tag set to the namespace URI of the annotating schema. For example, in FIGS. 3 and 4, the source tag is set to source=“=“http://commonj.emd/asi” which is the namespace URI of the framework's schema.
A set of schema that applies to a business object may have more than one eisSchema for complexTypes, elements, or attributes. For example, there may be two ASI declarations for what can be stored on elements. FIGS. 3 and 4 present 2 sample eisSchema 3000 4000 for the sample emdSchema 2000 file shown in FIGS. 2A to 2B.
An enterprise information system may have more than one set of ASI schemas. For example, application specific information may differ between SAP RFC and SAP BAPI.
In use, Enterprise Information system (EIS) vendors or Internet Service Vendors (ISVs) building Adapters for the EIS systems can create ASI schemas pertaining to a particular EIS domain, i.e. eisSchema schemas. This invention does not mandate any structure or contents of the types pertaining to global elements defined in an ASI schema. The instances of global element declarations defined in ASI schemas appear as annotations on the business object.
The schema declarations in the business object schema have to be annotated with global element declarations with an instance annotationSet element declaration defined in emdSchema. This annotation provides an anchor point to determine (see FIG. 5A):

    
    
        the namespace URI of the ASI schema (asiNSURI);
        Optionally, the location where ASI schema(s) can be found. An embodiment of this invention may have separate facility to locate an ASI schema given a name space URI (e.g. XML catalog facility available in Websphere Application Development); in such case the asiSchemaLocation attribute does not have to be present; and
        ASI annotations on the business object schema which are of interest to a metadata Editor. The metadata Editor has all the pertinent information (schema definition of describing the shape/structure of the annotation through ASI schema) to provide a rich editing experience. In exemplary businessObjectSchema 5000, two ASI schemas are identified to the editor: eis1Schema.xsd having asiNSURI=http://www.eis1.com/asi, and eis2Schema.xsd having asiNSURI=“http://www.eis2.com/asi”.
    
    


The instances of global element declarations defined in eisSchema can appear as annotations on the business object schema element, complex type, attribute declarations. These instances are validated against the global element declaration defined in ASI schema using standard XML schema validation facilities. Also, additional validation checks are typically performed to ensure that only those declarations of global elements which were annotated with framework schema appear on the respective declarations in the business object schema. For example ElementASI element declaration in exemplary eisSchema 3000 was marked to appear on local element types only; it would be result in a validation error if it had appeared on say a global element type or a complex type declaration.
As mentioned before, all annotations within the appInfo tag are disambiguated with the source attribute tag set to namespace URI of the annotating schema—in this it would be namespace URI of ASI schema. For example, the shipTo element in exemplary businessObjectSchema 5000 has 2 ASI specific annotations, one pertaining to ASI schema having namespace URI http://www.eis1.com/asi and the other pertaining to ASI schema having namespace URI http://www.eis2.com/asi.
A business object schema may apply to more than one enterprise information system such as SAP and PeopleSoft. Each EIS would supply its own eisSchema. Each of the ASI schema is used by an application to map the business object into its corresponding enterprise entity.
One embodiment of this invention is a tooling framework that works with one or more EIS and uses schema files to describe its type information. A type editor in the framework would provide rich editing support and a validator can check that the ASI in the business object schema is valid.
In essence, a computer system implements an application development environment (tooling framework) in accordance with the present invention. A user of the framework adopts one or more ASI schema and emdSchema and produces in turn a business logic schema. This business logic schema can then be used to generate interface code (e.g. in Java or C++) that can be invoked from code which makes use of services. The tooling system has a user interface (UI) as part of an editor (with possibly drag and drop capability) and is connected to underlying database(s), which permits producing, storing and manipulating metadata objects; at each step being guided by the rules prescribed by the emdSchema and esiSchema. The database stores emdSchemas, typically part of the framework (supplied as part of the tooling system), and one or more eisSchema may either be stored in the database or retrieved from another source (such as the EIS system).
Another embodiment of the schema which describes the anchor points for the ASI is a specification that the tooling frameworks would conform to. This would enable EIS providers to implement support for ASI that could then plug into any conforming tooling framework.
The computer system may be any type of computerized system. Data and other information required to practice the present invention can be stored locally to the computer system (e.g., in a storage unit), and/or may be provided over a network. Storage unit can comprise any system capable of providing storage for data and information under the present invention. As such, storage unit may reside at a single physical location, comprising one or more types of data storage, or may be distributed across a plurality of physical systems in various forms. In another embodiment, each storage unit may be distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN).
Network is intended to represent any type of network over which data can be transmitted. For example, network can include the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), a WiFi network, a personal area network (PAN), or other type of network. To this extent, communication can occur via a direct hardwired connection or via an addressable connection in a client-server (or server-server) environment that may utilize any combination of wireline and/or wireless transmission methods. In the case of the latter, the server and client may utilize conventional network connectivity, such as Token Ring, Ethernet, WiFi or other conventional communications standards. Where the client communicates with the server via the Internet, connectivity could be provided by conventional TCP/IP sockets-based protocol. In this instance, the client would utilize an Internet service provider to establish connectivity to the server.
The computer system generally includes a processing unit, memory, bus, input/output (I/O) interfaces and external devices/resources. Processing unit may comprise a single processing unit, or may be distributed across one or more processing units in one or more locations, e.g., on a client and server. Memory may comprise any known type of data storage and/or transmission media, including magnetic media, optical media, random access memory (RAM), read-only memory (ROM), etc. Moreover, similar to processing unit, memory may reside at a single physical location, comprising one or more types of data storage, or be distributed across a plurality of physical systems in various forms.
It should be appreciated that the teachings of the present invention can be offered as a business method on a subscription or fee basis. For example, the tooling framework could be created, maintained, supported, and/or deployed by a service provider that offers the functions described herein for customers. That is, a service provider could be used to provide the debugging capabilities of the tooling framework, as described above.
As will be appreciated by those skilled in the art, modifications to the above-described embodiment can be made without departing from the essence of the invention. For example, the above schemas have been in the XML form; other markup languages such as SGML may also be used in embodiments of this invention.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.

## Claims

1. A method for producing interface code to use services of an enterprise information system, comprising:
providing, with circuitry in an interface module, an application specific information schema defining application specific information usable in business objects of the enterprise information system;
providing, with said circuitry of said interface module, an enterprise metadata discovery schema configured to:
classify individual elements in said application specific information schema as at least one of a complex type recognized by said enterprise information system, an element recognized by said enterprise information system, and an attribute recognized by said enterprise information system; and
anchor said classified individual elements in said application specific information schema to elements usable in a business object schema; and

generating a business object schema from said anchored individual elements in said application specific information schema with circuitry in a metadata editor module; and
generating the interface code with said circuitry of said interface module using the business object schema.

2. The method of claim 1, wherein the enterprise metadata discovery schema and the application specific information schema are used for rich editing of the business object schema.

3. The method of claim 1, further comprising providing a second application specific information schema for providing further services of the enterprise information system.

4. The method of claim 1, further comprising providing at least one further application specific information schema for providing services of a second enterprise information system.

5. The method of claim 1, wherein a format and shape of the application specific information usable in a business object schema for the enterprise information system is defined in the application specific information schema as application specific information that can occur as any complexType, element and attribute.

6. The method of claim 1, wherein all schemas are in XML.

7. The method of claim 6, wherein the anchoring by the enterprise metadata discovery schema comprises annotations.

8. A system for producing interface code to use services of an enterprise information system, comprising:
memory circuitry comprising an application specific information schema stored thereon, said application specific information schema defining application specific information usable in business objects for the enterprise information system;
memory circuitry comprising an enterprise metadata discovery schema stored thereon, said enterprise metadata discovery schema being configured to:
classify individual elements in said application specific information schema as at least one of a complex type recognized by said enterprise information system, an element recognized by said enterprise information system, and an attribute recognized by said enterprise information system; and
anchor said classified individual elements in said application specific information schema to elements usable in a business object schema;

a metadata editor module configured to generate a business object schema from said anchored individual elements in said application specific information schema; and
a generator module for generating the interface code using the business object schema.

9. The system of claim 8, wherein the enterprise metadata discovery schema and the application specific information schema are used for rich editing of the business object schema.

10. The system of claim 8, further comprising a second application specific information schema for providing further services of the enterprise information system.

11. The system of claim 8, further comprising at least one further application specific information schema for providing services of a second enterprise information system.

12. The system of claim 8, wherein a format and shape of the application specific information usable in a business object schema for the enterprise information system is defined in the application specific information schema as application specific information that can occur as any complexType, element and attribute.

13. The system of claim 8, wherein all schemas are in XML.

14. The system of claim 13, wherein the anchoring performed by the enterprise metadata discovery schema comprises annotations.

15. A computer program product for producing interface code to use services of an enterprise information system, the computer program product comprising:
a computer storage medium having computer executable program code embodied therein, the computer executable program code comprising:
computer executable program code configured to provide an application specific information schema defining application specific information usable in business objects of the enterprise information system;
computer executable program code configured to provide an enterprise metadata discovery schema configured to:
classify individual elements in said application specific information schema as at least one of a complex type recognized by said enterprise information system, an element recognized by said enterprise information system, and an attribute recognized by said enterprise infoimation system; and
anchor said classified individual elements in said application specific information schema to elements usable in a business object schema; and

computer executable program code configured to generate a business object schema from said anchored individual elements in said application specific information schema using a metadata editor; and
computer executable program code configured to generate the interface code using the business object schema.