Embodiments of the present invention allow for a less burdensome and more coherent state management of an object node by providing a separate status management runtime that tracks status information associated with individual object nodes in a status repository, and makes determinations, on behalf of the object nodes, as to whether actions are allowed to be performed based at least in part on the status information associated with the object nodes in the status repository.
As a result, object node programmers need only to code calls to the status management runtime to make sure an action is allowed to be performed, instead of having to understand, identify and account for all constraints that are based on the state of an object node. Additionally, by having object node status information represented in the status repository, the status management runtime is able to use this information in a coherent manner so as to not make any determination independent of an object node's state.
As shown in
If the outcome of the determination specifies that the action is not allowed, then the status management runtime (130) sends a response (150) to the application object node (110) indicating that the action is not allowed to be performed (step 240), and the application object node (110) processes that negative response (step 250). On the other hand, if the outcome of the determination specifies that the action is allowed, then the status management runtime (130) sends a response (150) to the application object node (110) indicating that the action is allowed to be performed (step 260), and the application object node (110) processes that positive response (step 270).
In another embodiment, a client application may send a list of requested actions to the application object node (110), which queries the status management runtime (130) for determinations of the requested actions and subsequently returns the positive and/or negative responses to the client application for further processing.
The status information associated with the application object node (110) in the status repository (140) may include one or more status attribute values associated with the application object node (110) and one or more constraints identifying what actions may be allowed to be performed based at least in part on the one or more status attribute values. The status information may also include one or more constraints identifying what status attribute values may be allowed to be set following the performance of an action, in addition to one or more constraints identifying what status attribute values may be changed based on a change in one or more other status attribute values. Status attribute value information associated with an application object node 110 may be previously stored in the status repository 140 or passed by the application object node 110 along with the check action request (120).
The status information may also be based on a status schema derived from a design-time model, as shown in the embodiment of
The modeled status variables and their status values represent the state of the object node. The status values represent the possible values a status variable is allowed to take up, while the status variable lists all possible allowed status values. At runtime the status variable then specifies information about the currently valid value. The modeled actions represent the methods that may be performed on or by the object node. Whether they are allowed or not is dependent on the currently set status value associated with the object node's state. The modeled preconditions are identified by the connections (edges) from status values to actions, and they represent the status value constraints allowing or permitting the actions. The modeled transitions are identified by the edges that come out of an action and connect to a resulting status value, and they represent constraints allowing or permitting the setting of a status value following the performance of an action (for example, as triggered by the updating step 510). The model may also identify edges drawn from one status value of one variable to another status value of another variable (not shown), indicating that one status change directly triggers another one. The status management runtime (130) may adjust such other status information in the status repository (140) during the application runtime.
Additionally, the status management runtime 130 may operate in a simulation mode. Instead of the status management runtime 130 communicating with an application object node 110 in an application runtime 100, the application object node 110 may be associated with a user interface application deployed in the status management runtime 130. In this manner, the operation of the status management runtime 130 in connection with a particular application object node 110 may be tested prior to deployment of the application object node 110 in an actual application runtime 100.
Input device 820 may include a keyboard, mouse, pen-operated touch screen or monitor, voice-recognition device, or any other device that provides input. Output device 830 may include a monitor, printer, disk drive, speakers, or any other device that provides output.
Storage 840 may include volatile and nonvolatile data storage, including one or more electrical, magnetic or optical memories such as a RAM, cache, hard drive, CD-ROM drive, tape drive or removable storage disk. Communication device 860 may include a modem, network interface card, or any other device capable of transmitting and receiving signals over a network. The components of the computing device may be connected in any manner, such as via electrical bus or wirelessly.
Software 850, which may be stored in storage 840 and executed by processor 810, may include, for example, the application programming that embodies the functionality of the present invention (e.g., as embodied in application runtime environment 100 and status management runtime 130). Software 850 may include a combination of client applications and enterprise servers such as an application server and a database server.
Communications in connection with the present invention may occur over any type of interconnected communication system/network, which may implement any communications protocol, which may be secured by any security protocol. Corresponding network links may include telephone lines, DSL, cable networks, T1 or T3 lines, wireless network connections, or any other arrangement that implements the transmission and reception of network signals.
The computing device may implement any operating system, such as Windows or UNIX. Software 850 may be written in any programming language, such as ABAP, C, C++, Java or Visual Basic. In various embodiments, application software embodying the functionality of the present invention may be deployed on a standalone machine, in a client/server arrangement or through a Web browser as a Web-based application or Web service, for example.
Several embodiments of the invention are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the 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.
For example, software modules that implement the present invention such as application runtime environment 100 and status management runtime 130 may comprise several discrete modules that together still provide the same functionality, data specified in the illustrated status repository may be spread over several databases and/or systems, and the flow diagram of