External process user interface isolation and monitoring

User interfaces for Multiple external processes are hosted in a single user interface (UI) threaded host application. A broker process (or broker window) is created in the hosting application for each external process user interface window. A monitor monitors the state of the hosting application and, if it becomes nonresponsive, identifies each of the external processes that are nonresponsive, and issues a notification to terminate the identified external processes.

CROSS-REFERENCE TO RELATED APPLICATION

The present application claims priority of India patent application Serial No. 5060/CHE/2015, filed Sep. 22, 2015, and published in English the content of which is hereby incorporated by reference in its entirety.

BACKGROUND

There are a wide variety of different types of computing systems. Some computing systems are used by organizations that perform customer service or contact center operations. In such systems, a hosting application shows multi-dimensional information on a single user interface from various external applications (or external processes).

Some such systems provide the ability to configure a single user interface that combines user interfaces from various external applications (or external processes) that can be hosted within the hosting application (or parent) user interface. However, the external applications (or external processes) can crash or otherwise become nonresponsive. Because the hosting application renders different user interfaces from the different processes to create the unified view, and because the hosting application has little or no control over the external applications (or processes), the external applications (or processes) can cause the hosting application, itself, to crash or become nonresponsive. This can essentially block the entire hosting application, since all of the user interfaces are rendered on a single UI thread that belongs to the hosting application.

SUMMARY

User interfaces for multiple external processes are hosted in a single user interface (UI) threaded host application. A broker process (or broker window) is created in the hosting application for each external process user interface window. A monitor monitors the state of the hosting application and, if it becomes nonresponsive, identifies each of the external processes that are nonresponsive, and issues a notification to terminate the identified external processes.

DETAILED DESCRIPTION

FIG. 1is a block diagram of one example of a computing system architecture100. Architecture100illustratively includes computing system102and one or more client systems104.FIG. 1shows that, in one example, computing system102illustratively generates user interfaces106for interaction by user108. User108can illustratively interact with user interfaces106to control and manipulate computing system102. Similarly, client system104illustratively generates user interfaces110for interaction by user112. User112can illustratively interact with user interfaces110in order to control and manipulate client system104.

In the example shown inFIG. 1, computing system102illustratively includes one or more processors or servers114, operating system116(which can include a message handling logic118and other operating system functionality120), data store122, user interface component124, external process user interface (UI) hosting system126, and it can include other items128. Also, in the example shown inFIG. 1, external process UI hosting system126can include a set of hosting functionality130, isolation system132, monitoring system134, and it can include other items136.FIG. 1also shows that client system104illustratively includes one or more client components162, one or more processors164, user interface component166and data store168. It can include other client functionality170as well.

Hosting functionality130illustratively hosts user interfaces for various external processes (such as processes that can be run on client system104). Isolation system132illustratively isolates those user interfaces, and monitoring system134monitors the hosting functionality130as well as the external processes, to determine whether they are in a nonresponsive state. This is described in greater detail below.

Isolation system132, itself, can include broker process generation logic138, new process details notification logic140, attachment/detachment logic142, and it can include other items144. Monitoring system134, itself, illustratively includes child process identifier logic146, monitor list generator logic148, host system monitor logic150, non-responding external process identifier logic152, monitor data store154(which can include external process monitor list156, and other items158), and it can include other items160.

Before describing the operation of computing system102in more detail, a brief overview will first be provided. External process UI hosting system126illustratively hosts the user interface(s) of multiple external processes (which can be run, for instance, on client system104) inside a tabbed layout in a single user interface threaded application which can be run by hosting functionality130. In doing so, isolation system132illustratively generates a broker process for each external process user interface (or window) that is hosted. Monitoring system134monitors the hosting application to identify whether it enters a nonresponsive state. If so, it iterates through all of the hosted, external processes, to identify which of those is in a nonresponsive state. It then identifies, to isolation system132, which of the external processes are nonresponsive, and isolation system132can terminate the broker process that is managing that external process. This type of isolation and monitoring enables the main hosting application run by hosting functionality130to maintain access to all of the other external processes, without becoming nonresponsive, based upon one or more of the external processes, themselves, being nonresponsive.

FIG. 2is a block diagram illustrating one example of a main hosting process171that can be run by a main hosting application that hosts user interfaces for a set of external processes172,174and176(each of which can have its own UI or window). It can be seen that the main hosting process171includes a host process user interface178. It also includes a separate broker process window (or broker process user interface)180,182and184, corresponding to each of the external processes172-176. Hosting process171is also illustratively coupled to, and managing, the interfaces for a communication channel186that provides communication with monitoring system134(shown inFIG. 1).

By way of overview, when the host process user interface178becomes nonresponsive (as detected by monitoring system134), then monitoring system134illustratively accesses each of the broker process user interfaces (or windows)180-184to determine which (if any) external processes172-176have become nonresponsive. It can then send a message to message handling component118in operating system116to indicate that the corresponding broker process window180-184should be terminated (or detached) from host process user interface178. The host process user interface178can then terminate the corresponding broker process windows180-184, while maintaining its connection to the other broker process windows180-184(and therefore maintaining accessibility to the other external processes that are still responsive). When the external process that was identified as being in a nonresponsive state is then returned to its responsive state, the broker process window (or a new broker process window) for that external process can be generated and reattached to the host process user interface178.

FIG. 3is a flow diagram illustrating one example of the operation of external UI hosting system126in identifying new process user interfaces that it will be hosting, and communicating that information to monitoring system134so that monitoring system134can enter it in external process monitor list156. It is first assumed that the main external process hosting application is started. This can be started, for instance, in hosting functionality130. This is indicated by block200inFIG. 3.

When that is detected, the hosting application (or another set of logic or component) spawns an instance of a monitoring process that can be implemented by monitoring system134. Spawning the monitoring process is indicated by block202. At some point, the main external process hosting application will begin to host user interfaces for external processes. When it does this, attachment/detachment logic142controls broker process generation logic138to generate a broker process (which has a broker process window) for the new external process to be hosted. This is so the hosting application130can detach itself from the corresponding external process (should it become non-responsive) by terminating its corresponding broker process. New process details notification logic140then notifies monitoring system134of the details of the new process, for which a user interface is to be hosted by the main process hosting application. Notifying the monitoring system134of the new process details is indicated by block204inFIG. 3.

Child process identifier logic146then locates the new process, based upon the details that have been provided. This is indicated by block206. Monitor list generator logic148then determines whether the new process has one or more child processes. This is indicated by block206. If so, then child process identifier logic146identifies the details of each of the child processes. This is indicated by block210.

Monitor list generator logic148then adds the new process (and any of its child processes) into the external process monitor list156. This is indicated by block212.

This continues, for each new external process that is being hosted by the main external process hosting application. This is indicated by block214.

Once monitoring system134has items in its external process monitor list156, it can begin monitoring the main external process hosting application, as well as the external processes. Briefly, host system monitor logic150monitors the main external process hosting application to determine whether it has become nonresponsive, and non-responding external process identifier logic152identifies which, if any, of the external processes have caused the main hosting application to become nonresponsive, so their broker processes can be terminated. This is now described in greater detail below with respect toFIGS. 4 and 5.

FIG. 4is a block diagram showing one example of non-responding external process identifier logic152in more detail. In the example shown inFIG. 4, logic152includes child process accessing logic220, child process iteration logic222, responsiveness identifier logic224, termination notifier logic226, and it can include other items228. By way of overview, child process accessing logic220identifies various child processes that are having their UIs hosted by the main hosting application. Child process iteration logic222iterates through each of the child process UIs, and responsiveness identifier logic224identifies which of them, if any, have become nonresponsive. Termination notifier logic226then sends a notification indicating that the broker processes for the nonresponsive external process UIs should be terminated.

FIG. 5is a flow diagram illustrating one example of the operation of monitoring system134, in identifying nonresponsive processes, in more detail.

At some point, host system monitoring logic150determines whether it is time to monitor the main hosting application to determine whether it has become nonresponsive. This can be done in a wide variety of different ways. In one example, host system monitor logic150continuously polls the main hosting application to ensure that it is still responsive. In another example, it can poll the main hosting application intermittently, periodically, or based on other triggering criteria. All of these are contemplated herein. Determining that it is time to monitor the main hosting application is indicated by block250inFIG. 5.

When it is time to monitor the main hosting application, host system monitor logic150checks to determine whether it is responsive. This is indicated by block252. For instance, it can monitor the activity of the main hosting application for a configurable amount of time. This is indicated by block254. It can send various different types of messages to the hosting application to determine whether it is responsive or nonresponsive. This is indicated by block256. It can identify the state of responsiveness of the main hosting application in other ways as well, and this is indicated by block258.

If host system monitoring logic150determines that the main hosting application is nonresponsive (as indicated by block260), then non-responding external process identifier logic152begins to determine which, if any, of the processes in the external process monitor list156have become nonresponsive. Thus, child process accessing logic220first selects a process from the monitor list, and responsiveness identifier logic224determines whether the selected process is responding. This is indicated by blocks262and264inFIG. 5.

If the selected process is not responding, then responsiveness identifier logic224notifies the main hosting application of the details of the selected process, and also indicating that it is nonresponsive. This is indicated by block266. This can allow the main hosting application to perform certain activities. For instance, it may wish to log the state of the external process, or various details about the external process, before the external process is terminated.

In one example, responsiveness identifier logic224can also determine whether the selected process responded during the previous monitoring cycle. This is indicated by block268. If so, it may wait to send (or delay in sending) a termination notification for the selected process, allowing the selected process to recover, if possible.

However, if the selected process has not been responsive for multiple cycles, then termination notifier logic226illustratively sends message handling logic118in operating system116a message or notification that the broker process corresponding to the selected, nonresponsive process, should be terminated. This is indicated by block270. The message handling system118can communicate this message to the main hosting application which, at its discretion, can then terminate the broker process for the nonresponsive external process.

Child process iteration logic222iterates through all of the external processes in the external process monitor list156, until all of them have been checked for responsiveness. This is indicated by block272inFIG. 5.

It can thus be seen that the external processes that have user interfaces hosted by the main hosting application are isolated. This is done by generating a broker process corresponding to each of the external processes. Because the broker process is generated within the main hosting application, the main hosting application can detach itself from any external processes that become nonresponsive. However, it can maintain an attachment with other external processes that are still responding.

Similarly, the monitoring system first monitors the main hosting application to identify when it has become nonresponsive, itself. When this happens, the monitoring system iterates through all of the external processes that have user interfaces hosted by the main hosting application, and identifies which of those, if any, have become nonresponsive. It can then issue a notification to terminate the corresponding broker processes so that the main hosting application does not stay in a nonresponsive state, but instead can continue operating with respect to the other external processes.

In the example shown inFIG. 6, some items are similar to those shown inFIG. 1and they are similarly numbered.FIG. 6specifically shows that computing system102can be located in cloud502(which can be public, private, or a combination where portions are public while others are private). Therefore, users108and112can use user devices504and505to access those systems through cloud502.

Regardless of where they are located, they can be accessed directly by devices504and505, through a network (either a wide area network or a local area network), they can be hosted at a remote site by a service, or they can be provided as a service through a cloud or accessed by a connection service that resides in the cloud. All of these architectures are contemplated herein.

FIG. 7is a simplified block diagram of one illustrative example of a handheld or mobile computing device that can be used as a user's or client's hand held device16, in which the present system (or parts of it) can be deployed.FIGS. 8-9are examples of handheld or mobile devices.

FIG. 7provides a general block diagram of the components of a client device16that can run components of architecture100or that interacts with architecture100, or both. In the device16, a communications link13is provided that allows the handheld device to communicate with other computing devices and under some embodiments provides a channel for receiving information automatically, such as by scanning Examples of communications link13include an infrared port, a serial/USB port, a cable network port such as an Ethernet port, and a wireless network port allowing communication though one or more communication protocols including General Packet Radio Service (GPRS), LTE, HSPA, HSPA+ and other 3G and 4G radio protocols, 1×rtt, and Short Message Service, which are wireless services used to provide cellular access to a network, as well as Wi-Fi protocols, and Bluetooth protocol, which provide local wireless connections to networks.

In other examples, applications or systems are received on a removable Secure Digital (SD) card that is connected to a SD card interface15. SD card interface15and communication links13communicate with a processor17(which can also embody processors from previous Figures) along a bus19that is also connected to memory21and input/output (I/O) components23, as well as clock25and location system27.

Note that other forms of the devices16are possible.

Example 1 is a computing system, comprising:

a set of hosting functionality that runs a hosting application that hosts user interfaces for a plurality of external processes that are external to the computing system;

an isolation system that generates, for each external process, a corresponding broker process that hosts a user interface for the corresponding external process and that is controlled by the hosting application; and

a monitoring system that monitors a responsiveness of the hosting application and each of the external processes and generates a termination signal to terminate broker processes for non-responsive external processes.

Example 2 is the computing system of any or all previous examples wherein the isolation system comprises:

broker process generation logic that generates a first broker process for a corresponding first external process; and

new process details notification logic that notifies the monitoring system of identifying information identifying the first external process.

Example 3 is the computing system of any or all previous examples wherein the monitoring system comprises:

monitor list generator logic that adds a first external process identifier that identifies the first external process to a process monitor list based on the identifying information.

Example 4 is the computing system of any or all previous examples wherein the monitoring system comprises:

child process identifier logic that accesses a representation of the first external process and identifies any child processes in the first external process and accesses identifying information identifying the child processes, the monitor list generator logic adding child process identifiers for each identified child process to the process monitor list.

Example 5 is the computing system of any or all previous examples wherein the monitoring system comprises:

host system monitor logic that monitors the responsiveness of the hosting application and generates a non-responsive output indicative of the hosting application being in a non-responsive state.

Example 6 is the computing system of any or all previous examples wherein the monitoring system comprises:

non-responding external process identifier logic that receives the non-responsive output indicating that the hosting application is in a non-responsive state and determines a responsiveness of one or more of the external processes identified on the process monitor list.

Example 7 is the computing system of any or all previous examples wherein the non-responding external process identifier logic comprises:

responsiveness identifier logic that selects an external process from the process monitor list, corresponding to the non-responsive hosting application, and identifies whether the selected external process is responsive and, if not, generates an output indicating that the selected external process is in a non-responsive state.

Example 8 is the computing system of any or all previous examples wherein the non-responding external process identifier logic comprises:

termination notifier logic that notifies the hosting application that the selected external process in the non-responsive state.

Example 9 is the computing system of any or all previous examples wherein the hosting application generates the termination signal terminating the broker process corresponding to the selected external process, in response to the selected external process being in the non-responsive state.

Example 10 is a computer implemented method, comprising:

running a hosting application that hosts user interfaces for a plurality of external processes that are external to the hosting application;

generating, for each external process, a corresponding broker process that hosts a user interface for the corresponding external process and that is controlled by the hosting application;

monitoring a responsiveness of the hosting application and each of the external processes; and

generating a termination signal to terminate broker processes for non-responsive external processes.

Example 11 is the computer implemented method of any or all previous examples wherein generating a corresponding broker process comprises:

generating a first broker process for a corresponding first external process; and

generating a notification including identifying information identifying the first external process.

Example 12 is the computer implemented method of any or all previous examples wherein monitoring comprises:

adding a first external process identifier that identifies the first external process to a process monitor list based on the identifying information.

Example 13 is the computer implemented method of any or all previous examples wherein monitoring comprises:

accessing a representation of the first external process;

identifying any child processes in the first external process;

accessing identifying information identifying the child processes; and

adding child process identifiers for each identified child process to the process monitor list.

Example 14 is the computer implemented method of any or all previous examples wherein monitoring comprises:monitoring the responsiveness of the hosting application; and

generating a non-responsive output indicative of the hosting application being in a non-responsive state.

Example 15 is the computer implemented method of any or all previous examples wherein monitoring comprises:

receiving the non-responsive output indicating that the hosting application is in a non-responsive state; and

determining a responsiveness of one or more of the external processes identified on the process monitor list.

Example 16 is the computer implemented method of any or all previous examples wherein determining a responsiveness of one or more of the external processes comprises:

selecting an external process from the process monitor list, corresponding to the non-responsive hosting application;

identifying whether the selected external process is responsive; and

if not, generating an output indicating that the selected external process is in a non-responsive state.

Example 17 is the computer implemented method of any or all previous examples and further comprising:

generating, with the hosting application a termination signal terminating the broker process corresponding to the selected external process, in response to the selected external process being in the non-responsive state.

Example 18 is a computing system, comprising:

a set of hosting functionality that runs a hosting application that hosts user interfaces for a plurality of external processes that are external to the computing system;

broker process generation logic that generates a first broker process for a corresponding first external process, the first broker process hosting a user interface for the corresponding first external process and being controlled by the hosting application;

new process details notification logic that generates a notification with identifying information identifying the first external process; and

a monitoring system that monitors a responsiveness of the hosting application and the first external process and generates a termination signal to terminate the first broker process when the corresponding first external process is non-responsive.

Example 19 is the computing system of any or all previous examples wherein the monitoring system comprises:

monitor list generator logic that adds a first external process identifier that identifies the first external process to a process monitor list based on the identifying information.

Example 20 is the computing system of any or all previous examples wherein the monitoring system comprises:

host system monitor logic that monitors the responsiveness of the hosting application and generates a non-responsive output indicative of the hosting application being in a non-responsive state; and

responsiveness identifier logic that receives the non-responsive output indicating that the hosting application is in a non-responsive state, that selects an external process from the process monitor list, corresponding to the non-responsive hosting application, that identifies whether the selected external process is responsive and, if not, generates an output indicating that the selected external process is in a non-responsive state.