WO2001008008A1 - Object property meta model emulator for legacy data structures - Google Patents

Object property meta model emulator for legacy data structures Download PDF

Info

Publication number
WO2001008008A1
WO2001008008A1 PCT/US2000/019836 US0019836W WO0108008A1 WO 2001008008 A1 WO2001008008 A1 WO 2001008008A1 US 0019836 W US0019836 W US 0019836W WO 0108008 A1 WO0108008 A1 WO 0108008A1
Authority
WO
WIPO (PCT)
Prior art keywords
property
wrapper
data structures
pseudo
legacy
Prior art date
Application number
PCT/US2000/019836
Other languages
French (fr)
Inventor
Eric Mintz
Original Assignee
Computer Associates Think, 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 Computer Associates Think, Inc. filed Critical Computer Associates Think, Inc.
Priority to JP2001513035A priority Critical patent/JP2003535383A/en
Priority to CA002380256A priority patent/CA2380256A1/en
Priority to EP00950488.7A priority patent/EP1236102B1/en
Priority to AU63587/00A priority patent/AU779588B2/en
Priority to IL14777500A priority patent/IL147775A0/en
Priority to KR1020027000990A priority patent/KR20020035567A/en
Priority to BR0012715-9A priority patent/BR0012715A/en
Publication of WO2001008008A1 publication Critical patent/WO2001008008A1/en
Priority to HK03101245.8A priority patent/HK1050936A1/en

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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Definitions

  • the present invention is directed to computer software programs. More particularly,
  • the present invention is directed to an interface between an object-oriented software program and a non-object-oriented software program.
  • An "object” contains both code (sequences of instructions) and data
  • an interface class is defined for each pseudo property to be
  • a C++ wrapper is built around each legacy data structure that implements the
  • Fig. 1 is a graphical representation illustrating example output of a "legacy"
  • Fig. 2 is a architectural diagram of one embodiment of the present invention interfaced with a legacy program such as the program of Fig. 1 written in C.
  • Fig. 3 is a flowchart of the steps executed when a user selects one of the components displayed by the interface of Fig. 1 in accordance with one embodiment of the present invention.
  • Fig. 4 is a flowchart of the steps executed for an OnlnitData event in accordance with one embodiment of the present invention.
  • Fig. 5 is a flowchart of the steps executed when an Apply message is received and the data is saved in accordance with one embodiment of the present invention.
  • Fig. 6 is a flowchart of the steps executed when data is validated in accordance with one embodiment of the present invention.
  • Fig. 7 is a flowchart of the steps executed when property values are saved in
  • property page can manipulate data contained in all applicable data structures.
  • an interface class is defined for each pseudo property to be manipulated.
  • wrapper is built around each legacy data structure that implements the interface that was
  • Fig. 1 is a graphical representation illustrating example output from a "legacy"
  • a legacy application program for the purposes of
  • the legacy program of Fig. 1 is a business process application program that includes a
  • the legacy program illustrates business processes and stores data
  • interface 10 includes different components.
  • interface 10 includes boxes 12-14 that each
  • box 12 represents the activity of washing the dog
  • box 13 represents the
  • box 14 represents the activity of drying the dog.
  • Interface 10 further includes arrows 20-23. Each arrow represents a relationship
  • Arrow 20 indicates a dirty dog
  • arrow 21 indicates a soapy dog is output from activity 12 and input into
  • arrow 22 indicates a wet dog is output from activity 13 and input into
  • ET Interface 10 also includes an attribute 30 that indicates that a tub is used in activities
  • Interface 10 can also include an entity component, and many other types of
  • Each component visible in interface 10 can be selected and edited by a user. For example,
  • a user can click on activity 13, or arrow 20.
  • the components would each be
  • object-oriented language such as in C++.
  • object-oriented language such as in C++.
  • they are considered data structures in a
  • non-object-oriented language such as C.
  • Each component of interface 10 has one 027 more attributes or properties associated with it.
  • the attributes are contained in data structures. Examples of attributes include a note
  • an attribute or property is any value that is associated with a component of
  • interface 10 or an entry in a dictionary associated with interface 10, or an entry in a list or a
  • object and properties associated with an object is well known and is referred to as an "object
  • each component can have a note attribute.
  • That is doing modeling with the program can annotate an activity, an arrow, a data store, etc.
  • the legacy code contains a separate dialog
  • a property page can allow a user to set note and
  • Fig. 2 is a architectural diagram of the present invention interfaced with a legacy
  • the legacy program 40 contains multiple
  • Each data structure 41-45 strewn about in a haphazard fashion.
  • Each data structure has common properties such as name, description, etc.
  • properties such as name, description, etc.
  • a wrapper module 50 is coupled to legacy program 40. Wrapper module 50 is a
  • wrapper object written in an objectoriented language such as C++.
  • wrapper object are objects 51-53 for each property such as a name object 51, a description
  • Run-Time Type Identification commands to impose order on the data structures of legacy program 40.
  • a property page or pages 60 is coupled to wrapper object 50.
  • Property pages 60 is
  • An interface module 70 includes the remaining functionality of the present invention.
  • Interface module 70 includes a hit handler that executes the steps that are performed when a
  • the present invention incorporates a single property page for manipulating
  • definition text and note text would be used for any objects which have this property.
  • the present invention emulates an object/property metamodel. This technique
  • an object having a "Name” property would be associated with an instance of the "Name” property class.
  • the system needs an object's name, it asks the object for the
  • the present invention defines a base wrapper class.
  • the new property pages interact
  • the present invention further defines a policy class (a base property class) for each
  • the base property classes define methods which provide access to iterators which
  • components on the screen are represented by multiple data
  • wrapper class (so as to be able to access the property page framework) and the policy class
  • the property page manipulates the wrapped legacy data structure(s) as follows:
  • Validate ( ) Validate all user edits (i.e., newly entered or changed property values). SaveTo ( ) Post all user changes back to the wrapped legacy data structure(s).
  • Each of the methods receives a pointer to a base wrapper object, and must extract
  • the property page secures access to its
  • the property page takes appropriate action.
  • the present invention uses this C++ dynamic-cast statement to query the wrapper
  • SMALLTALK Run-Time Type identification
  • Fig. 3 is a flowchart of the steps executed when a user selects one of the components
  • the type of component e.g., arrow, activity, etc.
  • interface 10 can display
  • step 110 the information determined at step 100 is passed to a methodology
  • the registry object is a set of code that knows how to handle different
  • This class has exactly one instance in the system.
  • the methodology registry object finds the appropriate methodology user
  • UI interface
  • the appropriate hit handler is located.
  • components include a box associated with an activity, a vertical or horizontal line segment,
  • the event data is sent to the hit handler located at step 130.
  • the hit handler is specialized for the component that the user selected.
  • the hit handler marshals the data structures of legacy program 40 that will
  • the hit handler builds a wrapper around the marshaled data structures.
  • wrapper class for each object that could possibly be hit or selected by
  • the hit handler creates the property pages which apply to the active
  • the hit handler creates a property sheet that contains the property pages.
  • the property sheet construction binds the sheet to the wrapper structure.
  • the hit handler binds the property pages to the property sheet.
  • the hit handler orders the property sheet to perform the update by
  • step 210 the hit handler performs any required post-processing.
  • handler also discards all property pages and the property sheet and wrapper structure used to
  • Fig. 4 is a flowchart of the steps executed for an OnlnitData event.
  • an OnlnitData event At step 300 an
  • Step 300 is performed when a component is
  • the property page framework performs Initialization and invokes a
  • This method differs from property page to property page.
  • Run-Time Type Identification is
  • this is implemented in C++ by casting the wrapper pointer to
  • the wrapper pointer is passed into the LoadFrom call.
  • the cast is via a dynamic_cast operation and fails if the desired pseudo property does not belong to the
  • step 330 it is determined if the cast succeeded. If the cast succeeds, then at step 330.
  • the property value (e.g., name, note, definition, etc.) is extracted and posted to the
  • step 350 corrective action, if needed is taken.
  • Fig. 5 is a flowchart of the steps executed when an Apply message is received and the
  • An Apply message indicates that the system should take any changed value
  • an Apply message is received because the user pressed OK or Apply on
  • the receiving property page passes the event to the containing property
  • step 420 for each property page in the property sheet, it is determined if the page
  • step 450 it is determined if an error occurred. If an error occurred, at step 460 the
  • Fig. 6 is a flowchart of the steps executed when data is validated in accordance with
  • dynamic-cast is used to extract the pointer to the property.
  • ECTIFIED SHEET At step 510, it is determined whether the cast succeeded. If not, at step 520 error handing is executed., otherwise, the property page's validation method is invoked at step 530.
  • step 540 the operation status is returned.
  • Fig. 7 is a flowchart of the steps executed when property pages are saved. At step 710,
  • Run-Time type Identification i.e., dynamic-cast
  • step 730 it is determined whether the cast succeeded. If not, at step 740 error
  • the new property value is saved by invoking the appropriate method in the property class at step 750.
  • the present invention provides a method of allowing legacy data
  • property page can access relevant attributes in all of the legacy data structures. This allows the older legacy code to have some of the advantages of object-oriented code.

Abstract

A method of wrapping legacy data structures (50) enables the data structures to be used with an object-oriented program and enables a single object to access related attributes in multiple legacy data structures (40). In one embodiment, an interface class (70) is defined for each pseudo property to be represented. A C++ wrapper is built around each legacy data structure (50) that implements the interface that was defined in the abstract pseudo property class.

Description

OBJECT PROPERTY META MODEL EMULATOR FOR LEGACY DATA
STRUCTURES
CROSS-REFERENCES TO RELATED APPLICATIONS
This application claims the benefit of U.,S. Provisional Application No. 60/094,107,
filed July 24, 1998.
FIELD OF THE INVENTION
The present invention is directed to computer software programs. More particularly,
the present invention is directed to an interface between an object-oriented software program and a non-object-oriented software program.
BACKGROUND OF THE INVENTION
Object-oriented programming has become an increasingly popular model for writing
computer software. An "object" contains both code (sequences of instructions) and data
(information which the instructions operate On). The use of objects can improve the
maintenance, reusability, and modifiability of software. Examples of object-oriented
programming languages include C++, Smalltalk, and Java.
However, many older software programs are written in non-object-oriented languages.
These programs can be referred to as "legacy" programs, and can be written in languages such
as Fortran, Basic, and C. Many of these legacy programs include data structures and code
structures that need to be used with newer object-oriented languages. Recreating these data
structures so that they are compatible with an object-oriented language is time consuming and
expensive. Therefore, it is desirable to have a way to interface these leclacy data structures
with newer object-oriented code.
Based on the foregoing, there is a need for a method and system for interfacing legacy
software applications with object-oriented software applications. SUMMARY OF THE INVENTION
One embodiment of the present invention is a method of wrapping legacy data
structures so that an object-oriented program can manipulate their field as if they were
properties. In one embodiment, an interface class is defined for each pseudo property to be
manipulated. A C++ wrapper is built around each legacy data structure that implements the
interface that was defined in the abstract pseudo property class.
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a graphical representation illustrating example output of a "legacy"
application program having data structures.
Fig. 2 is a architectural diagram of one embodiment of the present invention interfaced with a legacy program such as the program of Fig. 1 written in C.
Fig. 3 is a flowchart of the steps executed when a user selects one of the components displayed by the interface of Fig. 1 in accordance with one embodiment of the present invention.
Fig. 4 is a flowchart of the steps executed for an OnlnitData event in accordance with one embodiment of the present invention.
Fig. 5 is a flowchart of the steps executed when an Apply message is received and the data is saved in accordance with one embodiment of the present invention.
Fig. 6 is a flowchart of the steps executed when data is validated in accordance with one embodiment of the present invention.
Fig. 7 is a flowchart of the steps executed when property values are saved in
accordance with one embodiment of the present invention. DETAILED DESCRIPTION
One embodiment of the present invention is a method of wrapping legacy data
structures so that the data structures can be used with an object-oriented program and a single
property page can manipulate data contained in all applicable data structures. In one
embodiment, an interface class is defined for each pseudo property to be manipulated. A C++
wrapper is built around each legacy data structure that implements the interface that was
defined in the abstract pseudo property class.
Fig. 1 is a graphical representation illustrating example output from a "legacy"
application program having data structures. A legacy application program, for the purposes of
this patent, is an application program written in a non-objectoriented software programming
language such as Fortran, Basic, or
C. The legacy program of Fig. 1 is a business process application program that includes a
graphical interface 10. The legacy program illustrates business processes and stores data and
data structures for each facet of the business process.
In the example shown in Fig. 1, a process for "cleaning a dog" is illustrated. Interface
10 includes different components. For example, interface 10 includes boxes 12-14 that each
represent an activity. Box 12 represents the activity of washing the dog, box 13 represents the
activity of rinsing the dog, and box 14 represents the activity of drying the dog.
Interface 10 further includes arrows 20-23. Each arrow represents a relationship
among activities, including input and output information. Arrow 20 indicates a dirty dog is
input into activity 12, arrow 21 indicates a soapy dog is output from activity 12 and input into
activity 13. Further, arrow 22 indicates a wet dog is output from activity 13 and input into
activity 14, and arrow 23 indicates a clean dog is output from activity 14.
ET Interface 10 also includes an attribute 30 that indicates that a tub is used in activities
12 and 13. Interface 10 can also include an entity component, and many other types of
components not shown in Fig. 1.
Each component visible in interface 10 can be selected and edited by a user. For
example, a user can click on activity 13, or arrow 20. The components would each be
considered a "class" if the program associated with interface 10 was written in an
object-oriented language such as in C++. However, they are considered data structures in a
non-object-oriented language such as C. When a component is selected to be edit-led, a
separate dialog appears for each component.
Each component of interface 10 has one 027 more attributes or properties associated with it. The attributes, are contained in data structures. Examples of attributes include a note
that a user can attach to each component, a name of the component, a definition of a
component, a duration of activity for a component, etc.
In general, an attribute or property is any value that is associated with a component of
interface 10 or an entry in a dictionary associated with interface 10, or an entry in a list or a
field in any data structure. With object-oriented software, the concept of reifying attributes
and properties associated with an object is well known and is referred to as an "object
property meta model".
One problem with interface 10 and the legacy program associated with it is that each
component (e.g., arrows, activities, etc.) are represented in substantially different ways in the
legacy code. For example, as discussed., each component can have a note attribute. A user
that is doing modeling with the program can annotate an activity, an arrow, a data store, etc.
to make a note for later reference. However, the legacy code contains a separate dialog
routine for each component. Therefore, the legacy code requires writing a first dialog that
puts data on an arrow, a second dialog that puts data on an activity, a third dialog that puts data on a data store, etc. Coding a separate dialog to edit each component is time consuming
and expensive.
One embodiment of the present invention allows a user to develop a single property
page that puts a note on any component and then fan out from that to activities, data stores,
entities, attributes, etc. For example, a property page can allow a user to set note and
definition properties on an arbitrary component. This allows one to reuse a common property
page to set properties for any component which supports them. Inheritance and dynamic
casting in C++ are used to accomplish this in one embodiment.
Fig. 2 is a architectural diagram of the present invention interfaced with a legacy
program such as the program of Fig. 1 written in C. The legacy program 40 contains multiple
data structures 41-45 strewn about in a haphazard fashion. Each data structure has common properties such as name, description, etc. However, with a legacy programming language
such as C there is no way to link together the common properties among data structures. The present invention allows these common properties to be coupled together.
A wrapper module 50 is coupled to legacy program 40. Wrapper module 50 is a
wrapper object written in an objectoriented language such as C++. Associated with the
wrapper object are objects 51-53 for each property such as a name object 51, a description
object 52 and a cost object 53. Wrapper module 50 and property page 60 collaborate to use
Run-Time Type Identification commands to impose order on the data structures of legacy program 40.
A property page or pages 60 is coupled to wrapper object 50. Property pages 60 is
written in an object-oriented language such as C++.
An interface module 70 includes the remaining functionality of the present invention.
Interface module 70 includes a hit handler that executes the steps that are performed when a
component is selected in interface 10 of program 40. In general, the present invention incorporates a single property page for manipulating
a fixed set of values, and the use of that single property page to manipulate these values
wherever they occurred. Therefore, for example, the property page which manipulates the
definition text and note text would be used for any objects which have this property.
In effect, the present invention emulates an object/property metamodel. This technique
isolates property values from the objects which contain them. Instead of containing a name
value, an object having a "Name" property would be associated with an instance of the "Name" property class. When the system needs an object's name, it asks the object for the
value of its "Name" property. The object scans its property list for an instance of the "Name"
property, and if it finds one it returns its value. Otherwise it returns a failure indication. This
procedure generalizes to any property of any basic type.
The present invention defines a base wrapper class. The new property pages interact
with the legacy data structures via classes which descend from the base wrapper. This allows a separation of the implementation of the Property pages from the details of the legacy data
structures and provides a common interface for the manipulation of pseudo properties.
The present invention further defines a policy class (a base property class) for each
property in the system. These classes define, but do not implement, methods which
manipulate the property's value. For a simple property like "Note", the base property class
specifies methods which get and set the property's value. Some property values require
validation; policy classes for such properties must publish validation Methods. For list
properties, the base property classes define methods which provide access to iterators which
traverse and manipulate the property values. These iterators are themselves specified as policy
classes for maximum flexibility. When a programmer wants to manipulate the properties associated with a component of interface 10 of Fig. 1 using the present invention, the programmer does the following:
1. Determine which legacy data structure(s) would be affected by the
manipulation. In some instances, components on the screen are represented by multiple data
5 structures.
2. Determine which properties were associated with the diagram component to be
manipulated and assemble or create the requisite pseudo property policy interface classes.
3. Define a component wrapper class. This class is inherited from the base
wrapper class (so as to be able to access the property page framework) and the policy class
0 associated with each property that needs manipulation.
4. Implement the component wrapper class defined in the preceding step. The
details of the implementation depend on the nature of the underlying legacy data structures.
5. Assemble (or implement, if required) the property pages which manipulate the
desired properties. 5 The property page manipulates the wrapped legacy data structure(s) as follows:
• Extract and display property Values;
• Validate user edits (i.e., new or altered property values); and
• Post new property values to the wrapped legacy data structure(s)
To accomplish this, the programmer using one embodiment of the present invention
o implements the following methods in the property page.
Method Purpose
LoadFrom ( ) Extract data from the wrapped legacy data structure(s) and display same
on the screen.
Validate ( ) Validate all user edits (i.e., newly entered or changed property values). SaveTo ( ) Post all user changes back to the wrapped legacy data structure(s).
Each of the methods receives a pointer to a base wrapper object, and must extract
manipulated property values via this pointer. They accomplish this by using a dynamic-cast to
convert the base wrapper pointer into a pointer to the policy class for the desired property. If
the cast succeeds (i.e., returns a nonNULL result), the property page secures access to its
desired property. If the cast fails, the property page takes appropriate action.
The present invention uses this C++ dynamic-cast statement to query the wrapper
about the presence of a pseudo property. This is a novel way to simulate an object/property
metamodel (wherein property values are stored separately from their owning objects) during the manipulation of legacy "C" data structures. This technique can be implemented with any
object-oriented language which supports Run-Time Type identification (e.g., SMALLTALK,
Java, EIFFEL, etc.).
The following flowcharts describe the combined functionality of wrapper module 50,
property page 60 and interface module 70.
Fig. 3 is a flowchart of the steps executed when a user selects one of the components
displayed by interface 10 of Fig. 1 in accordance with one embodiment of the present
invention.
At step 100, the type of component (e.g., arrow, activity, etc.) that was selected is
determined. If multiple types of diagrams can be displayed by interface 10, then the type of
diagram selected is also determined at step 100. In one embodiment, interface 10 can display
one of three diagram types.
At step 110, the information determined at step 100 is passed to a methodology
registry object. The registry object is a set of code that knows how to handle different
components and diagram types. This class has exactly one instance in the system. At step 120, the methodology registry object finds the appropriate methodology user
interface ("UI"). -based handler object to handle for the event. There is a unique handler object
for each diagram type.
At step 130, the appropriate hit handler is located. One hit handler exists for each type
of component or object that are selectable by the user in the diagram. Examples of
components include a box associated with an activity, a vertical or horizontal line segment,
etc.
At step 140, the event data is sent to the hit handler located at step 130. The
component type is stripped out of the event data because the hit handler already knows the
component type. The hit handler is specialized for the component that the user selected.
At step 150, the hit handler marshals the data structures of legacy program 40 that will
be affected by the hit. This varies by the type of component handled.
At step 160, the hit handler builds a wrapper around the marshaled data structures.
There is one specific wrapper class for each object that could possibly be hit or selected by
the user and for each type of diagram. Therefore, for example, a box in a process diagram has
a different wrapper structure than a box in a data flow diagram.
At step 170, the hit handler creates the property pages which apply to the active
component. These can include name, status, definition, etc., pages. The property pages are
typically displayed as graphical "tabs" of an overall property sheet.
At step 180, the hit handler creates a property sheet that contains the property pages.
The property sheet construction binds the sheet to the wrapper structure.
At step 190, the hit handler binds the property pages to the property sheet. The order
of binding determines the tab order of the display. At step 200, the hit handler orders the property sheet to perform the update by
invoking the "Display and Perform Update" method. This step is where the interaction
between the property page and interface 10 occurs.
Finally, at step 210 the hit handler performs any required post-processing. The hit
handler also discards all property pages and the property sheet and wrapper structure used to
process the component selected.
The following flowcharts provide details on how the property pages GO function with
respect to wrapper module 50. Each property page logic is driven off standard windows
events. The main events handled are:
1) Onlnit Dialog — Setup property page display;
2) OnApply — Validate and save data; and
3) OnCancel — Cancel edit.
Other events manage the help display and display state (appearance).
Property pages start out uninitialized. They become initialized when the user displays
them. The framework ignores uninitialized pages.
Fig. 4 is a flowchart of the steps executed for an OnlnitData event. At step 300 an
OnlnitData event is received by a property page. Step 300 is performed when a component is
selected on interface 10 of Fig. 1, or a tab of a property sheet is selected. The OnlnitData
event tells the property page that it is about to be displayed for the first time and it should perform a setup.
At step 310, the property page framework performs Initialization and invokes a
specialized LoadFrom method. This method differs from property page to property page.
At step 320, for each property value to display, Run-Time Type Identification is
performed. In one embodiment, this is implemented in C++ by casting the wrapper pointer to
the desired property type. The wrapper pointer is passed into the LoadFrom call. The cast is via a dynamic_cast operation and fails if the desired pseudo property does not belong to the
wrapper. Belonging is via multiple Inheritance.
At step 330, it is determined if the cast succeeded. If the cast succeeds, then at step
340, the property value (e.g., name, note, definition, etc.) is extracted and posted to the
property page for display.
If the cast failed at step 330, at step 350 corrective action, if needed is taken.
Fig. 5 is a flowchart of the steps executed when an Apply message is received and the
data is saved. An Apply message indicates that the system should take any changed value and
apply it to the underlying system (i.e., save the data).
At step 400, an Apply message is received because the user pressed OK or Apply on
the property sheet.
At step 410, the receiving property page passes the event to the containing property
sheet for processing.
At step 420, for each property page in the property sheet, it is determined if the page
is active. If it: is, at step 430 the page is asked to validate all of its edits.
At step 450, it is determined if an error occurred. If an error occurred, at step 460 the
page with the error is brought to the front of the tabbed dialog.
If no error occurred at step 450, for each initialized display in the system in which an
edit occurred, the properties that the user changed are saved.
Fig. 6 is a flowchart of the steps executed when data is validated in accordance with
one embodiment of the present invention. Initially, the pointer to the base wrapper is passed
to the call.
At step 500, for each property associated with the property page requiring validation,
dynamic-cast is used to extract the pointer to the property.
ECTIFIED SHEET At step 510, it is determined whether the cast succeeded. If not, at step 520 error handing is executed., otherwise, the property page's validation method is invoked at step 530.
Finally at step 540 the operation status is returned.
Fig. 7 is a flowchart of the steps executed when property pages are saved. At step 710,
for each property that the page manipulates (e.g., name, definition, etc.) a pointer is extracted
via Run-Time type Identification (i.e., dynamic-cast).
At step 730, it is determined whether the cast succeeded. If not, at step 740 error
handing is executed. Otherwise, the new property value is saved by invoking the appropriate method in the property class at step 750.
As described, the present invention provides a method of allowing legacy data
structures to be used with an objectoriented program. Therefore, for example, a single
property page can access relevant attributes in all of the legacy data structures. This allows the older legacy code to have some of the advantages of object-oriented code.
Several embodiments of the present invention are specifically illustrated and/or
described herein. However, it will be appreciated that modifications and variations of the
present invention are covered by the above teachings and within the purview of the appended
claims without departing from the spirit and intended scope of the invention.

Claims

WHAT IS CLAIMED IS:
1. A method of manipulating an attribute of a legacy data structure, said method
comprising:
(a) receiving a pointer to a wrapper object that is bound to the legacy data
5 structure;
(b) defining a component wrapper class;
(c) querying the wrapper class about the presence of a pseudo property; and
(d) creating an object having access to the pseudo property.
2. The method of claim 1, wherein step (c) comprises performing Run-Time Type
0 Identification.
3. The method of claim 1, wherein step (c) comprises executing a dynamic-cast.
4. The method of claim 1 , wherein the data structures are written in C.
5. The method of claim 1, wherein said object is written in C++.
6. The method of claim 1, wherein said object is written in Java.
5 7. The method of claim 1, wherein said object is a property page.
8. A method of manipulating attributes of legacy data structures, said method
comprising:
(a) defining a base wrapper class;
(b) defining pseudo-property policy classes for each attribute type being
o manipulated; (c) defining one or more wrapper classes for each distinct set of legacy data
structures to be manipulated;
(d) basing each of the wrapper classes on the base wrapper class;
(e) basing each of the wrapper classes on the pseudo-property policy classes;
(f) reusing the pseudo-property policy classes to represent related attributes in the distinct data structures;
(g) creating an object that manipulates the base wrapper class;
(h) querying the wrapper classes about the presence of the pseudo-property; and
(i) manipulating attributes in the data structures via the pseudo-properties implemented in a wrapper object.
PCT/US2000/019836 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures WO2001008008A1 (en)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2001513035A JP2003535383A (en) 1999-07-23 2000-07-21 Object property metamodel emulator for legacy data structures
CA002380256A CA2380256A1 (en) 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures
EP00950488.7A EP1236102B1 (en) 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures
AU63587/00A AU779588B2 (en) 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures
IL14777500A IL147775A0 (en) 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures
KR1020027000990A KR20020035567A (en) 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures
BR0012715-9A BR0012715A (en) 1999-07-23 2000-07-21 Object meta property model emulator for inheritance data structures
HK03101245.8A HK1050936A1 (en) 1999-07-23 2003-02-18 Object property meta model emulator for legacy data structures

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/359,038 1999-07-23
US09/359,038 US6305007B1 (en) 1998-07-24 1999-07-23 Object property meta model emulator for legacy data structures

Publications (1)

Publication Number Publication Date
WO2001008008A1 true WO2001008008A1 (en) 2001-02-01

Family

ID=23412054

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/019836 WO2001008008A1 (en) 1999-07-23 2000-07-21 Object property meta model emulator for legacy data structures

Country Status (12)

Country Link
US (1) US6305007B1 (en)
EP (1) EP1236102B1 (en)
JP (1) JP2003535383A (en)
KR (1) KR20020035567A (en)
CN (1) CN1371499A (en)
AU (1) AU779588B2 (en)
BR (1) BR0012715A (en)
CA (1) CA2380256A1 (en)
HK (1) HK1050936A1 (en)
IL (1) IL147775A0 (en)
WO (1) WO2001008008A1 (en)
ZA (1) ZA200200613B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003036464A2 (en) * 2001-10-22 2003-05-01 Sun Microsystems, Inc. Inter-process communication using different programming languages

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842877B2 (en) 1998-12-18 2005-01-11 Tangis Corporation Contextual responses based on automated learning techniques
US7046263B1 (en) 1998-12-18 2006-05-16 Tangis Corporation Requesting computer user's context data
US6801223B1 (en) 1998-12-18 2004-10-05 Tangis Corporation Managing interactions between computer users' context models
US7231439B1 (en) 2000-04-02 2007-06-12 Tangis Corporation Dynamically swapping modules for determining a computer user's context
US6513046B1 (en) 1999-12-15 2003-01-28 Tangis Corporation Storing and recalling information to augment human memories
US8181113B2 (en) 1998-12-18 2012-05-15 Microsoft Corporation Mediating conflicts in computer users context data
US6920616B1 (en) 1998-12-18 2005-07-19 Tangis Corporation Interface for exchanging context data
US9183306B2 (en) 1998-12-18 2015-11-10 Microsoft Technology Licensing, Llc Automated selection of appropriate information based on a computer user's context
US7225229B1 (en) 1998-12-18 2007-05-29 Tangis Corporation Automated pushing of computer user's context data to clients
US8225214B2 (en) 1998-12-18 2012-07-17 Microsoft Corporation Supplying enhanced computer user's context data
US7779015B2 (en) * 1998-12-18 2010-08-17 Microsoft Corporation Logging and analyzing context attributes
US6791580B1 (en) 1998-12-18 2004-09-14 Tangis Corporation Supplying notifications related to supply and consumption of user context data
US6578195B1 (en) * 1999-12-29 2003-06-10 Lucent Technologies Inc. Process for data encapsulation in large scale legacy software
US7464153B1 (en) 2000-04-02 2008-12-09 Microsoft Corporation Generating and supplying user context data
WO2001075676A2 (en) 2000-04-02 2001-10-11 Tangis Corporation Soliciting information based on a computer user's context
US20020054130A1 (en) 2000-10-16 2002-05-09 Abbott Kenneth H. Dynamically displaying current status of tasks
WO2002054171A2 (en) * 2000-12-06 2002-07-11 Biosentients, Inc. System, method, software architecture and business model for an intelligent object based information technology platform
US20020156756A1 (en) * 2000-12-06 2002-10-24 Biosentients, Inc. Intelligent molecular object data structure and method for application in heterogeneous data environments with high data density and dynamic application needs
US20100223295A1 (en) * 2000-12-06 2010-09-02 Io Informatics, Inc. Applied Semantic Knowledgebases and Applications Thereof
US20020116700A1 (en) * 2001-02-12 2002-08-22 Clemente Izurieta Method for linking non-object oriented data models to object oriented data models using a technique to achieve zero-size object mapping
US20020147962A1 (en) * 2001-02-12 2002-10-10 International Business Machines Corporation Method and system for incorporating legacy applications into a distributed data processing environment
US7493391B2 (en) * 2001-02-12 2009-02-17 International Business Machines Corporation System for automated session resource clean-up by determining whether server resources have been held by client longer than preset thresholds
US6842905B2 (en) * 2001-03-29 2005-01-11 International Business Machines Corporation Method and system for implementing collection program interface for accessing a collection of data associated with a legacy enumeration application interface
US7107595B2 (en) * 2001-04-05 2006-09-12 Hewlett-Packard Development Company, L.P. Mechanism for mapping Java objects onto an LDAP repository
KR100456023B1 (en) * 2001-12-19 2004-11-08 한국전자통신연구원 Method and apparatus for wrapping existing procedure oriented program into component based system
US7089529B2 (en) * 2002-08-26 2006-08-08 International Business Machines Corporation System and method for creating reusable management instrumentation for IT resources
CA2400590A1 (en) * 2002-08-29 2004-02-29 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for converting legacy programming language data structures to schema definitions
US7298836B2 (en) * 2002-09-24 2007-11-20 At&T Bls Intellectual Property, Inc. Network-based healthcare information systems
US7224698B2 (en) * 2002-11-27 2007-05-29 Bellsouth Intellectual Property Corporation Edge side assembler
US7263102B2 (en) 2002-11-27 2007-08-28 At&T Intellectual Property, Inc. Multi-path gateway communications device
US7379464B2 (en) * 2002-11-27 2008-05-27 At&T Bls Intellectual Property, Inc. Personal digital gateway
CN1306430C (en) * 2002-12-31 2007-03-21 上海科泰世纪科技有限公司 User self-defining event mechanism based on structure
US7573999B2 (en) 2002-12-31 2009-08-11 At&T Intellectual Property I, L.P. Computer telephony integration (CTI) complete healthcare contact center
US7620170B2 (en) * 2002-12-31 2009-11-17 At&T Intellectual Property I, L.P. Computer telephony integration (CTI) complete customer contact center
US7356139B2 (en) * 2002-12-31 2008-04-08 At&T Delaware Intellectual Property, Inc. Computer telephony integration (CTI) complete hospitality contact center
US7248688B2 (en) 2003-01-27 2007-07-24 Bellsouth Intellectual Property Corporation Virtual physician office systems and methods
US8149823B2 (en) * 2003-01-27 2012-04-03 At&T Intellectual Property I, L.P. Computer telephony integration (CTI) systems and methods for enhancing school safety
US7440567B2 (en) 2003-01-27 2008-10-21 At&T Intellectual Property I, L.P. Healthcare virtual private network methods and systems
US7308679B2 (en) * 2003-09-26 2007-12-11 International Business Machines Corporation Method and computer program product for providing a meta-data programming language level interface
US7739164B1 (en) 2003-10-07 2010-06-15 Trading Technologies International, Inc. System and method for displaying risk data in an electronic trading environment
US7752118B1 (en) * 2003-10-07 2010-07-06 Trading Technologies International, Inc. System and method for risk grid display in an electronic trading environment
US20050234976A1 (en) * 2004-04-20 2005-10-20 Relativity Technologies, Inc. System and method for deriving an object oriented design from the business rules of a legacy application
US20050235266A1 (en) * 2004-04-20 2005-10-20 Relativity Technologies, Inc. System and method for business rule identification and classification
US20050273709A1 (en) * 2004-06-04 2005-12-08 Ira Lough System and method for conversion of legacy language conforming data entries to industry-standard language conforming data entries
US20080163159A1 (en) * 2007-01-03 2008-07-03 Relativity Technologies, Inc. System and method for extracting UML models from legacy applications
CN102915215B (en) 2011-08-03 2015-05-27 精工爱普生株式会社 Control device and control method
CN104484518A (en) * 2014-12-03 2015-04-01 中国航空工业集团公司第六三一研究所 Transfer method from demand model to simulation model
WO2018089800A1 (en) 2016-11-10 2018-05-17 Ronald Scott Visscher System with a unique and versatile evaluation method
CN111859695B (en) * 2020-07-28 2021-07-02 中国科学技术大学 Atmospheric pollution component inversion method based on high-resolution five-satellite ultraviolet visible hyperspectrum

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764973A (en) * 1994-02-08 1998-06-09 Enterworks.Com, Inc. System for generating structured query language statements and integrating legacy systems
US6016392A (en) * 1995-11-03 2000-01-18 Intergraph Corporation Method for object-oriented programming using dynamic interfaces

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US5924074A (en) * 1996-09-27 1999-07-13 Azron Incorporated Electronic medical records system
US5809509A (en) * 1996-10-25 1998-09-15 International Business Machines Corporation Method for using a non-object-oriented datastore as a generic persistent datastore for persistent objects
US6161219A (en) * 1997-07-03 2000-12-12 The University Of Iowa Research Foundation System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints
US6016495A (en) * 1997-09-19 2000-01-18 International Business Machines Corporation Object-oriented framework mechanism for providing persistent storage
US6073129A (en) * 1997-12-29 2000-06-06 Bull Hn Information Systems Inc. Method and apparatus for improving the performance of a database management system through a central cache mechanism
US6192369B1 (en) * 1998-06-15 2001-02-20 International Business Machines Corporation Object-oriented paradigm for accessing transactional requests by modeling I/O message queues into an object framework
US6202069B1 (en) * 1998-04-30 2001-03-13 International Business Machines Corporation Execution paradigm for accessing hierarchical data using an object framework

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764973A (en) * 1994-02-08 1998-06-09 Enterworks.Com, Inc. System for generating structured query language statements and integrating legacy systems
US6016392A (en) * 1995-11-03 2000-01-18 Intergraph Corporation Method for object-oriented programming using dynamic interfaces

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1236102A4 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003036464A2 (en) * 2001-10-22 2003-05-01 Sun Microsystems, Inc. Inter-process communication using different programming languages
WO2003036464A3 (en) * 2001-10-22 2003-08-21 Sun Microsystems Inc Inter-process communication using different programming languages
US7444619B2 (en) 2001-10-22 2008-10-28 Sun Microsystems, Inc. Inter-process communication using different programming languages

Also Published As

Publication number Publication date
KR20020035567A (en) 2002-05-11
US6305007B1 (en) 2001-10-16
AU6358700A (en) 2001-02-13
JP2003535383A (en) 2003-11-25
AU779588B2 (en) 2005-02-03
CN1371499A (en) 2002-09-25
EP1236102B1 (en) 2016-03-30
HK1050936A1 (en) 2003-07-11
EP1236102A4 (en) 2003-07-16
IL147775A0 (en) 2002-08-14
BR0012715A (en) 2003-07-15
ZA200200613B (en) 2003-04-30
CA2380256A1 (en) 2001-02-01
EP1236102A1 (en) 2002-09-04

Similar Documents

Publication Publication Date Title
AU779588B2 (en) Object property meta model emulator for legacy data structures
Laddad AspectJ in action: practical aspect-oriented programming
Healy et al. Silk: A Java-based process simulation language
US6185728B1 (en) Development system with methods for type-safe delegation of object events to event handlers of other objects
US8479150B2 (en) Compositional modeling of integrated systems using event-based legacy applications
Löwy COM and. NET component services
US20020174161A1 (en) Java startup wrapper
US6163813A (en) Pattern for instantiating objects of unknown type in object-oriented applications
US7665062B1 (en) System and methodology for design-time dynamic class type construction
EP1717715B1 (en) State machine-driven interactive system and associated methods
Gschwind Adaptation and composition techniques for component-based software engineering
Sobolewski et al. Unified mogramming with var-oriented modeling and exertion-oriented programming languages
Kavaldjian et al. Transforming discourse models to structural user interface models
Sliski et al. An architecture for flexible, evolvable process-driven user-guidance environments
Gregersen et al. Javeleon: An integrated platform for dynamic software updating and its application in self-* systems
JP2002116911A (en) Automatic generation device for object-oriented program
Spacek Design and Implementation of a Reflective Component-Oriented Programming and Modeling Language
Grechanik et al. Composing integrated systems using gui-based applications and web services
Sneed Migrating to Web services
Albert et al. Automated extraction of abstract behavioural models from JMS applications
Newton The Definitive Guide to the Microsoft Enterprise Library
Arni et al. Commercial Component Creation (EJB 2.0)
Gamonal Capdevila Reengineering a Content Manager for Humanoid Robots with Web Technology
Mørk Evolution by Resemblance in Component-based Visual Application Development
Garrido Object Oriented Modeling

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 CR CU CZ DE DK DM DZ 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 PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA 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 ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 147775

Country of ref document: IL

Ref document number: 2380256

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1020027000990

Country of ref document: KR

Ref document number: 63587/00

Country of ref document: AU

Ref document number: IN/PCT/2002/103/KOL

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 2000950488

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 008122679

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 1020027000990

Country of ref document: KR

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 2000950488

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 63587/00

Country of ref document: AU

WWR Wipo information: refused in national office

Ref document number: 1020027000990

Country of ref document: KR