Resource conflict management using predefined XML schemas

A method and system for identifying conflicting resource claims by applications for a system having a plurality of resources. A set of schemas are predefined for the system, wherein each schema defines a pooling of the resources of the system. Each application is then created based upon one of the schemas so as to be associated with a specified pool or subset of device resources. Applications are executed by a browser. Each application may have more than one state, and each state may have an associated schema. Requests for changes of state, such as invoking an instance of the application, are received by the browser. The browser informs a resource manager of the associated schema and the resource manager identifies the pool or subset of resources for requested state change based upon its schema and determines whether or not the resources are currently in use by another active application. Conflicts may be resolved by a conflict resolution component.

FIELD OF THE APPLICATION

This invention relates to resource management and, in particular, to supporting resource allocation and identifying resource conflicts in a dynamic multi-application system.

BACKGROUND OF THE INVENTION

A system may serve a number of applications. For example, a corporate system may serve multiple users, such a unified messaging server. A personal system may support a variety of applications for a single user, such as a personal computer that may act as a soft phone, web browser, speech recognizer, word processor, etc. In any multi-application system, the resource requirements of an application must be known in order to manage allocation of resources between applications, recognize resource conflicts, and manage application behaviour based on resource availability.

Accordingly, there is a need for a method and/or system for supporting resource management and for identifying resource conflicts between applications.

SUMMARY OF THE APPLICATION

The present application describes a method and system for supporting resource management and for identifying resource conflicts between applications. Applications on a system are written in an eXtensible Markup Language (XML) defined to expose system resources and capabilities to an application layer. A set of schemas are provided that define pools or groups of resources. Each application is written in accordance with one of the schemas, and the selected schema defines the pool of resources available to the application. In some cases, an application may have a schema associated with each state of its operation, since in different states the application may consume different resources.

A browser and a resource manager identify any conflicts between an application seeking a state change and the current status of resources on the system. For example, existing instances of applications may have control a set of system resources. When an application seeks a state change, such as initiation of a new instance of the application, then the resource manager determines, based upon the schema associated with the application, whether or not the resources required by the application are available. Conflicts may be resolved by a conflict determination component.

In one aspect, the present application provides a method of identifying resource conflicts in a system including a device having a plurality of resources. The method includes steps of providing a plurality of schemas, each schema defining a pooling of one or more resources, and receiving a state change request from a first application, the first application conforming to a selected one of the schemas. It also includes steps of identifying, based upon the selected schema, a resource required by the first application as a result of the state change request, and determining whether the requested resource is currently in use by a second application.

In a further aspect, the present application provides a system including a device having a plurality of resources. The system includes a plurality of schemas, each schema defining a pooling of one or more of the resources, a resource manager, and a first application, the first application conforming to a selected one of the schemas. The system also includes a browser for receiving a state change request for the first application and notifying the resource manager of the selected schema, wherein the resource manager includes a conflict determination component for determining whether the pooling of resources defined for the selected schema includes a resource currently in use by a second application.

Other aspects and features of the present application will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments in conjunction with the accompanying figures.

Similar reference numerals are used in the figures to denote similar components.

DESCRIPTION OF SPECIFIC EMBODIMENTS

The embodiments of a system or method for identifying conflicting resource claims are described below in the context of a system having a plurality of resources and more than one application that could potentially request access to the resources. In one aspect, the following description provides for a system having an application that informs the system of the specific pool of resources required by the application. Accordingly, the system may identify when a new application requires a pool of resources that includes a resource already in use by another application, i.e. it may identify conflicting claims for use of the resource.

Applications on a system are written in an XML markup language defined to expose system resources and capabilities to an application layer. A set of schemas are provided that define pools or groups of resources. Each application is written in accordance with one of the schemas, and the selected schema defines the pool of resources available to the application. In some cases, an application may have a schema associated with each state of its operation, since in different states the application may consume different resources. An application's access to resources and the manner in which it accesses those resources is restricted to the subset specified by its associated schema.

The set of schemas may be created to pool together commonly used resources. A given schema may include all resources on the device. Another schema may only include one resource on the device. Many schemas may include a subset of the total device resources. An application developer chooses a schema based upon the resources that the developer intends for the application to use. Typically, an application developer will choose a schema defining the minimum subset of resources that the application will require so as to minimize the application's “resource footprint” and, thus, the potential for conflicts with other applications.

The applications may be written in the markup language created to expose resources to the application layer. In general, the markup language will be a single common markup language for the entire underlying system. In addition, applications specifically reference, and are written in accordance with, a specified one of the schemas. The schema restricts the resources that an application may consume and restricts the manner in which the application interacts with a resource. For example, an application may be entitled to read a file from a disk, but may not be entitled to write a file to the disk.

Reference is first made toFIG. 1, which shows a block diagram of a system10having a plurality of resources12(shown as12a,12b,12c, . . . ,12×). The system10further includes a number of applications18(shown individually as18a,18b, . . . ,18n) and an engine or browser20for executing the applications18. The applications18are created using a predetermined mark-up language understood by and executable by the browser20.

The system10also includes a resource manager22in communication with the browser20for identifying conflicting claims for resources12between multiple applications18and, in some embodiments, performing conflict resolution.

The applications18are created based upon schemas24each predefining a pool of selected resources12. Based upon the schema24used as the basis for the application18, the browser20will be aware of the specific resources12required by the application18. Accordingly, the browser may alert the resource manager22to the specific resources12required by an application18or to the schema24used by the application18. The resource manager22may then determine whether any of the specific resources12are already in use by another application18.

The system10may further include one or more legacy applications16not created in accordance with the predetermined mark-up language. A legacy application16may include an application created to operate upon the system prior to the introduction of a browser and the mark-up language, i.e. it may be an application from an earlier generation system. Because legacy applications16are not created in accordance with the predetermined mark-up language, they are not executed by the browser20and, accordingly, do not conform to one of the schemas24. Accordingly, the resource requirements of legacy applications16may be “hard coded” into the resource manager22. In one embodiment, this is accomplished by creating a “pseudo schema” defining the resource requirements of the legacy application16. The resource manager22uses the “pseudo schema” to determine resource consumption in the same fashion as it does with regular applications and schemas.

Applications18may be invoked or launched in response to a triggering or input event. In response to the triggering or input event the browser20accesses the schema24associated with the application18. The browser20requests permission from the resource manager22to execute the application18, and it passes the resource manager22the associated schema24. The application18may have specific resources associated with it or, in another embodiment, the resource manager22may assign resource instances to it. For example, the application18requests an interactive voice response (IVR) resource and the resource manager returns a specific IVR resource.

The resource manager22determines whether the resources required by the application18are already in use. The resource manager22maintains a ‘context’ for the user device, i.e. a snapshot of the state of each application18for the user device. The context for the device includes information on which resources are ‘owned’ or ‘occupied’ by which applications18.

If the resource manager22determines that the requested resources are available, then it informs the browser20, which initiates execution of the application18. If the resource manager22determines that the requested resources are not available, then it may invoke a conflict resolution process. The conflict resolution process may apply a priority scheme, logic rules, a neural network, or any other decision-making mechanisms for determining which of two applications should be entitled to access a resource. The conflict resolution process may rule that the application18is entitled to access the resource, in which case the resource manager22informs the browser20and the browser20continues with execution of the application18. If the application18is denied access to the resource, then the browser20is informed and it declines to execute the application18.

During execution, the browser20continues to enforce the resource restrictions imposed on an application18by its associated schema24. If a rogue application requests a resource which it does not own, or attempts to execute a disallowed operation, the browser20may terminate the application18.

In one example embodiment, the system10is for implementing a user telephone set and the resources12comprise the telephone set resources. The telephone set resources may include, for example, a speaker, a microphone, a display screen (or portions of a display screen), an input keypad, incoming and outgoing media paths, and other resources. The applications may include a voice mail application, a call recording application, and/or information display applications, such as stock exchange quote application. Other possible applications will be apparent to those or ordinary skill in the art.

In the example of a telephone set, the legacy applications16may include a call processing application and/or a set administration application. The call processing application performs functions directly related to establishing voice calls, such as providing dial-tone, receiving and processing digit entry from the key pad, associated signaling and setting up of the media paths. The set administration application relates to functions such as setting the ring cadence, microphone volume, speaker volume, and other administrative settings independent from or transparent to call processing.

In order to initiate an application, a telephone set may accept input from a user. For example, a telephone set may include a dedicated button for launching a voice mail application. In another embodiment, a telephone set may feature a key combination for launching a recording application for recording the audio of an ongoing voice call. In yet another embodiment, the telephone set may launch a voice activated dialing application based upon detection of an off-hook condition, i.e. when the user picks up the handset or selects an outgoing line.

Reference is now made toFIG. 5, which shows a block diagram of a user device70underlying the system10ofFIG. 1. The user device70includes the resources12, the resource manager22, the applications18and the browser20. In some embodiments, the user device70is coupled to a communication network. Through the communication network the user device70may access additional applications, which are not resident on the user device70itself. In one embodiment, the user device70may comprise a telephone set.

Reference is also made toFIG. 6, which shows a block diagram of the system10ofFIG. 1embodied in a user device72and a proxy server74. The user device72includes the resources12and the proxy server74includes the remainder of the system10, such as the applications18, the resource manager22, and the browser20.

Reference is now made toFIG. 2, which diagrammatically shows a state diagram90for the applications18(FIG. 1). An application18may have more than one state. In different states, the application18may have different resource requirements. For example, in an active state the application may consume more resources that in a sleep or dormant state. Accordingly, in one embodiment, each application state has an associated schema24(FIG. 1), and the resource manager22evaluates the availability of resources with each request to transition from one application state to another.

The state diagram90illustrates that, in one embodiment, an application18may be in one of four possible states: an active focus state92, an active background state94, an idle focus state96, and an idle background state98. Other embodiments may have more, fewer, or different states.

The active focus state92corresponds to an active application having primary control over a substantial number of resources on the set, i.e. the foreground application. The active focus state92is a state in which the application is the main application interacting with a user. This may include, in the example of a telephone set, the call processing application during an active voice call. In this state, the call processing application has control over the microphone, the speaker, and the incoming and outgoing media paths.

An application may be in an active state without being in the foreground, in which case it is in the active background state94. An example of this type of situation is a call recording application that is operating during an active voice call. In this situation, the call processing application is in the active focus state92and the call recording application is in the active background state94.

An application may switch from the active focus state92to the idle focus state96. The idle focus state96is a state in which the application is awaiting a triggering event to go active. For example, a call processing application sits in the idle focus state96between calls, awaiting a trigger, such as the user picking up the handset or selecting an outgoing line.

Lastly, an application may be in the idle background state98. In this state, the application is not running or consuming resources and is not in the ‘foreground’ on the set.

The sum of application states92-98on a set or device makes up the context of the device. The context is a snapshot or overall picture of the resource availability of the device. There is an explicit relationship between application state and resource ownership, as defined by the schema associated with each application state, meaning that the system context provides a map of which system resources are owned by which application. It is this context that the resource manager22maintains and uses to determine whether resources are available for a requested application state change.

Reference is now made toFIG. 3, which diagrammatically shows a portion of the system10fromFIG. 1. The system10may include a conflict resolution component54.

A browser-based application18or a legacy application16may wish to initiate a state change. The application18,16requests permission from the resource manager22. For a browser-based application18this includes having the browser20identify the associated schema24and pass the associated schema24to the resource manager22along with the state change request. For a legacy application16, this may include requesting a state change and having the resource manager22access the associated pseudo schema. In another embodiment, the resource manager22need not retrieve and parse the associated schema24because it maintains a static description of each schema's resource requirements. In this embodiment, the resource manager22need only be notified of the identity of the associated schema24.

The context of the device indicates whether or not the resources are in use. The resource manager22compares the resources requested by the application with the system context to determine if the requested resources are available. If the resources are available, then the resource manager22informs the browser20that it may start execution of the application18, and it updates its view of the system context to note that the application18is now the owner of the requested resources. In some embodiments, the resource manager22may also return the identity of the resources that the application now owns. When an application stops or transitions to a new state which requires fewer resources, then permission is automatic and the context is again updated to reflect the change in resource ownership. When an application starts or transitions to a state requiring new resources, the resource manager22perform the described comparison with the system context. If a conflict is detected because one or more of the resources are in use by another application, then the resource manager22may invoke or notify the conflict resolution component54.

The conflict resolution component54evaluates the competing claims for access to the resources and determines which application should prevail. It may use a variety of logic rules or other mechanisms to determine which application should take precedence. The results of the conflict resolution are communicated from the conflict resolution component54to the resource manager22, which then grants or denies permission for the requested state change. The results from the conflict resolution component54may indicate that the requested state change is to be denied or permitted. If permitted, then it may further indicate that another application is to be closed or forced to change state in order to free up the conflicted resource.

Reference is now made toFIG. 4, which shows, in flowchart form, a method100for identifying conflicting resource claims. The method100is applicable for a system having multiple resources and more than one application which may be active concurrently. A number of schemas are provided, wherein the schemas define pools or groupings of the resources. Different schemas may include common resources. Different schemas may also place different restrictions upon the actions available to an application with respect to a common resource.

Each application is created based upon one of the schemas. The schema chosen by an application developer is a schema including a particular pool or group of resources that the application may require during operation.

The method100begins in step102, wherein an input or triggering event occurs. This may include a user input event such as a keystroke on an input device like a keypad, or picking up a handset. It may also include events generated by an active application as a result of user interaction with the active application. Those of ordinary skill in the art will appreciate that there may be other types of input or triggering events.

The input or triggering event is associated with an application such that, in step104, an application state change request is triggered. For example, the user selection of an outside line through pressing a line selection button may trigger a call processing application. The triggering of a requested application state change may include sending a message or document to the engine or browser20(FIG. 1). The browser20retrieves the schema24(FIG. 1) with which the requested application state is associated. The browser20identifies the associated schema24on the basis of a reference to the schema24in the markup language document implementing the application. In step106, the browser20passes the identified schema24to the resource manager22.

In step108, the resource manager22determines the resources requested by the new application state and assesses whether or not the requested resources are available. Based upon the prevailing context of the device—i.e. the currently active applications that ‘own’ or ‘occupy’ resources on the device—the resource manager22determines whether or not there is a conflict between the request for resources from the new application and the existing active applications. If there is no conflict, then it is safe to allow the application state change and grant it access to the requested resources. In this case, the method100proceeds to step110, wherein the resource manager22informs the browser20that the requested resources are available, and the browser20commences with execution of the state change.

If there is a conflict identified in step108, then the method100proceeds to step112, wherein the resource manager22invokes a conflict resolution process. Through an internally or externally implemented process, the resource manager22determines which of the two applications (the application attempting to change state or a different existing application) should be entitled to access the conflicted resource. At step114, a decision is rendered using logic rules, a neural network, priority settings, or any other decision-making mechanisms that may be appropriate for determining which application should prevail. If the decision at step114is that the application undergoing a state change should gain access to the resources, then the existing active application is closed or terminated in step116and the method100continues to step110, wherein the application state change is executed by the browser20. If the decision is that the existing application should win out, then in step118the browser20is informed by the resource manager22that it should refuse execution of the state change.

Those or ordinary skill in the art will appreciate that certain steps of the foregoing method may be performed concurrently with other steps or in an alternative order, without substantially affecting the operation of the method.

The present application may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Certain adaptations and modifications of the above described embodiments will be obvious to those skilled in the art. Therefore, the above discussed embodiments are considered to be illustrative and not restrictive, the scope of the application being indicated by the appended claims rather than the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.