Patent Publication Number: US-8527494-B2

Title: Tools discovery in cloud computing

Description:
CROSS REFERENCES TO RELATED APPLICATIONS 
     This application claims the benefit of and priority to U.S. Provisional Patent Application No. U.S. 61/334,604, filed 14 May 2010, titled “TOOLS DISCOVERY IN CLOUD COMPUTING,” which is incorporated herein by reference in its entirety. 
    
    
     FIELD 
     The field generally relates to cloud computing and more specifically to tools discovery in cloud computing. 
     BACKGROUND 
     Current web and desktop applications provide a wide variety of rich functionality. Discovering the new functionalities available on the web and within desktop applications may be a challenge for a casual user. The discovery of the new functionalities may involve a search for locating such functionality. The desktop users typically use the help option to search for the new functionalities whereas the web users may use search engines. The challenge of finding the functionalities is multiplied in a cloud computing environment. 
     Cloud computing is an internet based computing environment where resources are shared across multiple computing systems (i.e., the cloud). Typically, the functionalities available in the cloud computing environment is more than the desktop environment. Among the multiple computing systems, that form the cloud, the ability to interact with several service providers is a challenge. In order to achieve this, the users need tools that provide easy access to the functionalities provided by the service providers. Among several available tools, discovering a tool that suits the user need is a challenge. 
     In the cloud computing environment, a user may request for a specific functionality by entering a search query. The existing search mechanisms in the cloud computing environment analyzes the search query and matches the search query for exact terms or similar terms. The similar terms may be determined by analyzing the structural meaning of the search term. In the cloud computing environment, the search results returned for the search query of the user is enormous. There is need for receiving accurate results for the search query in the cloud computing environment. 
     SUMMARY 
     Various embodiments of systems and methods for tools discovery in cloud computing are described. The process involves receiving a user request, the user request including one or more keywords, identifying one or more verbs and nouns in the one or more keywords, based on the one or more verbs, nouns and a context of the user executing the search query to obtain a list of tools, ranking the list of tools based on the identified nouns and the context of the user and displaying the list of tools. 
     These and other benefits and features of embodiments of the invention will be apparent upon consideration of the following detailed description of preferred embodiments thereof, presented in connection with the following drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The claims set forth the embodiments of the invention with particularity. The invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. The embodiments of the invention, together with its advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings. 
         FIG. 1  is a block diagram illustrating a cloud computing environment according to an embodiment. 
         FIG. 2  is a flow diagram illustrating an exemplary method for recommending a tool to a user according to an embodiment. 
         FIG. 3  is a block diagram illustrating an exemplary data flow according to an embodiment. 
         FIG. 4  is a block diagram illustrating an exemplary system for recommending a tool to a user according to an embodiment. 
         FIG. 5  is a block diagram of an exemplary computer system according an embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of techniques for tools discovery in cloud computing are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention. 
     Reference throughout this specification to “one embodiment”, “this embodiment” and similar phrases, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of these phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. 
     Cloud computing is an internet based computing environment where the resources are shared among multiple computers. The cloud computing environment includes various service providers. Generally, a service provider is termed as a cloud. The cloud may be referred to as a data centre for serving customers according to their needs. The cloud computing environment includes computing devices operating at various platforms. Discovering new functionalities available through the multiple computers that make up the cloud could be a tedious process. Typically, discovering the new functionalities involves the process of searching for tools associated with the functionality. The functionality discovery is achieved by a search query combined with the context of the user to generate a search query. Consider a business scenario of a user reserving flight tickets along with three colleagues. The search query is “reserve flight tickets at discounted prices in xyz airlines”. The search query is analyzed for identifying verbs and nouns. The verbs include action words and nouns represent language associated with a specific function. The verb in this business scenario is “reserve” and the nouns are “flight tickets”, “discounted prices” and “xyz airlines”. The context of the user is “xyz airlines”. For instance, if the user&#39;s context includes a reference to a specific airline, the search query for flight booking may refer to the specific airline as opposed to all airlines. The user&#39;s context may include but not be limited to type of people, organization, location, resource, event and so on. Based on the verbs, nouns and context of the user in the search query, tools associated with the functionality in the search query are returned. In this business scenario, the tools associated with the functionality of reserving flight tickets are returned. The tools may be but are not limited to flight reservation links, flight availability options of the xyz airlines, discounted flight reservation links of the xyz airlines. The tools are ranked based on the nouns and the context of the user in the search query. In one embodiment, if the search query request does not include a verb, the search results are not returned 
       FIG. 1  is a block diagram illustrating an exemplary cloud computing environment according to an embodiment. The cloud computing environment  100  includes a client computing device  105  and a plurality of server computing devices  115 ,  120  and  125  provided by different service providers. The resources available in the plurality of servers  115 ,  120  may be shared upon request. The resources are shared through a network  110 . Consider a business scenario of the user requesting for functionality on the client computing device  105 . Based on the user request, a tool associated with the requested functionality is searched. The tool is searched based on the verbs, nouns and the context of the user in the user request. The search results are returned in form of a list of tools. The user is able to select one of the tools from the list of tools. Once the user selects a tool from the list of tools, a tool instance is created and the tool instance represents a proxy within the system to the service running on the server computing device. The service may be running on any one of the server computing devices  115 ,  120  and  125 . The proxy manages the creation of a remote instance and the remote instance establishes interaction between the client computing device  105  and the server computing device on which the service is running. 
     Consider a business scenario of a flight ticket booking for the user and three other colleagues. The service including a tool associated with the functionality of ticket booking is running on any one of the server computing devices in the cloud computing environment. A search may be performed to find the best service running in the cloud computing environment. For instance, if the search query entered by the user is “reserve a flight ticket for me and three other colleagues”. The search query is analyzed for verbs and nouns. In this business scenario, user&#39;s current context is three other colleagues wanting to make the same booking. In one embodiment, a data object is created for a person. The data object may include information about the person such as first name, last name, passport number and so on. A remote instance creates a proxy for a tool. The remote instance initiates to establish a session between the client computing device and the server computing device. As the server computing devices in the cloud computing environment includes computing devices from various platforms, the proxy maybe used to build a common platform to initiate sessions between the client computing device and server computing device. 
       FIG. 2  is a flow diagram illustrating an exemplary method for recommending tools to a user according to an embodiment. A user request is received at process block  205 . The user request includes a search query having one or more keywords. At process block  210 , one or more verbs and nouns are identified in the search query. At process block  215 , the search query is executed based on the verbs, nouns and a context of the user to obtain a list of tools. A tool has an associated functionality. The context of the user is determined by the user request. The user context may also be determined based on the search items of interest (e.g., people, documents, companies, resources and so on). The user interest is associated with a current activity of the user to determine the context. The context may also be determined by analyzing the application (e.g., document, email and so on) used by the user. At process block  220 , the list of tools is ranked based on the identified nouns and the context of the user. At process block  225 , the list of tools is displayed on a user interface. 
     In an embodiment, on selecting one of the tools from the list of the tools obtained, a remote request to the tool is made and when an acknowledgement is received a tools instance is created on the client computing device. The tool instance stores identifier data for the remote instance. The tool instance also uses the handler class specified in the tool definition to manage ongoing interaction with the remote tool. A session is established between the client computing device and the server computing device. 
     In another embodiment, if verbs are not found in the one or more keywords, a result to the search query is not obtained. In yet another embodiment, the context of the user may be in an arbitrary format. The context in the arbitrary form is mapped to one of the common types to be used as the user context in the search query. The common types include a set of defined attributes. For instance, employee data in a company&#39;s database may use an internal format prescribed by the company. However, for that employee data to be used as the context of the user, the employee data is mapped to relevant fields in a “person” type. 
     Consider a business scenario explaining the process of recommending tools to a user. The user, a regional sales manager, is accessing a word document including product information for the location Ireland. The user requests “review sales performance”. The user request is analyzed for verbs and nouns. In this business scenario, “review” is identified as verb and the keywords “sales” and “performance” are identified as nouns. The context of the user is “word document”, “regional sales manager” and “Ireland”. Based on the verb, nouns and the context of the user, the tools associated with the functionality “review” are returned. The tools are ranked based on the nouns and the context of the user. The tools returned for this business scenario may include but not be limited to month-wise sales performance document, quarterly sales performance document, half yearly sales performance document and yearly sales performance document. In this business scenario, the sales performance document may be stored within the client computing device of the user. 
       FIG. 3  is a block diagram illustrating an exemplary data flow according to an embodiment of the invention. The user enters a search query in the user interface as a text input  305  at a client computing device. The text input  305  is “Arrange a sales meeting”. The request is sent to a tools proxy  315 . The tools proxy  315  analyses the text input for verbs and nouns with the context of the user. The tools proxy  315  requests the context of the user from a context manager  310 . The context of the user is determined by the user request. The context of the user is forwarded to the tools proxy  315 . The tools proxy  315  generates a search query. The tools proxy  315  sends the search query to a tools query service  320  on a server computing device. The tools query service  320  queries a tools repository  325  for a list of tools. The list of the tools is returned to the user. 
       FIG. 4  is a block diagram illustrating an exemplary computer system for recommending a tool according to an embodiment. The computer system includes a client computing device  405  and a server computing device  410 . The client computing device  405  and the server computing device  410  are connected through a network  445 . The memory  415  of the client computing device  405  includes a context module  420 , a tools proxy module  425 , a tools instance module  430  and a tools launcher module  435 . A processor (not shown) in communication with the memory  415  includes instructions for the context module  420 , a tools proxy module  425 , a tools instance module  430  and a tools launcher module  435  to perform required operations. The client computing device  405  includes a graphical user interface  440 . The memory  450  of the server computing device  410  includes a tools query service module  455 , a tools repository  460  and a tools persistence module  465 . 
     The graphical user interface  440  receives a search query in form of a text input. The user inputs the search query in a text input region in the graphical user interface  440 . The text input is sent to the tools proxy module  425 . The tools proxy module  425  analyses the text input to identify verbs and nouns in the text input. The tools proxy module  425  requests the context of the user from the context module  420 . The context of the user is determined by the text input entered by the user. The context may also be determined based on the type of application being used by the user. The search query for a tool is generated by the tools proxy module  425  based on the identified verbs, nouns and the context of the user. The search query is sent to the tools query service module  455 . The tools query service module  455  is stored in the memory  450  of the server computing device  410 . The tools query service module  455  processes the search query and requests the tools repository  460  for a list of tools in response to the search query. The tools repository  460  stores plurality of tools. The tools repository  460  stores a set of XML definitions and code libraries for the tools that are available. The graphical user interface  440  displays the list of tools. 
     In an embodiment, the user selects one of the tools from the list of the tools obtained. Based on the selection, the tools launcher module  435  retrieves a tool handler class from the tools definition in the tools repository  460  and dynamically loads a user interface (UI) associated with the tool. The tools launcher module  435  also makes a remote request for the tool. An instance is created on the client computing device  405 . The instance is a proxy for the remote tool in the cloud computing environment. The instance is created by the tools instance module  430 . The tools instance module  430  is a user interface (UI) component representing an instantiated tool. The tool instance uses the handler class specified in the tool definition to manage ongoing interaction with the remote tool. The handler is an attribute providing a reference to the library class that is used to instantiate and manage the lifecycle of the tool instance. The instance data may be persisted back to the server computing device  410  by the tools persistence module  465  between the sessions of the server computing device  410  and the client computing device  405 . 
     In an embodiment, new tools are added into the tools repository  460 . Adding the new tools into the tools repository involves the process of publishing a bundled set of resources and an Extensible Markup Language (XML) descriptor for the tool. 
     In another embodiment, the tool instance module  430  manages the passing of data to the proxy service, provides standardized updates from the remote service, provides status messages on the state of the remote service, provides a navigable link to the remote service instance and encapsulates any business logic that assists with the interaction with the third remote service. 
     Some embodiments of the invention may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like. They may be linked to other components via various application programming interfaces and then compiled into one complete application for a server or a client. Alternatively, the components maybe implemented in server and client applications. Further, these components may be linked together via various distributed programming protocols. Some example embodiments of the invention may include remote procedure calls being used to implement one or more of these components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a graphical user interface). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. The clients can vary in complexity from mobile and handheld devices, to thin clients and on to thick clients or even other servers. 
     The above-illustrated software components are tangibly stored on a computer readable storage medium as instructions. The term “computer readable storage medium” should be taken to include a single medium or multiple media that stores one or more sets of instructions. The term “computer readable storage medium” should be taken to include any physical article that is capable of undergoing a set of physical changes to physically store, encode, or otherwise carry a set of instructions for execution by a computer system which causes the computer system to perform any of the methods or process steps described, represented, or illustrated herein. Examples of computer-readable media include, but are not limited to: magnetic media, such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer readable instructions include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hard-wired circuitry in place of, or in combination with machine readable software instructions. 
       FIG. 5  is a block diagram of an exemplary computer system  500  according an embodiment. The computer system  500  includes a processor  505  that executes software instructions or code stored on a computer readable storage medium  555  to perform the above-illustrated methods of the invention. The computer system  500  includes a media reader  540  to read the instructions from the computer readable storage medium  555  and store the instructions in storage  510  or in random access memory (RAM)  515 . The storage  510  provides a large space for keeping static data where at least some instructions could be stored for later execution. The stored instructions may be further compiled to generate other representations of the instructions and dynamically stored in the RAM  515 . The processor  505  reads instructions from the RAM  515  and performs actions as instructed. According to one embodiment of the invention, the computer system  500  further includes an output device  525  (e.g., a display) to provide at least some of the results of the execution as output including, but not limited to, visual information to users and an input device  530  to provide a user or another device with means for entering data and/or otherwise interacting with the computer system  500 . Each of these output devices  525  and input devices  530  could be joined by one or more additional peripherals to further expand the capabilities of the computer system  500 . A network communicator  535  may be provided to connect the computer system  500  to a network  550  and in turn to other devices connected to the network  550  including other clients, servers, data stores, and interfaces, for instance. The modules of the computer system  500  are interconnected via a bus  545 . Computer system  500  includes a data source interface  520  to access data source  560 . The data source  560  can be accessed via one or more abstraction layers implemented in hardware or software. For example, the data source  560  may be accessed by network  550 . In some embodiments the data source  560  may be accessed via an abstraction layer, such as, a semantic layer. 
     A data source is an information resource. Data sources include sources of data that enable data storage and retrieval. Data sources may include databases, such as, relational, transactional, hierarchical, multi-dimensional (e.g., OLAP), object oriented databases, and the like. Further data sources include tabular data (e.g., spreadsheets, delimited text files), data tagged with a markup language (e.g., XML data), transactional data, unstructured data (e.g., text files, screen scrapings), hierarchical data (e.g., data in a file system, XML data), files, a plurality of reports, and any other data source accessible through an established protocol, such as, Open DataBase Connectivity (ODBC), produced by an underlying software system (e.g., ERP system), and the like. Data sources may also include a data source where the data is not tangibly stored or otherwise ephemeral such as data streams, broadcast data, and the like. These data sources can include associated data foundations, semantic layers, management systems, security systems and so on. 
     In the above description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however that the invention can be practiced without one or more of the specific details or with other methods, components, techniques, etc. In other instances, well-known operations or structures are not shown or described in details to avoid obscuring aspects of the invention. 
     Although the processes illustrated and described herein include series of steps, it will be appreciated that the different embodiments of the present invention are not limited by the illustrated ordering of steps, as some steps may occur in different orders, some concurrently with other steps apart from that shown and described herein. In addition, not all illustrated steps may be required to implement a methodology in accordance with the present invention. Moreover, it will be appreciated that the processes may be implemented in association with the apparatus and systems illustrated and described herein as well as in association with other systems not illustrated. 
     The above descriptions and illustrations of embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications can be made to the invention in light of the above detailed description. Rather, the scope of the invention is to be determined by the following claims, which are to be interpreted in accordance with established doctrines of claim construction.