A portion of the disclosure of the patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates to managed business objects. In particular, the present invention relates to systems and methods to facilitate state transitions for managed business objects.
An enterprise may need to track business items. For example, a company may create contracts that must be tracked with respect to dates and/or financial market information. Moreover, the status of each contract may need to be maintained (e.g., a contract might be pending or canceled) and the company may need to respond to different types of events associated with the contract (e.g., a payment amount may need to be calculated and paid on a periodic basis).
Tracking these types of business items can be a difficult task, such as when there are a large number of contracts and/or a large number events associated with the contracts. The task may be even more difficult with respect to contracts that last for an extended period of time (e.g., each contract might have a term of ten years). In addition to the time and expense associated with tracking business items, errors may occur (e.g., a payment amount may be incorrectly calculated) and the errors may require additional work to resolve (if the errors can be resolved at all).
To alleviate problems inherent in the prior art, the present invention introduces systems and methods to facilitate state transitions for managed business objects.
In one embodiment of the present invention, a managed business object is created such that it can be in one of a number of pre-defined states. When an event notification is received, an action request is issued to a component application based on (i) a current state of the managed business object, (ii) the event notification, and (iii) a pre-defined rule. An action response is then received from the component application, and the state of the managed business object is transitioned in accordance with the action response.
According to another embodiment, a component application receives an action request from a control engine, the action request being issued by the control engine based on (i) the state of a managed business object, (ii) an event notification received by the control engine, and (iii) a pre-defined rule. An action is then performed in response to the action request, and an action response is transmitted to the control engine after the action is performed.
Another embodiment comprises: means for creating a managed business object associated with a plurality of pre-defined states; means for receiving an event notification; means for issuing an action request to a component application based on (i) a current state of the managed business object, (ii) the event notification, and (iii) a pre-defined rule; means for receiving an action response from the component application; and means for transitioning the state of the managed business object in accordance with the action response.
Still another embodiment comprises: means for receiving at a component application an action request from a control engine, the action request being issued by the control engine based on (i) the state of a managed business object, (ii) an event notification received by the control engine, and (iii) a pre-defined rule; means for performing an action in response to the action request; and means for transmitting an action response to the control engine after the action is performed.
With these and other advantages and features of the invention that will become hereinafter apparent, the invention may be more clearly understood by reference to the following detailed description of the invention, the appended claims, and the drawings attached herein.
Some embodiments described herein are associated with “managed business objects.” As used herein, the phrase “managed business object” may refer to any information that represents a business or commercial item. A managed business object might represent, for example, a business abstraction (e.g., a cash flow) or a contract (e.g., associated a long-term obligation or a swap).
System Overview
Moreover, the control engine 900 and the component applications 110 may exchange information via one or more communication networks, such as a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a proprietary network, a Public Switched Telephone Network (PSTN), a Wireless Application Protocol (WAP) network, a wireless network, or an Internet Protocol (IP) network such as the Internet, an intranet or an extranet. Note that the control engine 900 might communicate with a one component application 110 via one network and another component application 10 via another network. Moreover, although a single control engine 900 and two component applications 110 are illustrated in
The control engine 900 is responsible for managing a number of different business objects 200. Note that there may be different types of managed business objects 200, and that multiple instances of each type of managed business object may co-exist (e.g., the control engine 900 might currently be managing three contract business objects and ninety cash flow business objects).
Each managed business object 200 can be in one of a number of pre-defined “states.” That is, at any time the managed business object 200 exists in one of a set of states, each state representing some point in the lifecycle of the managed object (e.g., a contract status, cash flow state, or rate fix). The control engine 900 may perform the concomitant (e.g., simultaneously and as a result of) management of the states of a set of such business objects. To facilitate the management of multiple business objects, each instance of a managed business object type may be associated with a identifier, such as a 128-bit identifier that is unique across an enterprise.
Referring again to
As will now be described, the control engine 900 may then adjust the state of a managed business object (e.g., to reflect that a payment has been received) based on the event notification and one or more rules stored in a rule database 600.
Control Engine Method
At 302, a managed business object is created. For example, a user might review a business process and identify a number of business objects associated with that process (e.g., contracts and cash flows). Moreover, each business object is associated with a plurality of pre-defined states (e.g., pending and closed). Information about the managed business object may then be provided to and stored by the control engine 900.
At 304, an event notification is received. For example, the control engine 900 might receive an event notification indicating that a contract will expire in ninety days (e.g., the event notification might be received from a calendaring system).
At 306, an action request is issued to a component application 110 based on (i) the current a state of the managed business object, (ii) the event notification, and/or (iii) a pre-defined rule. The action request may be, for example, a request to the component application 110 asking it to perform some operation relating to a managed object. For example, the control engine 900 might ask a component application to determine the current London Inter-Bank Offered Rate (LIBOR) and re-calculate a payment amount associated with a contract obligation.
At 308, an action response is received from the component application 110 (e.g., indicating that the action has been performed). For example, the component application 110 might send an action response to the control engine 900 indicating that a payment amount has be re-calculated (e.g., and the result might be included in the action response or the component application 110 might have directly updated a shared contract database).
The state of the managed business object is transitioned at 310 in accordance with the action response. For example, the control engine 900 might transition the state of a managed business object from “pending” to “paid.”
At (A), Component1 receives market data (e.g., such as by receiving a current stock price from a financial market service). At (B), Component1, transmits an event notification to the control engine 900 (e.g., indicating that the price of a stock has transitioned past a threshold value).
The control engine 900 manages object states stored in a database 410, and issues an action request to Component2 (e.g., asking that shares of a stock should be sold) in response to the event notification and the current state of a business object. After the requested action is performed, Component2 transmits an action response to the control engine 900 at (D). The action response might, for example, indicate that an action has been completed or that an action will not be completed. According to some embodiments, the performance of an action is “guaranteed” (e.g., the action will be completed or an exception will be generated).
The control engine 900 then updates the state of a managed object in the database 410. Note that a shared resource 420 (e.g., a contract database) might be accessible by multiple components while a local resource 430 might be accessible by a single component.
Rule Database
Referring to
The managed object type 602 may be, for example, an alphanumeric code associated with a type of business object (e.g., a bond transaction). The rule identifier 604 lets multiple rules be defined for each managed object type. Note that the illustration and accompanying description of this database 600 are exemplary, and any number of other database arrangements could be employed besides those suggested by the figure.
Each rule is associated with a pre-condition 606 defining when the rule is triggered. The pre-condition 606 may be associated with, for example, receiving an event notification, receiving an action response, a managed business object state transition, and/or Boolean operations. The post-condition 608 defines what should happen when the pre-condition is satisfied. The post-condition 608 might be associated with, for example, transitioning a managed business object state and/or issuing an action request.
In some cases, a rule is associated with a receipt of an event notification. For example, if the control engine 900 receives an event notification of type “Event” referencing a managed object of type MO when the managed object is in Statei, the control engine 900 might issue an action request of type “Action” to component “Componentx” referencing that managed object. This rule might be defined as:
Event(MO)+Statei(MO)→Componentx::Action(MO)
The control engine might instead transition the managed object to Statej:
Event(MO)+Statei(MO)→Statej(MO)
According to some embodiments, an event can reference one, and only one, managed object.
In other cases, a rule is associated with a receipt of an action response from a component application. For example, if the control engine 900 receives an action response of type “Response” referencing an action request of type “Action” on a managed object of type MO from Componentx, when the managed object is in Statei, the control engine 900 might transition the managed object to Statej:
Response(Action(MO))+Statei(MO)→Statej(MO)
Note that an action response might be scoped by managed object type, the current state, and the action request type. Moreover, in some embodiments, only a single action response is allowed to be pending for each managed object (e.g., and thus there is no need to identify the responding component).
In still other cases, when the control engine 900 transitions a managed object of type MO to a particular Statez, an action request of type Action is issued to Componentx referencing the managed object:
State2(MO)→Componentx::Action(MO)
Note that such a rule can be “path-independent” (e.g., the action request is a function of the new state, not of how the new state was reached).
Receive Order→ORDER_RECEIVED
The following rule indicates that when the state ORDER_RECEIVED is entered, an action request is transmitted to a “TraderApp” component asking the component to prepare an initial set of paperwork:
ORDER_RECEIVED→Trader App::PrepareInitialPaperwork( )
When the TraderApp component receives this action request, it might automatically generate and store a contract including pre-defined contact clauses. When the TraderApp component completes this task, it transmits the following action response to the control engine 900: OK(TraderApp::PrepareInitialPaperwork).
Another rule defines that when the managed business object is in state RECEIVED_ORDER and an OK(TraderApp::PrepareInitialPaperwork) is received, the control engine 900 will transition that object to state INITIAL_PAPERWORK_RECEIVED:
OK(TraderApp::PrepareInitialPaperwork)+ORDER_RECEIVED→INITIAL_PAPERWORK_RECEIVED
Similarly, the control engine 900 asks a ManagerApp component to customize the contract for the client and transitions the managed business object to state CLIENT_CUSTOMIZED after the ManagerApp transmits an action response indicating that the task is complete.
The control engine 900 then asks a LegalDept component to review the contract (e.g., to determine that the contract meets regulatory requirements. In this case, however, two rules might apply:
OK(LegalDept::Review)+CLIENT_CUSTOMIZED→APPROVED_BY_LEGAL
NotOK(LegalDept::Review)+CLIENT_CUSTOMIZED→LEGAL_PROBLEM
That is, the LegalDept may respond by indicating that the review is complete (and the contract is approved), in which case the control engine 900 transitions the managed business object to state APPROVED_BY_LEGAL. The LegalDept can also respond by indicating that the contract is not approved (i.e., NotOK). In this case, the control engine 900 transitions the managed business object to state LEGAL_PROBLEM. If the contract is approved by the LegalDept application (or if it revised and approved), the order is executed.
Control Engine
An input device 940 (e.g., a computer mouse or keyboard) may be used to provide information to the control engine 900 (e.g., so that a rule can be defined). An output device 950 (e.g., a display device or printer) may be used to receive information from the control engine 900.
The processor 910 is also in communication with a storage device 930. The storage device 930 may comprise any appropriate information storage device, including combinations of magnetic storage devices (e.g., magnetic tape and hard disk drives), optical storage devices, and/or semiconductor memory devices such as Random Access Memory (RAM) devices and Read Only Memory (ROM) devices.
The storage device 930 stores a program 915 for controlling the processor 910. The processor 910 performs instructions of the program 915. For example, the processor 910 may manage business object state transitions in accordance with any of the embodiments described herein.
As used herein, information may be “received” by or “transmitted” to, for example: (i) the control engine 900 from a component application; or (ii) a software application or module within the control engine 900 from another software application, module, or any other source.
As shown in
Component Applications
According to some embodiments, Component1 can also transmit information directly to Component2. For example, the control engine 900 might send an action request to Component1 asking that a payment amount be re-calculated based on the current LIBOR rate. In this case, Component1 accesses the current LIBOR rate via a communication network 1030. Moreover, Component1 transmits the current LIBOR rate directly to Component2 (which needs the information to respond to a future action request that will be generated by the control engine 900). One advantage of such an approach is that the information does not need to transmitted from Component1 to the control engine 900 and then again from the control engine 900 to Component2. Moreover, Component2 might be able to start processing the information even before receiving an action request from the control engine 900.
If the action is not performed at 1104, a NotOK action response is transmitted to the control engine 900 at 1106. For example, a component application might not be able to perform an action because of a governmental regulation. If the action is performed at 1104, an OK action response is transmitted to the control engine 900 at 1108. According to some embodiments, a system may consistently execute actions (e.g., the system may obey a rule or generate an exception when there is no applicable rule).
Display
Thus, embodiments of the present invention may efficiently manage business objects. Moreover, the control application and related utilities may provide guaranteed, rule-based, properly ordered, consistent execution of functions by a set of independent components and the concomitant management of the states of a set of business objects, in response to potentially competing asynchronous events. In addition, the system is scalable (e.g., a large number of business objects may be managed) and the granularity of the objects and rules may be selected as appropriate.
Additional Embodiments
The following illustrates various additional embodiments of the present invention. These do not constitute a definition of all possible embodiments, and those skilled in the art will understand that the present invention is applicable to many other embodiments. Further, although the following embodiments are briefly described for clarity, those skilled in the art will understand how to make any changes, if necessary, to the above-described apparatus and methods to accommodate these and other embodiments and applications.
Some embodiments have been described herein with respect to specific types of managed business objects, but the present invention may be used in connection with any other type of managed business object. Moreover, the specific rules provide herein are merely for illustration and embodiments may be associated with any type of rule for a managed business object.
The present invention has been described in terms of several embodiments solely for the purpose of illustration. Persons skilled in the art will recognize from this description that the invention is not limited to the embodiments described, but may be practiced with modifications and alterations limited only by the spirit and scope of the appended claims.
The present application claims the benefit of U.S. Provisional Application No. 60/551,499 entitled “Systems and Methods to Facilitate State Transitions for Managed Business Objects” and filed Mar. 9, 2004. This application is also related to U.S. patent application Ser. No. ______ entitled “Financial Transaction Modeling System” and filed concurrently herewith. The entire contents of these applications are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60551499 | Mar 2004 | US |