|Número de publicación||US5535389 A|
|Tipo de publicación||Concesión|
|Número de solicitud||US 08/009,170|
|Fecha de publicación||9 Jul 1996|
|Fecha de presentación||26 Ene 1993|
|Fecha de prioridad||26 Ene 1993|
|Número de publicación||009170, 08009170, US 5535389 A, US 5535389A, US-A-5535389, US5535389 A, US5535389A|
|Inventores||David B. Elder, Stephen P. Krosner, Paul E. Miller, Harold R. Skinner|
|Cesionario original||International Business Machines Corporation|
|Exportar cita||BiBTeX, EndNote, RefMan|
|Citas de patentes (3), Otras citas (2), Citada por (152), Clasificaciones (10), Eventos legales (5)|
|Enlaces externos: USPTO, Cesión de USPTO, Espacenet|
This invention relates generally to systems and methods for providing repeatable process capabilities in object oriented computing systems (also called object oriented computing environments). In particular, the present invention relates to systems and methods which use business process objects to provide such repeatable process capabilities.
In an object oriented environment, there are no programs and data as in the traditional sense. All processing is done by routines known as methods which are encapsulated with the data that they process, into entities known as objects.
An object is anything that has value to the end result, or is an input to the end result of some form of work to be done. All objects are represented by data and methods, which when combined are said to be encapsulated. This encapsulation hides the data of the object from everything except the methods of the object.
The combined set of methods, along with the data that the methods have access to, represents a unit of processing. This unit is known as the behavior of the object. When a set of behaviors is put together to accomplish an end result, it is known as a process.
When an object needs to invoke the methods of another object, it sends the target object a message requesting that a certain method or action be performed on, or with, the target object's data. This behavior may cause other messages to be emitted, expanding the overall behavior that is executed. Each message is comprised of the object and action to be exercised, and is known as an object-action message. The object actually sends messages to a software component called an object manager that makes certain that the target object is available and routes the object-action message to the target object.
Normal execution in an object oriented environment is a single user-directed object-action. This allows the maximum granularity of combinations of behavior for the user, but makes very complex or repetitious behavior difficult to repeat or measure. For a predetermined sequence of object-actions that are to be repeated frequently as a process, this mode of operation is very tedious and error-prone. Control of many processes demands repeatable sequences that can be measured and tracked. Each repeatable sequence is known as a business process. The user selects and sequences the series of object-action pairs to be processed to arrive at a desired result. This mode of operation is dictated by the user-workplace interface model that spreads available objects on the user's desktop, and allows the user to select one object and then choose the action to be performed on the object, or using the object.
When data that is accessible by multiple objects is processed, the state of the data must be managed within the context defined by the user. Data must be recoverable in the same context in which it is used. If an update to data that is contextually related to other data falls, then prior updates to related data may be contextually invalid and must be undone to return to the state that existed prior to the update. Contextually related data is managed by what is known as a unit of work manager. Data that has completed all state changes in a contextual relationship must be committed to the database. When an error occurs, data must be recovered, or rolled back to the original state.
The object manager of an object-oriented processing environment provides the contextual relationship of data that is used by a user. The same context in which a user updates data is used to undo changes when an error occurs.
Since the object manager has knowledge of the objects and actions that are specified by the user, and the sequence in which objects are affected, this information is not only of value for logical unit of work management, but can also be used to define a specific sequence of object-action pairs (messages) that can then be used in a repeatable sequence or business process.
The present invention is directed to computer application programs which operate in an object oriented computing environment on a data processor containing a memory, in which a plurality of objects are categorized into one or more classes which define methods of the objects categorized therein, and in which messages are sent by the data processor to at least one object to perform at least one action upon the object.
In particular, the present invention is directed to systems and methods of the computer application programs for providing a repeatable business process capability. The repeatable business process capability is used to define a specific sequence of object-action messages that form a business process, and which are captured and saved for subsequent selection and execution through the user-workplace interface. The repeatable business process capability is implemented using business process objects.
The present invention is further directed to systems and methods of the computer application programs for providing a repeatable business process capability in the object oriented computing environment such that a specific sequence of object-action messages can be repeated frequently and without introducing any user entry error into the sequence of messages.
The present invention provides a repeatable business process capability in an efficient manner by storing business process information in business process objects. The business process information stored in the business process objects includes messages (i.e., objects and actions) that the user has specified and the logical navigation, or sequence, of these messages.
A better appreciation of these and other advantages and features of the present invention, as well as how the present invention realizes them, will be gained from the following detailed description and drawings of the preferred embodiment, and from the claims.
The present invention will be described with reference to the accompanying drawings, wherein:
FIG. 1 shows a graphical representation of a computing environment in which the present invention operates.
FIG. 2 shows a graphical representation of an object instance in connection with the present invention.
FIG. 3 shows a structural diagram of an object oriented computing environment module.
FIG. 4 shows a messaging system in connection with the present invention.
FIG. 5 shows an example of a user-driven object-action business process.
FIG. 6 shows an example of object manager message routing.
FIG. 7 shows an example of a business process object.
FIG. 8 shows an example of object manager message routing with process object class capture function.
FIG. 9 shows an example of business process object message routing.
FIG. 10 shows an operational flowchart of business process object method selection.
FIG. 10A shows a block diagram of the present invention, illustrating the process of executing and storing object and action pairs in an object oriented environment.
FIG. 11 shows an operational flowchart for the CREATE method in connection with the present invention.
FIG. 12 shows an operational flowchart for the MODIFY method in connection with the present invention.
FIG. 13 shows an operational flow chart for the RUN method in connection with the present invention.
FIG. 14 shows an operational flow chart for the STOP method in connection with the present invention.
FIG. 15 shows an operational flow chart for the SUSPEND method in connection with the present invention.
FIG. 16 shows an operational flow chart for the RESUME method in connection with the present invention.
FIG. 17 shows an example of a screen display for user selection of a business process instance.
This section first provides a brief description of object oriented computing system concepts which are pertinent to the present invention. A more detailed description of the concepts discussed in this section can be found in a number of references, including Object-Oriented Systems Analysis by Sally Shlaer and Stephen J. Mellor (Yourdon Press Computing Series, 1988), Object Oriented Design with Application by Grady Booch (The Benjamin/Cummings Publishing Company, 1990) and Object Oriented Software Construction by B. Meyer (Prentice Hall, 1988).
As shown in FIG. 1, an object oriented programming environment contains a computer program 138 which operates on a computer plaltform 102. The computer program 138 includes an application program 130 and an object oriented programming system 136.
The computer platform 102 includes hardware units 110 including a central processing unit (CPU) 114, a main memory (RAM) 112, and an input/output interface 116.
The computer platform 102 also includes microinstruction code 108, an operating system 106, and a database manager 104. Various peripheral components may be connected to the computer platform 102, such as a terminal 120, a data storage device 124, and a printing device 128. The data storage device or secondary storage 124 may include hard disks and tape drives. The data storage device 124 represents non-volatile storage. External databases 134 are stored on the secondary storage 124. In object oriented programming systems the operating system uses virtual memory and manages all paging.
Users 132 interact with the computer platform 102 and the computer program 138 via terminal 120.
In a preferred embodiment of the present invention, the computer platform 102 includes a computer having an IBM System 370 architecture. The operating system 106 which runs thereon is an IBM Multiple Virtual Storage (MVS). The database manager 104 is an IBM DB2, which is a relational database manager. Also, the computer program 138 is preferably written in Intermediate C, which is an object oriented dialect of the C computer programing language. Intermediate C is similar to the C++ computer programming language.
FIG. 2 presents a graphical representation of an object 202. The object 202 contains data 214 (also called attributes) and the actions 204, 206, 208, 210, 212 (also called methods). Generally, methods are categorized as functions or procedures. A function is a type of code that will return a result. Normally a function tends not to modify the state of the parameters given.
As shown in FIG. 2, the object 202 is modeled by a doughnut, with the data 214 being in the center of the doughnut. The data 214 represent various attributes of the object 202. The color of one's eyes, date of birth, name, etc., could be attributes of an object representing a person. Around the outer part of the doughnut, are the actions (also called methods) 204, 202, 208, 210, 212 to be performed on the data 214.
Object oriented programming systems categorize objects into classes. Thus, a class defines the features of its objects. A feature is either a method or an attribute. Features can be either exported, i.e., other methods can call them, or features can be non-exported, i.e., they can not be called except by a within-class method. An instance is a specific object with the features defined by its class.
An object has an arbitrarily unique value when using the example of doughnuts representing objects of the same type of class. The outer part of the doughnuts which represent the actions or functions of the instance objects are arranged identically for each of the objects in the particular class. Similarly, the data in the inside of the doughnuts is identically structured. Therefore, if two objects are of the same type, their structures are identical except for the actual data or attribute values.
The functions or actions to be performed on the data totally surround the data and in a sense encapsulate the data. Conventionally, the only programming that is allowed to know anything about the data are the functions or the routines in the outer part of the doughnut. This form of data encapsulation is not exclusive to object oriented programming. The basic idea behind data encapsulation is to minimize the number of system pieces that one must understand to form a particular set of data attributes.
The functions encapsulating a specific object are the only elements that know or care what the encapsulated data looks like. The functions isolate the encapsulated data from other parts of the system. Therefore one ends up with ultimate flexibility over time to change the data of an object in any desired fashion. Optimally, one is capable of modifying the system as technologies change, by merely changing the data. Alternatively, the product is portable. It can be moved from a relational data base to a hierarchical data base, or to a PC having no particular data base at all. A user is only required to change pieces of the internal data. An object only needs to be concerned about how it represents the data for which it is responsible. This is fundamental to an object oriented environment, since it is a large, portable software product.
FIG. 3 presents a structural diagram of the object oriented computing environment module 136. As shown in FIG. 3, the object oriented computing environment module 136 includes an interactive dialog manager 302, an object manager 304, and a unit of work manager 306.
The interactive dialog manager 302 interacts with the user 132 and with objects such as 202 existing in the application program module 130. The interactive dialog manager 302 receives user commands during interactive, batch and remote processing and sends messages to appropriate objects to implement the user commands.
The object manager 304 and the unit of work manager 306 work together to retrieve the data 214 associated with persistent object instances 202 from the external database 134 and to write and commit the committable data 214 to the external database 134.
The object manager 304 maintains information about persistent object instances 202. The information maintained by the object manager 304 includes a list of the persistent object instances 202, a list of the persistent object instances 202 which are in main memory 112, and a list of the persistent object instances 202 whose methods and committable actions contained therein have produced committable data. The information maintained by the object manager 304 are stored in information tables which are maintained in main memory 112.
The information maintained by the object manager 304 also includes a list of units of work and the persistent objects 202 which are in the units of work. A unit of work defines a program segment which contains committable actions. Commit messages to the unit of work manager 306 affect only the committable actions in the units of work where the commit messages are sent. For example, if units of work UOW-- 1 and UOW-- 2 exist, then a commit message sent from the unit of work UOW-- 1 affects only the committable actions in the unit of work UOW-- 1.
The unit of work manager 306 receives and processes commit messages from methods. The unit of work manager 306 is an object instance. Upon receiving a commit message from a method, the unit of work manager 306 communicates with the object manager 304 to determine the unit of work associated with the method. The unit of work manager 306 further communicates with the object manager 304 to determine the committable data in the unit of work associated with the method. The unit of work manager 306 also determines the persistent object instances 202 associated with the committable data.
The unit of work manager 306 then sends messages to dematerialize methods in the persistent object instances 202 associated with the committable data. In response to the messages from the unit of work manager 306, the dematerialize methods interact with the database manager 104 to write the committable data to the external databases 134.
The unit of work manager is described in greater detail in a co-pending, commonly assigned application Ser. No. 425,607, filed Oct. 23, 1989, entitled "Unit of Work for Preserving Data Integrity of a Database," the disclosure of which is incorporated herein by reference.
Object oriented programming systems are message based systems. Objects invoke or ask other objects to perform an action. A message is an object/action pair with the following format: OBJ@ACTION; the left side of the message operator identifies a specific "object" and is an object reference 300, and the right side specifies what "action" is to be performed on, or with the object. The "@" symbol represents a message operator in intermediate C. If the action is a functional procedure which requires parameters, the syntax of the message object and action will also be followed by a parameter or string of parameters offset by parentheses and separated by commas.
The message is essentially a call. Conceptually, it is a call to a part of the object or into the enabling system called a messenger. A messenger's job is to deliver a request to other objects. The system will essentially see a call to the messenger which will find out where this particular object is located. In this illustration the messenger will essentially pass the call on to that object.
The object manager (304) must resolve both sides of the message operator. It is the messenger's job using a data structure called an object reference to find the correct piece of code, otherwise known as a method, and to find the correct block of data, otherwise known as a data frame. The action is a segment of code, and the object actually identifies a block of data.
Class objects are managed by a loaded classes table (LCT). Instance objects are managed by an object management table (OMT). Object references are pointers used to point to class objects and instance objects. Class objects and instance objects are referred to as frames and are not directly manipulated except by the methods which operate on them.
The flow for the invocation of an instance method is depicted in FIG. 4. Method A of some instance 402 sends a message to method B of some instance 404, which results in a call 406 to the messenger 408. The messenger 408 must resolve class and default instance data addresses by calling the loaded classes table (LCT) 410. The LCT keeps track of those classes which have already been loaded into memory. Classes are not loaded until they are referenced. They are then left in memory for the duration of the session. If the class of instance 402 has not been loaded, the LCT 410 will load it at this time and then call the class to materialize its data.
If the object is an instance, the messenger 408 asks the object management table (OMT) 412 for an indirection pointer to the data frame of the instance object specified by the message. The object manager 304 searches the entries in object management table 412 for a matching object ID. If the instance object is located in the table, the OMT 412 returns the indirection pointer to the instance object, as shown by arrow 414. Otherwise, if this search does not resolve the matching object, and if it is a persistent object, a frame will then be allocated in memory to hold the persistent data. This new object is called to materialize its data from the database.
The messenger 408 calls the LCT 410 for the address of the method specified by the message. At the same time, it establishes the class and default instance data offsets for the method so that it can access the correct data within the object. The LCT 410 searches the classes for the specified method and returns the address of the method to the messenger as depicted by arrow 416.
Using the address just received from the LCT 410, the messenger 408 will call method B 404 as shown at arrow 418, passing it a system data area and the parameters from the call made by method A. The system data area has, among other things, the indirection pointer returned by the OMT 412. If Method B is an instance method, it will access data frame 420 using the indirection pointer which points to the data through an entry in the OMT 412. Alternatively, if it is a class method it will be accessing the class data and the default instance data.
The preferred embodiment of the object manager and messenger is covered in co-pending, commonly owned application Ser. No. 07/602,442, filed Oct. 23, 1990, and entitled, "A Messenger and Object Manager to Implement an Object Oriented Environment", the disclosure of which is incorporated herein by reference.
The preferred embodiment of the object reference data structure is covered in co-pending, commonly owned application Ser. No. 07/602,575, filed Oct. 24, 1990, and entitled, "Object Reference for Use Within an Object Oriented Environment", the disclosure of which is incorporated herein by reference.
In addition to class objects and instance objects, there is another type of data structure in the present object oriented programming system that is referred to as slot objects. These are not true objects as are class and instance objects. Slot objects are data areas that have methods on them. They exist only within an enclosing instance or as local data within a method. Slot objects do not have entries in the OMT 412 and are not visible outside of the enclosing instance or method. Slot objects are passed as whole data structures. No pointers are used to reference slots.
The first piece of data, or first inherited attribute, in a slot is an object reference that merely points to itself. Following the object reference is any other type of data defined by the particular slot object. Slot objects do not only exist inside of frame objects, they can also be local variables within a method.
Slots are used for optimization. Since slots do not have to be stored in a table, they are economical to use. When a message is sent, the messenger 408 passes the address of the object reference. In a slot object, that address is also the address of the instance. The address of the object reference, which is the first piece of data within a slot, is the address of the slot object.
The preferred embodiment of slot objects is covered in co-pending, commonly owned application Ser. No. 07/425,746, filed Oct. 23, 1989, and entitled "Slot Objects for an Object Oriented Programming System", the disclosure of which is incorporated herein by reference.
In an object oriented computing environment such as the one that has been described, each user is in control of the selection and sequence of object-action pairs that are processed to arrive at a desired result. For a predetermined result that is to be repeated multiple times, this mode of operation is very tedious and error-prone. This selection and sequencing process is represented in FIG. 5. Each application function (object method) 506, 508, 512, 514 in the process is initiated by a user's selection 504, 510, 516 using logical navigation 518, 520, 522 of the related objects. Each step in the process is initiated by messages that are sent to the object manager 304 and are captured in unit of work tables. The sequence, or logical navigation, of the messages is defined by the user's selection of object-action pairs.
Object manager message routing is illustrated in FIG. 6. Object A 602 sends a message (`B@X`) 612 to object manager 304, indicating that method X is to be performed for object B 604. The object manager 304 captures the information as part of the user's logical unit of work (LUW) 610, and routes the message to object B 604. Completion of method X 608 may result in a change of state for object B 604, which must be captured by the object manager 304 in the logical unit of work.
Since the object manager 304 has knowledge of the objects and actions (messages) that the user has specified, and the sequence in which the objects were affected (referred to as logical navigation), this information is not only of value to logical unit of work processing and management, but can also be used to define a specific sequence of object-action pairs (messages) that can then be used in a repeatable sequence, or business process.
The structure of a business process object is depicted in FIG. 7. The business process object 702 is like any other object in that it has methods 704, 706, 70B, 710, 712, 714, and features and attributes 716. The business process object 702 is a composite object, in that its frame may contain complex data structures in data slots that may be defined as other objects and may also reference another business process object as one of the slots.
A process object class that defines a complex object and allows naming of object instances by the user, is one way to implement such an object. The business process object inherits create, run and stop class methods from the process object class and has several attributes that are the same as that of the process object class.
To use a business process object 702, the user creates the business process object instance on his "desktop" (i.e., workstation user interface), selects the object's data instance and specifies a CREATE method 704 to define the logical navigation and a sequence of object-actions as slots in the business process object 702. The CREATE method 704 must enable logic 802 in the object-action message processing of the user interface to capture the object-action messages as they are sent to the object manager 304 after selection by the user. As illustrated in FIG. 8, method I 606 of object A 602 sends a message `B@X` 612. The message is intercepted on its normal routing to object manager 304 by a message capture function 802 of the process object class. This function captures the message 612 in a slot 804 for a business process object 702. The object manager 304 routes the message 614 to object B 604 for execution of method X 608.
When a business process object 702 is selected from the desktop, a list of actions (i.e., methods of the business process object and its class) are made selectable. The user then specifies the method to be performed with the business process object.
Execution of a business process object begins and ends with logical unit of work start and commit actions. Execution of a business process object requires implementation of the capability to suspend or interrupt an existing logical unit of work, run a sequence of object-action messages as defined in the business process object, and then resume the interrupted logical unit of work as before. Nested business process objects, implying nested logical units of work, must also be managed by the suspend/resume logical unit of work processing. If a business process fails during execution, it can be rolled back without impacting the user's previous logical unit of work state, and allow restart at the proper point in the original business process. (Such failure may cause the original business process to also fail.)
When the user decides to repeat the business process, the business process object instance is selected and the RUN method 714 is specified. Business process object message routing during execution is depicted in FIG. 9. The business process object 702 materializes the container of messages captured in slots 804 for the business process, and sends them, in the order and logical navigation sequence previously defined, to the object manager 304. The `B@X` message 612, captured as part of the business process object slots 804, is sent in turn to the object manager 304 which routes the message 614 to object B 604 for execution of method X 608.
FIG. 10 is a flowchart representing the implementation of the process for selecting business process object methods from the user interface desktop. At logic block 1004, the user is presented with a list of actions that can be performed with the business process object 702. These include create, modify, run, stop, suspend and resume. The user makes his selection at decision block 1006. If the user selects the CREATE method 704, processing continues as indicated by the flowchart of FIG. 11.
FIG. 10A illustrates a method of storing and executing a plurality of object and action pairs in an object oriented computing environment. At block 2000 the business process instance is generated, then at block 2010 the execution parameters are assigned for the process. A name is assigned to the process at block 2020 based on a first user input from the user interface (shown by block 2022) and a version identifier is assigned at block 2030 based on a second user input from the user interface (shown by block 2032). At block 2040 the object and action pairs are stored in a business process instance and at block 2050 the business object is executed through the user interface and specifying a method to be performed by said business process object instance.
The CREATE method 704 of the business process object 702 is inherited from the process object class. This method creates an instance of the business process object 702 and populates the required slots and attributes. At logic block 1102, a new instance of the business process object 702 is created and initialized. The instance is allocated and populated with the class and instance variables. At logic block 1104, the user is requested to name this instance of the business process object 702. A list box or other form of data input mechanism is presented to the user to allow naming of this instance of the business process object 702. At logic block 1106, the specified name is validated and assigned to the business project object instance. Validation consists of a check to assure uniqueness within the business process object instance. The specified name is the title of the icon representing the business process object instance that is displayed on the user's desktop. The user is then requested to assign a version identifier for the business process object instance in logic block 1108. A list box or other form of data input mechanism is presented to the user to allow the specification of a version identification for this instance of the business process object. Versioning of the business process object instances is governed by the capability of the execution environment and database facilities to support multiple instances of the same named business process object 702. In logic block 1110, the specified version is validated and assigned to the business process object instance.
At logic block 1112, the user is requested to define execution parameters for this business process object instance. A list box is presented to the user to allow definition of these parameters. The execution parameters defined by the user specify when and how this instance of business process object is to be executed. The specified parameters are assigned to attributes of this instance of the business process object 702 in logic block 1114. Execution parameters are limited to those that can be utilized by the execution environment. If time-initiated signals can be generated, then a time-initiated execution is supported and can be defined. Class methods of the process object class must support these execution parameters.
The next sequence of the steps in the processing are part of a logic loop in which object-action pairs are captured and saved as part of the business process object instance. In logic block 1116, the user is requested to define an object and action pair that is to be performed at this point in the business process. Desktop mechanisms are enabled to process the selection of an object and action when done in the context of the creation or modification of a business process object. The user defines this pair by selecting them from the desktop. Desktop mechanisms build the specific object-action message using list boxes to request additional input and display user choices. Next, in logic block 1118, the object-action message is captured and placed in the next slot object of the business process object instance. The user is then requested, in logic block 1120, to define any logical navigation based on conditional parameters or data that are present as a result of the object-action message. A list box or other form of data input mechanism is presented to the user to allow definition of logical navigation information. The user must define the input/output data and variables that may be tested, and the condition of the tests and the processing steps to be taken for certain test results. In logic block 1122, the logical navigation definition is assigned to the corresponding slot object of the business process object instance which matches the object-action message behavior to be tested. Decision block 1124 tests for completion of the definition of the business process object instance. Completion of the definition is signalled by the user selecting "complete" for the business process object instance or selecting the "file" action. This causes processing to exit the CREATE method 704 and return to logic block 1004 in FIG. 10 which again presents the user with the display screen showing the business process object instances that are selectable. If at decision block 1124 in FIG. 11, definition of the business process object instance is not complete, processing returns to logic block 1102 where the user is prompted for another object-action pair.
To modify an instance of a business process object, the user selects the MODIFY method 710 at logic block 1004 in FIG. 10. Processing of this user selection is illustrated by the flow chart of FIG. 12. Entry into the MODIFY method 710 is at decision block 1202, where a determination is made if the business process object 702 is in a run state. If the business process object 702 is in a run state, then modification is assumed to be for a new version of the business process object 702. If the business process object 702 is not in a run state, then modification is assumed to be on the selected version of the business process object.
For a business process object 702 in a run state, logic processing proceeds down the left side of the flow chart. In logic block 1204, a new instance of the business process object 702 is created. The execution parameters are copied from the existing business process object version to the new version as indicated in logic block 1206. The object-action definitions and logical navigation statements are copied from the existing business process object version to the new version as shown in logic blocks 1208 and 1210, respectively. Processing then transfers to the CREATE method 704 at logic block 1102 in FIG. 11 to modify the existing version of the business process object 702. When the modifications are complete, the new version of the business process object 702 is available for selection on the user's desktop.
For a selected business process object 702 that is not in a run state, logic processing proceeds down the right side of the flow chart in FIG. 12. The selected version of the business process object 702 is instantiated as shown in logic block 1214. Execution parameters are then accessed from the database as shown in logic block 1216. Next, object-action message definitions and logical navigation statements are accessed from the database, as indicated in logic blocks 1218 and 1220, respectively. Processing transfers to the CREATE method 704 at logic block 1102 in FIG. 11. The existing version of the business process object 702 is modified, as required. When modifications are completed, the updated version of the business process object 702 is available for selection on the user's desktop. At this point., processing returns to logic block 1004 in FIG. 10, where the user is again presented with the display screen showing the selectable business process object instances. If at decision block 1006, the user had selected the RUN method 714, processing transfers to the flow chart illustrated in FIG. 13.
In logic block 1302, a request is made to initiate a new unit of work for the user. This request initiates a recovery point for the process which is starting. Rollback or commit of this unit of work recovers or completes all data modifications made from this point. In logic blocks 1304 and 1306, the object-action message definitions and logical navigation statements in the business process object instance are accessed. A test is next made in decision block 1308 to determine if a stop action has been requested. Processing transfers to the method selection processing algorithm illustrated in FIG. 10, if a stop action request has been made. Otherwise, the algorithm continues with decision block 1310 where a test is made to determine if a suspend action request has been made. A suspend request also results in a transfer to the method selection processing algorithm illustrated in FIG. 10. If a suspend has not been requested, an object-action message definition is accessed in logic block 1312. The object-action message is sent using normal object oriented processes. Object oriented message processing includes the routing of the message to the target object and method as defined by the message. Arguments for the method are also passed as part of the message. This step of the RUN method 714 algorithm is reflected in the flow chart at logic block 1314. The next logical navigation statement is then performed as indicated at logic block 1316. The logical navigation statement may adjust the position of the next object-action to be accessed, or cause an event that leaves the control of the business process object 702.
In decision block 1318, a test is made to determine if there are additional object-action messages to process. Processing continues with the next object-action message if there are additional object-action messages to process. The algorithm loops back to decision block 1308 to continue with this processing. If the final object-action message for the business process object instance has been reached, then a COMMIT-- UOW request is issued. This step is indicated in logic block 1320. The commit step indicates to the unit of work manager 306 that the business process is complete and may be committed to the database. This step also completes the RUN method 714 algorithm causing control to return to main menu processing in FIG. 10. The user entry in logic block 1004 determines which algorithm will be executed next. If the stop action is requested, the test made by the main algorithm in decision block 1006 causes transfer to the STOP method 712 algorithm illustrated in FIG. 14.
The STOP method 712 algorithm starts in decision block 1402 with a test being made to determine if the business process object 702 is in a run state. If the business process object 702 is not in a run state, then the routine is exited and an error is signalled to the user as indicated by logic block 1008 in the main processing routine shown in FIG. 10. Otherwise, processing continues as indicated in logic block 1404 with execution parameters of the running business process object 702 being refreshed from the database. This is followed in logic block 1406 with a change in the run state of the business process object instance to indicate that the business process object 702 has been stopped. The STOP method 712 algorithm concludes in logic block 1408 with the unit of work represented by the business process object 702 being rolled back to its initial state by the UOW manager. The algorithm then causes control to return back to logic block 1004 in the main processing algorithm illustrated in FIG. 10. Decision block 1006 again tests for the next action entered by the user. If the suspend action is requested, decision block 1006 causes transfer to the SUSPEND method 706 algorithm illustrated in FIG. 15.
The processing steps of the SUSPEND method 706 starts out with a test in decision block 1502 to determine if the business process object 702 is in a run state. The suspend action is invalid for a business process object instance that is not in a run state. Thus, if the business process object instance is not in a run state, the SUSPEND method 706 algorithm is exited, and an error is identified to the user, as indicated by logic block 1008 shown in FIG. 10. For a running business process object instance, execution parameters are refreshed as indicated in logic block 1504. Next, the run state of the business process object instance is changed as shown in logic block 1506 to indicate that the business process object 702 has been suspended. The last step of the routine is to save the execution state of the business process object instance, including the current position of object-action and logical navigation. This step is reflected in logic block 1508 of the flow chart of FIG. 15. Processing control reverts to logic block 1004 in the main algorithm shown in FIG. 10. If a business process object 702 has been suspended previously, the user can select the resume action in logic block 1004. Once again, decision block 1006 tests for the action entered by the user. Request of the resume action causes control to transfer to the RESUME method 708 shown in FIG. 16.
The first step in the RESUME method 708 algorithm is to determine by decision block 1602 if the business process object 702 is in a suspended state. If the business process object 702 is not in a suspended state, the resume action is invalid for this business process object instance and the routine is exited. Control returns to logic block 1008 in FIG. 10 where the user is notified that he has selected an invalid method.
In order to resume a suspended business process object instance, the execution parameters of the suspended business process object instance are refreshed from the database as indicated by logic block 1604 where they were saved as a result of execution of the SUSPEND method logic block 1508 as depicted in FIG. 15. The execution state of the business process object instance, including the current position of object-action and logical navigation, is also restored. In logic block 1606, the saved object-action message definitions are accessed in the business process object instance. The saved object-action message slot position is restored to the state prior to suspension as indicated in logic block 1608. The saved logical navigation statements are accessed in the business process object instance as shown in logic block 1610. The logical navigation slot position is restored to the state prior to suspension in logic block 1612. Control is then transferred to continue execution where the suspend action was performed on the business process object instance. Execution continues in the RUN method 714 at logic block 1302 in FIG. 13.
The following is an example of a particular embodiment of the presentation and execution of a set of business process instances that have been created. FIG. 17 provides an example of a list of business process instances that are selectable by the user. An object (EKNUTASK) is written to present this list of business processes, and respond to the user's selection. "LDRO" (logical data reference object), "EC" (engineering change) and "REA" (request for engineering action) are certain types of objects in an engineering management object oriented computing environment. A "folder TOC" (table of contents) is an object which can hold references to objects of other types. For the purpose of this example, it's sufficient to consider these simply as objects which are involved in a specific sequence of object-action pairs (messages) that are combined as a business process.
Generally, business processes which involve a sequence of panel interactions are handled according to the following pseudocode. Note that `task` is synonymous in this context to a business process instance.
______________________________________EKNUTASK@do-- task<*(* Display the list of business processes - readthe user's selection. *)*>;<*(* If the user makes a selection, initiate the task,otherwise exit. *)*>;EKNUTASK@run-- task<*(* Initiate the system for execution of abusiness process. *)*> isEKNUTASK@task-- initiate<*(* Route control to the particularbusiness process instance. *)*> isEKNUTASK@task-- router<*(* Within a particular business process which involved interactions with the desktop, object-action pairs will be executed to :1. Edit the panel object dtafld-- assign, selfld-- select, sellst-- select2. Send messages to objects involved in the business process do-command3. Await user input to support the logical navigation rules of the business process pmwait *)*>;<*(* Shutdown after the task completes. *)*> isEKNUTASK@task-- shutdown______________________________________
An example of the specific sequence of object-action pairs that could constitute a business process is indicated in the following pseudocode.
______________________________________<*(* Select an item from a menu. *)*> isEKNUTASK@selfld-- select ("MENU02",the-- list,rc);<*(* Execute an "OPEN" action. *)*> isEKNUTASK@do-- command (T-- OPEN,NULL);<*(* The business process awaits user input. *)*> isEKNUTASK@pmwait(wait-- rc'address);<*(* Execute the "COPY" action. *)*> isEKNUTASK@do-- command (T-- COPY,NULL);<*(* Execute the "CANCEL" action. *)*> isEKNUTASK@do-- command (T-- CANCEL,NULL );______________________________________
The Appendix provides pseudocode for each of the methods invoked by the selected instance of a business process in the above example. ##SPC1##
While the invention has been particularly shown and described with respect to the particular embodiment thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention.
|Patente citada||Fecha de presentación||Fecha de publicación||Solicitante||Título|
|US4635208 *||18 Ene 1985||6 Ene 1987||Hewlett-Packard Company||Computer-aided design of systems|
|US5265206 *||23 Oct 1990||23 Nov 1993||International Business Machines Corporation||System and method for implementing a messenger and object manager in an object oriented programming environment|
|US5291593 *||24 Oct 1990||1 Mar 1994||International Business Machines Corp.||System for persistent and delayed allocation object reference in an object oriented environment|
|1||Release 1.0, "A Primer on Plumbing: Capturing Scripts", May 1991 v91 n5 p.10(s).|
|2||*||Release 1.0, A Primer on Plumbing: Capturing Scripts , May 1991 v91 n5 p.10(s).|
|Patente citante||Fecha de presentación||Fecha de publicación||Solicitante||Título|
|US5682536 *||7 Jun 1995||28 Oct 1997||Microsoft Corporation||Method and system for referring to and binding to objects using identifier objects|
|US5692143 *||30 Dic 1994||25 Nov 1997||International Business Machines Corporation||Method and system for recalling desktop states in a data processing system|
|US5727145 *||26 Jun 1996||10 Mar 1998||Sun Microsystems, Inc.||Mechanism for locating objects in a secure fashion|
|US5740439 *||6 Jun 1995||14 Abr 1998||Microsoft Corporation||Method and system for referring to and binding to objects using identifier objects|
|US5745878 *||10 Abr 1995||28 Abr 1998||Fujitsu Limited||Business requirement handling apparatus|
|US5819279 *||24 Ene 1996||6 Oct 1998||Fujitsu Limited||Object data processing apparatus|
|US6003011 *||7 Ene 1998||14 Dic 1999||Xerox Corporation||Workflow management system wherein ad-hoc process instances can be generalized|
|US6021410 *||25 Sep 1997||1 Feb 2000||International Business Machines Corporation||Extensible digital library|
|US6038538 *||15 Dic 1997||14 Mar 2000||International Business Machines Corporation||Generating process models from workflow logs|
|US6055543 *||21 Nov 1997||25 Abr 2000||Verano||File wrapper containing cataloging information for content searching across multiple platforms|
|US6112253 *||12 Oct 1995||29 Ago 2000||International Business Machines Corporation||Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs|
|US6209128 *||5 Jun 1998||27 Mar 2001||International Business Machines Corporation||Apparatus and method for providing access to multiple object versions|
|US6223344 *||11 Jun 1998||24 Abr 2001||Internationl Business Machines Corporation||Apparatus and method for versioning persistent objects|
|US6247008 *||20 Ago 1996||12 Jun 2001||Business Objects, Sa||Relational database access system using semantically dynamic objects|
|US6256636||26 Nov 1997||3 Jul 2001||International Business Machines Corporation||Object server for a digital library system|
|US6263379 *||20 Ago 1997||17 Jul 2001||Microsoft Corporation||Method and system for referring to and binding to objects using identifier objects|
|US6321374||7 Nov 1997||20 Nov 2001||International Business Machines Corporation||Application-independent generator to generate a database transaction manager in heterogeneous information systems|
|US6341369||3 Dic 1998||22 Ene 2002||International Business Machines Corporation||Method and data processing system for specifying and applying rules to classification-based decision points in an application system|
|US6360229 *||30 Abr 1998||19 Mar 2002||International Business Machines Corporation||Generic execution model for isolating applications from underlying databases|
|US6401099||6 Dic 1996||4 Jun 2002||Microsoft Corporation||Asynchronous binding of named objects|
|US6415435||18 Mar 1999||2 Jul 2002||International Business Machines Corporation||Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning|
|US6460058||6 Dic 1996||1 Oct 2002||Microsoft Corporation||Object-oriented framework for hyperlink navigation|
|US6519764||29 May 2001||11 Feb 2003||Microsoft Corporation||Method and system for naming and binding objects|
|US6668257 *||6 Nov 1997||23 Dic 2003||International Business Machines Corporation||Migrating non-persistent objects when one or more of the superclass fields of the object are modified|
|US6694328 *||13 Ene 2000||17 Feb 2004||International Business Machines Corporation||Method for creating queries on version objects|
|US6883168||21 Jun 2000||19 Abr 2005||Microsoft Corporation||Methods, systems, architectures and data structures for delivering software via a network|
|US6948135||21 Jun 2000||20 Sep 2005||Microsoft Corporation||Method and systems of providing information to computer users|
|US6965902 *||19 Oct 2001||15 Nov 2005||Daman, Inc.||Method and apparatus for managing functions|
|US6971108 *||28 Sep 2000||29 Nov 2005||Sprint Communications Company L.P.||Computer software framework and method for managing communication flow between a user interface and a computer application|
|US7000230||21 Jun 2000||14 Feb 2006||Microsoft Corporation||Network-based software extensions|
|US7055147 *||28 Feb 2003||30 May 2006||Sun Microsystems, Inc.||Supporting interactions between different versions of software for accessing remote objects|
|US7114128||5 Dic 2001||26 Sep 2006||Microsoft Corporation||Object-oriented framework for hyperlink navigation|
|US7117435||21 Jun 2000||3 Oct 2006||Microsoft Corporation||Spreadsheet fields in text|
|US7120866||8 Oct 2004||10 Oct 2006||Microsoft Corporation||Spreadsheet fields in text|
|US7150024||29 Oct 2002||12 Dic 2006||Microsoft Corporation||Method and system for naming and binding objects|
|US7155667||21 Jun 2000||26 Dic 2006||Microsoft Corporation||User interface for integrated spreadsheets and word processing tables|
|US7168035||11 Jun 2003||23 Ene 2007||Microsoft Corporation||Building a view on markup language data through a set of components|
|US7191394||21 Jun 2000||13 Mar 2007||Microsoft Corporation||Authoring arbitrary XML documents using DHTML and XSLT|
|US7197515||30 Jun 2003||27 Mar 2007||Microsoft Corporation||Declarative solution definition|
|US7218605 *||19 Nov 2001||15 May 2007||Fujitsu Limited||Temporary halting method in router and network|
|US7246254||16 Jul 2003||17 Jul 2007||International Business Machines Corporation||System and method for automatically and dynamically optimizing application data resources to meet business objectives|
|US7275216||24 Mar 2003||25 Sep 2007||Microsoft Corporation||System and method for designing electronic forms and hierarchical schemas|
|US7281018||26 May 2004||9 Oct 2007||Microsoft Corporation||Form template data source change|
|US7296017||25 Nov 2003||13 Nov 2007||Microsoft Corporation||Validation of XML data files|
|US7318063||19 Feb 2004||8 Ene 2008||Microsoft Corporation||Managing XML documents containing hierarchical database information|
|US7334187||6 Ago 2003||19 Feb 2008||Microsoft Corporation||Electronic form aggregation|
|US7346610||11 Feb 2005||18 Mar 2008||Microsoft Corporation||Methods and systems of providing information to computer users|
|US7346848||21 Jun 2000||18 Mar 2008||Microsoft Corporation||Single window navigation methods and systems|
|US7350141||16 Sep 2004||25 Mar 2008||Microsoft Corporation||User interface for integrated spreadsheets and word processing tables|
|US7360171||12 Abr 2005||15 Abr 2008||Microsoft Corporation||Methods and systems of providing information to computer users|
|US7370066||24 Mar 2003||6 May 2008||Microsoft Corporation||System and method for offline editing of data files|
|US7376673||26 Nov 2003||20 May 2008||Microsoft Corporation||Offline editing of XML files using a solution|
|US7392522||29 Sep 2004||24 Jun 2008||Microsoft Corporation||Architectures for and methods of providing network-based software extensions|
|US7406660||1 Ago 2003||29 Jul 2008||Microsoft Corporation||Mapping between structured data and a visual surface|
|US7412645||4 May 2004||12 Ago 2008||Microsoft Corporation||User interface for integrated spreadsheets and word processing tables|
|US7415672||24 Mar 2003||19 Ago 2008||Microsoft Corporation||System and method for designing electronic forms|
|US7430711||17 Feb 2004||30 Sep 2008||Microsoft Corporation||Systems and methods for editing XML documents|
|US7437376||20 Dic 2004||14 Oct 2008||Microsoft Corporation||Scalable object model|
|US7441253||3 Jul 2006||21 Oct 2008||Microsoft Corporation||Method and system for naming and binding objects|
|US7451392||26 Nov 2003||11 Nov 2008||Microsoft Corporation||Rendering an HTML electronic form by applying XSLT to XML using a solution|
|US7490109||6 Mar 2006||10 Feb 2009||Microsoft Corporation||System and method for offline editing of data files|
|US7496837||29 Abr 2004||24 Feb 2009||Microsoft Corporation||Structural editing with schema awareness|
|US7506242||8 Oct 2004||17 Mar 2009||Microsoft Corporation||System and method for integrating spreadsheets and word processing tables|
|US7506243||9 Oct 2004||17 Mar 2009||Microsoft Corporation||System and method for integrating spreadsheets and word processing tables|
|US7509353||16 Nov 2004||24 Mar 2009||Microsoft Corporation||Methods and systems for exchanging and rendering forms|
|US7512896||23 Jul 2004||31 Mar 2009||Microsoft Corporation||Task-sensitive methods and systems for displaying command sets|
|US7516145||31 Mar 2003||7 Abr 2009||Microsoft Corporation||System and method for incrementally transforming and rendering hierarchical data files|
|US7516399||30 Sep 2004||7 Abr 2009||Microsoft Corporation||Structured-document path-language expression methods and systems|
|US7523390||8 Oct 2004||21 Abr 2009||Microsoft Corporation||Spreadsheet fields in text|
|US7533268||25 Jun 2004||12 May 2009||Microsoft Corporation||Digital signature with an embedded view|
|US7543228||27 Jun 2005||2 Jun 2009||Microsoft Corporation||Template for rendering an electronic form|
|US7549115||8 Oct 2004||16 Jun 2009||Microsoft Corporation||System and method for integrated spreadsheets and word processing tables|
|US7568101||13 May 2004||28 Jul 2009||Microsoft Corporation||Digital signatures with an embedded view|
|US7581177||1 Ago 2003||25 Ago 2009||Microsoft Corporation||Conversion of structured documents|
|US7584417||15 Nov 2004||1 Sep 2009||Microsoft Corporation||Role-dependent action for an electronic form|
|US7610562||23 Jul 2004||27 Oct 2009||Microsoft Corporation||Task-sensitive methods and systems for displaying command sets|
|US7613996||15 Ago 2005||3 Nov 2009||Microsoft Corporation||Enabling selection of an inferred schema part|
|US7624356||21 Jun 2000||24 Nov 2009||Microsoft Corporation||Task-sensitive methods and systems for displaying command sets|
|US7673227||16 Sep 2004||2 Mar 2010||Microsoft Corporation||User interface for integrated spreadsheets and word processing tables|
|US7676843||24 Jun 2004||9 Mar 2010||Microsoft Corporation||Executing applications at appropriate trust levels|
|US7689929||11 Feb 2005||30 Mar 2010||Microsoft Corporation||Methods and systems of providing information to computer users|
|US7692636||30 Sep 2004||6 Abr 2010||Microsoft Corporation||Systems and methods for handwriting to a screen|
|US7702997||8 Oct 2004||20 Abr 2010||Microsoft Corporation||Spreadsheet fields in text|
|US7712022||15 Nov 2004||4 May 2010||Microsoft Corporation||Mutually exclusive options in electronic forms|
|US7712048||23 Jul 2004||4 May 2010||Microsoft Corporation||Task-sensitive methods and systems for displaying command sets|
|US7720887 *||30 Dic 2004||18 May 2010||Microsoft Corporation||Database navigation|
|US7721190||16 Nov 2004||18 May 2010||Microsoft Corporation||Methods and systems for server side form processing|
|US7725834||4 Mar 2005||25 May 2010||Microsoft Corporation||Designer-created aspect for an electronic form template|
|US7730067||30 Dic 2004||1 Jun 2010||Microsoft Corporation||Database interaction|
|US7743063||27 Ene 2005||22 Jun 2010||Microsoft Corporation||Methods and systems for delivering software via a network|
|US7774620||27 May 2004||10 Ago 2010||Microsoft Corporation||Executing applications at appropriate trust levels|
|US7779027||13 Sep 2004||17 Ago 2010||Microsoft Corporation||Methods, systems, architectures and data structures for delivering software via a network|
|US7779343||30 Ene 2006||17 Ago 2010||Microsoft Corporation||Opening network-enabled electronic documents|
|US7809754||28 Feb 2005||5 Oct 2010||International Business Machines Corporation||Method and computer program product for generating a lightweight ontological data model|
|US7818672||30 Dic 2004||19 Oct 2010||Microsoft Corporation||Floating action buttons|
|US7818677||12 Ago 2004||19 Oct 2010||Microsoft Corporation||Single window navigation methods and systems|
|US7865477||15 Oct 2007||4 Ene 2011||Microsoft Corporation||System and method for real-time validation of structured data files|
|US7899810||5 Feb 2007||1 Mar 2011||Business Objects Software Ltd.||Relational database access system using semantically dynamic objects|
|US7900134||8 Nov 2006||1 Mar 2011||Microsoft Corporation||Authoring arbitrary XML documents using DHTML and XSLT|
|US7904801||15 Dic 2004||8 Mar 2011||Microsoft Corporation||Recursive sections in electronic forms|
|US7913159||28 Mar 2003||22 Mar 2011||Microsoft Corporation||System and method for real-time validation of structured data files|
|US7925621||29 Ene 2008||12 Abr 2011||Microsoft Corporation||Installing a solution|
|US7930203||4 Ago 2005||19 Abr 2011||International Business Machines Corporation||System and method for systems integration|
|US7937651||14 Ene 2005||3 May 2011||Microsoft Corporation||Structural editing operations for network forms|
|US7971139||31 Oct 2007||28 Jun 2011||Microsoft Corporation||Correlation, association, or correspondence of electronic forms|
|US7979856||1 Sep 2005||12 Jul 2011||Microsoft Corporation||Network-based software extensions|
|US8001459||5 Dic 2005||16 Ago 2011||Microsoft Corporation||Enabling electronic documents for limited-capability computing devices|
|US8010515||15 Abr 2005||30 Ago 2011||Microsoft Corporation||Query to an electronic form|
|US8046683||27 Ene 2009||25 Oct 2011||Microsoft Corporation||Structural editing with schema awareness|
|US8074217||29 Oct 2007||6 Dic 2011||Microsoft Corporation||Methods and systems for delivering software|
|US8078960||13 Oct 2008||13 Dic 2011||Microsoft Corporation||Rendering an HTML electronic form by applying XSLT to XML using a solution|
|US8200975||29 Jun 2005||12 Jun 2012||Microsoft Corporation||Digital signatures for network forms|
|US8281319 *||19 May 2004||2 Oct 2012||Unisys Corporation||Method and apparatus for sequenced message processing between an event handler and an administrative object|
|US8429522||15 Jun 2011||23 Abr 2013||Microsoft Corporation||Correlation, association, or correspondence of electronic forms|
|US8487879||29 Oct 2004||16 Jul 2013||Microsoft Corporation||Systems and methods for interacting with a computer through handwriting to a screen|
|US8739038||13 May 2010||27 May 2014||Microsoft Corporation||Floating action buttons|
|US8819072||2 Feb 2004||26 Ago 2014||Microsoft Corporation||Promoting data from structured data files|
|US8826246 *||12 May 2009||2 Sep 2014||Oracle International Corporation||System and method for using partial software object dematerialization in a virtual machine|
|US8892993||8 Feb 2008||18 Nov 2014||Microsoft Corporation||Translation file|
|US8918729||2 Abr 2008||23 Dic 2014||Microsoft Corporation||Designing electronic forms|
|US9210234||13 Jun 2011||8 Dic 2015||Microsoft Technology Licensing, Llc||Enabling electronic documents for limited-capability computing devices|
|US9229917||18 Mar 2011||5 Ene 2016||Microsoft Technology Licensing, Llc||Electronic form user interfaces|
|US9239821||31 Oct 2014||19 Ene 2016||Microsoft Technology Licensing, Llc||Translation file|
|US9268760||22 Abr 2013||23 Feb 2016||Microsoft Technology Licensing, Llc||Correlation, association, or correspondence of electronic forms|
|US9507610||11 Mar 2010||29 Nov 2016||Microsoft Technology Licensing, Llc||Task-sensitive methods and systems for displaying command sets|
|US9560130 *||30 Sep 2010||31 Ene 2017||Microsoft Technology Licensing, Llc||Presenting availability statuses of synchronized objects|
|US9613112 *||15 Mar 2013||4 Abr 2017||Miosoft Corporation||Structuring data|
|US9665403||15 Mar 2013||30 May 2017||Miosoft Corporation||Executing algorithms in parallel|
|US20010009033 *||26 Feb 2001||19 Jul 2001||Masatoshi Morisaki||Object-oriented business system and method|
|US20020103824 *||5 Dic 2001||1 Ago 2002||Microsoft Corporation||Object-oriented framework for hyperlink navigation|
|US20020194053 *||15 Jun 2001||19 Dic 2002||International Business Machines Corporation||Business engagement method|
|US20030007451 *||19 Nov 2001||9 Ene 2003||Hironori Ochiai||Temporary halting method in router and network|
|US20030200090 *||16 Abr 2003||23 Oct 2003||Pioneer Corporation||Speech recognition apparatus, speech recognition method, and computer-readable recording medium in which speech recognition program is recorded|
|US20030200504 *||29 Oct 2002||23 Oct 2003||Microsoft Corporation||Method and system for naming and binding objects|
|US20040172462 *||28 Feb 2003||2 Sep 2004||Iterum Skef F.||Supporting interactions between different versions of software for accessing remote objects|
|US20050015641 *||16 Jul 2003||20 Ene 2005||International Business Machines Corporation||System and method for automatically and dynamically optimizing application data resources to meet business objectives|
|US20050262518 *||19 May 2004||24 Nov 2005||Kress Daryl J||Method and apparatus for sequenced message processing between an event handler and an administrative object|
|US20050273357 *||4 Ago 2005||8 Dic 2005||International Business Machines Corporation||System and method for systems integration|
|US20060149768 *||30 Dic 2004||6 Jul 2006||Microsoft Corporation||Database interaction|
|US20060149769 *||30 Dic 2004||6 Jul 2006||Microsoft Corporation||Database navigation|
|US20060195332 *||28 Feb 2005||31 Ago 2006||International Business Machines Corporation||Method and computer program product for generating a lightweight ontological data model|
|US20060265272 *||17 May 2005||23 Nov 2006||Bosa Patrick A||System and methods for re-evaluating historical service conditions after correcting or exempting causal events|
|US20070061816 *||3 Jul 2006||15 Mar 2007||Microsoft Corporation||Method and system for naming and binding objects|
|US20070061817 *||3 Jul 2006||15 Mar 2007||Microsoft Corporation||Method and system for naming and binding objects|
|US20070130136 *||5 Feb 2007||7 Jun 2007||Business Objects, S.A.||Relational database access system using semantically dynamic objects|
|US20080178164 *||22 Ene 2007||24 Jul 2008||International Business Machines Corporation||Method, system and apparatus to associate and transform processes|
|US20080263453 *||20 Abr 2007||23 Oct 2008||Vijay Kumar Aggarwal||Method and apparatus for process configuration|
|US20100229122 *||13 May 2010||9 Sep 2010||Microsoft Corporation||Floating Action Buttons|
|US20100293542 *||12 May 2009||18 Nov 2010||Oracle International Corporation||System and method for using partial software object dematerialization in a virtual machine|
|US20120084341 *||30 Sep 2010||5 Abr 2012||Microsoft Corporation||Presenting availability statuses of synchronized objects|
|US20140279942 *||15 Mar 2013||18 Sep 2014||Miosoft Corporation||Structuring data|
|WO2000046705A1 *||1 Feb 2000||10 Ago 2000||Lombard Risk Management Plc||Business optimisation|
|Clasificación de EE.UU.||717/170, 719/315, 712/E09.084|
|Clasificación internacional||G06F9/44, G06F9/42, G06F9/06|
|Clasificación cooperativa||G06F9/4428, G06F9/443|
|Clasificación europea||G06F9/44F2A, G06F9/44F2|
|25 Mar 1993||AS||Assignment|
Owner name: IBM CORPORATION, NEW YORK
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNORS:ELDER, D. B.;KROSENER, S. P.;MILLER, P. E.;AND OTHERS;REEL/FRAME:006480/0959
Effective date: 19930117
|29 Dic 1999||FPAY||Fee payment|
Year of fee payment: 4
|28 Ene 2004||REMI||Maintenance fee reminder mailed|
|9 Jul 2004||LAPS||Lapse for failure to pay maintenance fees|
|7 Sep 2004||FP||Expired due to failure to pay maintenance fee|
Effective date: 20040709