Patent Description:
Users of mass spectrometry systems and liquid chromatography systems have to contend with a disjointed landscape of software tools. There may be separate tools for the different types of systems. Moreover, there may be separate software tools for each type of functionality, such as data acquisition, data processing, visualization, reporting and compliance. In addition, a user must separately login to each of the tools to gain access to the tools.

A prior art method for installing an offered web application or browser extension in a web browser is known from <CIT>.

There is a need for an integrated solution for the software tools for analytical devices such as mass spectrometry and liquid chromatography devices. The exemplary embodiments attempt to address this need.

According to the present invention in a first aspect, there is provided a method as recited by Claim <NUM>. According to the present invention in a further aspect, there is provided a non-transitory computer-readable storage medium as recited by Claim <NUM>. Further, preferable, features are presented in the dependent claims.

Exemplary embodiments described herein provide an application hub for applications of an analytical services platform. The analytical services platform may receive data from analytical devices and provide services, such as but not limited to filtering, processing and visualizing of the data. The application hub may act as a landing site for users on client devices to launch applications for the analytical services platform. In some exemplary embodiments, the application hub may provide a web page to the client computing devices over a network. The web page may provide a user interface listing applications for the analytical services platform. Users may launch the applications through the user interface, such as by selecting user interface elements provided for the applications.

The user interface may identify what applications have been installed on a client device and what applications have not been installed. For example, visual cues may be provided on the user interface that distinguish between installed applications and uninstalled applications. This provides a quick and easy way for a user to know what applications are available for installation. The user interface may also provide a mechanism for a user to install an application that is uninstalled on a client computing device. In some exemplary embodiments, icons are provided for each of the applications and taking an action, such as selection of the icon or otherwise activating the icon, initiates installation of the application on the client computing device.

The user interface may also identify when an application needs to be upgraded. For instance, visual cues of the need for an upgrade may be provided. An icon associated with the application may have a modified appearance indicating that an upgrade is needed. The need for an upgrade may be automatically determined without the need for user intervention by comparing a version number of the application installed on the client device with a version number of the application that is available for installation. A user may initiate the upgrade of an application through the user interface. In one instance, a user selects an icon associated with the application to initiate the upgrade. The upgrade is realized by installing the upgraded version of the application on the client device.

Since the application hub is intended to be a single landing site for all applications, a single login may be provided. In particular, a user may be prompted to provide their credentials when seeking access to the application hub. Once the user is successfully logged in, the user may not need to provide credentials again to launch the applications shown on the user interface. This simplifies the process of launching applications by eliminating the need for the user to login or otherwise demonstrate credentials for each application.

<FIG> shows an example of an environment <NUM> that may be suitable for practicing exemplary embodiments. The depiction is intended to be illustrative and not limiting. The environment <NUM> may include analytical devices <NUM> and <NUM>. The analytical devices may take many different forms. Examples of analytical devices include mass spectrometry (MS) devices, liquid chromatography (LC) devices, an LC-MS system, a mass analyzer system, an ion mobility spectrometer (IMS) system, a high-performance liquid chromatography (HPLC) system, a ultra-performance liquid chromatography (UPLC®) system, a ultra-high performance liquid chromatography (UHPLC) system, a solid-phase extraction system, a sample preparation system, a heater (for example, a column heater), a sample manager, a solvent manager, an in vitro device (IVD), combinations thereof, components thereof, variations thereof and more generally devices that perform analytical services.

In exemplary embodiments, an analytical service may include a process and any process information (for instance, parameters, settings, thresholds, and/or the like) that are required to perform a process, method, analysis, test, and/or the like on an analytical device. In some embodiments, an analytical service may be developed, refined, tuned, and/or the like using a primary analytical system.

The analytical devices <NUM> and <NUM> may be present in a laboratory environment in many instances. A laboratory network device <NUM> may be provided to interface with the analytical devices <NUM> and <NUM> over a network, such as a local area network (LAN). The laboratory network device <NUM> facilitates communication with the analytical devices and enables data gathered from the analytical devices <NUM> and <NUM> to be passed on to the network <NUM> and accessible by client computing device <NUM> and <NUM>. The client computing devices may be workstations, desktop computers, laptop computers or other types of computing devices. Users of the client devices <NUM> and <NUM> may communicate over the network <NUM> with a server <NUM>. The server <NUM> may be a server computing device and may run computer program code for analytical services platform <NUM> and application hub <NUM>. The analytical services platform <NUM> and the application hub <NUM> need not be resident on a single server <NUM>. In addition, the analytical services platform <NUM> may be spread across multiple servers a in some instances. The network <NUM> may be a wide area network (WAN), such as the internet, and may include wireless networking components as well as har-wired networking components.

The analytical services platform <NUM> may perform analytical services on data obtained from the analytical devices <NUM> and <NUM>. The analytical services platform <NUM> may provide data acquisition, processing, visualization, reporting, and configurable compliance tools within a networked environment. One non-limiting example of an analytical services platform is the UNIFI scientific information systems platform from Waters Corporation of Milford, Massachusetts.

As was discussed above, the applications hub <NUM> serves as a central hub where users may locate and execute applications on client computing devices for <NUM> and <NUM> for the analytical services platform <NUM>.

<FIG> depicts a more detailed view of an illustrative client computing device <NUM>. The client computing device includes a processor <NUM>. The processor <NUM> may take many different forms. For example, the processor <NUM> may include a central processing unit (CPU) realized as an integrated circuit, an application specific integrated circuit (ASIC), a programmable logic device (PLD), a digital signal processor (DSP), field programmable gate array (FPGA), a system-on-a-chip (SoC) or electric circuitry. The processor <NUM> may include multiple cores. The processor <NUM> may executes computer-executable instructions stored in the storage <NUM>.

The storage <NUM> may include one or more types of storage devices. For instance, the storage <NUM> may include various types of computer-readable storage media and/or systems in the form of one or more higher speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, an array of devices such as Redundant Array of Independent Disks (RAID) drives, solid state memory devices (e.g., USB memory, solid state drives (SSD) and any other type of storage media suitable for storing information. In addition, storage <NUM> may include various types of computer-readable storage media in the form of one or more lower speed memory units, including an internal (or external) hard disk drive (HDD), a magnetic floppy disk drive (FDD), and an optical disk drive to read from or write to a removable optical disk (e.g., a CD-ROM or DVD), a solid state drive (SSD), and/or the like.

The storage <NUM> may hold data, documents and computer programs. In the depiction in <FIG>, the storage stores applications <NUM> and components <NUM> and <NUM> that relate to the application hub. Specifically, the components include an application hub client that serves as a client of the application hub and an application hub client services <NUM> that provides client services and has administrative privileges. These components <NUM> and <NUM> will be described in more detail below.

The client computing device <NUM> may include a display device <NUM>, such as a liquid crystal display (LCD) or a light emitting diode (LED) display, or the like. The client computing device <NUM> may include a network interface <NUM> for interfacing with a network and input devices <NUM>, such as a keyboard, mouse, thumbpad, etc..

<FIG> shows a more detailed view of an illustrative server computing device <NUM>. The server computing device <NUM> may include a processor <NUM>. The processor may take numerous different forms, such as those described above for processor <NUM>. The server computing device <NUM> may include a network interface <NUM> for connecting to a network, like network <NUM> (<FIG>). The server computing device <NUM> may include storage <NUM>. The storage may include different types of storage components and/or devices like those describe above for storage <NUM>. The storage <NUM> is shown storing application store <NUM> and application hub server <NUM>. As will be described in more detail below, the application store is an application repository, and the application hub server <NUM> is a server component for the application hub. The storage may also store the analytical services platform <NUM>.

The application hub may have server-side components and client-side components. The application hub may follow a client/server paradigm where the server serves the client. <FIG> shows a diagram <NUM> depicting an illustrative configuration. The diagram <NUM> shows a client computing device <NUM> and a server computing device <NUM>. Application hub client <NUM> and application hub client services <NUM> are on the client computing device. Application hub server <NUM> and application store API are on the server computing device <NUM>.

As was mentioned above, the application hub facilitates a single login for a user for multiple applications. <FIG> shows a flowchart <NUM> of steps that may be performed for such a single login functionality. Initially, the application hub may transmit a login interface to the client computing device (<NUM>). The user interface may, in some embodiments, be part of a webpage transmitted as an HTML file, XML file or in another format for display at the client computing device. <FIG> shows an example of an illustrative login user interface <NUM>. A text box <NUM> is provided for a used to enter a username. A text box <NUM> is provided for a user to enter a password. Once the username and password have been entered, a login button <NUM> may be activated (such as by clicking on the login button <NUM>). The credentials (i.e., username and password) are then sent and received (<NUM>) and send to an identity server (<NUM>). The identity server may be resident on the server computing system and provided as part of the analytical services platform. The identity server determines if a proper username and password were entered (<NUM>). If valid credentials were provided, access to the application hub is granted and an access token is provided to the client (<NUM>). The access token may be subsequently submitted to show access rights when applications are launched. If valid credentials are not provided, access to the application hub is denied (<NUM>).

A number of different steps must be taken in order for the application hub to display a user interface with a list of applications for the analytical services platform to be displayed. <FIG> shows a diagram of what steps may be performed. Initially, the user <NUM> requests <NUM> to load the applications. A first request <NUM> may be made to get a list of the applications suitable for the user but is returned as unauthorized <NUM> as the user is not logged in. The user logs in and the credentials are sent to the identity server <NUM> as mentioned above. An access token is returned <NUM> from the identity server <NUM> in the case where valid credentials were provided. Another request <NUM> to get applications may be submitted to the application hub server <NUM>. A request <NUM> to get the list of applications from the app store <NUM> may be sent in response. The app store <NUM> returns the list of applications <NUM> that are available and suitable for the user. The list may include information for each application, such as application ID, application name and icon. The list may be transmitted as a JavaScript Object Notation (JSON) file in some exemplary embodiments. The information in the list may then be sent <NUM> to the client and used to display the applications in the list of the application hub user interface <NUM>. The applications may include applications installed on the client computing device as well as applications installed on a server and accessible at the client computing device, such as through a web browser over a web interface.

<FIG> shows an example of a user interface <NUM> displaying applications that are available to the user. In this instance, a first icon <NUM> is displayed for a console demo application and a second icon <NUM> is displayed for the platform administration center. The names of these applications and the information shown in the icons may be derived from the JSON file list of applications. The background of the icon <NUM> is filled in with a solid color to denote that the console demo application has already been installed on the client computing device and that are not server installed. A list of installed applications may be maintained and used to determine if an application has been installed or not. In contrast, the background of icon <NUM> is transparent to indicate that the platform administration center application is available but has not yet been installed. Other visual cues may be used to distinguish installed application from uninstalled applications. For instance, different colors for the icons may be used, the shapes of the icons may vary, text may be provided in the icons to identify an application as installed or uninstalled, etc..

A user may initiate installation of an application by taking a designated action via the user interface, such as by, for example, pointing a pointer at a cursor at an icon and clicking may trigger installation of an application. It should be appreciated that other actions to select the application icon or activate the icon may be used. Moreover, user interface elements, such as menus and activatable control may be used to initiate application installation. In the example of <FIG>, clicking on the icon <NUM> may initiate the installation of the platform application console. Once the icon <NUM> is selected, the appearance of the icon may be changed to be like that of icon <NUM> in the user interface shown in <FIG> to indicate that installation is in progress. The icon <NUM> for the console demo does not change. Once the installation is complete, the icon <NUM> (<FIG>) changes to have a solid background rather than a transparent background to indicate that the platform administration console has been installed.

<FIG> shows a diagram <NUM> depicting steps that may be taken to install an application in an exemplary embodiment. The installation may be initiated when a user <NUM> clicks <NUM> on an icon for an uninstalled application displayed as part of the application hub user interface <NUM> on the client computing device <NUM>. As was mentioned above, in some exemplary embodiments, other actions via the user interface may trigger installation of an uninstalled application. In response to the clicking on the icon of the uninstalled application, the application ID <NUM> for the uninstalled application is provided to the application hub client service administrator <NUM>. The hub client services <NUM> initiates a request <NUM> to get an installer program for the uninstalled application with the specified application ID via the Appstore API. The installer is received <NUM> by the application hub client services <NUM>. The application is then installed locally on the client computing device using the installer and the manifest of installed applications is updated <NUM>. The installed application is displayed as installed <NUM> in the application hub user interface <NUM>.

Once the application has been installed, it may be launched for use by the user on the client computing device. <FIG> depicts actions taken to launch an installed application. A user <NUM> may take an action, such as clicking on an installed application icon <NUM> of the application hub user interface <NUM>, to initiate the launching of the installed application. A request <NUM> is sent to get details regarding the application from the Appstore <NUM>. These details are returned <NUM> from the Appstore <NUM> and are used in formulating a request for an authorization code for the application <NUM> that is sent to the identity server <NUM>. If the user is authorized, the identity server returns <NUM> an authorization code for the application. The application is launched, and the authorization code is passed <NUM> to the Appstore <NUM>. The Appstore <NUM> requests an access token <NUM>, that is passed <NUM> to the Appstore <NUM> from the identity server <NUM>. The authorized services are called using the access token <NUM>.

As was mentioned above, the user interface from the application hub may indicate that an installed application needs an update. <FIG> provides an example of an icon <NUM> on the application hub user interface <NUM> indicating that the console demo application needs to be updated. The icon <NUM> includes the text "Upgrade Needed" to provide a visual clue that an update is warranted. Taking an action such as clicking on the icon <NUM> may initiate the updating of the application. Other user interface actions may initiate the updating in some embodiments. The icon <NUM> may change appearance such as shown in <FIG> to indicate that the update is in progress. The update is realized by installing the updated version of the application, such as was described above relative to <FIG>.

The displaying of an icon indicating that an upgrade is needed may be prompted by a user selecting the icon or by a process performed regularly to ensure that all applications on the client computing device are current. <FIG> provides a flowchart <NUM> of steps that may be performed to determine if an installed application on the client computing device is current or not. Version information for the installed application on the client computing device is obtained (<NUM>). In some instances, this may entail looking at product codes and upgrade codes for the installed applications. This information may be associated with the manifest in some cases. The version information may also be obtained for the version available at the Appstore (<NUM>). The version information regarding the applications are compared and a determination is made whether an update of the installed application is needed (<NUM>). If an update is needed, the icon or other user interface element may be modified to note that an update is needed (<NUM>). If no update is needed, no further action is needed.

The exemplary embodiments may support logging of event information from the applications. As shown in <FIG>, an environment <NUM> includes the applications: application hub client <NUM>, application hub clients service administrator <NUM> and application hub server <NUM>, as described above. A logger <NUM> logs events that occur with the applications <NUM>, <NUM> and <NUM>. The logger <NUM> may in some embodiments be realized as a logging library, such as Serilog, that provides the functionality of logging events, filtering and forwarding the log entries regarding events to designated locations. Other logging tools may be used. The logger <NUM> logs the events into logs <NUM>. Separate logs may be provided for each application. The log entries may be viewed using log viewing tools, such as Glogg or BareTail, for example.

The logger <NUM> may allow the customization of the logging on a per application basis. The logging may be customized to specify the level of logging. The level specifies how much information and what type of information regarding events is logged. This table provides information regarding what may be appropriate log levels and provides examples:.

The messages may include time stamps, level information and textual information regarding the event. The logger <NUM> may log informational messages debug messages and error messages for the applications in an exemplary embodiment. The informational messages provide information regarding events in the application, whereas the error messages provide information regarding errors that occur in the application. As described above, the debug messages provide diagnostic information and low level control logic.

Here are some examples of information and error log messages for the application hub client <NUM>:.

Here are some examples of the information and error messages that may be logged for the application hub client services:.

Here are some examples of the information and error messages that may be logged for the application hub server:.

The resulting logs <NUM> may be monitored to obtain ongoing information regarding the applications <NUM>, <NUM> and <NUM>. Moreover, alerts may be triggered for errors based on the logging information, in the logs <NUM> metrics may be gathered from the logging information in the logs <NUM> and useful debugging information may be extracted from the logging information in the logs <NUM>.

Each of the logs <NUM> may have a size limit, such that when the limit is reached, a new log is created automatically. In addition, there may be a limit as to the number of log files. When the limit is reached, the oldest log file may be deleted and a new one may be created.

Claim 1:
A method performed by an application hub computing device (<NUM>), comprising:
forwarding a user interface to a client computing device (<NUM>, <NUM>) from an application hub (<NUM>) running on the application hub computing device (<NUM>), wherein the application hub (<NUM>) serves as a landing site where a client may launch applications for an analytical services platform (<NUM>) on the client computing device (<NUM>, <NUM>), wherein the analytical services platform (<NUM>) is interfaced with at least one analytical device (<NUM>, <NUM>) to receive data from the at least one analytical device (<NUM>, <NUM>) and to perform one of filtering the received data or processing the received data, wherein the at least one analytical device (<NUM>, <NUM>) comprises a chromatography device or a mass spectrometer, and the user interface identifies a selected one of the applications as not installed on the client computing device (<NUM>, <NUM>);
receiving input via the user interface on the client computing device indicating a request to install the selected application on the client device;
based on the received communication, retrieving the selected application from an application repository; and
causing the retrieved selected application to be installed on the client computing device (<NUM>, <NUM>).