Animation between visualization objects in a virtual dashboard

By generating 3D representations of visual components in a virtual environment and using 3D object animations, the problem that two-dimensional data visualization technology is difficult to deal with complex multi-dimensional data is solved, and an intuitive immersive data visualization experience is achieved, improving data understanding efficiency.

CN113056772BActive Publication Date: 2025-09-02ORACLE INT CORP
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN201980075067.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-10-21
Filing Date
2019-10-21
Publication Date
2025-09-02
Estimated Expiration
2039-10-21

AI Technical Summary

Technical Problem

Existing two-dimensional data visualization technologies are difficult to effectively highlight or emphasize the complexity of complex multi-dimensional data, resulting in insufficient information understanding.

Method used

By generating a 3D representation of the visual components in the virtual environment, and using 3D object animation to move the data set to bind to different visual components in the virtual environment, the dynamic transition and binding of the data set in the virtual environment is realized.

Benefits of technology

It provides an intuitive and interactive immersive data visualization experience, which can quickly convey information of complex multi-dimensional data, and improves the efficiency and effectiveness of data comprehension.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113056772B_ABST
    Figure CN113056772B_ABST
Patent Text Reader

Abstract

Multiple visual objects can be provided to represent one or more data sets in a virtual 3D space. The visual objects can include funnels, containers, business cards, etc. The visual objects can be arranged in a circular carousel that can rotate around the position of the virtual camera or user in the VR / AR environment. Individual data points in the visual objects can be rotated, resized, positioned, colored, or otherwise characterized based on the properties of the corresponding data points. Individual data points can also be animated when transitioning between visual objects in a unified view. Voice commands can be interpreted as part of an interactive environment that can provide views of the visual objects to multiple devices simultaneously.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is a non-provisional application of U.S. Provisional Application No. 62 / 748,504, filed on October 21, 2018, entitled “3D VISUALIZATION SERVICES INTEGRATING VARIOUS DATA SOURCES AND DISPLAY DEVICES,” and claims the benefit of and priority to 35 U.S.C. § 119(e), the entire contents of which are incorporated herein by reference for all purposes.

[0003] This application is also related to the following four U.S. patent applications:

[0004] U.S. Patent Application No. 16 / 658,162, filed October 21, 2019, by Morozé et al., entitled “INTERACTIVE DATA EXPLORERAND 3-D DASHBOARD ENVIRONMENT” (Attorney Docket No. 088325-1142774), which is incorporated herein in its entirety.

[0005] U.S. Patent Application No. 16 / 658,165, filed October 21, 2019, by Morozé et al., entitled “FUNNEL VISUALIZATION WITH DATA POINT ANIMATIONS AND PATHWAYS” (Attorney Docket No. 088325-1142775), which is incorporated herein in its entirety.

[0006] U.S. patent application Ser. No. 16 / 658,169, filed on October 21, 2019, by Morozé et al., entitled “OPTIMIZING VIRTUAL DATAVIEWS USING VOICE COMMANDS AND DEFINED PERSPECTIVES” (Attorney Docket No. 088325-1142776), which is incorporated herein in its entirety.

[0007] U.S. Patent Application No. 16 / 658,180, filed October 21, 2019, by Morozé et al., entitled “DATA VISUALIZATION OBJECTS IN A VIRTUAL ENVIRONMENT” (Attorney Docket No. 088325-1143002), which is incorporated herein in its entirety. Background Art

[0008] One of the most effective ways to communicate information is through visualization. Often, capturing and categorizing information is insufficient to fully understand the conclusions that can be drawn from the data. While two-dimensional data visualizations dominate most of our communication techniques, many of these visualization techniques are not optimized for highlighting or emphasizing aspects of the data collection. Effective data visualization involves creating informative visuals that can quickly convey one aspect of the data. Sometimes, a simple visualization is sufficient. However, with complex, multidimensional data, the inherent complexity of the dataset can make visualization within a limited dimensional space challenging. Summary of the Invention

[0009] A method for providing animation between one or more visualization components may include: receiving one or more data sets bound to a first visualization component; generating a 3D representation of the first visualization component in a virtual environment based on the one or more data sets; receiving a command to transition the one or more data sets to a second visualization component in the virtual environment; generating an animation of 3D objects representing individual data points in the one or more data sets moving from the 3D representation of the first visualization component to the 3D representation of the second visualization component in the virtual environment; and binding the one or more data sets to the second visualization component.

[0010] A non-transitory computer-readable medium may include instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: receiving one or more data sets bound to a first visualization component; generating a 3D representation of the first visualization component in a virtual environment based on the one or more data sets; receiving a command to transition the one or more data sets to a second visualization component in the virtual environment; generating an animation of a 3D object representing individual data points in the one or more data sets moving from the 3D representation of the first visualization component to the 3D representation of the second visualization component in the virtual environment; and binding the one or more data sets to the second visualization component.

[0011] A system may include one or more processors and one or more storage devices that may include instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including: receiving one or more data sets bound to a first visualization component; generating a 3D representation of the first visualization component in a virtual environment based on the one or more data sets; receiving a command to transition the one or more data sets to a second visualization component in the virtual environment; generating an animation of 3D objects representing individual data points in the one or more data sets moving from the 3D representation of the first visualization component to the 3D representation of the second visualization component in the virtual environment; and binding the one or more data sets to the second visualization component.

[0012] In any embodiment, any of the following features may be implemented in any combination and without limitation. The first visual component may include a funnel object. The second visual component may include a beaker object. The second visual component may include a profile layout object. The method / operation may further include accessing a story data structure comprising a list of actions to be performed in the virtual environment, the list of actions comprising instructions for instantiating the first visual component; instructions for instantiating the second visual component; instructions for binding one or more data sets to parameterized inputs of the first visual component; instructions for animating a 3D object; and instructions for binding one or more data sets to parameterized inputs of the second visual component. The list of actions may further include instructions for waiting for user input before animating a 3D object between a 3D representation of the first visual object and a 3D representation of the second visual object in the virtual environment. Receiving a command to transition the one or more data sets to the second visual component may trigger execution of the story data structure to stop waiting for user input before animating the 3D object. The 3D object representing each data point in the one or more data sets may have visual characteristics determined by attribute values ​​of the corresponding data points. 3D objects representing individual data points may be individually visible in the 3D representation of the first visualization component, and the 3D objects may no longer be individually visible in the 3D representation of the second visualization component. The 3D representation of the first visualization component and the 3D representation of the second visualization component may be arranged in a virtual environment as part of a virtual dashboard for displaying enterprise data from one or more enterprise applications in a cloud environment. The first visualization component and the second visualization component may be displayed in a carousel surrounding a virtual location of a user in the virtual environment. The method / operation may also include: receiving a second command to transition one or more data sets to a third visualization component in the virtual environment; generating an animation of 3D objects representing individual data points in the one or more data sets moving from the 3D representation of the second visualization component to the 3D representation of the third visualization component in the virtual environment; and binding the one or more data sets to the third visualization component. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] A further understanding of the nature and advantages of the present invention may be achieved by reference to the remainder of this specification and the accompanying drawings, in which like reference numerals are used throughout the several figures to refer to like components. In some cases, a sub-label is associated with a reference numeral to denote one of multiple similar components. When a reference numeral is referenced without specifying an existing sub-label, it is intended to refer to all such multiple similar components.

[0014] Figure 1 Illustrated is a system for authoring, providing, and using interactive data displays according to some embodiments.

[0015] Figure 2 Illustrated is an example of a virtual object that has been bound to an enterprise dataset in accordance with some embodiments.

[0016] Figure 3 Illustrate a user interface for importing components from the component exchanger into an application.

[0017] Figure 4 Illustrated is a block diagram of a process for downloading and instantiating components in an application, according to some embodiments.

[0018] Figure 5 Illustrated is a virtual dashboard created in a virtual environment according to some embodiments.

[0019] Figure 6 Illustrated is how various types of client device systems and input devices can all interface with the same virtual environment in an EDIE environment simultaneously, according to some embodiments.

[0020] Figure 7 Illustrated is a view of a virtual environment through a 2D screen interface, according to some embodiments.

[0021] Figure 8 Illustrated is a view of a virtual environment with multiple users interacting with a virtual dashboard, in accordance with some embodiments.

[0022] Figure 9 Illustrated is a view of a real-world environment that may be used to interact with a virtual environment in accordance with some embodiments.

[0023] Figure 10 Illustrated is a flow diagram of a method for displaying data in a multidimensional dashboard according to some embodiments.

[0024] Figure 11 Illustrated is an example of a visualization object in the form of a funnel, according to some embodiments.

[0025] Figure 12 Illustrated is a beaker visualization component that can receive data points from other visualization components in accordance with some embodiments.

[0026] Figure 13 Illustrated is how 3D objects representing various data points may be animated to move between visualization components in accordance with some embodiments.

[0027] Figure 14 A third visualization component is illustrated that includes a profile layout in accordance with some embodiments.

[0028] Figure 15 Illustrated is the display of additional information related to a particular profile in accordance with some embodiments.

[0029] Figure 16 Illustrated is a virtual dashboard in accordance with some embodiments.

[0030] Figure 17 Illustrate how stories can generate animations of objects in a virtual dashboard according to some embodiments.

[0031] Figure 18 Illustrated is a data structure of a story according to some embodiments.

[0032] Figure 19 A flow diagram of a method for providing animation between one or more visualization components is illustrated, according to some embodiments.

[0033] Figure 20 Depicted is a simplified diagram of a distributed system for implementing some embodiments.

[0034] Figure 21 is a simplified block diagram of one or more components of a system environment that may provide services provided by one or more components of an embodiment system as cloud services, according to some embodiments.

[0035] Figure 22 An exemplary computer system is illustrated in which various embodiments may be implemented. DETAILED DESCRIPTION

[0036] Described herein are embodiments of immersive user interface (UI) experiences. The immersive UI experiences can be packaged as individual components that can be plugged into a component exchange or clearinghouse, and then used by application developers or service developers to add interactive UI components to their applications or services. These UI components can be used to differentiate applications in a crowded marketplace and provide user-friendly, interactive, immersive experiences that provide detailed and intuitive data visualization for many different data types on many different user devices.

[0037] Figure 1 A system for creating, providing, and using interactive data displays according to some embodiments is illustrated. The system may include a component exchanger 124. The component exchanger 124 may be part of an application development kit that allows users to develop applications and / or services using a custom development environment and a library of predefined tools and / or interfaces. The application development kit may be a cloud-hosted development environment that can be accessed as a software-as-a-service (SaaS) model for many different client devices. The development environment can be configured to develop and / or deploy many different types of applications, including cloud-based services or microservices, web applications, mobile device applications, enterprise applications, etc. Applications designed in the application development kit can be integrated with other SaaS applications via a representational state transfer (REST) ​​interface.

[0038] The development environment in an application development kit can include a number of user-friendly tools that developers can use to simplify the development process and make the entire application development cycle more efficient. These tools can include what you see is what you get (WYSIWYG) tools and other graphical interfaces that allow developers to drag and drop various pre-packaged components into the application development space. Various components can be provided by the development environment, such as reusable business objects, processes, web controls, user interface controls, themes, templates, and other aspects of the application.

[0039] Developers use a development environment to design and test applications, which can then be deployed to various operating environments. When deploying an application to an operating environment, the development environment also deploys any additional code or libraries required by the application to enable it to run in the target environment. Therefore, the flexibility and reusable components provided by the development environment can be ported to any operating environment without losing any of the functionality provided by the development environment.

[0040] In this example, the development environment may include a component exchanger. For example, the development environment may be implemented using any commercially available development environment, such as Visual The development environment may include various toolkits, such as a collection of proprietary and / or open source JavaScript libraries that can be used to build applications. For example, the development environment may include JavaScript Extension Toolkit(JET) Components in these toolkits can include a rich user interface (UI) collection component that includes a data model, a view model, and ports for binding data to the component. In some embodiments, the development environment can provide a unified component plug-in mechanism based on standard components such as the W3C Web Component standard, while still allowing custom components to work with standard components.

[0041] The component exchanger 124 can allow component developers to upload components to the component exchanger 124 for use by application developers. This allows component developers to provide a flexible component architecture that can be maintained and upgraded throughout the component lifecycle. For example, these components can include standard web components, such as a checkbox component (116) or a slider component (114) that can be used in various user interfaces. These components 114, 116 can be uploaded to the component exchanger 124 and then updated and maintained by the component development team throughout their lifecycle. They can then be provided to application developers as components 121, 122 in the component exchanger 124.

[0042] In addition to standard web components, the embodiments described herein also allow users to develop special visualization objects that can be used in an Enterprise Data Interactive Explorer (EDIE) environment. These visualization objects provide multidimensional views of enterprise data sets that can be viewed simultaneously by multiple client devices through separate network connections. These visualization objects can be imported into the component exchange 124 in the same manner as standard web components are imported into the component exchange 124. These visualization objects can then be imported into various applications being developed. In those applications, developers can bind various enterprise data sets from many different sources to parameterized inputs on the visualization objects. The visualization objects can then be used to generate rendered views of virtual objects that represent and visualize enterprise data in a multidimensional environment.

[0043] Various examples of these visualization objects may be described in greater detail below in this disclosure. Figure 1 Several examples of visualization objects that can be imported into the component exchanger 124 as regular objects are illustrated. For example, the funnel object 112 can include a rotating funnel object that illustrates the progression of data points in an enterprise dataset over time. The funnel object 112 can provide various visual effects that can be used to highlight various aspects of the dataset bound to the funnel object 112. For example, a user can search the dataset along various dimensions, change various data points, view the path of data points over time, view a visual representation of the data as it is accelerated over time along various dimensions, and so on.

[0044] Figure 1 Also illustrated is a three-dimensional histogram or bar graph object 110 that can be used to represent various enterprise data sets. In the component exchanger 124, the graphic object 110 can be disconnected from any underlying data set. However, when the graphic object 110 is imported into a real application, it can be bound to the enterprise data set, and the size of each bar in the graphic can be adjusted based on the data binding. The visualization object can be used to generate a three-dimensional (3D) virtual object in a virtual environment that can be viewed by various client devices. For example, the graphic object 110 can be implemented as a plurality of three-dimensional cylinders, each of which represents a bar in the graph. Users can enter the virtual environment and walk around the virtual objects, interact with the objects, change the values ​​in the objects, manipulate parts of the objects, and have those changed values ​​be seen by other users and stored back to the underlying database storing the data set.

[0045] The above-mentioned visualization objects 110 and 112 are provided as examples and are not meant to be limiting. Any multidimensional object that can be used to visualize enterprise data sets can be used as a visualization object in the present disclosure. Other visualization objects can include charts, animations, pictures, graphs, etc.

[0046] In the component exchanger 124, visualization objects can be represented as components 118, 120, which can be selected by developers and imported into applications during development. For example, a developer can drag and drop component 118 of the funnel object 112 into an application. This visualization object can then be bound to a dataset in either the development environment or the deployment environment, depending on the embodiment.

[0047] In some embodiments, an application including one or more visualization objects can be deployed to various environments. These environments can include web applications, mobile applications, client applications, applications running on gaming systems, applications running on desktop or laptop computers, applications for virtual environments (such as virtual reality or augmented reality systems), and / or any other computing environments. When an application is deployed to an environment, component exchanger 124 can deploy any necessary libraries, third-party libraries, or other software components or libraries required to run the visualization objects. For example, some visualization objects operating in a 3D environment may include the OpenGL libraries or other 3D visualization libraries required for their operation.

[0048] Applications can be deployed to an environment 102, generally referred to herein as an EDIE environment, which can include a number of standard components and one or more visualization objects as described above. The environment 102 can include a virtual environment 104 in which visualization objects can be instantiated. When visualization objects are instantiated, they can be bound to one or more underlying datasets. These datasets can be obtained from a variety of sources, such as database tables, multidimensional data cubes, web services, server-side applications, API interfaces, and the like. Figure 1 In the example of FIG, enterprise database 108 can provide values ​​from one or more database tables to environment 102 for use with at least one of the visualization objects. In this example, funnel object 112 can be deployed to environment 102 in virtual environment 104. Funnel object 112 can include a collection of inputs, such as parameterized inputs that can be individually and / or collectively bound to tables or rows in an enterprise dataset from enterprise database 108. Bindings 106 between dataset values ​​and parameterized inputs of visualization objects can be created in a development environment, in deployment environment 102, and / or at any other time. Bindings 106 can also be dynamically adjusted or reformulated with different datasets at runtime or before executing an application.

[0049] When a data set is bound to a visualization object, the visualization object can be used to generate a virtual object in the virtual environment 104. This can include using the values ​​in the data set to adjust the size or dimensions of various parts of the virtual object. Values ​​from the data set can also be used to generate animation speeds or motion vectors for objects within the virtual object. Values ​​from the data set can also be used to color objects within the virtual object or otherwise affect the visual representation of the objects. For example, a data point can rotate around a virtual funnel created by the funnel object 112. The data point can have a color determined by one dimension, a size or radius determined by a second dimension, a rotation speed determined by a third dimension, a trajectory or motion vector direction determined by a fourth dimension, and so on.

[0050] Visual objects generated in the virtual environment 104 can be viewed and / or interacted with by a plurality of different client devices 126, 128, 130, 132. These client devices may include laptops, desktop computers, workstations, tablet computers, smartphones, smart watches, smart TVs, video game consoles, digital home assistants, smart glasses, virtual reality headsets, augmented reality headsets, and any other computing devices. Each of these client devices 126, 128, 130, 132 can receive a unique view of the virtual environment 104 corresponding to a uniquely positioned virtual camera for each client device 126, 128, 130, 132. Users can then interact with the virtual objects 105 in the virtual environment 104 using the virtual objects 105 to view, manipulate, edit, and / or update the underlying dataset. As described below, each user can be provided with a unique, specific view of the virtual objects 105, and different settings can allow users to change the underlying data, causing the virtual objects 105 to change in the views provided to other client devices. At each client device 126, 128, 130, 132, automatic hardware detection may be used to provide a correct view of the virtual environment 104. For example, if the client device 126 is implemented by a desktop computer, the environment 102 may provide a two-dimensional (2D) view of the virtual environment 104. In contrast, if the client device 128 is implemented by a virtual reality headset, the environment 102 may provide a 3D view of the virtual environment 104, allowing the user of the client device 128 to be immersed in the virtual environment 104 to interact therein.

[0051] Figure 2 An example of a virtual object 202 that has been bound to an enterprise dataset according to some embodiments is shown. As described above, the virtual object 202 may be associated with an enterprise dataset. Figure 1The virtual object 202 may correspond to the funnel object 112 uploaded as component 118 in the component exchanger 124 of FIG. The virtual object 202 may include a 3D funnel object, wherein the funnel is formed by a plurality of individual data points. The individual data points from the dataset may be used to define the position, color, trajectory, movement, speed, size, shape, and / or any other visual characteristics of each of the individual data points.

[0052] The underlying data set can be derived from a database table, a multidimensional data cube, and / or any other data structure. The data set can include data points represented by rows in a database table or points in a multidimensional data cube. Each column in the database or each dimension in the data cube can be used to define characteristics for each sphere in virtual object 202. For example, the first dimension or first column in the database can be used to determine the size or circumference of each sphere. The second dimension or column value can be used to define the color or texture applied to each sphere in the virtual environment. The third dimension or column value can be used to define the position of each sphere in the funnel. The fourth dimension or column value can define the speed at which the sphere rotates around the central axis of the funnel. The fifth dimension or column value can define the trajectory or motion path it moves through the various levels of the funnel, and so on.

[0053] While the application is running, data can remain bound to each element of virtual object 202. For example, while wearing a virtual reality headset, a user can approach virtual object 202 in virtual environment 200. Using a virtual selection handheld device, the user can reach out and "grab" one of spheres 204, which rotate around the funnel axis. The user can call up a user interface that displays additional information about the underlying data represented by sphere 204. The user can change a value in the user interface to change the underlying value in the corresponding database. The user can also "place" sphere 204 back into position in virtual object 202. If the new position of sphere 204 is different from the old position, the dimensions used to determine the position of sphere 204 in virtual object 202 can be updated in the underlying database.

[0054] Figure 3 A user interface 300 is illustrated for importing components from the component exchanger into an application. User interface 300 may include a list 302 of available components that can be imported into a project. By selecting one of the components in list 302, the component exchanger may display additional information for downloading, instantiating, and / or using that component. In this example, the user has selected the previously described funnel object component. Upon making this selection from list 302, the right-hand side of interface 300 may display additional information for using the funnel object component.

[0055] The additional information may include a description 306 of the component. This description 306 may describe the operation of the component, how to use it, how it interacts with other components, typical usage scenarios, tips and suggestions for using the component, and / or other information that may be useful to new and / or experienced users of the component. The description 306 may be accompanied by sample code 308 that illustrates how the component can be integrated into the code of an application. The sample code 308 may be provided in various programming languages, and the sample code 308 may be copied and pasted from the sample code 308 into the code of an application.

[0056] In addition, some embodiments may provide an install button 304. The install button may execute the process of installing the component in the user's application. Selecting the install button 304 may launch additional windows, wizards, and / or interfaces that guide the user through the process of installing the component in their application. For example, the install button 304 may trigger the generation of one or more web forms that allow the user to select a data set that can be bound to the parameterized interface of the component. For example, the install button 304 may generate an interface that allows the user to bind the spheres in the funnel object to the various columns in the database. The install button 304 may also automatically download any code necessary to operate the component. This code may include third-party databases, graphics libraries, function libraries, and / or other shared code required to perform the operations provided by the component.

[0057] Figure 4 A block diagram illustrating a process for downloading and instantiating components in an application according to some embodiments is shown. Figure 3 , a user can select a funnel object 402 for use as part of an application under development. The code for the funnel object 402 can be downloaded to an operating environment on a client device that is configured to utilize this type of component. For example, the funnel object 402 can be downloaded to an EDIE environment 102 operating on any of the client devices described above. The EDIE environment 102 can include a virtual environment 104 that can provide an environment in which three-dimensional (3D) components can be instantiated for both two-dimensional (2D) and 3D viewing.

[0058] In addition to downloading the code for the funnel object 402, the component exchanger 124 can also provide any additional code required for running the component in the EDIE environment 102. This additional code can be stored in a code base 404, which is stored and made available by the component exchanger 124. The additional code can also include a library 406 from a third party that is not hosted and / or provided by the component exchanger 124. For example, as part of the installation process for the funnel object 402, the component exchanger 124 can download a library of graphics manipulation code from a third-party website. All of these codes can be downloaded to the EDIE environment 102 so that the funnel object 402 can operate in an independent manner with all of its required functions.

[0059] When the funnel object 402 is downloaded to the EDIE environment 102 and instantiated in the virtual environment 104, the EDIE environment 102 may enable bindings between the parameterized inputs of the funnel object 104 and one or more data sources. For example, the EDIE environment 102 may present a user interface allowing the user to select from one of multiple available data sources. After selecting a data source, a request may be issued to the user to bind various fields in the data source to various parameterized inputs. For example, the user may select a specific column in a database so that the value in that column determines the color of the corresponding sphere in the funnel object in the virtual environment 104. The bindings between the parameterized inputs and the various data sources may be stored as part of the application, so that each time the user launches the application, the funnel object 402 retrieves data from the underlying data sources to generate the funnel object's display in the virtual environment 104. These bindings may be updated and / or changed upon application launch or dynamically updated and / or changed while the application is running to visualize different data sets in the virtual environment 104.

[0060] Figure 4 The example illustrates an enterprise data repository 108 that can be used to bind enterprise data to parameterized inputs of various visualization objects. In other examples, different data sources can be bound to different aspects of a visualization object. For example, some embodiments can allow columns or fields from multiple databases and multiple locations to be bound to parameterized inputs of the same visualization object. Some embodiments can use online data sources that provide real-time data to visualization components. Any combination of data sources can be provided to parameterized inputs of a visualization object based on the needs of individual application designers.

[0061] Figure 3-4 The use of the funnel object 402 in FIG. 1 is provided as an example only and is not meant to be limiting. It will be understood that any visualization object designed to operate in the EDIE environment 102 can be implemented in the EDIE environment 102 using a similar process.

[0062] Figure 5 The diagram illustrates a virtual dashboard created in a virtual environment 104 according to some embodiments. Although the visualization components described herein can be used in any type of application, they may be particularly suitable for designing virtual dashboards. As used herein, the term dashboard may include a visualization that summarizes, analyzes, and / or displays information from one or more data sources in a user interface. A dashboard may be provided on the homepage of an organization's website. A dashboard may also be displayed as an input screen in an application or mobile app. A dashboard generally displays "widgets" or other graphical representations of data in a two-dimensional environment. Users can often select various widgets on the dashboard to display additional information. For example, a user may click on a widget that displays summary sales information for the current month. Widgets can be configured to provide additional information about the summary sales information displayed on the dashboard. Some dashboards may include multiple widgets that can be configured to display the latest information from the underlying data source when the dashboard is accessed by various user client devices.

[0063] The embodiments described herein use the visualization components described above to implement dashboards in a 3D virtual environment 104. For example, instead of displaying 2D widgets on a computer screen, users can use a client device enabled for interacting with the 3D virtual environment to provide a 3D visualization experience to view and manipulate dashboard data. Some embodiments may use a virtual reality headset or augmented reality device that allows users to enter the virtual environment 104 and perform real-time interactions with visualizations displaying dashboard data. In the virtual environment 104, users can walk around visualizations, "grab" and manipulate parts of the visualizations, interact with other users, and have their actions on the visualizations update the underlying data sources. This transforms the traditional 2D dashboard experience into an interactive, immersive virtual reality experience in which data can be viewed in an interactive, live manner.

[0064] The virtual environment can include multiple visual objects. Instead of multiple 2D widgets, the 3D dashboard can include visual objects placed within the virtual 3D environment 104. When a user enters or views the 3D virtual environment, they can move around the virtual objects to view them from any angle and manipulate them at any location. Additional examples of users interacting with the virtual environment 104 to interact with the visual objects are described in more detail below.

[0065] As described above, a visualization object can refer to a software object represented by the body of code and / or its associated libraries. The content displayed in the virtual environment 104 can be referred to as a view of a visualization object. Each visualization object can be associated with multiple different views, and each view can provide a different look and feel for the visualization object. For example, a funnel object can include a traditional business view that displays data in a more conservative way that is suitable for the business environment. The funnel object can also include additional views that display data in a less formal way, including brighter, more vivid colors, more interesting shapes and / or other variations of the way of viewing the funnel object. For simplicity, the rest of this disclosure will not distinguish between the underlying visualization objects represented by executable code and the views of the visualization objects displayed in the virtual environment 104. Instead, visualization objects (e.g., funnel objects) can be collectively referred to as visualization objects to cover both the code and the display in the virtual environment 104.

[0066] In this example, the virtual environment 104 may include a dashboard with three visualization objects. Funnel object 508 may be linked to the aforementioned enterprise data repository 502. Graphic object 510 may be linked to a multidimensional data cube 504, where the dimensions in the data cube are bound to the individual elements of graphic object 510. Person object 512 may include a summary display of an individual in a three-dimensional grid within the virtual environment 104 (e.g., similar to a virtual business card display). The person object may be bound to a web service 506, allowing the person object to download information from the web service 506 to populate the individual items in the summary display. These visualization objects may be rendered in various locations within the virtual environment 104 (e.g., in a semicircle). When a user enters the virtual environment 104, they may see visualization objects 508, 510, 512 as objects in the area in front of them. To begin using the virtual dashboard, the user may approach visualization objects 508, 510, 512 as needed, view the visualization objects, and / or manipulate elements of the visualization objects.

[0067] Figure 6The illustration shows how various types of client device systems and input devices can all simultaneously interface with the same virtual environment in the EDIE environment 102, according to some embodiments. The EDIE environment 102 can include a 3D data exploration platform that serves many different purposes and provides many different benefits. For example, the EDIE environment 102 can serve as an integrated nexus between important, converging new technologies that can make the exploration of enterprise data more immersive and fluid. These technologies can include conversational UIs (e.g., voice-based or chat-based) 610, virtual reality (VR) 608, augmented reality (AR) 604, and many other interactive technologies. Users can also access these visualization technologies using traditional 2D computing tools (e.g., applications on mobile devices 606, web browsers on display screens 612, etc.). The EDIE environment 102 can provide visualizations that seamlessly move between devices. For example, a user can view a 3D visualization in a 2D environment (such as on the screen of a mobile device 606). The user can then don a pair of virtual reality goggles and transition into a virtual reality space that includes visualization objects displayed in two dimensions on the screen of the mobile device 606. In the virtual environment, the user can interact with the visualized objects using hand controllers typically included in VR systems as described below.

[0068] The EDIE environment 102 may include a hardware detection process 620 that detects the type of user input device being used by the client device. For example, if the client device is using a conventional 2D display screen with a web browser 612, the hardware detection process 620 may detect that a 2D environment is being interfaced with the virtual environment 104. The EDIE environment 102 may include a hardware detection process 620 that detects the type of user input device being used by the client device. Figure 6 . The hardware detection process 620 can identify the various input options available and load the interface code into the EDIE environment 102 accordingly. The interface code can then generate a view of the virtual environment 104 that is compatible with the corresponding input device on the client device.

[0069] As described in more detail below, the EDIE environment 102 can operate in a networked mode, allowing the virtual environment 104 to be accessed simultaneously by multiple different client devices. This allows users to interact with each other in the virtual environment 104 while viewing visualization objects tied to underlying enterprise data. The hardware detection module 620 allows users to interact together in the virtual environment 104 based on their own viewing experience using their client devices. For example, a user entering the virtual environment 104 using a virtual reality device 608 can be visible in the virtual environment 104 as a displayed avatar of another user viewing the virtual environment 104 from a 2D screen interface of a web browser 612.

[0070] Figure 7 The diagram illustrates a view of a virtual environment 104 through a 2D screen interface, according to some embodiments. A user 702 can access the EDIE environment 102 through a desktop computer, laptop computer, or other computing device equipped with a 2D screen interface. When viewing the virtual environment 104 on the 2D screen 704, a virtual camera can be placed within the virtual environment 104 to render a view of the virtual environment 104 from the perspective of the virtual camera. The rendered image can be displayed on the user's 702 screen 704. While displayed on the screen 704, the user can interact with various objects in the virtual environment 104 using a mouse or touch screen.

[0071] The virtual environment may include multiple visual objects arranged in the dashboard display as described above. These visual objects may include funnel object 508, graphic object 510, and / or any other visual objects. In addition, the image captured by the virtual camera and displayed on screen 704 may include the positions of other users in the virtual environment. Each user's view may be captured by a corresponding virtual camera in virtual environment 104. Instead of displaying a virtual camera, the positions of these cameras may include the display of an avatar or other representation of another user. This example includes a visualization of user 708 in virtual environment 104. User 702 may interact and communicate with user 708 through virtual environment 104 as if they were both in virtual environment 104. When user 708 turns their virtual camera towards user 702's virtual camera, they may see a corresponding visualization or avatar representing user 702 in virtual environment 104.

[0072] As described above, the EDIE environment 102 can automatically determine that the screen 704 should display a 2D view of the virtual environment 104. The user 708 can be wearing a pair of virtual reality goggles, and the EDIE environment 102 running on that client device can provide a 3D view of the virtual dashboard in the virtual environment 104. Thus, the users can all interact together using various devices in the same virtual environment. In the virtual environment 104, the type of device used by some users may not be obvious to other users. For example, the user 708 can look at the virtual camera to see what the user 702 is showing on the screen 704, and instead of seeing the virtual camera, they can see an avatar in the virtual environment 104. The user 708 may not be able to distinguish whether the user 702 is using a virtual reality headset or a 2D display screen 704.

[0073] Figure 8A view of a virtual environment 104 is illustrated with multiple users interacting with a virtual dashboard, according to some embodiments. In this example, users 804 and 806 are represented by human-looking avatars. Users can select avatars that resemble themselves or any other virtual character. These avatars can move within the virtual environment 104 as the user moves around the real-world environment using a virtual reality headset. As the user moves their head within the real environment, the virtual camera can move, rotate, pan, tilt, etc. This allows the user to "walk around" the virtual dashboard within the virtual environment 104 to see various visual objects from different angles.

[0074] The movements of various users can be represented in the virtual environment 104 so that they are visible to other users. For example, compatible virtual reality equipment includes a virtual reality headset and a selection device that can be held in the user's hand. When the selection device or virtual reality headset is moved in the real-world environment, that movement can be used to drive the movement of the avatar in the virtual environment 104. For example, when user 408 raises their hands in the real-world environment, the avatar's hands can also be raised in the virtual environment 104, making them visible to user 806. This allows the user to gesture and point to visual objects in the virtual dashboard, and have those movements visible to other users.

[0075] Figure 8 Also illustrated is a virtual camera 802 that can be used to capture a view of the virtual environment 104 to obtain an image to be displayed on the 2D screen. As described above, the depiction of the virtual camera 802 can be replaced with an avatar for the user 702 viewing the screen 704. Alternatively, the virtual camera 802 can have no visual equivalent in the virtual environment 104, or can be replaced by any other visual indicator, such as a 3D object that can be rendered for other users to view.

[0076] Users using both the 2D and 3D displays described above can interact with elements of the visualization objects in the virtual dashboard. For example, user 804 can approach funnel object 508 and select one of the spheres rotating around funnel object 508. In the 2D display, a sphere can be selected using a finger tap or a mouse click. In the 3D display, a sphere can be selected using one of the handheld virtual reality devices held by user 804, reaching out and "grabbing" one of the spheres as it rotates around funnel object 508. As described above, spheres can be bound to data objects in a data repository. For example, a sphere can represent a row in a database, and the position, color, speed, trajectory, etc. of the sphere in funnel object 508 can be determined by different values ​​in the columns of the database row. When user 804 grasps a sphere, additional information about the sphere can be displayed in the user interface or head-up display (HUD). For example, the values ​​of each column in the database row can be displayed to user 804. The sphere may be passed back and forth between user 804 and user 806, allowing both users 804, 806 to view details of the underlying data object.

[0077] When user 804 has finished examining the sphere, user 804 can place the sphere back into funnel object 508. In some embodiments, user 804 can "place" the sphere back into funnel object 508, and the sphere can automatically return to its previous position / rotation within funnel object 508. In other embodiments, user 804 can place the sphere in a different location within the funnel object than its original location. As described above, the position of the sphere within funnel object 508 can be determined by values ​​in the underlying dataset bound to funnel object 508. When the position of the sphere within funnel object 508 changes, the values ​​corresponding to that position can also change. In some embodiments, the values ​​corresponding to the new position within funnel object 508 can be written back to the underlying dataset. This allows the user to manipulate elements of the virtualized objects in virtual environment 104 and change values ​​in the dataset to which the visualization objects are bound.

[0078] In some embodiments, the view of the visualization object provided to each of users 804, 806 can be identical. For example, when user 804 pulls the sphere out of funnel object 508 as described above, user 806 will see the sphere leave funnel object 508. Similarly, when user 804 puts the sphere back into funnel object 508, user 806 can see the sphere's new position within funnel object 508. Thus, using the virtual dashboard in virtual environment 104, changes to the visualization object and its underlying dataset are common to each user.

[0079] In other embodiments, each of users 804, 806 may be provided with their own view of the visualization object. In these embodiments, the state of each visualization object may be uniquely saved for each user 804, 806. For example, when user 804 pulls the sphere out of funnel object 508 as described above, user 806 will continue to see the sphere rotating within funnel object 508. Thus, changes made by one user 804 to an element of a visualization object will only be seen by that particular user 804. Other users 806 will continue to see the visualization object in its unchanged state. Embodiments may handle changes made by one user to the underlying dataset based on stored preferences. For example, some embodiments may propagate changes to the underlying dataset, while other embodiments may provide the dataset in a "read-only" configuration so that changes to the visualization object are not reflected in the underlying dataset. Some embodiments may present changes to all users present in the virtual environment 104 for approval before they are written to the underlying dataset.

[0080] As described above, each visualization object can have one or more views or view models associated with the visualization object. These view models can control the look and feel of the visualization object when rendered in the virtual environment 104. The EDIE environment 102 allows each user to select a separate view model for the same visualization object. For example, user 804 can choose to view the funnel object 508 using a business view model that uses soft colors and smaller spheres. User 806 can choose to view the funnel object 508 using an informal view model that uses brighter colors and larger spheres. This allows each individual user to customize the look and feel of the visualization object in the virtual dashboard without having to change the view model for other users.

[0081] Figure 9 908 that can be used to interact with a virtual environment 104 in accordance with some embodiments. A user 902 can use a virtual reality device, including a virtual reality headset 904 and / or one or more handheld selection devices 906. As the user 902 moves in the real world environment 908, a virtual camera in the virtual environment 104 can move in a corresponding manner within the virtual environment 104. The virtual camera can capture a view of the virtual environment 104 displayed to the user 902 through the virtual reality headset 904. As the user 902 moves their hand holding the selection device 906, the hand of the corresponding avatar in the virtual environment 104 can also move and select objects in the virtual environment 104 as described above.

[0082] Figure 10A flowchart 1000 of a method for displaying data in a multidimensional dashboard according to some embodiments is illustrated. The method may include accessing a plurality of 3D visualization components (1002). Each of the 3D visualization components may include parameterized inputs for receiving a data set. The 3D visualization components may be downloaded or otherwise received from a component exchange that allows developers to provide 3D visualization components to be used in multiple applications being developed. The 3D visualization components may be downloaded to a client device or an operating environment (such as the EDIE environment described above). For example, the 3D visualization components may include a funnel object, a graphic object, and / or other visualization components described herein.

[0083] The method may also include receiving one or more data sets (1004). The data sets may represent enterprise data received from enterprise applications and / or databases. For example, the data sets may include a customer relationship management (CRM) database, a human capital management (HCM) database, a financial software database, and / or any other type of enterprise data available to the operating environment.

[0084] The method may additionally include binding parameterized inputs of multiple 3D visualization components to one or more data sets (1006). For example, for each of the 3D visualization components, the corresponding parameterized input may be bound to one of the one or more data sets. The parameterized inputs of the 3D visualization components can make the 3D visualization components versatile so that their appearance and operation can be customized with the help of the bound data sets. When the data sets are placed in the application, the data sets can be bound to the corresponding 3D visualization components at design time. When the 3D visualization components are instantiated at runtime, the data sets can be bound alternatively or additionally. During runtime, the system can receive input (e.g., from a user) to bind the data sets to different data sets. Some 3D visualization components can be bound to multiple different data sets, each of which can define a visual or operational aspect of the 3D visualization component.

[0085] The method may also include rendering multiple 3D virtual objects in the virtual environment based on multiple 3D visualization components and one or more data sets (1008). Each of the 3D visualization components may include a view model, an animation model, a wireframe skeleton, and / or other graphical constructs that can be used to generate 3D virtual objects in the virtual environment. The virtual environment can be implemented in the EDIE operating environment to create a 3D virtual scene that includes objects other than the 3D virtual objects from the 3D visualization components. For example, the virtual environment can be configured as a circular carousel of 3D virtual objects. In another example, the virtual environment can be configured as an enterprise dashboard that displays 3D objects as virtual "widgets" that can be viewed by users in the virtual environment. Each 3D virtual object in the dashboard can be bound to different enterprise data sets from different databases and / or different applications. For example, the dashboard can provide summary data for finance, employees, operations, customers, etc. in a unified display in a single virtual environment.

[0086] The method may also include receiving connections to the virtual environment from a plurality of client devices (1010). Some embodiments may include a client device having a hardware detection process installed thereon, the hardware detection process being configured to detect the type of display and / or input device being used with the client device. The hardware detection process may automatically configure the interaction with the virtual environment to match the type of client device. For example, if the client device includes a virtual reality headset, the hardware detection process may be configured to provide an immersive view and / or interaction with the virtual environment so that the user feels as if they are working in the virtual environment rather than in a real-world environment. If the client device includes a 2D screen (e.g., a monitor, laptop, etc.), the hardware detection process may be configured to place a virtual camera in the virtual environment to capture a 2D image of the virtual environment at a location in the virtual environment to be displayed on the 2D screen.

[0087] The method may additionally include providing multiple views of multiple 3D virtual objects in the virtual environment to multiple client devices (1012). A separate view of the virtual environment may be provided to each client device. In addition, each client device may be configured to allow a user to interact with the 3D virtual objects in the virtual environment to change their display. For example, a user may remove elements from the virtual object that correspond to various elements in the corresponding data set. The user may see a display that includes summary information about the data points in that data element and may be allowed to change certain data points. These changes may be updated in the underlying data source to which the 3D virtual object is bound. In some embodiments, the changes may be immediately viewable by other users in the virtual environment. Alternatively, some changes may be visible only to the user making the change, providing each user with a personalized view of the virtual environment.

[0088] It should be appreciated that, according to various embodiments, Figure 10 The specific steps shown in provide a specific method for displaying data in a multidimensional dashboard. According to alternative embodiments, other sequences of steps may also be performed. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Furthermore, Figure 10 Each step shown in the foregoing may include multiple sub-steps, which may be performed in any order suitable for the individual steps. In addition, additional steps may be added or removed depending on the specific application. Those skilled in the art will recognize many variations, modifications, and substitutions.

[0089] Animation between visual objects in a turntable

[0090] In some embodiments, multiple visualization components may be used to represent one or more data sets in a virtual environment. For example, a single data set may be loaded into a first visualization component. The first visualization component may be customized to display a particular aspect or set of aspects of the data set. However, the first visualization component may not be ideal for displaying a different aspect or set of aspects of the data set. Therefore, these embodiments may generate an animation of the data set flowing from the first visualization component to the second visualization component. A graphical element (such as a sphere or ball) in the first visualization component may be animated to flow toward the second visualization component to "fill" the volume in the second visualization component. The second visualization component may be specifically customized to graphically emphasize one or more alternative aspects of the data set.

[0091] The transitions between different views and / or representations of a data set in a virtual environment can be controlled by a collection of "stories." As used herein, the term "story" can refer to a series of actions that cause data to be displayed in a virtual environment to tell a story using the data through visualization stages. Stories can be used to automatically sort a user's view through various visualization components, data sets, and / or views, rather than controlling each transition between different visualization components. Stories can be stored in a data structure of instructions or actions as described below.

[0092] Before describing the animations and / or sequences between steps in a story, the present disclosure may first describe a number of different visualization components. These visualization components are presented by way of example only and are not meant to be limiting. However, they are described so that they can be used as examples to illustrate how views, data sets, visualization components, and / or other aspects of a virtual environment can be transitioned as part of a larger story. The present disclosure will first describe the funnel visualization component briefly mentioned above, as well as the "beaker" visualization component and the "profile layout" visualization component.

[0093] As mentioned above, imported datasets can be represented by one or more visualization components in the virtual environment. Many different types of visualization components can be imported into the virtual environment to represent the datasets they are bound to. The shapes, designs, and animations available for each visualization component can be specifically designed to provide users with a visual experience for viewing, understanding, and manipulating complex datasets. Rather than just viewing a graph or 2D pie chart on a web page, users can see advanced animations in three dimensions that illustrate how the data changes over time, how the data interacts with each other, and what changes are propagated through the data to achieve the desired results. These visualization components offer significant advantages over traditional two-dimensional dashboards used to display and interact with enterprise data.

[0094] Figure 11 An example of a visualization object in the form of a funnel 1100 according to some embodiments is illustrated. Funnel 1100 may be referred to as a final object, a funnel visualization component, or a funnel 3D representation. Funnel 1100 may be useful for visualizing large datasets with thousands or even millions of data points. Funnel 1100 may provide multiple simultaneous visual indicators that may collectively convey information about each data point and about a collection of data points. These visual indicators may include the coloring of the data point, the size of the data point, the radial distance of the data point from the center of funnel 1100, the radial angle of the data point, the rotational speed of the data point around funnel 1100, the distance along the length of funnel 1100, and the like. Attributes in the dataset may be used to draw the individual data points around funnel 1100 and control its appearance and / or animation to simultaneously convey all of this information to the user in the form of a visual display.

[0095] As described above, the visualization components for funnel 1100 can be designed to be agnostic to any specific dataset. Instead, funnel 1100 can include a collection of parameterized inputs to which existing datasets can be bound. By way of example, the following discussion can use a specific type of dataset to illustrate how funnel 1100 can view and manipulate that dataset. This example dataset can include a data table imported or accessed from a sales cloud application. This data table can include sales opportunities in each row of the data table. Different columns in the data table can include all the attributes of the sales opportunity. These attributes can include interactions between individuals, scores, progress indicators, and / or any other characteristics that develop a sales opportunity into a completed sale. When the visualization components for funnel 1100 are imported into an application (such as a virtual dashboard application), the application designer and / or user can select the sales opportunity table as the dataset to be represented by funnel 1100. The data points from the data table can then be used to construct a 3D object representing funnel 1100 to control the visual aspects of funnel 1100. These visual aspects are described in detail below, but in short, each row in the data table may correspond to a sphere in funnel 1100 that rotates around funnel 1100. Each sphere's rotation speed, angle, trajectory, color, size, and / or other characteristics may be defined by columns in the corresponding data row.

[0096] It will be understood that the use of sales opportunity data for the underlying dataset of funnel 1100 is used by way of example only and is not meant to be limiting. As emphasized above, the design of the visualization components for funnel 1100 is independent of the underlying dataset. Instead, any dataset can be bound to funnel 1100 to populate funnel 1100 with spheres representing data points. Sales opportunity information is merely one example of a dataset that illustrates how to interactively visualize the properties of data points using funnel 1100. Other datasets may include financial data, scientific data, test or experimental data, survey data, and / or any other type of data source.

[0097] First, the distance 1106 on funnel 1100 can convey the meaning of each data point. Distance 1106 from the origin of funnel 1100 can be determined by the value of the column in each row corresponding to the sphere in funnel 1100. For example, for each individual data point, distance 1106 can indicate the relative progress of the data point from its starting value to its ending value. For example, for data points representing sales opportunities, the farther the data point is from the origin of funnel 1100, the further the opportunity is from successful completion. Thus, data point 1107 would represent an opportunity in the initial stages of progress, while data point 1108 would represent an opportunity nearing successful completion. The shape of funnel 1100 itself can also convey this type of meaning. A funnel, in its physical form, typically receives new material at a larger opening and then gradually pours that material (e.g., liquid) "through the funnel" toward the smaller end. By using the shape of funnel 1100 in a virtual environment, users can intuitively understand that data points will progress from the larger outer area toward the smaller inner area of ​​the funnel. Therefore, the funnel 1100 is very useful for showing the progress of individual data points in a large set of data points.When the funnel 1100 is constructed in the virtual environment, each sphere can be placed at a position or distance 1106 in the funnel based on this value from the data set.

[0098] In addition to showing the progress of a single data point in a collection of data points, the funnel 1100 is also very useful for showing the overall trend of the progress of the data points. Figure 11 In the funnel visualization, there are thousands of data points in the dataset, represented by small spheres. In addition to the ability to focus on individual data points, this visualization provides users with an illustration of clusters, or natural groupings, of the data to illustrate trends within the dataset. For example, a collection of data points at the beginning of funnel 1100 (e.g., stage 1) that are far from the origin (e.g., stage 5) could indicate a large number of sales opportunities at the beginning; however, a small number of data points near the origin of funnel 1100 (e.g., stage 5) would indicate that relatively few sales opportunities have been completed. Funnel 1100 also provides a quick way to assess the total number of data points in the dataset. For example, a sparsely populated funnel indicates that few sales opportunities are available. Conversely, a funnel that is densely populated at each level indicates that there are many opportunities evenly distributed among the different states of progress.

[0099] The natural grouping or clustering of data that is visually apparent in the funnel 1100 can be enhanced by creating thresholds, stripes, or groupings of the data that will be displayed in the rendering of the funnel itself 1100. For example, the funnel 1100 may include a first stage 1101, a second stage 1102, a third stage 1103, a fourth stage 1104, and a fifth stage 1105. The divisions between stages can be determined by user-defined thresholds and can represent the stages in which data points progress toward a final outcome. For example, the first stage 1101 can represent a sales opportunity that has been identified but not yet evaluated or acted upon. The fifth stage 1105 can represent a sales opportunity that has been nurtured into a completed sale. In some embodiments, defined boundaries, different color schemes, and / or other means of visually distinguishing data points in one stage from data points in another stage can be used. Figure 11 The diagram visually depicts each stage. In some embodiments, this may include a representation of what appears to be the funnel itself, while other embodiments may simply form a funnel shape with the data points filling the funnel.

[0100] The different stages 1101, 1102, 1103, 1104, 1105 can be regularly spaced along the length of funnel 1100. The relative width of each of stages 1101, 1102, 1103, 1104, 1105 can be determined based on the static spacing defined by funnel 1100. The relative width can also be determined by the number of data points within each stage. For example, when a large number of data points reside in the first stage 1101, the width of the first stage 1101 can be larger. The colors of the various stages can be transparent so that they obscure various areas of funnel 1100 while still allowing the data points circulating therein to be easily viewed. As described above, the user can interact with the funnel 1100 by selecting the various data points rotating within it. The different stages need not be modeled as solid surfaces in the virtual environment; instead, the user can "walk through" each stage to interact with the data points circulating therein.

[0101] Some embodiments may present the data points in the funnel 1100 statically without motion. Alternatively or additionally, some embodiments may animate the movement of the data points in the funnel 1100 based on one or more attributes. For example, Figure 11Data points in the funnel 1100 can be animated to rotate around the central axis of the funnel 1100 based on the frequency of actions involving that specific data point. In the example of data points representing sales data, the speed at which each data point rotates around the central axis of the funnel 1100 can be determined by the number or rate of sales actions taken on that data point (customer contact, email, direct sales, etc.). This allows users to visually identify unacted data points and interpret their relative distance from the origin of the funnel 1100. Data points that are not moving or are moving slowly indicate that a sales opportunity is not progressing. Conversely, if an opportunity in the first stage 1101 is circulating around the funnel 1100 at a high rate, then the opportunity is likely progressing rapidly. This also provides a natural and realistic visualization of the data points as they progress toward the starting point of the funnel 1100. As with a real-world funnel, data points will gradually progress toward the origin of the funnel 1100 by rotating around the central axis of the funnel 1100, increasing in speed until they reach the origin. This also provides an overall overview of the efficiency and consistency of the data's progress. By animating all the data points, it becomes possible to visually see which data points are receiving more or less attention than others, which data points are progressing slower or faster than others, and other comparative visual information that is easy to convey using this visualization.

[0102] Figure 11 Also illustrated is a control panel 1120 for the funnel 1100, according to some embodiments, and how size, color, and stage details can be added to the animation of the funnel 1100. In this embodiment, the control panel 1120 can be summoned to render a visual object in a virtual 3D environment for the user to control. In a 2D rendering, such as a tablet or smartphone screen, the control panel 1120 can be composited on top of any rendered image of the funnel 1100 from the virtual environment. At the same time, for users equipped with VR / AR devices, the control panel 1120 can be presented as a three-dimensional object in the virtual environment, and these users can use VR hand controls to directly interact with the object representing the control panel 1120. For example, a VR user can make the control panel 1120 appear in front of them and use a virtual hand equipped with VR sensors / devices to "push" controls on the control panel 1120.

[0103] Control panel 1120 can control all visual information displayed by funnel 1100. For example, the user can control the stage shading, the radius, angle, and scale of each data point, and whether certain data points should be highlighted, as described above. Control panel 1120 can also be used to select between different appearances for the funnel, such as smooth or stepped. Finally, transitions between stages can be turned on or off, and the animated rotation of data points around the funnel's central axis can be controlled. Detailed information, such as the labels for the stages and information about each data point, can also be toggled in control panel 1120.

[0104] In addition to controlling the specific appearance of the funnel 1100 in the virtual environment, the control panel 1120 also includes a stories section that lists available stories 1122. As described above, a story is a sequence of instructions or actions that can be used in the virtual environment to tell a story with data using various visualization components, data sets, and / or views. For each visualization component, the stories section of the control panel 1120 can display the available stories 1122 currently configured to use the funnel 1100. The user can select any story 1122 in the control panel 1122 to execute that story. As described in more detail below, a story can trigger animations, wait for user input, instantiate new visualization components, move the view of the virtual camera displayed to the user, and / or other visual operations to navigate through the data story.

[0105] Figure 12 A beaker visualization component 1200 is illustrated, which can receive data points from other visualization components, according to some embodiments. One common operation that may be performed when running a story is transitioning the display of a dataset from one visualization component to another. Beaker visualization component 1200 can serve as a container for discrete objects representing individual data points in a dataset. Instead of displaying these as individual data points, as described above for the funnel object, Beaker can generate a volumetric 3D object representing a collection of data points within a predefined range.

[0106] In this example, the beaker visualization component 1200 can include multiple 3D representations of individual beakers. In this example, three beakers 1210, 1212, and 1214 are displayed in a row or sequence within the virtual environment. Compared to the funnel object described above, beakers 1210, 1212, and 1214 represent a collection of data objects that fall within a predetermined value range. In the funnel, all individual data points are represented by individual spheres that rotate around the funnel. The spheres are placed into sections based on their position within the funnel. The distance of these sections, or each individual sphere, from the origin of the funnel is determined by the value of that data point (e.g., the column in the data row of a database table). Therefore, each individual data point in the dataset that is bound to the funnel visualization object is represented by a separate 3D object in the virtual environment as part of the 3D representation of the funnel.

[0107] In contrast, beaker visualization component 1200 does not need to include a separate 3D object for each data point it is bound to. Instead, beaker visualization component 1200 can display a 3D volume, where the size of the 3D volume depends on the number of data points to be represented by the 3D volume. Beaker visualization component 1200 can be divided into multiple separate beakers 1210, 1212, and 1214 to further distinguish categories of data. In this example, each beaker 1210, 1212, and 1214 represents a non-overlapping interval represented in the data set. Continuing with the sales data example, each sales opportunity in the data set can be classified as falling into one of three different yearly quarters. Note that these three quarters are not distinguished in the funnel described above. Instead, all data points for each quarter are inserted into the funnel and rotated around the funnel object. Thus, beaker visualization component 1200 can display data from different perspectives and highlight different attributes of the data that are not immediately visually apparent in the funnel visualization component. This is an example of how different visualization components can be used to display data in different ways that may be useful to users in a virtual environment.

[0108] Each of the various beakers 1210, 1212, and 1214 can be "filled" with various data points. Instead of representing each data point with a spear, the collection of data points can be represented by a liquid-like 3D volume that fills the beaker from the bottom up. The size of the volume in the beaker can be determined by the number of data points included in that volume. For example, the volume of "liquid" in beaker 1212 is greater than the volume of liquid in beaker 1210. Therefore, by comparing these two volumes, the number of data points in the fourth quarter of 2014 may be approximately twice the number of data points in the third quarter of 2014.

[0109] Each of the various beakers 1210, 1212, 1214 can also divide the data points represented therein into various stages as described above for the funnel component. For example, these stages can relate to the stages of a sales opportunity progressing towards a completed or negotiated sale. These stages are represented by the colored rings in the funnel object described above, and as the spheres representing the various data points rotate around the funnel, they will gradually move towards the origin of the funnel to pass through the various stages. Instead of representing the stages by placing the various data points in various locations, the beaker visualization component 1200 can include vertical layers of liquid-like volumes with different visual characteristics to indicate the stages. For example, Figure 111 is represented by bottom layer 1201 in beaker 1214. Similarly, stages 2-5 are represented by layers 1202, 1203, 1204, and 1205, respectively, in beaker 1214. This illustrates how beaker visualization object 1200 can display different partitions of data using different beakers while still displaying the same partition (e.g., stages) of the data represented in the funnel object.

[0110] Figure 13 The diagram illustrates how, in accordance with some embodiments, 3D objects representing individual data points can be animated to move between visualization components. As described above, the animation can be part of a story for the data set. The first action in the story can be binding the data set to the funnel visualization component, as described above. The second action in the story can be generating a funnel object 1100 in the virtual environment and generating multiple 3D objects (e.g., spheres) that rotate around the funnel to represent each individual data point in the data set. At this point, the story can include instructions that wait for user input. This can allow the user to visually inspect and / or manipulate the individual data points represented in the funnel 1100. For example, the user can walk up to the funnel 1100, virtually "grab" the individual data points represented by the spheres, inspect the data values ​​associated with those individual data points, change the values, and write those changed values ​​back to the underlying data source, and so on.

[0111] After the user has finished examining the data using funnel 1100, they can provide input that causes the story to transition to the next action. In this example, the next action can be to generate or instantiate a second visualization component, such as beaker visualization component 1200. Note that some stories may cause beaker component 1200 to be generated and / or instantiated in the virtual environment at the beginning of the story. It may remain unbound to any dataset until the dataset in funnel 1100 is transferred to beaker 1200. The user may see an empty beaker 1200 until the transition is made.

[0112] The animation can include causing each individual 3D object representing a data point in the first visualization to travel from the first visualization to the second visualization in the virtual environment. Because each data point is represented by a separate 3D object in the funnel 1100, these objects can simply be moved through the virtual environment from their rotational positions in the funnel 1100 to their corresponding positions in the beaker 1200. For example, although no such visual distinction is made in the funnel, the 3D objects can still be moved to the correct beaker in the virtual environment based on a time interval (e.g., Q3 2014).

[0113] An animation path 1302 can be determined for each individual 3D object. This animation path can be generated by a physics engine within the virtual environment. For example, virtual forces can be applied to the beaker to attract the 3D object and overcome any virtual forces causing the 3D object to rotate around the funnel 1100. These forces can be applied within the physics engine to cause each individual 3D object to follow a natural animation path 1302 to the top of the beaker 1200. For example, because the forces are overcome and applied within the virtual environment, a larger sphere may travel slower due to its virtual "mass." Consequently, a smaller data point may reach the second visualization component before a larger data point.

[0114] As described above, beaker 1200 does not necessarily include the locations of 3D objects representing individual data points. Instead, it includes a liquid-like volume representing a collection of data points. In this example, as the individual 3D objects reach beaker 1200, they can transform from the individual objects and combine together to form a liquid-like volume in beaker 1200. For example, the physics engine can model each of these spheres of data points as water droplets as they reach the interior of beaker 1200. Using standard functionality in the physics engine, the droplets can combine to form a 3D volume as they reach beaker 1200. This provides a smooth animation that makes the transition between the two visualization components seamless and continuous.

[0115] In conjunction with the transfer of the 3D object to the second visualization component, the underlying dataset may also be bound to the second visualization component. In this example, the dataset originally bound to funnel object 1100 may now be bound to the parameterized input of beaker 1200. Thus, the appearance of beaker 1200 can be determined by the values ​​of the data attributes of the aggregated data points in the underlying dataset. For example, data values ​​from the individual data points can be aggregated to generate the color, translucency, texture, reflectivity, and / or other visual characteristics for each volume of liquid in beaker 1200. This binding can occur automatically as part of one of the actions dictated by the story. Note that in some embodiments, the dataset can remain bound to both funnel 1100 and beaker 1200. This allows one group of users to continue viewing funnel 1100 while another group moves to beaker 1200. Other embodiments may unbind the data from funnel 1100 while it is bound to beaker 1200. This can help users shift their attention from one visualization component to the next as the story progresses.

[0116] Figure 14A third visualization component including a profile layout is illustrated in accordance with some embodiments. The profile layout component 1400 can include multiple individual user profiles. For example, individual 3D objects similar to user profiles (e.g., business cards) can be rendered and displayed in the virtual environment. Each of these 3D objects can be rendered as a surface or solid / wireframe polygons and exist as a rendered object in the virtual environment. As a rendered object, the user can walk around the profile layout component 1400 in the virtual environment, and it can be displayed next to other virtual components (such as the funnel and / or beaker described above).

[0117] The profile layout component 1400 is an example of a visualization component that can perform calculations, aggregations, transformations, and / or other operations on data before it is displayed in a virtual environment. Data sets can be bound to the profile layout component 1400 in the same way as other components. For example, the same sales data previously bound to a funnel and / or beaker can also be bound to the profile layout component 1400. However, remember that the sales data includes individual sales opportunities. The data points in the sales data do not necessarily include the individual sales personnel displayed by the profile layout component 1400. In order to display information for each sales person, the profile layout component may first perform some operations on the sales data to properly format and / or aggregate the data for display.

[0118] In this example, the sales data can be sorted based on one of the attribute values ​​of each data point (e.g., the salesperson column in each row of the data table). The parameterized inputs of the profile layout component 1400 can include inputs for a salesperson data source and / or inputs for a sales opportunity data source. If the input data set is bound to the sales opportunity parameterized input, then the individual data points can be analyzed and aggregated to form the salesperson data in the display. On the other hand, if the parameterized input is bound to a salesperson database, then data can be extracted from the database and displayed without further transformation in the virtual environment.

[0119] When sales opportunity data is received and the individual salesperson for each data point is identified, the profile layout component 1400 can aggregate all sales opportunities for each individual salesperson. These aggregates may generate new data points configured for display in the virtual environment. For example, each 3D profile object displayed as part of the profile layout component 1400 can be generated by a single aggregate of all sales opportunities for a particular salesperson. The profile 1402 can display the salesperson's name and photo, as well as other identifying information. The profile 1402 can also display multiple sales opportunities that have progressed to a certain threshold level (such as a completed transaction).

[0120] The display of data in the profile layout component 1400 can be organized based on these new aggregated data points. The profiles in the profile layout 1400 can be organized based on the total number of completed transactions. For example, profile 1402 has the most completed transactions and is at the top of the display. The profiles can be displayed in descending order from left to right within each column. In addition, a threshold can be applied by the profile layout component 1400 so that profiles that fall below a certain threshold can be highlighted or emphasized in the visual display. In this example, the visualization component 1400 can set a threshold of 100 transactions. Profiles 1404 and 1406 that fall below this threshold can be highlighted using a border or other visual distinction to draw the user's attention to these specific profiles 1404, 1406.

[0121] Figure 15 Illustrated is a diagram for displaying additional information related to a particular profile in accordance with some embodiments. Figure 14 In the example shown in FIG. 14 , a user can select a specific profile, such as profile 1406. As described above, the user can select individual data points or sales opportunities from the funnel by reaching out and grabbing one of the rotating spheres in the virtual environment. Similarly, selecting profile 1406 in profile layout component 1400 can include reaching out and touching or grabbing the 3D object representing profile 1406. This can cause additional information to be displayed alongside profile layout 1400.

[0122] This additional information may use the raw data points bound to the visualization component 1400. Since the raw data points received from the sales opportunity data source have been transformed and aggregated to provide a display for individual salespeople, this operation provides a way for the user to view the raw data points that were aggregated to generate the display of the profile. For example, when the profile 1406 is selected, a list 1500 of data points in the raw data set for the sales opportunity may be displayed. The list 1500 of data points may also be generated by forming surfaces or thin 3D objects that are rendered as part of the display in the virtual environment. As described above, these objects may be selected, grabbed, and / or otherwise interacted with by the user in the virtual environment. Each 3D object in the list 1500 of data points may display information about each data point (e.g., sales opportunity) that was aggregated to form the profile. This may include all of the details of the sales opportunity, including money, location, sales details, and so on. The list 1500 of data points is considered part of the profile layout component 1400 and may be similar to the 3D objects used for the Figure 11 Control panel 1120 of funnel 1100 in.

[0123] Figure 16A virtual dashboard according to some embodiments is illustrated. As described above, a virtual dashboard can be a collection of visualization components organized into widgets, each of which can display different data sets and / or the same data set using various display technologies. The virtual dashboard can include a funnel 1100, a beaker 1200, a profile layout 1400, and / or other visualization components. The profile layout can also display a list 1500 of data points for the selected profile. The virtual dashboard can allow users to move around the various 3D representations of the visualization components to interactively view and / or manipulate any displayed data. For example, a user can organize a virtual meeting in the dashboard area to discuss the visualization information. In some embodiments, once a user logs into the environment, they will arrive in a virtual environment in front of the virtual dashboard. This can operate similarly to a homepage on a corporate website. From the virtual dashboard, users can view and manipulate data and / or move to different areas of the virtual environment using different applications. For example, a user can activate a control on the funnel 1100 to be brought to a second virtual environment to view additional displays and / or interfaces for working with sales opportunity data.

[0124] Figure 17 Illustrate how stories can generate animations of objects in a virtual dashboard according to some embodiments. This example is similar to the above Figure 13 . In this example, individual 3D objects can be animated as they move from the beaker 1200 into multiple profiles in the profile layout 1400. Instead of turning the individual 3D objects into a summary volume of objects when the rotating sphere is moved from the funnel 1100 into the beaker 1200, this example can use the reverse process. Specifically, as the individual data points are moved out of the beaker 1200, the liquid-like volume can be broken down into spheres similar to the sphere rotating around the funnel 1100. The volume of these spheres is proportional to one of the attribute values ​​of the corresponding data point. Again, a physics engine can be used to pull droplets from the summary volume to form spheres. As described above, the physics engine can generate a motion path 1302 from the beaker 1200 to the corresponding profile in the profile layout 1400.

[0125] As 3D objects in beaker 1200 move along motion path 1302, they can be pulled to various profiles in profile layout 1400. As described above, profiles can group different sales opportunities together based on salesperson attributes. Therefore, the animation can filter each 3D object based on the salesperson attributes of each corresponding data point. Instead of becoming volumetric or maintaining separate representations of data points in profile layout 1400, as 3D objects arrive, they can simply be absorbed by the corresponding profile in profile layout 1400. Some embodiments can generate more complex animations, such that as various 3D objects arrive through the animation, profile layout 1400 is gradually constructed volumetrically. As with the transfer of data points from funnel 1100 to beaker 1200, the underlying dataset can be bound to a third visualization component. For example, a sales opportunity database can be bound as a parameterized input to profile layout component 1400.

[0126] Each of these operations can be determined by a story data structure that is used to tell a story about this data as it is shared and passed through different visualization components in sequence. Figure 13 In the example shown in Figure 1, a data set can be bound to a beaker 1200. The user can be given the opportunity to examine the beaker 1200 and manipulate any data within it. The story can then wait for user input to activate the animation of the data points via a motion path 1302 between the beaker 1200 and the profile layout 1400. The story can also set thresholds for different sales profiles in the profile layout 1400 and automatically display a list 1500 of data points associated with the lowest sales profile.

[0127] By placing these specific actions in a story, a data representation can be generated that tells a story about how the data progressed and what caused that progress. For example, the funnel 1100 can show how the overall sales opportunity progressed through various stages as a whole. When the data is animated to the beaker 1200, they can show how this progress occurred over time, perhaps illustrating how the current sales numbers for the current quarter are underperforming compared to previous sales numbers. Next, when the data is animated to the profile layout 1400, specific profiles can be highlighted as salespeople who are lagging behind or not meeting expectations as reasons for the lower sales numbers. When generating a story, the story designer can add thresholds, visualizations, and data sets that tell the intended story in the most effective visual way within the virtual environment.

[0128] It should be emphasized that specific visualization components, such as funnel 1100, beaker 1200, and / or profile layout 1400, are provided by way of example only and are not intended to be limiting. Other embodiments may use different layouts, different visualization components, different animations, and so on. Other embodiments may also use any type of underlying data source to bind to the visualization components. The example of sales data is provided by way of example only and is not intended to be limiting.

[0129] Figure 18 The data structure of a story 1802 according to some embodiments is illustrated. The story can include multiple individual visualization components 1804, 1810, 1816. These can indicate the various components that will be instantiated in the virtual environment as part of the story. Each of these components 1804, 1810, 1816 can include settings that determine when and how these components are made visible, when they are loaded, when they are instantiated, and when they are bound to underlying datasets. In this example, the funnel visualization component 1804 can initially be bound to the sales data dataset 1806. In contrast, placeholder datasets 1812, 1818 can be bound to the beaker component 1810 and / or the profile layout component 1816. This can indicate that datasets can be dynamically bound at runtime when the story is executed in the virtual environment.

[0130] Visual transitions can also be inserted into the story, indicating how data moves from one visualization component to the next. For example, animation component 1808 can generate a link 1820 between dataset 1806 and dataset 1812. Specifically, the sales dataset can be transferred from funnel component 1804 to beaker component 1810. Depending on the settings in animation component 1808, this can cause funnel component 1804 to be unbound from the sales dataset and bind beaker component 1810 to the sales dataset. Similarly, animation component 1814 can include a link 1822 between dataset 1812 and dataset 1816 to bind / unbind the sales dataset when the animation occurs.

[0131] Figure 18 The story 1802 shown in FIG. 1 is a simplified version of a story that can be used in practice. Other stories can be very complex and can include other multimedia effects and the display of different visualization components. For example, some embodiments can use video presentations on a virtual screen in the virtual environment, voice and sound recordings that are triggered when animating or interacting with data, lighting effects that focus virtual light sources on different visualization components, automatic changes to the view associated with a virtual camera in the environment, automatic changes to the user's position in the virtual environment, and / or any other changes or effects that can be applied to the virtual environment.

[0132] Figure 19 A flow chart of a method for providing animation between one or more visualization components according to some embodiments is illustrated. The method may include receiving one or more data sets bound to a first visualization component (1902). The one or more data sets may include enterprise data or data from any other data source. These data sources may include enterprise applications, web services, databases, spreadsheets, websites, data repositories, XML files, online repositories, backup systems, and the like. The one or more data sets may be bound to the visualization component via parameterized input as described above. The visualization component may be any visualization component described in this disclosure, in addition to other visualization components that operate in a similar manner that are not specifically disclosed.

[0133] The method may also include generating a 3D representation of the first visualization component in the virtual environment based on the one or more data sets (1904). The 3D representation may include multiple individual 3D objects representing individual data points in the one or more data sets. These may be displayed as individual 3D objects, or they may be displayed as an aggregated 3D object representing multiple data points in the data sets. The 3D representation may also include any 3D constructs or other structures or rendering components that create predefined shapes or structures of the visualization component. This may include a tapered ring for a funnel, an empty beaker for a beaker component, and / or a profile card for a profile layout. As described above, each 3D object may have visual characteristics determined by the actual values ​​in the corresponding data points (e.g., columns in a data row). This may include color, speed, trajectory, motion path, size, circumference, transparency, texture, reflectivity, volume, and / or any other characteristics in the virtual environment. Similarly, any 3D construct or surface used to represent the structure of the visualization component as a whole may also have visual characteristics determined by the data points and / or settings in the visualization component. For example, different stages of representing data may generate colored rings and / or portions of a beaker to be displayed.

[0134] The method may further include receiving a command in the virtual environment to transition one or more data sets to a second visualization component (1906). Both the first visualization component and the second visualization component can be instantiated in the virtual environment as part of a carousel or virtual dashboard. The command to transition one or more data sets can be received from a user, from a timer, from another process, by means of an action performed by a user in the virtual environment, and / or any other triggering event. For example, if a user walks from the first visualization component to within a threshold distance of the second visualization component, then this can serve as a command to transition data points from the first visualization component to the second visualization component. In another example, if the user turns their virtual camera (e.g., turns their head in the real world) so that their view moves from the first component to the second component, then this can also serve as a command to transition data points. Depending on the embodiment, one or more data sets can be unbound from the first visualization component in association with the command.

[0135] The method may also include generating an animation (1908) of 3D objects representing individual data points in one or more data sets moving from a 3D representation of a first visualization component to a 3D representation of a second visualization component in a virtual environment. The animation may include generating a motion path for each individual 3D object using a physics engine as each individual 3D object moves from the first visualization component to the second visualization component. In some embodiments, when the 3D objects enter the second visualization component, they may be visually transformed into a composite object, such as an aggregated volumetric object representing the multiple data points. The reverse process may also be invoked when moving from a 3D object representing the multiple data points, and the objects may be decomposed into individual 3D objects (e.g., individual spheres) as they move between visualization components. The animations, transition commands, and generation of the 3D representations of the visualization components may be controlled by a story data structure that includes operations for performing each of these operations, such as instantiating visualization components, binding / unbinding datasets, generating animations, and the like.

[0136] The method may also include binding one or more data sets to the second visualization component (1910). This binding may be performed as indicated by the story data structure described above. This binding may be performed via parameterized inputs to the second visualization component. In some embodiments, this binding may cause the second visualization component to perform additional calculations, transformations, and / or operations on the one or more data sets. For example, the second visualization component may aggregate attribute values ​​of various data points to form a new data point that can be represented by a 3D object in the second visualization component.

[0137] It should be recognized that Figure 17The specific steps shown in provide specific methods for providing animation between one or more visual components according to various embodiments. According to alternative embodiments, other sequences of steps may also be performed. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, Figure 17 Each step shown in the foregoing may include multiple sub-steps, which may be performed in any order suitable for the individual steps. In addition, additional steps may be added or removed depending on the specific application. Those skilled in the art will recognize many variations, modifications, and substitutions.

[0138] Each method described herein can be implemented by a computer system. Each step of these methods can be automatically performed by the computer system and / or can include input / output involving a user. For example, a user can provide input for each step in the method, and each of these inputs can generate a specific output in response to a request for such input, where the output is generated by the computer system. Each input can be received in response to a corresponding requested output. Furthermore, input can be received from a user, received as a data stream from another computer system, retrieved from a memory location, retrieved over a network, requested from a web service, and so on. Similarly, output can be provided to a user, provided as a data stream to another computer system, stored in memory, sent over a network, provided to a web service, and so on. In short, each step of the method described herein can be performed by a computer system and can involve any number of inputs, outputs, and / or requests to and from the computer system, which may or may not involve a user. It can be said that those steps that do not involve a user are automatically performed by the computer system without human intervention. Therefore, it will be understood from this disclosure that each step of each method described herein can be modified to include input and output to and from a user, or can be performed automatically by the computer system without human intervention, with any determinations made by the processor. Furthermore, some embodiments of each of the methods described herein may be implemented as a set of instructions stored on a tangible, non-transitory storage medium to form a tangible software product.

[0139] Figure 20 A simplified diagram of a distributed system 2000 for implementing one of the embodiments is depicted. In the illustrated embodiment, the distributed system 2000 includes one or more client computing devices 2002, 2004, 2006, and 2008, each of which executes and operates a client application, such as a web browser, a proprietary client (e.g., Oracle Forms), etc., over one or more networks 2010. A server 2012 can be communicatively coupled to the remote client computing devices 2002, 2004, 2006, and 2008 via the network 2010.

[0140] In various embodiments, the server 2012 may be adapted to run one or more services or software applications provided by one or more components of the system. In some embodiments, these services may be provided to users of client computing devices 2002, 2004, 2006, and / or 2008 as web-based services or cloud services, or under a software-as-a-service (SaaS) model. Users operating client computing devices 2002, 2004, 2006, and / or 2008 may, in turn, utilize one or more client applications to interact with the server 2012 to utilize the services provided by these components.

[0141] In the configuration depicted in the figure, software components 2018, 2020, and 2022 of system 2000 are shown as being implemented on server 2012. In other embodiments, one or more components of system 2000 and / or the services provided by these components may also be implemented by one or more of client computing devices 2002, 2004, 2006, and / or 2008. The user operating the client computing device can then utilize one or more client applications to use the services provided by these components. These components can be implemented with hardware, firmware, software, or a combination thereof. It should be appreciated that various system configurations are possible, and these configurations may be different from distributed system 2000. The embodiment shown in the figure is therefore an example of a distributed system for implementing an embodiment system, and is not intended to be restrictive.

[0142] Client computing devices 2002, 2004, 2006, and / or 2008 may be portable handheld devices (e.g., Cellular phones, computing tablets, personal digital assistants (PDAs), or wearable devices (e.g., Google head-mounted display), running software such as Microsoft Windows and / or software for various mobile operating systems (such as iOS, Windows Phone, Android, BlackBerry 10, Palm OS, etc.), and enabling Internet, email, short message service (SMS), or other communication protocols. The client computing device may be a general-purpose personal computer, including, for example, a computer running various versions of Microsoft Apple The client computing device may be a personal computer and / or laptop computer running various commercially available or workstation computers running any operating system in the UNIX or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, such as, for example, Google Chrome OS). Alternatively or additionally, the client computing devices 2002, 2004, 2006, and 2008 may be any other electronic devices capable of communicating over the network(s) 2010, such as thin client computers, Internet-enabled gaming systems (e.g., with or without a desktop computer), or any other type of computer. gesture input device (Microsoft Xbox game console) and / or personal messaging device.

[0143] Although an exemplary distributed system 2000 with four client computing devices is shown, any number of client computing devices may be supported. Other devices (such as devices with sensors, etc.) may interact with the server 2012.

[0144] The network(s) 2010 in the distributed system 2000 may be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially available protocols, including but not limited to TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (Systems Network Architecture), IPX (Internetwork Packet Exchange), AppleTalk, and the like. By way of example only, the network(s) 2010 may be a local area network (LAN), such as a LAN based on Ethernet, Token Ring, and the like. The network(s) 2010 may be a wide area network and the Internet. It may include virtual networks, including but not limited to virtual private networks (VPNs), intranets, extranets, public switched telephone networks (PSTNs), infrared networks, wireless networks (e.g., in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802.11 protocol suite, and / or any other wireless protocol); and / or any combination of these networks and / or other networks.

[0145] The server 2012 may be composed of one or more general-purpose computers, dedicated server computers (including, for example, PC (personal computer) servers, The server 2012 may be composed of a plurality of servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), a server farm, a server cluster, or any other suitable arrangement and / or combination. In various embodiments, the server 2012 may be adapted to run one or more services or software applications described in the foregoing disclosure. For example, the server 2012 may correspond to a server used to perform the processing described above according to embodiments of the present disclosure.

[0146] The server 2012 can run an operating system including any of the operating systems discussed above, as well as any commercially available server operating system. The server 2012 can also run any of a variety of additional server applications and / or middle-tier applications, including HTTP (Hypertext Transfer Protocol) servers, FTP (File Transfer Protocol) servers, CGI (Common Gateway Interface) servers, Servers, database servers, etc. Exemplary database servers include, but are not limited to, those commercially available from Oracle, Microsoft, Sybase, IBM (International Business Machines), etc.

[0147] In some implementations, server 2012 may include one or more applications to analyze and integrate data feeds and / or event updates received from users of client computing devices 2002, 2004, 2006, and 2008. By way of example, data feeds and / or event updates may include, but are not limited to, feed, The server 2012 may also include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of the client computing devices 2002, 2004, 2006, and 2008.

[0148] Distributed system 2000 can also include one or more databases 2014 and 2016. Databases 2014 and 2016 can reside in various locations. As an example, one or more of databases 2014 and 2016 can reside on the non-transient storage medium of server 2012 local (and / or reside in server 2012). Alternatively, databases 2014 and 2016 can be away from server 2012 and communicate with server 2012 via a connection based on a network or a dedicated connection. In one group of examples, databases 2014 and 2016 can reside in a storage area network (SAN). Similarly, any necessary files for executing the functions that server 2012 has can be appropriately stored locally on server 2012 and / or remotely stored. In a set of embodiments, databases 2014 and 2016 can include a relational database suitable for storing, updating and retrieving data in response to a command in SQL format, such as a database provided by Oracle.

[0149] Figure 212 is a simplified block diagram of one or more components of a system environment 2100 that can provide services provided by one or more components of an embodiment system as cloud services, according to some embodiments. In the illustrated embodiment, the system environment 2100 includes one or more client computing devices 2104, 2106, and 2108 that can be used by users to interact with a cloud infrastructure system 2102 that provides cloud services. The client computing devices can be configured to operate client applications, such as web browsers, proprietary client applications (e.g., Oracle Forms), or some other application that can be used by users of the client computing devices to interact with the cloud infrastructure system 2102 to use the services provided by the cloud infrastructure system 2102.

[0150] It should be appreciated that the cloud infrastructure system 2102 depicted in the figure may have other components than those depicted. Furthermore, the embodiment shown in the figure is merely one example of a cloud infrastructure system that may incorporate embodiments of the present invention. In some other embodiments, the cloud infrastructure system 2102 may have more or fewer components than shown in the figure, may combine two or more components, or may have a different configuration or arrangement of components.

[0151] Client computing devices 2104 , 2106 , and 2108 may be similar devices to those described above with respect to 2002 , 2004 , 2006 , and 2008 .

[0152] While the exemplary system environment 2100 is shown with three client computing devices, any number of client computing devices may be supported. Other devices (such as devices with sensors, etc.) may interact with the cloud infrastructure system 2102 .

[0153] The network(s) 2110 can facilitate the communication and exchange of data between the clients 2104, 2106, and 2108 and the cloud infrastructure system 2102. Each network can be any type of network familiar to those skilled in the art that can support data communication using any of a variety of commercially available protocols, including those described above for the network(s) 2010.

[0154] Cloud infrastructure system 2102 may include one or more computers and / or servers, which may include those described above with respect to server 2012 .

[0155] In certain embodiments, the services provided by the cloud infrastructure system may include a number of services available on demand to users of the cloud infrastructure system, such as online data storage and backup solutions, web-based email services, hosted office suites and document collaboration services, database processing, managed technical support services, and the like. The services provided by the cloud infrastructure system can be dynamically scaled to meet the needs of users of the cloud infrastructure system. A specific instantiation of a service provided by a cloud infrastructure system is referred to herein as a "service instance." In general, any service that is available to a user from a cloud service provider's system via a communication network (such as the Internet) is referred to as a "cloud service." Typically, in a public cloud environment, the servers and systems that make up the cloud service provider's system are different from the customer's own on-premises servers and systems. For example, a cloud service provider's system can host applications, and users can subscribe to and use the applications on demand via a communication network such as the Internet.

[0156] In some examples, services in a computer network cloud infrastructure may include protected computer network access to storage devices, hosted databases, hosted web servers, software applications, or other services provided by the cloud provider to users, or as otherwise known in the art. For example, a service may include password-protected access to remote storage devices on the cloud via the Internet. As another example, a service may include a hosted relational database and scripting language middleware engine based on web services for private use by networked developers. As another example, a service may include access to an email software application hosted on the cloud provider's website.

[0157] In certain embodiments, the cloud infrastructure system 2102 may include a suite of application, middleware, and database service offerings delivered to customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such a cloud infrastructure system is the Oracle Public Cloud provided by the present assignee.

[0158] In various embodiments, the cloud infrastructure system 2102 can be adapted to automatically provision, manage, and track customer subscriptions to services offered by the cloud infrastructure system 2102. The cloud infrastructure system 2102 can provide cloud services via different deployment models. For example, services can be provided according to a public cloud model, where the cloud infrastructure system 2102 is owned by an organization selling cloud services (e.g., owned by Oracle), and the services are available to the general public or businesses in different industries. As another example, services can be provided according to a private cloud model, where the cloud infrastructure system 2102 operates only for a single organization and can provide services to one or more entities within that organization. Cloud services can also be provided according to a community cloud model, where the cloud infrastructure system 2102 and the services provided by the cloud infrastructure system 2102 are shared by several organizations in a related community. Cloud services can also be provided according to a hybrid cloud model, which is a combination of two or more different models.

[0159] In some embodiments, the services provided by the cloud infrastructure system 2102 may include one or more services provided under the Software as a Service (SaaS) category, the Platform as a Service (PaaS) category, the Infrastructure as a Service (IaaS) category, or other service categories including hybrid services. A customer may subscribe to one or more services provided by the cloud infrastructure system 2102 via a subscription order. The cloud infrastructure system 2102 then performs processing to provide the services in the customer's subscription order.

[0160] In some embodiments, the services provided by the cloud infrastructure system 2102 may include, but are not limited to, application services, platform services, and infrastructure services. In some examples, application services may be provided by the cloud infrastructure system via a SaaS platform. The SaaS platform may be configured to provide cloud services that fall into the SaaS category. For example, a SaaS platform may provide the ability to build and deliver on-demand application suites on an integrated development and deployment platform. The SaaS platform may manage and control the underlying software and infrastructure used to provide SaaS services. By utilizing the services provided by the SaaS platform, customers can utilize applications executed on the cloud infrastructure system. Customers can obtain application services without the need for customers to purchase separate licenses and support. A variety of different SaaS services may be provided. Examples include, but are not limited to, services that provide solutions for sales performance management, enterprise integration, and business flexibility to large organizations.

[0161] In some embodiments, platform services can be provided by a cloud infrastructure system via a PaaS platform. The PaaS platform can be configured to provide cloud services that fall into the PaaS category. Examples of platform services may include, but are not limited to, services that enable organizations (such as Oracle) to integrate existing applications on a shared public architecture and to fully utilize the shared services provided by the platform to build new applications. The PaaS platform can manage and control the underlying software and infrastructure used to provide PaaS services. Customers can obtain PaaS services provided by the cloud infrastructure system without the need for customers to purchase separate licenses and support. Examples of platform services include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), etc.

[0162] By utilizing the services provided by the PaaS platform, customers can adopt programming languages ​​and tools supported by the cloud infrastructure system and also control the deployed services. In some embodiments, the platform services provided by the cloud infrastructure system may include database cloud services, middleware cloud services (e.g., Oracle Fusion Middleware Services), and Java cloud services. In one embodiment, the database cloud service may support a shared service deployment model that enables organizations to pool database resources and supply databases as a service to customers in the form of a database cloud. The middleware cloud service can provide customers with a platform for developing and deploying various business applications, and the Java cloud service can provide customers with a platform for deploying Java applications in the cloud infrastructure system.

[0163] A variety of infrastructure services can be provided by IaaS platforms in cloud infrastructure systems. Infrastructure services facilitate the management and control of underlying computing resources (such as storage, network, and other basic computing resources) for customers to utilize the services provided by SaaS and PaaS platforms.

[0164] In certain embodiments, the cloud infrastructure system 2102 may further include infrastructure resources 2130 for providing resources for providing various services to customers of the cloud infrastructure system. In one embodiment, the infrastructure resources 2130 may include a combination of pre-integrated and optimized hardware (such as servers, storage devices, and networking resources) to perform the services provided by the PaaS platform and the SaaS platform.

[0165] In some embodiments, resources in the cloud infrastructure system 2102 can be shared by multiple users and dynamically reallocated as needed. Furthermore, resources can be allocated to users in different time zones. For example, the cloud infrastructure system 2130 can enable a first group of users in a first time zone to utilize the cloud infrastructure system's resources for a specified number of hours, and then enable the same resources to be reallocated to another group of users in a different time zone, thereby maximizing resource utilization.

[0166] In certain embodiments, a plurality of internal shared services 2132 may be provided that are shared by different components or modules of the cloud infrastructure system 2102 and services provided by the cloud infrastructure system 2102. These internal shared services may include, but are not limited to: security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelisting services, high availability, backup and recovery services, cloud-enabled services, email services, notification services, file transfer services, and the like.

[0167] In certain embodiments, the cloud infrastructure system 2102 can provide comprehensive management of cloud services (e.g., SaaS, PaaS, and IaaS services) in the cloud infrastructure system. In one embodiment, the cloud management functionality can include capabilities for provisioning, managing, and tracking customer subscriptions received by the cloud infrastructure system 2102.

[0168] In one embodiment, as depicted in the figure, cloud management functionality may be provided by one or more modules, such as an order management module 2120, an order orchestration module 2122, an order provisioning module 2124, an order management and monitoring module 2126, and an identity management module 2128. These modules may include or be provided using one or more computers and / or servers, which may be general-purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and / or combination.

[0169] In example operation 2134, a customer using a client device (such as client device 2104, 2106, or 2108) may interact with cloud infrastructure system 2102 by requesting one or more services provided by cloud infrastructure system 2102 and placing an order to subscribe to one or more services offered by cloud infrastructure system 2102. In some examples, the customer may access a cloud user interface (UI), cloud UI 2112, cloud UI 2114, and / or cloud UI 2116, and place a subscription order via these UIs. Order information received by cloud infrastructure system 2102 in response to the customer placing the order may include information identifying the customer and one or more services offered by cloud infrastructure system 2102 to which the customer wishes to subscribe.

[0170] After the customer places an order, order information is received via the cloud UI, 2112 , 2114 and / or 2116 .

[0171] At operation 2136, the order is stored in order database 2118. Order database 2118 may be one of several databases operated by cloud infrastructure system 2118 and in conjunction with other system elements.

[0172] At operation 2138, the order information is forwarded to the order management module 2120. In some cases, the order management module 2120 may be configured to perform billing and accounting functions related to the order, such as validating the order and, upon validation, booking the order.

[0173] At operation 2140, information about the order is transmitted to order orchestration module 2122. Order orchestration module 2122 can use the order information to orchestrate the provisioning of services and resources for the customer's order. In some cases, order orchestration module 2122 can use the services of order provisioning module 2124 to orchestrate the provisioning of resources to support the subscribed services.

[0174] In certain embodiments, the order orchestration module 2122 enables management of the business processes associated with each order and applies business logic to determine whether the order should proceed to provisioning. At operation 2142, upon receiving an order for a new subscription, the order orchestration module 2122 sends a request to the order provisioning module 2124 to allocate resources and configure those resources required to fulfill the subscription order. The order provisioning module 2124 enables allocation of resources for the services ordered by the customer. The order provisioning module 2124 provides an abstraction layer between the cloud services provided by the cloud infrastructure system 2100 and the physical implementation layer for provisioning the resources used to provide the requested services. Thus, the order orchestration module 2122 can be isolated from implementation details, such as whether services and resources are actually provisioned immediately or pre-provisioned and allocated / assigned only upon request.

[0175] At operation 2144 , once the services and resources are provisioned, a notification of the provided services may be sent to the customer on the client device 2104 , 2106 , and / or 2108 via the order provisioning module 2124 of the cloud infrastructure system 2102 .

[0176] At operation 2146, the order management and monitoring module 2126 can manage and track the customer's subscription order. In some cases, the order management and monitoring module 2126 can be configured to collect usage statistics for the services in the subscription order, such as the amount of storage used, the amount of data transferred, the number of users, and the amount of system uptime and system downtime.

[0177] In certain embodiments, the cloud infrastructure system 2100 may include an identity management module 2128. The identity management module 2128 may be configured to provide identity services, such as access management and authorization services within the cloud infrastructure system 2100. In some embodiments, the identity management module 2128 may control information about clients that wish to utilize services provided by the cloud infrastructure system 2102. Such information may include information authenticating the identities of these clients and information describing which actions these clients are authorized to perform with respect to various system resources (e.g., files, directories, applications, communication ports, memory segments, etc.). The identity management module 2128 may also include management of descriptive information about each client and how and by whom this descriptive information may be accessed and modified.

[0178] Figure 22 The diagram illustrates an exemplary computer system 2200 in which various embodiments may be implemented. System 2200 may be used to implement any of the computer systems described above. As shown, computer system 2200 includes a processing unit 2204 that communicates with multiple peripheral subsystems via a bus subsystem 2202. These peripheral subsystems may include a processing acceleration unit 2206, an I / O subsystem 2208, a storage subsystem 2218, and a communication subsystem 2224. Storage subsystem 2218 includes tangible computer-readable storage media 2222 and system memory 2210.

[0179] The bus subsystem 2202 provides a mechanism for allowing the various components and subsystems of the computer system 2200 to communicate with each other by intention. Although the bus subsystem 2202 is schematically shown as a single bus, the alternative embodiment of the bus subsystem can utilize multiple buses. The bus subsystem 2202 can be any type of bus structure of several types, and these bus types include a memory bus or a memory controller, a peripheral bus, and a local bus using any architecture in a variety of bus architectures. For example, this architecture can include an industry standard architecture (ISA) bus, a microchannel architecture (MCA) bus, an enhanced ISA (EISA) bus, a video electronics standards association (VESA) local bus, and a peripheral component interconnect (PCI) bus, which can be implemented as a Mezzanine bus manufactured by the IEEE P1386.1 standard.

[0180] The processing unit 2204, which may be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of the computer system 2200. One or more processors may be included in the processing unit 2204. These processors may include a single-core processor or a multi-core processor. In certain embodiments, the processing unit 2204 may be implemented as one or more independent processing units 2232 and / or 2234, each of which includes a single-core processor or a multi-core processor. In other embodiments, the processing unit 2204 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.

[0181] In various embodiments, the processing unit 2204 can execute various programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed may reside in (one or more) processors 2204 and / or in the storage subsystem 2218. Through appropriate programming, (one or more) processors 2204 can provide the various functions described above. The computer system 2200 can additionally include a processing acceleration unit 2206, which can include a digital signal processor (DSP), a special-purpose processor, etc.

[0182] I / O subsystem 2208 may include user interface input devices and user interface output devices. User interface input devices may include a keyboard, a pointing device such as a mouse or trackball, a touchpad or touch screen incorporated into a display, a scroll wheel, a click wheel, a dial, buttons, switches, a keypad, an audio input device with a voice command recognition system, a microphone, and other types of input devices. User interface input devices may include, for example, motion sensing and / or gesture recognition devices such as Microsoft Motion sensors that enable users to control devices such as Microsoft The user interface input device may also include an eye gesture recognition device, such as detecting eye activity from the user (e.g., a "wink" when taking a picture and / or making a menu selection) and translating the eye gesture into input to the input device (e.g., Google ) in the input Google In addition, the user interface input device may include an input device that enables the user to communicate with the voice recognition system (e.g., Navigator) interactive voice recognition sensing device.

[0183] User interface input devices may also include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, game pads and drawing tablets, and audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye tracking devices. In addition, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, positron emission tomography, and medical ultrasound equipment. User interface input devices may also include, for example, audio input devices such as MIDI keyboards, digital musical instruments, and the like.

[0184] User interface output devices may include a display subsystem, indicator lights, or non-visual displays such as audio output devices. The display subsystem may be a cathode ray tube (CRT), a flat panel device such as a liquid crystal display (LCD) or plasma display, a projection device, a touch screen, etc. In general, the use of the term "output device" is intended to include all possible types of devices and mechanisms for outputting information from the computer system 2200 to a user or other computers. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, voice output devices, and modems.

[0185] Computer system 2200 may include a storage subsystem 2218 containing software elements, shown as currently located within system memory 2210. System memory 2210 may store program instructions that may be loaded and executed on processing unit 2204, as well as data generated during execution of these programs.

[0186] Depending on the configuration and type of computer system 2200, system memory 2210 may be volatile (such as random access memory (RAM)) and / or non-volatile (such as read-only memory (ROM), flash memory, etc.). RAM typically contains data and / or program modules that are immediately accessible to and / or currently being operated and executed by processing unit 2204. In some embodiments, system memory 2210 may include multiple different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some embodiments, a basic input / output system (BIOS), which contains basic routines that help transfer information between elements within computer system 2200, such as during startup, may typically be stored in ROM. By way of example and not limitation, system memory 2210 also illustrates application programs 2212, which may include client applications, web browsers, middle-tier applications, relational database management systems (RDBMS), etc., program data 2214, and an operating system 2216. By way of example, operating system 2216 may include various versions of Microsoft Apple and / or Linux operating systems, various commercially available or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, Google OS, etc.) and / or such as iOS, Phone, OS, 10OS and OS operating system mobile operating system.

[0187] The storage subsystem 2218 may also provide a tangible computer-readable storage medium for storing the basic programming and data structures that provide the functionality of some embodiments. Software (programs, code modules, instructions) that provide the above-described functionality when executed by the processor may be stored in the storage subsystem 2218. These software modules or instructions may be executed by the processing unit 2204. The storage subsystem 2218 may also provide a repository for storing data used in accordance with the present invention.

[0188] The storage subsystem 2200 may also include a computer-readable storage media reader 2220 that may be further connected to computer-readable storage media 2222. Together with and optionally in conjunction with the system memory 2210, the computer-readable storage media 2222 may comprehensively represent remote, local, fixed, and / or removable storage devices plus storage media for temporarily and / or more permanently containing, storing, transmitting, and retrieving computer-readable information.

[0189] The computer-readable storage medium 2222 containing the code or a portion of the code may also include any suitable media known or used in the art, including storage media and communication media, such as, but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and / or transmission of information. This may include tangible computer-readable storage media such as RAM, ROM, electrically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer-readable media. This may also include non-tangible computer-readable media such as data signals, data transmissions, or any other medium that can be used to transmit the desired information and that can be accessed by the computing system 2200.

[0190] As examples, the computer-readable storage media 2222 may include a hard disk drive that reads from or writes to a non-removable non-volatile magnetic media, a magnetic disk drive that reads from or writes to a removable non-volatile magnetic disk, and a magnetic disk drive that reads from or writes to a removable non-volatile optical disk, such as a CD ROM, a DVD, and a DVD. An optical drive that reads or writes to a removable non-volatile optical disk (Blu-ray disk or other optical media). Computer readable storage media 2222 may include, but is not limited to: Drives, flash memory cards, universal serial bus (USB) flash drives, secure digital (SD) cards, DVD disks, digital audio tapes, etc. The computer-readable storage media 2222 may also include: solid-state drives (SSDs) based on non-volatile memory (such as SSDs based on flash memory, enterprise flash drives, solid-state ROMs, etc.), SSDs based on volatile memory (such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs), and hybrid SSDs that use a combination of DRAM-based and flash memory-based SSDs. The disk drive and its associated computer-readable media can provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computer system 2200.

[0191] The communication subsystem 2224 provides an interface to other computer systems and networks. The communication subsystem 2224 is used as an interface for receiving data from other systems and sending data from the computer system 2200 to other systems. For example, the communication subsystem 2224 can enable the computer system 2200 to be connected to one or more devices via the Internet. In some embodiments, the communication subsystem 2224 may include a radio frequency (RF) transceiver component for accessing wireless voice and / or data networks (e.g., using cellular phone technology, advanced data network technology, such as 3G, 4G or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.11 series standards) or other mobile communication technologies, or any combination thereof), a global positioning system (GPS) receiver component and / or other components. In some embodiments, as an addition or alternative to a wireless interface, the communication subsystem 2224 can provide a wired network connection (e.g., Ethernet).

[0192] In some embodiments, the communication subsystem 2224 may also receive input communications in the form of structured and / or unstructured data feeds 2226 , event streams 2228 , event updates 2230 , and the like on behalf of one or more users who may use the computer system 2200 .

[0193] As an example, the communication subsystem 2224 may be configured to receive data feeds 2226 in real time from users of social networks and / or other communication services, such as feed, Updates, web feeds such as Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.

[0194] Additionally, the communication subsystem 2224 may also be configured to receive data in the form of a continuous data stream, which may include an event stream 2228 and / or event updates 2230, which may be continuous or unbounded in nature, real-time events without a clear termination. Examples of applications that generate continuous data may include, for example, sensor data applications, financial price tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, and the like.

[0195] The communication subsystem 2224 can also be configured to output structured and / or unstructured data feeds 2226, event streams 2228, event updates 2230, etc. to one or more databases, which can communicate with one or more streaming data source computers coupled to the computer system 2200.

[0196] Computer system 2200 can be of various types, including a handheld portable device (e.g., Cellular phones, computing tablets, PDAs), wearable devices (e.g., Google head-mounted display), PC, workstation, mainframe, kiosk, server rack, or any other data processing system.

[0197] Due to the ever-changing nature of computers and networks, the description of the computer system 2200 depicted in the figure is intended only as a specific example. Many other configurations with more or fewer components than the system depicted in the figure are possible. For example, customized hardware may also be used and / or specific elements may be implemented in hardware, firmware, software (including applets) or a combination thereof. In addition, connections to other computing devices such as network input / output devices may be adopted. Based on the disclosure and teachings provided herein, one of ordinary skill in the art will recognize other ways and / or methods for implementing various embodiments.

[0198] In the foregoing description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.

[0199] The foregoing description provides only exemplary embodiments and is not intended to limit the scope, applicability, or configuration of the present disclosure. More specifically, the foregoing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing the exemplary embodiments. It should be understood that various changes may be made to the function and arrangement of the elements without departing from the spirit and scope of the present invention as set forth in the appended claims.

[0200] In the foregoing description, specific details are provided to provide a thorough understanding of the embodiments. However, those skilled in the art will appreciate that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may have been shown as components in block diagram form so as not to obscure the embodiments with unnecessary detail. In other cases, well-known circuits, processes, algorithms, structures, and techniques may have been shown without unnecessary detail so as not to obscure the embodiments.

[0201] Furthermore, it should be noted that various embodiments may have been described as processes depicted as flowcharts, flow diagrams, data flow diagrams, structure diagrams, or block diagrams. Although the flowcharts may have described the operations as sequential processes, many operations may be performed in parallel or concurrently. Furthermore, the order of the operations may be rearranged. A process terminates when the operations are completed, but may have additional steps not included in the diagram. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its termination may correspond to the function returning to the calling function or main function.

[0202] The term "computer-readable medium" includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and various other media capable of storing, containing, or carrying (one or more) instructions and / or data. A code segment or machine-executable instruction can represent any combination of a process, function, subroutine, program, routine, subroutine, module, software package, class, or instruction, data structure, or program statement. A code segment can be coupled to another code segment or hardware circuit by transmitting and / or receiving information, data, independent variables, parameters, or memory contents. Information, independent variables, parameters, data, etc. can be transmitted, forwarded, or transmitted in any suitable manner, including memory sharing, message passing, token passing, network transmission, etc.

[0203] Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, program code or code segments that perform the necessary tasks may be stored in a machine-readable medium. (One or more) processors may perform the necessary tasks.

[0204] In the foregoing description, various aspects of the present invention have been described with reference to the specific embodiments of various aspects of the present invention, but it will be appreciated by those skilled in the art that the present invention is not limited thereto. Each feature and aspect of the foregoing invention can be used alone or in combination. In addition, without departing from the broader spirit and scope of this specification, the embodiment can be used in any number of environments and applications other than those described herein. Accordingly, this specification and the accompanying drawings should be considered to be illustrative rather than restrictive.

[0205] In addition, for the purpose of illustration, method is described in a particular order. It should be appreciated that, in an alternative example, the method can be performed in a sequence different from the described order. It should also be appreciated that the above method can be performed by a hardware component, or can be implemented with a sequence of machine-executable instructions, which can be used to make a machine (such as a general-purpose or special-purpose processor or a logic circuit programmed with instructions) perform the method. These machine-executable instructions can be stored on one or more machine-readable media, such as CD-ROM or other types of optical disks, floppy disks, ROM, RAM, EPROM, EEPROM, magnetic cards or optical cards, flash memory or other types of machine-readable media suitable for storing electronic instructions. Alternatively, the method can be performed by a combination of hardware and software.

Claims

1. A method for providing animation between one or more visual components, the method comprising: receiving one or more data sets bound to a first visualization component; Generating a 3D representation of a first visualization component in the virtual environment based on the one or more data sets, wherein the 3D representation of the first visualization component includes: a plurality of 3D objects representing data points in the one or more data sets, and creating a first one or more 3D configurations of a first predefined shape or structure of a first visualization component; receiving a command to transition the one or more data sets to a second visualization component in the virtual environment; generating an animation of 3D objects representing respective data points in the one or more data sets flowing in the virtual environment from a 3D representation of a first visualization component to a 3D representation of a second visualization component, wherein the 3D representation of the second visualization component includes a second one or more 3D constructs that create a second predefined shape or structure of the second visualization component; binding the one or more data sets to a second visualization component; and An existing 3D representation of a second visualization component in the virtual environment is changed based on binding the one or more data sets to the second visualization component. The method of claim 1 , wherein the first visual component comprises a funnel object. The method of claim 1 , wherein the second visual component comprises a beaker object. The method of claim 1 , wherein the second visual component comprises a profile layout object.

5. The method of claim 1 , further comprising: Accessing a story data structure, the story data structure comprising a list of actions to be performed in the virtual environment, the list of actions comprising: instructions for instantiating a first visualization component; instructions for instantiating a second visualization component; instructions for binding the one or more data sets to a parameterized input of a first visualization component; instructions for animating the 3D object; and Instructions for binding the one or more data sets to a parameterized input of a second visualization component. 6 . The method of claim 5 , wherein the list of actions further comprises an instruction to wait for user input before animating the 3D object between the 3D representation of the first visualization component and the 3D representation of the second visualization component in the virtual environment. 7 . The method of claim 6 , wherein receiving a command to transition the one or more data sets to a second visualization component triggers execution of the story data structure to stop waiting for user input before animating a 3D object. 8 . The method of claim 1 , wherein the 3D objects representing the individual data points in the one or more data sets have their visual characteristics determined by the property values ​​of the corresponding individual data points.

9. The method of claim 8, wherein the 3D objects representing the respective data points are individually visible in the 3D representation of the first visualization component, and wherein the 3D objects are no longer individually visible in the 3D representation of the second visualization component.

10. The method of claim 1, wherein the 3D representation of the first visualization component and the 3D representation of the second visualization component are arranged in a virtual environment as part of a virtual dashboard for displaying enterprise data from one or more enterprise applications in a cloud environment.

11. The method of claim 1 , wherein the first visualization component and the second visualization component are displayed in a carousel surrounding a virtual location of the user in the virtual environment.

12. The method of claim 1 , further comprising: receiving a second command to transition the one or more data sets to a third visualization component in the virtual environment; generating an animation of a 3D object representing each data point in the one or more data sets moving from the 3D representation of the second visualization component to the 3D representation of the third visualization component in the virtual environment; as well as The one or more data sets are bound to a third visualization component.

13. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: receiving one or more data sets bound to a first visualization component; Generating a 3D representation of a first visualization component in the virtual environment based on the one or more data sets, wherein the 3D representation of the first visualization component includes: a plurality of 3D objects representing data points in the one or more data sets, and creating a first one or more 3D configurations of a first predefined shape or structure of a first visualization component; receiving a command to transition the one or more data sets to a second visualization component in the virtual environment; generating an animation of 3D objects representing respective data points in the one or more data sets flowing in the virtual environment from a 3D representation of a first visualization component to a 3D representation of a second visualization component, wherein the 3D representation of the second visualization component includes a second one or more 3D constructs that create a second predefined shape or structure of the second visualization component; binding the one or more data sets to a second visualization component; and An existing 3D representation of a second visualization component in the virtual environment is changed based on binding the one or more data sets to the second visualization component.

14. The non-transitory computer readable medium of claim 13, wherein the operations further comprise: Accessing a story data structure, the story data structure comprising a list of actions to be performed in the virtual environment, the list of actions comprising: instructions for instantiating a first visualization component; instructions for instantiating a second visualization component; instructions for binding the one or more data sets to a parameterized input of a first visualization component; instructions for animating the 3D object; and Instructions for binding the one or more data sets to a parameterized input of a second visualization component.

15. The non-transitory computer-readable medium of claim 14, wherein the list of actions further comprises instructions to wait for user input before animating the 3D object between the 3D representation of the first visualization component and the 3D representation of the second visualization component in the virtual environment.

16. The non-transitory computer-readable medium of claim 15, wherein receiving a command to transition the one or more data sets to a second visualization component triggers execution of the story data structure to stop waiting for user input before animating a 3D object.

17. A system for providing animation between one or more visual components, the system comprising: one or more processors; as well as One or more memory devices comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: receiving one or more data sets bound to a first visualization component; Generating a 3D representation of a first visualization component in the virtual environment based on the one or more data sets, wherein the 3D representation of the first visualization component includes: a plurality of 3D objects representing data points in the one or more data sets, and creating a first one or more 3D configurations of a first predefined shape or structure of a first visualization component; receiving a command to transition the one or more data sets to a second visualization component in the virtual environment; generating an animation of 3D objects representing respective data points in the one or more data sets flowing in the virtual environment from a 3D representation of a first visualization component to a 3D representation of a second visualization component, wherein the 3D representation of the second visualization component includes a second one or more 3D constructs that create a second predefined shape or structure of the second visualization component; binding the one or more data sets to a second visualization component; and An existing 3D representation of a second visualization component in the virtual environment is changed based on binding the one or more data sets to the second visualization component.

18. The system of claim 17, wherein the operations further comprise: Accessing a story data structure, the story data structure comprising a list of actions to be performed in the virtual environment, the list of actions comprising: instructions for instantiating a first visualization component; instructions for instantiating a second visualization component; instructions for binding the one or more data sets to a parameterized input of a first visualization component; instructions for animating the 3D object; and Instructions for binding the one or more data sets to a parameterized input of a second visualization component.

19. The system of claim 18, wherein the list of actions further comprises an instruction to wait for user input before animating the 3D object between the 3D representation of the first visualization component and the 3D representation of the second visualization component in the virtual environment.

20. The system of claim 19, wherein receiving a command to transition the one or more data sets to a second visualization component triggers execution of the story data structure to stop waiting for user input before animating a 3D object.

Citation Information

Patent Citations

  • Optimizing virtual data views using voice commands and defined perspectives

    US11361510B2

  • Interactive data explorer and 3-d dashboard environment

    US20200126275A1

  • Funnel visualization with data point animations and pathways

    US20200126307A1

  • Data visualization objects in a virtual environment

    US20200126309A1

  • Systems and Methods for Data Visualization Using Three-Dimensional Displays

    US20170092008A1