WO2003077123A1 - Page de presentation affichable - Google Patents

Page de presentation affichable Download PDF

Info

Publication number
WO2003077123A1
WO2003077123A1 PCT/US2003/006346 US0306346W WO03077123A1 WO 2003077123 A1 WO2003077123 A1 WO 2003077123A1 US 0306346 W US0306346 W US 0306346W WO 03077123 A1 WO03077123 A1 WO 03077123A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
model
objects
cdog
persistence
Prior art date
Application number
PCT/US2003/006346
Other languages
English (en)
Inventor
Ward Mullins
Original Assignee
Thought, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thought, Inc. filed Critical Thought, Inc.
Priority to AU2003219977A priority Critical patent/AU2003219977A1/en
Publication of WO2003077123A1 publication Critical patent/WO2003077123A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Definitions

  • the field of the present invention relates generally to computer systems, computer data stores and to methods and software for accessing and utilizing data stores. More particularly, the present invention relates to a system, methods and software for creating or maintaining distributed transparent persistence of complex data objects and associated data stores. In one aspect, the invention also relates to an application programming object capable of creating or maintaining distributed transparent persistence of data objects or data object graphs without the necessity of inserting any byte codes or modification of the object graph. Virtually any java object or object graph can be transparently persisted. Further, copies of a data graph or of a portion of the data graph can be automatically reconciled and changes persisted without any persistence coding in the object model.
  • the methods for producing persistence for a data object, complex data object or a data store conflict with the goals of producing pure object application models where the object models do not include persistence objects or persistence byte code.
  • Patent 5,857,197 (and its associated programming interfaces (“APIs”)) describes tools for translating object data to relational data, relational data to object data, and object data to object data to expedite the use of data stores.
  • the BMP and the CMP Installer portions of CocoAdmin tool in the CocoBaseTM Enterprise for O/R Binary Software (Thought, Inc. 657 Mission Street Suite 202, San Francisco, CA 94105 http://www.thoughtinc.com.) provide means for providing persistence in the EJB environment.
  • Persistence problems arise with the creation, access, changing or deleting of an object application model that utilizes such data stores.
  • the object application model may be distributed over multiple physical computer machine locations or even distributed over multiple Internet website locations that may be independent of the data stores.
  • the object application model may utilize a different set of data objects or different set of definitions for relationships between data objects than that of one or more of its data sources. In most situations, the respective structures of the data sources and of the object applications model simply do not conveniently allow for mapping, accessing or changing of an overall schema of application data objects as well as any associated definitions of relationships between two or more data objects or elements within a data object.
  • relationships may exist between a data object and one or more of the other data objects found in the object application model or in a data object of the data source.
  • a relationship between one data object and another data object or with a data source may be member selected from the group of three relationship types consisting of 1 to 1 (1-1), 1 to many (1-M) or many to many (M-M). Complex combinations of these relationships may exist as a data object relationships definition for a given data object. These relationships are described or illustrated in further detail later in this document.
  • Objects may logically span multiple relational tables or multiple object databases, and may even be distributed over a logical (or hypothetical) computer system involving multiple physically independent computer systems or even multiple website locations.
  • Creating, accessing, maintaining or updating an object application model can require working with multiple translation modules and require tedious and repetitive updating of multiple individual computer systems or multiple data sources in order to do useful work and keep the object application model synchronized.
  • Such approaches are both costly and unwieldy in terms of computing and development resources, particularly with respect to Internet based electronic commerce (eCommerce) object application models.
  • Data objects of an object application model are often a feature of eCommerce object programming applications, where information is obtained from a data source and the data is defined as a data object (e.g., as a Java class) for use with another computer application.
  • a data object or model of data objects may exist only in the random access memory of a computer memory system, or may be saved to either a data source or to some other type of retrievable information repository.
  • a programmer or administrator of an object data application cannot easily access or track the overall model or diagram of data objects for an object application model or some of its specific elements.
  • tools for accessing and persisting data objects and associated data object relationships of a complex data object graph model have not been well implemented in the field of object language programming.
  • a computer application can execute one or more of the following non-limiting actions with respect to one or more of the members selected from the group consisting of data, a data object, and a data object definition: access data, change data, create data, create a new relationship between one or more data objects by creating or changing at least one data object relationship definition, change or delete a relationship between one or more data objects by changing or deleting at least one data object relationship definition, access a data object relationship definition and use its parameters to access a data source or a data object, and access one or more data object relationship definitions or data objects to create a new data object or data object relationship.
  • Any changes executed by a computer application with respect to one or more of the members selected from the group consisting of data, data object or data object definition may need to be properly persisted (permanently stored) to preserve any changes to one or more ofthe members selected from the group consisting of data, a data object and a data object definition.
  • a data object and an associated data object relationship definition may be represented by a complex data object graph ("CDOG")-
  • CDOG complex data object graph
  • a CDOG may be thought of as a computer program data object graph that represents a data object having at least one relationship with at least one other data object or with itself via a circular link.
  • the CDOG may be further defined as being a Java Data Object Graph (“JDOG”).
  • JDOG Java Data Object Graph
  • a pure object model definition from a repository based O/R mapping tool (e.g., from a defined repository such as a file, database or streaming source) or from a modeling tool defined repository and provide persistence for the object model without inserting any byte code or additional objects into the object model.
  • a computer applications programmer tool designed to assist a programmer or administrator in the actions of providing persistence for data objects or data object graphs when deleting, inactivating or updating a CDOG, wherein the computer applications programmer tool can be configured to automatically reconcile all or a portion of a CDOG and copies thereof on a distributed environment when data objects or relationships are deleted, inactivated or updated for a CDOG.
  • “Instance” as referred to in this document in the context of computer software applications is a single occurrence of a software logical element in the memory of a computer system, such as a "class”, an "object”, a “data object”, and the like. This is analogous to the occurrence of a logical memory unit representing a row of data in common practice.
  • Class as referred to in this document in the context of computer software applications is a logic unit in a computer application or a computer software program where the application or program is based upon an objected oriented programming language (e.g., Java).
  • objected oriented programming language e.g., Java
  • a class is a logical unit used as a logical template in an object oriented language from which to allocate new instances of objects.
  • Object as used in the context of this document is a general term referring to a logic unit in a computer application or a computer software program where the application or program is based upon an objected oriented programming language (e.g., Java).
  • object may ordinarily be used interchangeably with the term “class” as a template or as an instance depending on the context.
  • Data object as referred to in the context of this document represents the concept of the occurrence of an object that holds data within a specific computer application domain and is likely to have its contents stored in a persistent data source of a computer system (e.g., a database server, a binary file, a text file, or even in a combination of two or more of such a persistent data sources of a computer system).
  • a data object may exist as an independent data object without any relationship to any other data object or it may have one or more relationships with itself or with one or more other data objects.
  • Complex data object refers to the occurrence of a data object that has at least one or more relationships with itself, or at least one or more relationships with one or more other data object(s). In a given instance of a CDO at least one relationship is populated as a link, as defined below.
  • a CDO may have a multiplicity of different relationships with itself or with one or more additional CDOs.
  • Relationship or “data relationship” as used in the context of a CDO refers to the type of logical combination that occurs between a data object with itself, or refers to the type of logical combination that occurs between a data object and at least one another data object. Among other references or descriptions, such a relationship is always referred to or partially described by a "relationship type". This term is used in an object oriented language context to reference or describe any expectations, actions and limitations possible between two or more data objects. "Relationship type" in the context of this document is a label that specifies the possible multiple combinations that can occur between a CDO and itself or with at least one other CDO.
  • the possible relationship type labels are 1-1 (one to one), 1-M (one to many) and M-M (many to many).
  • a given CDO may be simultaneously related to more than one other CDO through several different types of relationship. This is also sometimes referred to as the multiplicity of the relationship.
  • Link as used in this document with respect to a CDO identifies a particular occurrence of a relationship between a CDO and itself, between a CDO and another CDO. The occurrence of at least one populated link results in an instance of the CDO. This may be considered a synonym for a "relationship" between two objects.
  • “Circular link” as used in this document with respect to a CDO identifies a particular occurrence of a relationship between a CDO and itself that may be direct or indirect (e.g., linked to itself through another CDO).
  • "Relationship definition” or “relationship description” in the context of this document and computer software applications refers to information, or an abstraction of information, regarding a “relationship”, “data relationship” “relationship type” or a “link” that can be stored, accessed, transferred, communicated, displayed or edited.
  • “Complex data object graph” or “CDOG” is a term employed herein as an abstraction to logically represent a set of complex data objects and a set of their corresponding relationships.
  • Java data object graph or “JDOG” is a term employed herein as an abstraction to logically represent a set of complex data objects and a set of their corresponding relationships that are part of a Java programming application.
  • Application model or simply “model” are essentially interchangeable terms employed herein as abstractions to logically convey a collective description or other representation for a set of complex data objects and a corresponding description or other representation of their relationships.
  • these terms are used logically herein provide a general way of efficiently communicating when referring to set of metadata (i.e., data about data) that describes possible data entities (e.g., objects, database tables, maps, etc,) data relationship types, and data constraints involved in a computer system or application, or in a specific instance of an application.
  • set of metadata i.e., data about data
  • possible data entities e.g., objects, database tables, maps, etc,
  • “Navigation”, “navigating” or “navigated” in the context of the present document refers to an action implementing at least one object to interact with a set of related objects for a certain purpose, such as creation, access, insertion, modification and deletion of an object, or of one of its relationships. It is the physical act of traversing the relationships, which might be referred to as “walking up or down the graph” in common lingo.
  • “Navigation model” as used herein is a special type of application model that is applied specifically to a description (or other representation) of how objects can relate to each other and what might be the expected behavior when a CDOG is navigated for a certain purpose.
  • Object schema is a term employed herein as an abstraction referring to the set of data object classes that describe the possible data objects that can be created, modified or maintained in an application, or describing an instance of a set of data object classes in an application.
  • Distribution Transparent Persistence is a term employed herein as an abstraction referring to the concept of providing persistence for a member selected from the group consisting of a data object, a data object graph, associated data and data object relationships in a distributed environment without the need for the insertion of byte code or data objects in an object model or schema.
  • CocoBase Proxy Classes is a term employed herein used in referring to wrapper classes that provide CocoBase runtime compatibility for objects that aren't inherently database aware. A computer system can persist the attributes and data for any data object that is wrapped with a CocoProxy wrapper class by simply using
  • CocoBase facilities For example, source code for the (attribute based) CocoProxy and (get/set method based) CocoProxyM classes are available under the thought ⁇ cocodemo3tier3i ⁇ demos ⁇ pguide directory, when the CocoBase software tools suite is installed on a computer system. This optional design provides an extensible mechanism for instances of data extraction and propagation.
  • CocoBase Navigation API is a term employed herein to refer to an example of an API that provides database relationship mapping and object graph management capability for persistent objects. Database relationships are mapped to object links using CocoBase Navigator link definitions. Persistence control is provided at each class level in the object graph. Each of the Select, Insert, Update and Delete operations are individually configurable.
  • CocoBase Transaction API is a term employed herein to refer to an example of an API that provides object oriented transaction support. Transaction objects are used to persist data object attributes and maintain synchronization between database and in memory attribute values. The Transaction API has many built in optimizations, and applications utilizing CocoBase transactions generally benefit from reduced database and network overhead. This facility allows the developer to group together object changes into a single unit of work whose implementation or storage will succeed or fail all at once.
  • CocoBase Factories is a term employed herein to refer to examples of software modules and softwares libraries that are used to provide automated, custom object instantiation behavior. Factory behavior is completely customizable. For example, a factory may be used to bind newly instantiated objects to a transaction object, to load a graph of related objects using the CocoBase Navigator, or to implement polymo ⁇ hism in a database result set.
  • a ProxyFactory class is part of the current CocoBase software tools suite distribution in the thought ⁇ cocodemo3tier3l ⁇ demos ⁇ pguide directory, and this factory returns result set objects wrapped in a CocoProxy wrapper, when a CocoProxy wrapped key object is passed into the CocoBase runtime software module as part of a query that needs processing by the CocoBase runtime module.
  • CocoBase Repository is a term employed herein as an abstraction referring to a datasource to dataobject mapping repository and associated software modules that is installed into a datasource (or may optionally be a single stand alone file, or a set of files that circumscribe a set of datasource to dataobject mapping definitions and associated software modules).
  • a repository can optionally be in a format such as XML, XMI and the like. See, U.S. Patent Number 5,857,197, the CocoBaseEnte ⁇ rise O/R Tools Suite, and the co-pending patent appliction entitled "Dynamic Object-Driven Database Manipulation and Mapping System” for more detailed descriptions of mapping repositories, and the like.
  • CocoBase Transparent Persistence for Objects and Object Models All models using a relational database for map storage require the CocoBase repository to be installed into the database, or in a stand-alone source accessable to CocoBase.
  • the installation of a mapping repository can occur automatically, if required, when using CocoAdmin to log into the database.
  • Pre-existing database tables can be used, provided that the CocoBase repository is first installed into the database, or accessible to CocoBase.
  • applications that implement CocoBase transparent persistence are included in the CocoBase software tools suite distribution (see the distribution documentation for the location of folders or directories containing such examples).
  • An object of the present invention is to provide a system for creating or maintaining transparent persistence of a complex data object, a complex data object graph (CDOG) model, or a portion of a CDOG.
  • an object of the present invention is to provide such a system that can selectively persist all or a portion of a CDOG model when the model is a member selected from the group consisting of an object model generated from a data object mapping repository and an object model generated from data object modeling tool repository.
  • a further object is to provide such a system is located on, or is part of, a local or distributed computer system.
  • An object of the present invention is to provide a method for creating, maintaining, accessing, navigating and persisting complex data objects stores in a repository.
  • an object of the present invention is to provide such a method having the step utilizing the storage facilities of an enterprise EJB server to store and maintain the data object repository.
  • such a method involves a local or distributed computer system.
  • An object of the present invention is to provide a computer software component that operates in an EJB environment, or the like, wherein the component has the capacity to access an object model repository or an instance thereof in a computer memory or in another temportary computer storage store device and persist at least one action selected from the group consisting of creating, maintaining, accessing, navigating, updating or deleting complex data objects as a CDOG model.
  • the computer software component is an Ente ⁇ rise Bean selected from the group consisting of Stateless, Stateful and Entity Beans.
  • the computer software component is an EJB Session Bean built on top of CocoBase runtime libraries having the ability to persist all or a portion of a CDOG model or instance thereof.
  • An even more preferred object is to provide such a computer software component capable of transparently persisting all or a portion of a CDOG model or instance thereo for a local or distributed computer system and automatically reconciling and persisting any changes to an instance of the CDOG model or any changes to the repository definition for the CDOG model.
  • a preferred object of the present invention is to provide a software tool comprising the a navigation API and software components ( as described above), adapted for a local network or a distributed network environment, wherein said software tool provides persistence in an object oriented language environment transparently by implementing a configurable network component capable of acquiring and persisting CDOGs through network APIs.
  • a further object of the present invention is to a software tool capable of reading a source (or binary) programming object logic model or a database file (or other data source containing the stored object model information) in a format selected from the group consisting of a UML data file, a XMI data file, and a XML file and converting the information into a target member selected from the group consisting of a database definition, XML mapping file, a database mapping definition file, and a CDOG definition file.
  • the software can automatically generate a transparent persistence layer that corresponds to the object model information ofthe source file.
  • a further object of the present invention is to provide a software module and source code known as a Java entity bean (such as a generic session bean) that is capable of providing persistence of either or both of a data objects and a data model, in total or in part as determined through setting established by a user of the computer system.
  • a Java entity bean such as a generic session bean
  • An object of the present invention is to provide a system and/or method for displaying, updating or creating the data or structure of a data object, and optionally its links to other objects of an object model, by utilizing a displayable presentation page having embedded object programming code, such as a Java Server Page (JSP) that is served up by a server platform such as a JSP server, and persisting data of the object, links of the object, or object model by communication of the object programming code embedded in the displayable presentation page with a programming object (such as a Java Bean) wherein the programming object has implemented in its object programming logic methods for getting, setting, resetting and loading of data, and the programming object also includes programming code for communicating directly or indirectly with a persistence manager API or persistence library to persist the object, its data and/or links to other objects in an object model, and optionally to persist the object model itself.
  • the displayable presentation page is constructed having an HTML format and the embedded programming language is the object programming language Java, and the associated programming object is a Java Object such as
  • Another object ofthe present invention is to provide a system and/or method for generating from a relational datasource schema, or generating from an Object to Relational mapping resource: a. at least one displayable presentation page (such as a JSP) having object programming embedded within the page, with the presentation page having an ability to display data of an object in an object model, and optionally further display link information and/or to further provide a labeled link button for navigating to a linked object in an object model, and b. generating at least one corresponding programming object, such as a
  • Java Bean for communicating with the generated presentation page and also for communicating with a persistence manager API that can persist the object, its data and/or links to other objects in an object model, and c. optionally generating a set of related displayable presentation pages (such as JSPs) corresponding to linked objects of a specified object model. d. optionally comprising an ability to query against the object graph using a object query facility or syntax.
  • Another object of the present invention is to provide a method of visually navigating, updating and persisting an object model by utilizing linked displayable presentation pages (such as JSPs) corresponding to a specified object model.
  • a preferred object is to provide such displayable presentation pages with buttons that may be clicked to access link information or to move the user forward or backward to a navigated linked object of an object model and its displayable presentation page.
  • a further object of the present invention is to provide a method for creating, updating, navigating and persisting an object model starting from a information source which is member selected from the group consisting of Java Classes, a relational data source, a UML model (e.g., XMI respresentation), and interface for manually creating an object model by describing a set of objects, their attributes and their links to other objects, and then in a further step creating from the information retrieved from such an information source a set of displayable presentation pages and their associated programming objects (such as JSPs and associated Java Beans) corresponding to an object model that are suitable for visually creating, navigating or updating the object model.
  • a information source which is member selected from the group consisting of Java Classes, a relational data source, a UML model (e.g., XMI respresentation), and interface for manually creating an object model by describing a set of objects, their attributes and their links to other objects, and then in a further step creating from the information retrieved from such an information source a
  • FIG. 1 is a complex data object (CDO) graph drawing, which illustrates a customer object and some of its related objects (billing address, orders and items ordered), as well as relationships between the objects. Relationships ofthe types 1 to 1 (1-1) and 1 to many (1-M) are shown in this CDO graph. More specifically, FIG. 1 illustrates a CDO graph drawing presenting an instance of a customer object 1 having a 1 to 1 (1-1) relationship (5) with its customer billing address object 10, and a 1 to many relationship (collectively 15, 25, and 35) with the three outstanding order objects 20, 30 and 40, respectively.
  • Order object 20 is an instance of an outstanding order object having a 1 to many relationship (collectively 45 and 55) with the two items ordered objects 50 and 60, respectively.
  • Order object 30 is an instance of an outstanding order object having a relationship with a single order item, but order object 30 has a 1 to many relationship (65) with the item ordered object 70, since many order items could have been associated.
  • Order object 40 is an instance illustrates a 1 to many relationship (collectively 75 and 85) with the two items ordered objects 80 and 90, respectively.
  • Figure 2 is a complex data object (CDO) graph drawing, which illustrates a company object and some of its related objects (co ⁇ orate address object and some of its departments and employees), as well as relationships between the objects. Relationships of all three types: 1 to 1 (1-1), 1 to many (1-M) and many to many (M- M) are shown in this CDO graph. More specifically, FIG.
  • CDO complex data object
  • FIG. 2 illustrates a CDO graph drawing presenting an instance of a company object 100 having a 1 to 1 relationship (650) with its co ⁇ orate address object 700, and a 1 to many relationship (collectively 150, 250, and 350) with the three company department objects 200, 300 and 400, respectively.
  • the company department objects 200, 300 and 400 in FIG. 2 are three instances (many) of company department objects having relationships (425, 450, 550 and 575, respectively) with two (many) employee objects (respectively, 500 and 600).
  • the cross-assignment of employee object 500 to both company department objects 200 and 300, and of employee object 600 to both company department objects 300 and 400 illustrate a complex many to many (M-M) relationship of departments to employees for this company.
  • Figure 3 is a programming flow chart representing a preferred embodiment of the invention which is a system for creating, displaying, updating, and persisting the data and/or links of a complex data object (CDO) which is part of a CDO graph.
  • the first programming module of the illustrated flow chart utilizes a displayable presentation page having embedded object programming code, such as a Java Server Page (JSP), wherein the displayable presentation page may be served up (presented) to a user by a server platform such as a JSP server.
  • JSP Java Server Page
  • This displayable presentation page may display the data of a data object and/or provide an interface for creating or updating the data for that data object (or for a new data object) and the displayable presentation page may also include one or more link names (or labelled link buttons) as connected to other data objects of the CDO graph/model.
  • the embedded programming code of the displayable presentation page includes (i) logic for accessing data and and displaying the data from a particular data source and the logic may perform this function directly or delegate it to at least one other programming module, (ii) logic for creating, updating or deleting data of an object, (iii) a programming reference link to an associated programming object (such as a Java Bean) that is, in turn, directly or indirectly connected to a programming module that contains additional logic for detecting changes to object data and/or changes to the object graph model that includes the particular object or is associated with it, and (iv) logic for reflecting to the associated programming object the data and/or links to other objects of the data object that is being displayed by the presentation page.
  • logic for accessing data and and displaying the data from a particular data source and the logic may perform this function directly or delegate it to at least one other programming module includes (ii) logic for creating, updating or deleting data of an object, (iii) a programming reference link to an associated programming object (such as a Java Bean) that is,
  • the second programming module of the illustrated programming flow chart is the programming object (such as a Java Bean) that is linked to the first programming module which is linked to at least one data object and is further linked to a third programming module (either directly or indirectly, such as through an API) which is a programming module and/or library that includes programming logic for for tracking and persisting to at least one data source changes to objects, object model links, object data and/or an object model.
  • This second programming module contains programming logic (a) for issuing commands such as get, set, reset and load attributes of a dat object, (b) for detecting changes to one or more of an object, links between objects, or object model, (c) link to a third programming module for persisting the detected changes.
  • the third programming module of the illustrated programming chart provides a persistence library or API with associated programming logic for tracking and persisting to at least one data source the changes to objects, object model links, object data and/or an object model associated with the displayable presentation page of the first programming module in the flow chart when it is notified of such changes by the second programming module.
  • the displayable presentation page includes buttons to links with related objects of an object model
  • the programming flow chart also represents the embodiment of a method for visually navigating a populated or unpopulated object model graph and/or its data and links between its objects.
  • the present invention provides a system for creating or maintaining persistence for all or a part of a complex data object graph model when a user is creating, maintaining, accessing and navigating complex data objects as a complex data object graph model.
  • the system comprises a computer system having a user interface, a working memory storage area and at least one device for permanently storing information, and said system being loaded with at least one portion of a computer software program, wherein said software program comprises at least one user access interface and a set of programming routines designed for creating or maintaining transparent persistence when a user is creating, maintaining, accessing and navigating complex data objects as a CDOG model, comprising a) a set of definitions for the relationships between a data source schema and objects capable of storing data for an object language application, wherein the set of definitions is stored in a repository; b) a set of definitions for the relationships between objects for an object language application, wherein the set of definitions is part of an object application navigation model; c) a list of objects, or a set of objects that are to
  • the present invention provides such a system that can persist any part or all of a CDOG model instance, and to resolve and persist any changes to the model or to the respository for the CDOG model.
  • a system providing a point and click graphical user interface.
  • the present invention provides a method for creating, maintaining, accessing, navigating and persisting complex data objects stores as a CDOG model and providing transparent persistence in a distributed environement, comprising the steps of: a) creating or accessing a CDOG representation definition or accessing an instance ofthe CDOG, b) monitoring and recording any changes to the CDOG or a portion thereof on a local or distributed computer system, and c) persisting any changes to the CDOG on a local or distributed computer system by updating the CDOG or CDOG representation definition to reflect and changes to any copies of the CDOG or CDOG representation definition, and saving a copy of the updated
  • an EJB Ente ⁇ rise Java Bean is the software component having the ability to access a CDOG repository file, a UML/XMI repository, or other mapping definition repository (e.g., file, database, or streaming data source) or an instance of the at least one portion ofthe CDOG in a computer's memory or on a distributed network and provide the transparent persistence for the CDOG model.
  • the present invention provides a computer software program having at least one user interface and having at least one feature that provides for at least one action selected from the group consisting of creating or maintaining transparent persistence when a user of a CDOG model is creating, maintaining, accessing or navigating a CDOG model.
  • the present invention provides a software program, or an association with a software program, having a feature for displaying, printing or displaying and printing a representation of the CDOG model as a graph, or as a set of tables representing a CDOG model.
  • such a software program has an editing interface for editing the CDOG model, or has an editable input or source, such as a file, that can be modified to implement changes to the complex data object CDOG model (or has both an interface for editing and an editable input or source, such as a file).
  • the present invention also provides an application programming interface ("API"), as a preferred embodiment, wherein the API can be accessed to create, maintain, access, navigate and persisting complex data objects as a CDOG model.
  • the API can be accessed by an independent computer software program, or by a computer software program module that is part of a software package including the API, to provide at least one action selected from the group consisting of creating, maintaining, accessing, navigating and persisting complex data objects as a CDOG model.
  • the present invention provides such an API as part of a software tool package that provides a method for displaying or printing a representation of the CDOG model as a graph or set of tables representing the CDOG model (or providing methods for both displaying and printing a representation of the CDOG model).
  • such a software tool package that includes the API provides an editing interface for editing the CDOG model, or has an editable input or source, such as a file, that can be modified to implement changes to the CDOG model (or provides both an editing interface and an editable input or source, such as a file,).
  • a preferred embodiment of the present invention provides a software tool comprising the API according ( as described above), adapted for a local network or a distributed network environment, wherein said software tool provides persistence in an object oriented language environment transparently by implementing a configurable network component capable of acquiring and persisting CDOGs through network APIs.
  • the CDOG API is the CocoNavigator API, the Navigator API, or the CBFacade API, which provides support for manipulating complex objects in conjunction with the THOUGHT Inc.
  • CocoBase Ente ⁇ rise Object/Relational (O/R) database hereinafter "CocoBase" mapping tool (see U.S. Patent 5,857,197 (inco ⁇ orated herein in its entirety), for concepts upon which the CocoBase mapping tool is based).
  • An object is considered to be complex when it has established or potential relationships (i.e. links) to other objects. For instance, a Company object instance may be linked to an instance of its co ⁇ orate address and instances of a Department object, which in turn may be linked to a set of instances of Employee objects.
  • FIG. 2 An example of such an CDOG is shown in FIG. 2, for example.
  • the combination of these objects and their links constitute a graph of objects (CDOG model) that can be manipulated using the CocoNavigator API. Since the CocoNavigator API works in a Java Programming language environment, this CDOG example may also be referred to as a JDOG example.
  • the invention provides a software module, or set of modules, for creating or maintaining transparent persistence of a member selected from the group consisting of a data object, an object graph model and a portion of an object graph model when a user of the system is creating, maintaining, accessing or navigating complex data objects as a CDOG model, comprising: i) a software module for creating a set of definitions for the relationships between a data source schema and objects capable of storing data for an object language application, wherein the software module is capable of causing the storage of the set of definitions in a repository; ii) a software module for creating and accessing a set of definitions for the relationships between objects for an object language application, wherein the software module is capable of causing storage ofthe set of definitions in a navigation model; iii) a software module providing an input means for a member selected from an object name, a list of objects, or a set of objects that are to be persisted, wherein the software module is capable of capable of causing the storage of the input
  • the invention provides a software tool comprising the API according to the invention or interfacing therewith, wherein the software is adapted for performing the following steps: a) reading or accessing an object model definition from a repository based O/R mapping tool (e.g., from a defined repository such as a file, database or streaming source) or from a modeling tool defined repository source in a format selected from the group consisting of a database schema, a source or binary object graph, Unified Modeling Language (“UML”) data file, an XML Metadata Interchange (“XMI”) data file, an Extensible Markup Language (“XML”) file, and other general data formats; and b) converting the information of (a) into a target member selected from the group consisting of a database defintion XML format, a database mapping definition format, other general data formats, a source or binary CDOG definition file, and application objects.
  • a repository based O/R mapping tool e.g., from a defined repository such as a file, database or streaming source
  • the present invention provides a software tool as described above that is adapted for performing at least one of the following additional steps: a) displaying an object model, definition or portion thereof in a format selected from the group consisting of a database schema, a source or binary object graph, Unified Modeling Language (“UML”) data file, an
  • XML Metadata Interchange data file, an Extensible Markup Language (“XML”) file, and other general data formats
  • the software tool described above provides target information that is at least one member selected from the group consisting a CocoBase database definition repository, a CocoBase map, a CocoNavigate CDOG definition, a CocoNavigate object link descriptor, and a CDOG object graph definition capable of being stored and retreived.
  • target information is at least one member selected from the group consisting a CocoBase database definition repository, a CocoBase map, a CocoNavigate CDOG definition, a CocoNavigate object link descriptor, and a CDOG object graph definition capable of being stored and retreived.
  • the source is a UML/XMI document containing sufficient DTD information to exchange modeling information with a UML modeling tool.
  • the software tool can be set to automatically generate a persistence layer that corresponds to the source UML class diagrams provided by an exported source file from a case tool capable of exporting UML/XMI, such as Rational Rose, Together and ArgoUML.
  • a CDOG Navigator API such as the CocoNavigator API
  • CocoNavigator API can provide at least one object to intercept any accesses to the data objects and their relationships that constitute the CDOG, as well as any changes to the data source upon which the CDOG depends, in order to provide a means to persist any changes to the CDOG (or CDOG model) or related data in the data source.
  • Any changes to the CDOG (or CDOG model) can then be propagated by the CDOG Navigator API to a persistent data source through a CocoBase Ente ⁇ rise O/R connection.
  • persistent data that updates a data source can be utilized to create a CDOG model or to update a CDOG model.
  • Each CDOG (or CDOG model) managed by the CDOG Navigator API can be associated by the CDOG Navigator API with a CDOG descriptor (such as a file) that may be utilized to represent all or part of a "navigation model".
  • a navigation model may be abstractly described as essentially a namespace in which a set of data objects and a set of link descriptions (i.e., relationship types between data objects) are each defined.
  • a data source, data field, data field size and data field type are listed for each data object in the set of data objects.
  • At least one link description for two data objects, or for a single data object having a circular link contains one or more ofthe following types of information (however other related information may be utilized): at least one link type (e.g., 1 : 1, 1 :M, M: l and M:M) between data objects at least one link qualifier (currently supported qualifiers are STD and BEAN) at least one associative CocoBase map (optional, for M:M links only) the names of the CocoBase maps related to each of the data objects (usually two maps that are not necessarily distinct), and information that may be obtained for each of the CocoBase maps related to the relationship between two data objects, including: the name of a relationship link between the two data objects
  • CocoNavigator API a setting parameter indicating whether an insertion of information into a particular CocoBase map that will impact upon a relationship between two data object should be cascaded to other related map(s)
  • a preferred embodiment of the CocoNavigator API or an associated program module is configured to allow many navigation models to be used with the same set of java classes and CocoBase maps that are associated with a CDOG model.
  • This preferred embodiment API, or an associated computer program module may also be configured to permit a user to switch dynamically from one such navigation model to another.
  • CDOGs of a CDOG model should be managed.
  • a preferred embodiment of the CocoNavigator API, or an associated computer program module, is configured to permit a user to create, access, support and correctly manage circular data object links.
  • a circular link may be defined as occurring when a data object is directly or indirectly linked to itself as part of a CDOG. Such relationships can be created, accessed, supported and correctly managed via the CocoNavigator API.
  • bi-directional and oriented links
  • a preferred embodiment of the CocoNavigator API, or an associated computer program module is configured to permit a user to create, access, support and correctly manage links between data objects as either a bi-directional link or as an oriented link.
  • links between data objects are usually bi-directional links and can be navigated back and forth as an un-oriented navigational model ofthe CDOG model. With such a bi-directional link feature activated, any object in the navigation model in a given CDOG model can be used as a navigation entry point.
  • the link In an oriented link navigation model, the link may be set as an oriented link accessible from a single direction. Thus, changes must be made from top down or from bottom up on a relationship tree representation of the navigation model, and some actions may need to originate from a pre-set node ofthe relationship tree.
  • such types of links can be created, accessed, supported and correctly managed via the CocoNavigator API.
  • the CocoNavigator API is configured to permit a user to populate any object property (e.g., public field or a getter/setter pair) having its type declared as an object class with special dynamic proxies that can monitor and update the state of a relationship link.
  • object property e.g., public field or a getter/setter pair
  • object classes are thought.Cocobase.navapi.LinkObjProxy of CocoBase and subclasses of the Sun Microsystems java class, java.util.Vector or other similar collection classes. Bi-directional or single directional object references can be consistently maintained in this manner, or by other similar logical mechanisms.
  • the CocoNavigator API can be configured to automatically merge a data object and its properties into a CDOG navigation model representation when the class of object being navigated (being created, accessed, supported or maintained) has a property (e.g., a field or a getter/setter pair) with a name matching the name of a corresponding link as defined in the navigation model.
  • a property e.g., a field or a getter/setter pair
  • the CocoNavigator API can be configured to include a data object as a relationship link to another data object in a navigation model without the need to declare fields and properties for the data object.
  • Such links should be limited however to cases where no computer code dependency will exist between the java classes that will be associated with such linked data objects of the navigation model.
  • a navigation model can be a pure abstraction, and more reusable than just a populated version or single hypothetical instance of the abstraction, (g) customized link visitors
  • the CocoNavigator API can provide an interface which can be configured to permit a visitor object to use this interface to visit (e.g., access or change) a data object that is part of a CDOG navigation model.
  • a visitor object e.g., access or change
  • a data object e.g., access or change
  • CocoBase an example of CocoNavigator API implementing this concept might using a Link Visitor object (class). Other similar classes may be defined for this pu ⁇ ose.
  • the visitor interface provides a way for a user to customize and adapt the software, and thereby allows a user to extend the functionality of the CocoNavigator API, or the functionality of an associated computer program module, to provide a desired customizable behavior in their CDOG navigation model,
  • the CocoNavigator API can be configured to operate as a tool to create, access, support and correctly manage a CDOG navigation model in a server environment (e.g., in an EJB container) and to persist any changes to the CDOG navigation model when a navigation model is distributed across a local network or when the navigation model involves a distributed network (e.g. , a navigation model distributed across internet connections).
  • a server side of the network a CDO or a CDOG model of any complexity sent by clients
  • the CocoNavigator API e.g., serialized copies
  • the CocoNavigator API or an associated computer program module
  • link proxies serialized with parts of the CDO or CDOG model that are being monitored by such link proxies.
  • a CDOG navigation model can be created, accessed, supported, managed and persisted over a distributed network, (i) group loading or lazy loading of links
  • the CocoNavigator API, or an associated computer program module can be configured to monitor some or all of the data objects (and associated relationship definitions) participating in links of a CDOG navigation model.
  • the data objects (and associated relationship definitions) participating in links of a CDOG navigation model can be loaded as they are needed
  • This lazy loading feature can permit a very large CDOG navigation model to be loaded in a per-link basis as needed.
  • the lazy loading feature can be configured to prevent a link from being loaded twice and can be configured to detect cycles of related loads that have been previously loaded. Such configuration adaptability can be exploited to provide the more efficient use of the resources for a computer system or network or for a distributed computer network.
  • a preferred embodiment of the CocoNavigator API or an associated program module is configured to bind a data object or data object relationship of a CDOG navigation model with a CocoBase transaction. Such configurations may be utilized to optimize access to the database server and to enhance performance of the computer system, or systems, involved with the CDOG navigation model. (bb) non-CBProp objects
  • the CocoNavigator API or an associated program module can be configured to automatically detect non-CBProp objects (objects with classes that do not implement the CocoBase persistence interface known as the CBProp interface), and automatically create proxies in order to persist such objects as part of a CDOG navigation model. This is based on the Java Bean naming patterns in the Java Language specification of Sun Microsystems, Inc. (cc) virtual foreign key fields
  • the CocoNavigator API or an associated computer program module can be configured to use proxy classes of CocoBase, such as the CocoProxyM classes, when appropriate.
  • Implementing proxy classes such as the CocoProxyM classes can provide a system for creating, accessing, supporting, properly maintaining and persisting virtual foreign key fields (i.e., foreign key fields do not need to be defined in the object class for Java programming implementations) by the CocoNavigator API, or by an associated computer program module, (dd) transparent persistence
  • the CocoNavigator API or an associated computer program module can be configured to use a configurable network component capable of acquiring and persisting CDOGs through network APIs and thereby provide persistence transparently with respect to the applications that are using the CDOGs.
  • a software tool comprising the CocoNavigator API that is adapted for a local network or for a distributed network environment, wherein the software tool provides persistence in an object oriented language environment transparently by implementing a configurable network component capable of acquiring and persisting CDOGS.
  • Such a concept may be referred to as transparent persistence in the context of this API, because persistence can be obtained without requiring reconfiguring of an existing CDOG model or software application in order to provide such persistence to a computer software application, (ee) transparent persistence with automated APIs that may be further optionally utilized with a local or distributed implementations such as a session bean implementation
  • the CBFacade or other modules containing high level API's can be utilized that can function in place ofthe CocoNavigator API (or coordinate with it) to automate many of the transparent persistence functions.
  • a software module or modules can be utilized in concert with a local or distributed implementation such as a session bean to provide an easier and quicker establishment of transparent persistence.
  • the CBFacade can provide the functions as defined in (dd) and the session bean can provide a communication link between modules such as a transaction API and the navigation API (and/or with the CBFacade) to assure that transparent persistence occurrs as required.
  • Such transparent persistence in the context of this API can be obtained without requiring reconfiguring of an existing CDOG model or software application in order to provide such persistence to a computer software application.
  • CocoNavigator API has an at least one user access interface, at least one data source access interface and at least three main programming modules consisting of the following programming modules or routines:
  • a programming module or routine constructed to operate on a computer system and to provide the following features to a user or to a software program module of the computer system: a) a computer programming sub-routine or sub-module for obtaining from a member selected from the group consisting of a data source, an information repository, and an input device, sufficient information to construct a CDOG model containing one or more CDOGs, b) a computer programming sub-routine or sub-module for constructing and loading into the memory registers ofthe computer system a CDOG or a CDOG model representation definition from a data source or other repository, and c) a computer programming sub-routine or sub-module for sending a copy of some portion or all of the CDOG representation definition to a user or to a software program module on a local computer system or on a distributed network; II.
  • a programming module or routine constructed to operate on a computer system and to provide the following features to a user or to a software program module of the computer system (i.e., a persistence manager) a) a computer programming sub-routine or sub-module for monitoring a user or a software program module on a computer system that has accessed or changed a portion of a CDOG or CDOG model, which is included in the CDOG, or CDOG model, representation definition of (I), above, and obtaining any changes to the CDOG or CDOG model, b) a computer programming sub-routine or sub-module for monitoring a user or a software program module on a computer system who has obtained a copy of any portion of the CDOG, or CDOG model, representation definition, and for obtaining a copy of any changes that the user might have made to any portion of the CDOG, or CDOG model, representation definition, and c) a computer programming sub-routine or sub-module for comparing a copy of a CDOG, CDOG model, or a representation
  • a programming module or routine constructed to operate on a computer system and to provide the following features to a user or software program module of the computer system: a) a computer programming sub-routine or sub-module for storing a new
  • CDOG or CDOG model or storing a definition of either the CDOG or CDOG model, in a data source or in another information repository, and b) a computer programming sub-routine or sub-module for persisting (saving to permanent storage) either a changed portion of an updated
  • CDOG an updated CDOG model, or an updated definition representation for either a CDOG or a CDOG model, to a data source or to another type of information repository.
  • the CDOG API according to the invention (a preferred embodiment is the CocoNavigator API) can be written with an interface that accesses and uses functionalities of the CocoBase mapping tool, associated programming routines, or associated class libraries. Both the object code and the source code of the CDOG API are contemplated as part of this invention.
  • the above described CDOG API can be accessed to create, maintain, access, navigate and persisting complex data objects as a CDOG model.
  • the API can be accessed by a computer software program such as the CocoBase mapping tool, or by a computer software program module that is part of a software package including the API, to provide at least one action selected from the group consisting of creating, maintaining, accessing, navigating and persisting complex data objects as a CDOG model.
  • the present invention provides such an API as part of a software tool package having a feature or method for displaying or printing a graph or set of tables representing a CDOG or a CDOG model.
  • such a software tool package including the API provides an interface for editing a CDOG, a CDOG model, or for editing a representation definition for a CDOG or a CDOG model to provide a modification that implements a change to a CDOG, or to its definition.
  • a software component according to the invention that is capable of persisting all or a portion of a CDOG may be an Ente ⁇ rise Java Bean selected from the group consisting of Stateless, Stateful or even Entity Beans.
  • CocoBase Ente ⁇ rise Beans CBEBs
  • CBEBs are a preferred embodiment ofthe invention and constitute a set of Ente ⁇ rise Java Beans built upon or accessing CocoBase Runtime and EJB APIs to provide persistence in a generic, efficient and transparent way.
  • CBEBs can be directly deployed on an EJB server with or without customized settings and are capable of persisting virtually any Java Object, any Java Object graph or any portion of the Object graph.
  • the Java Objects of any complexity that are arbitrarily created by client applications can be persisted, and the corresponding object classes can be properly mapped to a CocoBase repository or other object repository such as a UML XMI repository.
  • Copies of the Java Object, any portion of an Object Graph, or all of an Object Graph can be automatically reconciled and the changes can be persisted to a storage repository.
  • the CocoBase Navigation API maps database foreign key -primary key relationships to object references.
  • the relationship maps (sometimes referred to herein as navigation models), like the database maps, are stored in a special CocoBase repository, or may be converted into an XML file (or files) and stored in a stand-alone file or directory.
  • the Navigation API supports 1 to 1 , 1 to M, and M to M links in both the object and relational spaces. For M to M relationships, an associative table and a corresponding associative map are required, since relational databases do not directly support M to M relationships.
  • a navigation model must be created, or properly reference, before CocoBase links can be defined.
  • a navigation model is a namespace used to categorize and store a set of link definitions. Generally, a single navigation model is sufficient for simple applications. Multiple navigation models are useful if an application switches between several relationship configurations. This allows different views of complex object data for the same set of underlying database tables. Having relationship mapping separated from table mapping is unique to CocoBase. Since maps can be used with multiple link models, it provides reusability at the mapping level.
  • the above example can also be use to run a client application with the TomCat Server using a JSP to access a relational database (such as the Oracle Database) using at least CBEB to provide transparent persistenct, even in a distributed environment.
  • Appendix 1 has more details of how this can be done.
  • Properties props new Properties(); props, putfcocosource. name", args[0]); props. put("cocosource.jdbcdriver”,args[1]); props. put("cocosource.url",args[2]); props. put("cocosource.user”,args[3]); props.put("cocosource.password”,args[4]); props, putfcocosource. navmode V'CompanyAppLinks"); cbf.connect(props); // create an example object
  • MyObj ect new MyObj ect(); myObj .setSomeField(someValue);
  • Appendix 1 A JSP Example Using the TomCat Server and a Relational Database and providing Transparent Persistence using CocoBase Enterprise OR
  • the installation file will have the following naming format:
  • the last four digits correspond to the software release date and may be different, than listed, for the latest release. If j ava . exe is not in the system PATH, an e ⁇ or will occur. If the environment is configured properly, the installer displays the initial CocoBase Intallation "Welcome" dialog.
  • the default settings should be selected during the installation. Fill in the user information fields completely to ensure the proper installation of the software. If the software will be used for commercial pu ⁇ oses, be sure to obtain a commercial license.
  • the database used is Oracle. Therefore, a specific User/Schema name must be specified in the Oracle .
  • properties text file to view the details of that User/Schema in CocoAdmin (GUI interface for CocoBase). Locate and open the Oracle .
  • the following steps describe how to configure the runtime classpath and an Oracle data source for the TomCat Server.
  • CocoBase runtime classes plus Oracle jdbc driver classes need to be included in the jvm process that runs TomCat. In order to do that, it is necessary to modify the script that launches TomCat as follows:
  • %COCO_HOME% ⁇ demos ⁇ CocoDeploy.jar Another alternative is to copy %COCO_HOME% ⁇ demos ⁇ CocoDeploy.jar (to generate it, use the script %COCO_HOME%/demos/mkcocodirs) and other required Java archives (e.g. oracle jdbc driver classes) to %CATALINA_HOME%/cornmon/lib, but note that these files need to terminate with jar (.zip files need to be renamed to .jar).
  • Java archives e.g. oracle jdbc driver classes
  • CocoAdmin are followed to produce the generic web application (WAR file).
  • a webpage is displayed with a title of "Cityinfo Generated Default JSP", or the like.
  • the web page contains entry fields of "Name” (* indicates that this is a primary key field), "Country” and “Population” and allows the actions of "Insert”, “Update”, “Delete” and “Find” for such entries.
  • This Cityinfo JSP is an example of a displayable presentation page that has embedded within the presentation page mark-up language some necessary object programming language logic. CocoAdmin automatically generates the HTML and embedded Java code of this JSP (displayable presentation page) along with the Java Code for a First Java Object (JSP Processor Object), and a Second Java Object (Business Object) from an object to relational schema map corresponding to a relational data source in the above example.
  • JSP Processor Object Java Processor Object
  • Second Java Object Business Object
  • these same object code listings could have been hard coded by hand by a competent programmer and/or produced from information taken from another source such a UML/XMI object model, directly from a relational data source, or from the database schema for a data source.
  • the presentation mark-up language (in this example HTML) provides a WEB page (presentation page) to display the names of three attributes of a Cityinfo Object "Name", “Country”, and “Population” (may be referred to as fields in a corresponding data source) with 4 possible actions “Insert”, “Update”, “Delete” and “Find” and a button labeled “Submit” for executing one ofthe four possible commands (actions).
  • the embedded Java code in this Cityinfo JSP example communicates directly with the First Java Object (the object is a Java Bean in this example, which may be referred to as a JSP Processor Class) and also references the name ofthe Java Bean (JSP Processor Class) having the logic for carrying out or delegating the "insert/create”, “update”, “delete”, “select/find” and “submit” commands ofthe JSP and logic for tracking the values and properties ofthe three named attributes/fields in this example.
  • the object is a Java Bean in this example, which may be referred to as a JSP Processor Class
  • JSP Processor Class the name ofthe Java Bean having the logic for carrying out or delegating the "insert/create”, “update”, “delete”, “select/find” and “submit” commands ofthe JSP and logic for tracking the values and properties ofthe three named attributes/fields in this example.
  • This CityinfoJspProcessor Object is a First Java Object (in this case a Java Bean) that CocoAdmin generates along with the JSP (displayable presentation page) and the Second Java Object. CocoAdmin generates this JSP Processor Java code and compiled Java Class from an object to relational schema map corresponding to a relational data source, however these same object code listings could have been hard coded by hand and/or produced from another information source UML/XMI or directly from the database schema. Further, the Java Code of the First and Second Objects could have been consolidated into a single object, but this would have violated the specification for Java and JSPs and also reduced the programming flexibility of the system. By placing the more complex logic in the business object (second object) and keeping it separate from the JSP Processor Object (first object), the JSP and first object can be utilized by multiple applications.
  • This First Java Object is a Java Bean that references and represents the attributes of its corresponding JSP (displayable presentation page) and includes programming logic to execute the commands (or to delegate the execution of such commands) of the JSP, as described above. Since using standard JSP standards and Java Procedures would only permit the handling of a limited number of data types, this First Java Object references the Second Java Object (Cityinfo Object) which also reflects the data and data types (attributes of the First Java Object) but includes more business logic to convert forward/reverse data types at the discretion of the programmer by merely editing the business logic.
  • An example of the programming code for the First Java Object is set forth below:
  • ⁇ population n_population
  • sql .Date zeroDate new java . sql . Date ( (long) 0) ; setName (emptyStr g) ; setCountry (emptyStr g) ; setPopulation (zerolnteger) ;
  • CitymfoPK citymfopk new CitymfoPKO ; try ⁇ utx.begin () ;
  • citymfopk.name getNameO
  • setCountry cityinfo .getCountry ( ) )
  • ⁇ message "Entity bean " +c ⁇ tymfopk+” already exists! Duplicate Bean cannot be created!; utx. commit () ; return message; ⁇ ⁇ catch (Throwable t) ⁇ //t .printStackTraceO ;
  • This Cityinfo Object is a Second Java Object that CocoAdmin generates along with the JSP (displayable presentation page) and the First Java Object. CocoAdmin generates the HTML with inbedded object code (JSP), a First Java Object (JSP Processor Object), and this Second Java Object (Business Object) from an object to relational schema map corresponding to a relational data source, however these same object code listings could have been hard coded by hand and/or produced from another information source UML/XMI or directly from the database schema. Further, the Java Code of the First and Second Objects could have been consolidated into a single object, but this would have violated the specification for Java and JSPs and also reduced the programming flexibility of the system. By placing the more complex logic in the business object (second object) and keeping it separate from the JSP Processor Object (first object), the JSP and first object can be utilized by multiple applications.
  • This Second Java Object is a separate business object that sits in the programming logic flow chart between the First Java Object (JSP Processor Class) and the persistence library or persistence API.
  • This Second Java Object reflects the data of the first Java Object (JSP Processor Class) and allows for further processing to create additional data types from the reflected data types and to translate backwards to the more limited reflected data types that are displayed by the JSP.
  • This provides more complete support for all Java Data Types that might need to be properly retrieved from a data source and persisted back to that or another data source (the Java JSP Processor specification as established by SUN Microsystems, Inc. only supports a small, more limited subset of Java data types).
  • This Second Java Object processes commands passed to it by the JSP via the First Java Object and automatically translates and reverse translates the data types passing through it to the appropriate data types for displaying or persisting.
  • This further processing allows more complex data types and business logic to be communicated with the persistence library or persistence API than would be possible if the JSP Processor Class communicated directly with the persistence library or API (unless the JSP specification is violated by editing the JSP Processor Class source code (First Java Object Code) to include additional logic within the JSP Processor Class).
  • An example ofthe Java Code for this Second Java Object, i.e., the Cityinfo Object (business object) is set forth below: package Cityinfo;
  • Cityinfo retObject new Cityinfo(); retObject . setName (name) ; retObject . setCountry (country) ; retObject . setPopulation (getPopulation 0 ) ;
  • CBFieldlnfo cbfi new CBFieldlnfo 0 ; cbfi . setSearchValue (name) ; cbfi . setSearchCriteria (nameMatchCondition) ; setProps. put ("NAME” , cbfi) ; ⁇ else setProps .put ( "NAME" , name) ;
  • CBFieldlnfo cbfi new CBFieldlnfo () ; cbfi . setSearchValue (name) ,- cbfi . setSearchCriteria (nameMatchCondition) ; setProps. put ("NAME” , new CBNull ()),-
  • CBFieldlnfo cbfi new CBFieldlnfo 0 ; cbfi . setSearchValue (country) ; cbfi . setSearchCriteria (countryMatchCondition) ; setProps. put ("COUNTRY", cbfi) ; ⁇ else setProps .put ( "COUNTRY” , country) ;
  • CBFieldlnfo cbfi new CBFieldlnfo ; cbfi . setSearchValue (country) ; cbfi . setSearchCriteria (countryMatchCondition) setProps put ( "COUNTRY” , new CBNull ()),
  • CBFieldlnfo cbfi new CBFieldlnfo 0 ; cbfi setSearchValue (population) ;
  • CBFieldlnfo cbfi new CBFieldlnfo 0 ; cbfi . setSearchValue (population) ;
  • CocoBase accomplishes transparent persistence with java object models without using bytecode manipulation, proprietary interfaces or class hierarchy intrusion. This means that no special classes or interfaces are needed in the Object Model in order to do persistence with CocoBase. The only requirement is that they must have a default constructor with no arguments.
  • CocoBase Runtime O/R mapping class that wrappers the JDBC driver and issues queries and does the actual persistence calls. This is a class such as thought . CocoBase . CocoPowder or thought . CocoBase . CocoPowderPlugin20 (for jdbc 2.0 connections). The thought . CocoBase . Transaction object that can track changes of instances, and acts as a change 'buffer'. If a Transaction object is used, then it only calls a CocoBase Runtime driver - O/R mapping runtime class - when the txn.commitQ is called.
  • CocoBase . navapi Navigator object that can track and detect changes in relationships based on Link definitions.
  • Link models are not kept in the CocoBase repository. Once a link definition model is created it is saved in the demos/resources directory (by default - although this can be overridden). As long as the model is in the classpath either directly or in a subdirectory called 'resources' it will find the model properties file and retrieve the navigation information.
  • the Navigator class can function in conjunction with a Transaction object or it can function standalone. While complex object graphs can be transparently managed directly by the Navigator and without the Transaction object, the use ofthe Transaction object is generally preferred because of its buffering and update optimizations which only persist those attributes that have changed.
  • CocoBase runtime classes can be used to persist instances of these classes.
  • the CocoBase Navigator can easily develop a navigation model for the application. This model can then be used to persist the objects.
  • the Example below is not directed to persistence ofthe Navigation model for the above Cityinfo application, but the concepts can be easily applied to the Cityinfo application to provide transparent persistence.
  • Vector deptVector myBase . selectAll ( new thought .CocoBase . CocoProxyM (dept) , "Department”) ;
  • the CocoProxyM is optional, the code example below shows the same call without its usage.
  • the Example below is not directed to persistence ofthe Navigation model for the above Cityinfo application, but the concepts can be easily applied to the Cityinfo application to provide transparent persistence.
  • Properties props new Properties () ; props. put (“cocosource.name” , args [0] ) ; props. put (“cocosource . jdbcdriver” ,args [1] ) ; props .put ( “cocosource .url” , args [2] ) ; props .put ( "cocosource .user” , args [3] ) ; props .put ( "cocosource. password” , args [ ] ) ; props.put (“cocosource. navmodel” , “CompanyAppLinks” ) ; cbf .connect (props) ;

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

L'invention concerne des systèmes, des procédés et un logiciel destinés à créer ou assurer une persistance transparente répartie d'objets de données complexes et de mémoires de données associées. Dans un aspect, l'invention concerne également un objet de programmation d'application capable de créer ou d'assurer une persistance transparente répartie d'objets de données ou de graphes d'objets de données sans qu'il soit nécessaire d'insérer des pseudo-codes binaires ou une modification du graphe d'objet. Pratiquement n'importe quel objet Java ou graphe d'objet peut être sauvegardé de manière transparente. Par ailleurs, les copies d'un graphe de données ou d'une partie du graphe de données peuvent être automatiquement rapprochées et les changements sauvegardés sans codage persistant dans le modèle objet.
PCT/US2003/006346 2002-03-04 2003-03-03 Page de presentation affichable WO2003077123A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003219977A AU2003219977A1 (en) 2002-03-04 2003-03-03 Displayable presentation page

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US36179502P 2002-03-04 2002-03-04
US60/361,795 2002-03-04

Publications (1)

Publication Number Publication Date
WO2003077123A1 true WO2003077123A1 (fr) 2003-09-18

Family

ID=27805076

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/006346 WO2003077123A1 (fr) 2002-03-04 2003-03-03 Page de presentation affichable

Country Status (2)

Country Link
AU (1) AU2003219977A1 (fr)
WO (1) WO2003077123A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924395B2 (en) 2010-10-06 2014-12-30 Planet Data Solutions System and method for indexing electronic discovery data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034733A1 (en) * 2000-03-03 2001-10-25 Michel Prompt System and method for providing access to databases via directories and other hierarchical structures and interfaces
US20020095423A1 (en) * 2001-01-17 2002-07-18 International Business Machines Corporation Mapping persistent data in multiple data sources into a single object-oriented component

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034733A1 (en) * 2000-03-03 2001-10-25 Michel Prompt System and method for providing access to databases via directories and other hierarchical structures and interfaces
US20020095423A1 (en) * 2001-01-17 2002-07-18 International Business Machines Corporation Mapping persistent data in multiple data sources into a single object-oriented component

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JIANGUO LU, 2002, CAISE 2002, LNCS 2348, article "Reengineering of database applications to EJB based architecture", pages: 361 - 376 *
KASSEM N., October 2000, ENTERPRISE EDITION, article "Designing enterprise applications with the Java 2 platform" *
ROMAN E., OBERG R., December 1999, SUN MICROSYSTEMS, INC. (THE MIDDLEWARE COMPANY), article "The technical benefits of EJB and J2EE technologies over COM+ and Windows DNA", pages: 5 - 15 *
SARACCO C.M., August 2000, IBM CORP., article "Leveraging DBMS stored procedures through enterprise JavaBeans" *
SCHIEFER B., FECHT C., article "Persistence for large enterprise systems in the Java world" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924395B2 (en) 2010-10-06 2014-12-30 Planet Data Solutions System and method for indexing electronic discovery data

Also Published As

Publication number Publication date
AU2003219977A1 (en) 2003-09-22

Similar Documents

Publication Publication Date Title
US7103600B2 (en) Displayable presentation page and SQL searchable relational data source implementation of a system, method and software for creating or maintaining distributed transparent persistence of complex data objects and their data relationships
US7167862B2 (en) Session bean implementation of a system, method and software for creating or maintaining distributed transparent persistence of complex data objects and their data relationships
US7043481B2 (en) System, method and software for creating, maintaining, navigating or manipulating complex data objects and their data relationships
US20030046266A1 (en) System, method and software for creating or maintaining distributed transparent persistence of complex data objects and their data relationships
JP5065056B2 (ja) ワークフローを処理するための方法、コンピュータ・プログラム、およびシステム(ワークフロー・システムへのデータ管理動作の統合)
US7865900B2 (en) Systems and methods for providing mockup business objects
US20030167456A1 (en) Architecture for building scalable object oriented web database applications
US20070055647A1 (en) Dynamic class inheritance and distributed caching with object <->relational mapping and Cartesian model support in a database manipulation and mapping system
US20040123048A1 (en) Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify features
CA2361523A1 (fr) Systeme et procede permettant d'acceder a des memoires de donnees sous forme d'objets
US7912844B2 (en) System for navigating beans using filters and container managed relationships
KR20040102053A (ko) 데이터 액세스 방법, 컴퓨터 프로그램 및 컴퓨터
JP2006504194A (ja) 透過的ejbサポート及び水平データパーティショニング
WO2004107162A1 (fr) Systeme de mise en correspondance et de manipulation de base de donnees dynamique orientee objets
Schmoelzer et al. The entity container-an object-oriented and model-driven persistency cache
EP1040432B1 (fr) Procede et appareil de chargement de procedures stockees dans une base de donnees correspondant a des dependances de donnees orientees objet
WO2003077123A1 (fr) Page de presentation affichable
CA2429154A1 (fr) Systeme dynamique de manipulation et de mappage d'une base de donnees orientee objet
WO2003077113A1 (fr) Mise en oeuvre de session javabean de systeme, procede et logiciel de creation ou de conservation de la persistance transparente repartie d'objets de donnees complexes et leurs relations de donnees
Talby et al. The design and implementation of a metadata repository
Myatt Creating Java Enterprise Projects
Foderick Object-relational Mapping–First Steps
Java Creating Java Enterprise Projects
Barzewski et al. Java Programming with SAP NetWeaver
Rooney Enterprise JavaBeans 3.0

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP