WO2016144546A2 - Systems and methods for generating data visualization applications - Google Patents
Systems and methods for generating data visualization applications Download PDFInfo
- Publication number
- WO2016144546A2 WO2016144546A2 PCT/US2016/019360 US2016019360W WO2016144546A2 WO 2016144546 A2 WO2016144546 A2 WO 2016144546A2 US 2016019360 W US2016019360 W US 2016019360W WO 2016144546 A2 WO2016144546 A2 WO 2016144546A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- workflow
- receiving
- server system
- store
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/212—Schema design and management with details for data modelling support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Definitions
- This invention relates to systems and methods for accessing databases.
- the systems and methods disclosed herein provide an improved approach for generating applications for analyzing large data sets using data processing tools.
- FIG. 1 is a schematic block diagram of a computing device suitable for implementing methods in accordance with embodiments of the invention
- FIG. 2 is a schematic block diagram of a network environment suitable for implementing methods in accordance with an embodiments of the invention
- FIG. 3 is a process flow diagram of a method for generating a database application in accordance with an embodiment of the present invention
- FIG. 4 is a schematic block diagram of a data flows within a database application in accordance with an embodiment of the present invention.
- FIG. 5 is a schematic block diagram of executable modules for generating a database application in accordance with an embodiment of the present invention
- FIG. 6 is a schematic block diagram of an execution framework for executing a database application in accordance with an embodiment of the present invention.
- FIG. 7 is a process flow diagram of a method for generating a database application using a graphical user interface in accordance with an embodiment of the present invention
- FIG. 8 is a process flow diagram of a method for defining using a multidimensional data model in accordance with an embodiment of the present invention.
- Figs. 9-17 are screen shots illustrating a process for generating a data access application in accordance with embodiments of the invention.
- Embodiments in accordance with the present invention may be embodied as an apparatus, method, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "module” or "system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer-usable program code embodied in the medium.
- a computer-readable medium may include one or more of a portable computer diskette, a hard disk, a random access memory (RAM) device, a read-only memory (ROM) device, an erasable programmable read-only memory (EPROM or Flash memory) device, a portable compact disc read-only memory (CDROM), an optical storage device, and a magnetic storage device.
- a computer-readable medium may comprise any non-transitory medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++, or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages.
- the program code may execute entirely on a computer system as a stand-alone software package, on a stand-alone hardware unit, partly on a remote computer spaced some distance from the computer, or entirely on a remote computer or server.
- the remote computer may be connected to the computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- These computer program instructions may also be stored in a non- transitory computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- Fig. 1 is a block diagram illustrating an example computing device 100.
- Computing device 100 may be used to perform various procedures, such as those discussed herein.
- Computing device 100 can function as a server, a client, or any other computing entity.
- Computing device can perform various monitoring functions as discussed herein, and can execute one or more application programs, such as the application programs described herein.
- Computing device 100 can be any of a wide variety of computing devices, such as a desktop computer, a notebook computer, a server computer, a handheld computer, tablet computer and the like.
- a server system 102a- 102c may include one or more computing devices 100 each including one or more processors.
- Computing device 100 includes one or more processor(s) 102, one or more memory device(s) 104, one or more interface(s) 106, one or more mass storage device(s) 108, one or more Input/Output (I/O) device(s) 110, and a display device 130 all of which are coupled to a bus 112.
- Processor(s) 102 include one or more processors or controllers that execute instructions stored in memory device(s) 104 and/or mass storage device(s) 108.
- Processor(s) 102 may also include various types of computer-readable media, such as cache memory.
- Memory device(s) 104 include various computer-readable media, such as volatile memory (e.g., random access memory (RAM) 114) and/or nonvolatile memory (e.g., read-only memory (ROM) 116). Memory device(s) 104 may also include rewritable ROM, such as Flash memory.
- volatile memory e.g., random access memory (RAM) 11
- ROM read-only memory
- Memory device(s) 104 may also include rewritable ROM, such as Flash memory.
- Mass storage device(s) 108 include various computer readable media, such as magnetic tapes, magnetic disks, optical disks, solid-state memory (e.g., Flash memory), and so forth. As shown in Fig. 1, a particular mass storage device is a hard disk drive 124. Various drives may also be included in mass storage device(s) 108 to enable reading from and/or writing to the various computer readable media. Mass storage device(s) 108 include removable media 126 and/or non-removable media.
- I/O device(s) 110 include various devices that allow data and/or other information to be input to or retrieved from computing device 100.
- Example I/O device(s) 110 include cursor control devices, keyboards, keypads, microphones, monitors or other display devices, speakers, printers, network interface cards, modems, lenses, CCDs or other image capture devices, and the like.
- Display device 130 includes any type of device capable of displaying information to one or more users of computing device 100. Examples of display device 130 include a monitor, display terminal, video projection device, and the like.
- Interface(s) 106 include various interfaces that allow computing device 100 to interact with other systems, devices, or computing environments.
- Example interface(s) 106 include any number of different network interfaces 120, such as interfaces to local area networks (LANs), wide area networks (WANs), wireless networks, and the Internet.
- Other interface(s) include user interface 118 and peripheral device interface 122.
- the interface(s) 106 may also include one or more user interface elements 118.
- the interface(s) 106 may also include one or more peripheral interfaces such as interfaces for printers, pointing devices (mice, track pad, etc.), keyboards, and the like.
- Bus 112 allows processor(s) 102, memory device(s) 104, interface(s) 106, mass storage device(s) 108, and I/O device(s) 110 to communicate with one another, as well as other devices or components coupled to bus 112.
- Bus 112 represents one or more of several types of bus structures, such as a system bus, PCI bus, IEEE 1394 bus, USB bus, and so forth.
- programs and other executable program components are shown herein as discrete blocks, although it is understood that such programs and components may reside at various times in different storage components of computing device 100, and are executed by processor(s) 102.
- the systems and procedures described herein can be implemented in hardware, or a combination of hardware, software, and/or firmware.
- one or more application specific integrated circuits (ASICs) can be programmed to carry out one or more of the systems and procedures described herein.
- FIG. 2 is a schematic block diagram of a network
- the network environment may include a server system 202a that generates a database application as described herein in response to user inputs.
- the server system 202a or a different server system 202b.
- the server system 202a, 202b that executes a database application may host or access a raw data repository 104a, 104b either directly or through a remote server system 202b, 202a.
- Inputs from a user defining a database application according to the methods described herein may provide inputs through a user workstation 106 that is coupled to the server system 202a directly or through another server system 202b or a network 108.
- the workstation 106 may be desktop or laptop computer, tablet computer, or other computing device.
- the network 108 may be a local area network (LAN), wide area network (WAN), the Internet, or any other type of wired or wireless network connection.
- the server system 202a may host or access a project database 110 representing a database application generated according to the methods disclosed herein.
- the creation of the project database 110 may be performed by the server system 202a in response to user inputs according to the methods disclosed herein.
- a project database 110 may include a data model 112a, a workflow 112b, and processing logic 112c.
- the project database 110 may be defined according to user input by performing the method 300.
- the method 300 may be executed by the server system 202a, a user workstation 106, or some other computing device.
- the method 300 may include defining 302 a data model.
- the data model may be described using a high-level language, such as graphical user interface (GUI) language that specifies elements of the data model using icons, links between icons, and other GUI elements (menus, buttons, toggles), such as described herein below.
- GUI graphical user interface
- the data model may include receiving inputs in the high level language that describe data to processed in terms of data type and data structure.
- the method 300 may further include defining 304 a workflow.
- the workflow may be defined 304 may interpreting inputs received using the high-level language described above.
- the workflow may describe how concurrent data processing work is to be coordinated in terms of job dependency and precedence.
- the method 300 may further include defining 306 data processing logic, such as based on inputs received using the high-level language.
- the data processing logic may specify how one or more data sets of data elements can be transformed into other data sets of data elements. Data elements in the result data sets may therefore be formatted in a different data model depending on the data processing logic.
- the method 300 may further include defining 308 a data store at which the results of the workflow and processing logic will be stored. Defining 308 the data store may include receiving inputs using the high-level language.
- the data store may be received as interactions with the GUI.
- the data store may be input to a dialog box or selected from a list of available data stores.
- the data store is created in response to the received inputs such that it is universally addressable, can be queried by property arguments, can be assigned or loaded with input data, and can be looked up and reused by some or all workflows executing on the server system 202a, 202b executing the workflows.
- Defining 308 may be characterized by creating a data model that describes the data elements stored in it.
- the data store can be populated with input data sets of compatible data model. It can also be queried to return a data set of a different data model.
- the method 300 may further include executing the workflow 304. This may include retrieving data from a raw data store 204a, 204b, applying the processing logic 306 effective to perform operations on the data and to transform the data into one or more different data models defined at step 302. The results of the processing logic 306 may then be stored in the data store defined at step 308. These steps of executing the workflow may be scheduled, prioritized, and executed according to the parameters specified in the workflow at step 304.
- the workflow defined and executed according to the method 300 of Fig. 3 produces output data sets stored in the data store defined at step 308.
- This data store may then be used in various ways. For example, data analytics may be
- the query capability of the query language processor may include basic data transform capabilities, such as those described above with respect to the data processing logic of step 306.
- the query language processor may further enable the navigation of search results, including multidimensional style rollup and drill down on underlying data.
- the query language processor may further implement chaining of multiple queries.
- a workflow defined according to the method 300 of Fig. 3 may be managed throughout a life cycle.
- the data model, workflow, and data store may be managed.
- these artifacts may be subsequently redefined, created, modified, and also referred to by other artifact definitions.
- Fig. 4 illustrates an example implementation of an application according to the method 300 of Fig. 3.
- Data from a raw data store 204a, 204b may be received through a data bus 402 and collected by a collector 404.
- the collected data may then be converted to the data model 406a defined at step 302, including one or more sets 408a- 408c of data formatted according to the data model.
- the data sets 408a-408c are input to the workflow 410 as defined at step 304.
- the workflow then implements processing logic 412 as defined at step 306.
- the workflow manages scheduling, conflicts, dependencies, and precedence among processing tasks such that the data sets 408a-408c are processed according to processing logic 412 in an efficient manner and in appropriate order.
- the output of the workflow 410 will be formatted according to a same or different data model 406b.
- a number of data sets 408d-408e may be output from the workflow and formatted according to data model 406b.
- These data sets 408d-408e are then written to the data store 410 defined at step 308.
- the data of the data store 410 may then be subsequently provided to an analytics engine 412 that performs analysis, executes query, and performs other operations to enable the characterization or visualization of the data sets 408d-408e.
- Fig. 5 illustrates software components that may implement creation of a data application according to the method 300 of Fig. 3 and execution of the data application according to the Fig. 4.
- an application layer 500 may include one or more domain applications 502.
- a domain application 502 may include a data model, workflow, processing logic, and a data store defined according to the method 300.
- a domain application 502 may include multiples of these elements that reference one another to implement a complex multidimensional domain application.
- a platform application programming interface (API) layer 504 implements software modules that generate the domain application 502 responsive to user inputs.
- the API layer 504 may implement a GUI that allows users to graphically define one or more data models, workflows, processing logic, and data stores of a domain application 502.
- the GUI allows users to visually construct data model, workflow and processing logic in a drag and drop style.
- the specifications of these elements are generated internally according to a scripting language, which is a high level expression language that can be translated into commands to backend engines for execution.
- the API layer 504 may include a module manager 506 that is programmed to allows Java programmers to plug in custom logic as modules. Modules can be referenced in a workflow and thus invoked in the workflow execution.
- the API layer 504 may include a data model builder 508.
- the data model builder 508 is programmed to enable users to specify data models. Data models are used to describe the structure and type of data elements such that data processing logic can operate on them in an appropriate manner.
- the API layer 504 may include a workflow builder 510.
- the workflow builder 510 that is programmed to enable users to build workflows, which specify execution dependency among tasks.
- the API layer 504 may include a data store builder 512.
- the data store builder 512 is programmed to enable users to specify data representation in underlying storage in terms of data stores. Data stores are conceptual containers of data elements of the same data model.
- a platform service layer 514 implements software components that execute the domain application 502 and therefore functions as an execution framework.
- the platform service layer 514 are a software platform upon which multiple domain applications 502 can be built or be executed.
- the platform service layer 514 is composed of a set of service engines 516-532. Each engine is responsible of a specific functional area. Each engine is able to handle multi-tenant requests. That is, applications 502 on top of it can serve different tenants (customers) such that no data logic of a tenant will interfere with the data logic of another tenant. Each engine is able to handle requests involving big data across distributed systems in a scalable way.
- the platform service layer 514 may include a raw data repository 516 that implements a database server providing raw data for processing by the domain application 502.
- the raw data repository 516 may be an ORACLE, SQL, MySQL, DB2, INFORMIX, SAP, SPARK, TERADATA, or other type of database server.
- the platform service layer 514 may include a workflow engine 518.
- a workflow dictates dependencies and precedence among data processing tasks. Accordingly, the workflow engine 518 may schedule processing tasks and/or interrupt processing tasks in order to implement the policies specified by the workflow.
- the platform service layer 514 may include a data engine 520.
- the data engine 520 executes processing logic as specified by a designer of the domain application 502 and as invoked by the workflow engine 518 according to the policies specified by the workflow.
- a data store manager 522 The data store manager 522 writes results of the processing logic to the data store.
- the platform service layer 514 may implement a data consumption service 524 that is a web service that can receive queries from applications and deliver query results in response to the queries.
- the platform service layer 514 may function as the main query interface between application and platform services.
- the platform service layer 514 may implement a metadata repository 526 that stores metadata definitions.
- Metadata is the information to describe the data to be processed. For example, data model and workflow are both types of metadata.
- the platform service layer 514 may implement a data store catalog 528 that is a catalog of a definitions of a data store.
- the platform service layer 514 may implement a service catalog that stores the information and status of all platform service engines. For example, the location (e.g. network node) where a platform service engine is executing and the status of the platform service engine (e.g., running or stopped) [0064]
- the platform service layer 514 may implement system management services 532 that perform system management tasks such as temporary data purging, job scheduling, and other system management tasks known in the art.
- a set of platform services 514 may each implement an application node 600 of a plurality of application nodes 600.
- the application nodes 600 may execute as described above with respect to a data cluster 602 including one or more databases 604, such as the illustrated SPARK HBASE HDFS databases.
- the databases 605 may function as the raw data repository 204a, 204b.
- the data model, workflow, processing logic, and data store of a domain application may be specified using a high-level language, such as a visual programming language having a GUI for receiving user inputs.
- a high-level language such as a visual programming language having a GUI for receiving user inputs.
- the illustrated method 700 may be performed using the GUI.
- the visual programming language enables a non-programmer to describe a data pipeline that can be translated to the artifacts generated according to the method 300 for execution in the execution framework of Fig. 5.
- the GUI of the visual programming language is enables users to construct the data processing logic using drag-and-drop components and interconnecting lines, as discussed in greater detail below.
- the method 700 may include navigating 702 to a selected data source according to user inputs. Navigation may be performed using menus, hierarchical representations of a file system, or any other conventional technique for navigating a file system and receiving a user selection of a storage device, portion of a storage device, or a specific file, folder, database, or collection of databases. In particular, the navigation and selection may be performed with respect to data within a data source repository, such as a raw data repository 204a, 204b.
- the user may select one or more properties of a data set in addition to or instead of selecting the data set. Accordingly, a graphical display of properties and an interface for selecting one or more of them may also be displayed and a selection received using this interface.
- the method 700 may further include receiving 704 through the visual programming language GUI, user inputs describing the data model in terms of data hierarchy and primitive data types.
- a data model specifies a data element's type if it is primitive, or its structure if it is compound of two or more primitives.
- the method 700 may further include receiving 706 user placement of nodes and user placement of links between nodes in the GUI, where each node represents a predefined sequence of commands selected from a palette of sequences and links indicate an execution dependency between nodes.
- the method 700 may further include receiving selection of a destination where data processed according to the workflow are to be saved. This may include navigating and selecting a destination in the same manner in which the data source was selected at step 302 using a visual interface to a file system and/or database. [0071] The method 700 may further include receiving selection and placement of GUI representations of primitive logic and connecting them using lines that represent the flow of data from one primitive logic operation to the next. For example, a palette of graphical elements may be displayed, each of which may be selected and placed in the GUI and connected to other graphical elements and each of which is represents one of a library of built-in data transformation commands.
- the method 700 may further include receiving custom processing logic scripts.
- graphical elements may be placed in the GUI that represent runtime scripts provided by a user and connected as described above to represent data flow to other graphical elements. These scripts may then be executed as part of the workflow in accordance to their placement in the GUI.
- the execution framework may include a run-time scripting environment capable of executing the run-time scripts.
- the systems and methods disclosed herein may provide a data representation mechanism with which users can define custom multidimensional models, data filtering logic, and data aggregation policy such that high performance data analysis tasks can be accomplished. This is to facilitate application designers to design the data representation to fit the need of data analysis application.
- an application designer may execute the illustrated method 800, including defining 802, using the visual programming language, a multi- dimension model in terms of dimensions and hierarchical member attributes.
- a "customer" dimension may have the member attributes name, date of birth, and address.
- the address attribute may have the structure street-number, city, state, zip.
- the "customer” dimension along with other dimensions, such as a "account” and "time” dimension can form a simple multi-dimension model of an underlying data
- a multi-dimensional data model may be a conceptual model that describes data in terms of multiple dimensions.
- a spread sheet with rows and columns may be a two-dimensional model.
- An N-dimensional data set having entries corresponding to N different dimensions, where N is greater than two may also be implemented. Such a concept can be supported by some underlying physical
- Such physical representation can be constructed by executing data processing workflows that are automatically generated from a
- the method 800 may further include defining 804, using the visual programming language, one or more derived attributes representing aggregated data values from raw data in simple terms.
- “numberOfAccounts” may be a derived attribute that represents the total number of open accounts that a customer has as of a certain date. It can be defined in using a declarative language and be calculated automatically for each input data batch and stored in advance of an application to query requesting it. Accordingly, the derived values may be returned in response to a query but need not be calculated subsequent to receiving the query.
- the method 800 may further include defining 806 named filtering logic to apply to a dimension based on certain query criteria so that applications can query the underlying store using the filter name to achieve proper data scoping. For example, we can define "Rich” to be those Customers with a certain zip code and apply "Rich" scoping in all customer queries without having to perform a zip code lookup in response to the query. This reduces the time required to process the query.
- the method 800 may further include defining 808 customer data representations. Defining 808 custom data representation may include defining data representations tailored to various query patterns. The custom data representation may include data that is pre-aggregated at data population time so that a run time query has much better performance.
- Figs. 9 through 17 illustrate example interfaces of the GUI for the visual programming language.
- the illustrated interfaces may be used to provide inputs for some or all of the steps of the methods 300, 700, and 800.
- a project may be initiated using the illustrated interface for providing a name and description.
- the illustrated interface further includes elements to invoke an interface for creating a data model ("Model the Data") and for defining a source of data to be processed (“Define the Data Source”).
- Model the Data a data model
- Define the Data Source a source of data to be processed
- the intent of a data analytics task is expressed by a user in a "Project”.
- a project may begin with an expression of a "MODEL.”
- the data elements of the data model may be received from the user (step 302 of the method 300; step 704 of the method 700) using the illustrated interface. For example, data elements including "customer account” and "income” have been added to the project as shown. As shown in Fig. 3, upon receiving selection of one of the data elements, the properties thereof may be displayed
- the illustrated interface may be displayed in order to receive the data sources to be operated on according to the intent expressed by the user (step 702 of the method 700).
- the data source may be an actual data source or a data set that is pre-compiled or compiled upon access according to some query or definition used to select and/or structure the data set. Aspects of the data source needed for subsequent access may be derived automatically by the system, such as data arrival date and the like.
- the data analytics intent of the user is then input using the illustrated interface (steps 304, 306 of the method 300; steps 706, 710 of the method 700).
- the stages of the analysis are placed and connected using a graphical user interface.
- the elements "input,” “delimited,” “select,” “group,” and “map” may be selected and placed using a pointing device and connected to one another using a pointing device as well.
- Each of the elements may represent a function to be performed on an input from another element shown.
- the elements may be selected from a palette of elements represent possible functions to be performed.
- the palette may include predefined functions, user defined functions, and the like.
- the functions represented by the elements may include data processing functions such as those illustrated that may be performed with respect to a large set of data.
- the system creates the data processing the algorithms, logic, and/or transformations required by the elements of the analytic intent. For example, as shown in the "Preview" tab of Figs. 14 and 15, the system generates the required aggregations and calculations of each of the data elements, such as the "delimited” and “map” functions selected in Figs. 7 and 8, which will result in the output data shown in the "Preview” tab.
- the properties of elements placed by the user in the analytic intent may be selected and, in response, properties of the element may be displayed in the "Preview” tab in response to this received interaction.
- the properties of the element may be modified by the user by means of inputs to the "Properties” tab interface elements.
- the data exposure of the results of the analytic intent may then be received from the user using the illustrated interface.
- the exposure specified by the user may be automatically implemented using RESTful (representative state transfer) APIs (application programming interface).
- RESTful representationative state transfer
- the user specified a method ("Get") and uniform resource indicator ("URI") that are used to retrieve the result of the analytic intent and present it to the user.
- User interface elements for manipulating, filtering, or otherwise representing the output data may be specified by the user as part of the exposing step shown in Fig. 16.
- the manner in which the results of the analytic intent are consumed may be specified using the illustrated interface.
- data processing functions represented by graphical elements are placed and coupled to one another to define a data flow for the output of the analytic intent.
- Resources and code for implementing the functions represented by the graphical elements are then instantiated.
- the "Get" function may be written to a "data” store and invoke a "response.”
- the properties of these functions may be adjusted by selecting the element and adjusting the properties in the "properties" tab.
- the "preview” tab may display the results of the functions performed by that data element.
- the systems and methods performed in response to user inputs received in the illustrated interfaces may be according to the functions described with respect to Figs. 9 through 17.
- the various different screens are illustrate the steps and flow of expressing user intent in the "visual programming language.”
- the user intent as expressed using the "visual programming language” will be translated into “a sequence of data language” by the system.
- the “sequence of data language” are then translated to "services commands" for actual execution.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Software Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Educational Administration (AREA)
- Development Economics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
A system provides a high-level visual programming language input through a GUI. User inputs specify a data source, a workflow, processing logic, and a data store. Multiple instances of these primitives may be combined to generate multi-dimensional domain applications. The workflow and processing logic may be specified in a graphical user interface wherein nodes representing workflow actions or processing functions are picked from a palette and placed on a diagram. Interconnections between nodes are received in the interface and represent data flows or dependencies between nodes. The high-level visual programming inputs are the translated into low-level database commands and executed within an execution framework.
Description
Title: SYSTEMS AND METHODS FOR GENERATING DATA VISUALIZATION APPLICATIONS
BACKGROUND
RELATED APPLICATIONS
[001] This application claims the benefit of U.S. Provisional Application 62/129,647 filed March 6, 2015 and entitled Systems and Methods for Generating Advanced Analytics Applications, which is hereby incorporated by reference in its entirety.
FIELD OF THE INVENTION
[002] This invention relates to systems and methods for accessing databases. BACKGROUND OF THE INVENTION
[003] Many businesses and other entities are highly data driven. Enormous amounts of data may be available and valuable insights may be gained therefrom. However, the tools to access these data sets are complex and require sophisticated knowledge. The process of turning an idea of how to analyze data into an application that performs the desired analysis is complex and expensive.
[004] The systems and methods disclosed herein provide an improved approach for generating applications for analyzing large data sets using data processing tools.
BRIEF DESCRIPTION OF THE DRAWINGS
[005] In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the invention will be described and
explained with additional specificity and detail through use of the accompanying drawings, in which:
[006] Figs. 1 is a schematic block diagram of a computing device suitable for implementing methods in accordance with embodiments of the invention;
[007] Figs. 2 is a schematic block diagram of a network environment suitable for implementing methods in accordance with an embodiments of the invention;
[008] Fig. 3 is a process flow diagram of a method for generating a database application in accordance with an embodiment of the present invention;
[009] Fig. 4 is a schematic block diagram of a data flows within a database application in accordance with an embodiment of the present invention;
[0010] Fig. 5 is a schematic block diagram of executable modules for generating a database application in accordance with an embodiment of the present invention;
[0011] Fig. 6 is a schematic block diagram of an execution framework for executing a database application in accordance with an embodiment of the present invention;
[0012] Fig. 7 is a process flow diagram of a method for generating a database application using a graphical user interface in accordance with an embodiment of the present invention;
[0013] Fig. 8 is a process flow diagram of a method for defining using a multidimensional data model in accordance with an embodiment of the present invention; and
[0014] Figs. 9-17 are screen shots illustrating a process for generating a data access application in accordance with embodiments of the invention.
DETAILED DESCRIPTION
[0015] It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of certain examples of presently contemplated embodiments in accordance with the invention. The presently described embodiments will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout.
[0016] Embodiments in accordance with the present invention may be embodied as an apparatus, method, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "module" or "system." Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer-usable program code embodied in the medium.
[0017] Any combination of one or more computer-usable or computer-readable media may be utilized. For example, a computer-readable medium may include one or more of a portable computer diskette, a hard disk, a random access memory (RAM) device, a read-only memory (ROM) device, an erasable programmable read-only memory (EPROM or Flash memory) device, a portable compact disc read-only memory (CDROM), an optical storage device, and a magnetic storage device. In selected
embodiments, a computer-readable medium may comprise any non-transitory medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
[0018] Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++, or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on a computer system as a stand-alone software package, on a stand-alone hardware unit, partly on a remote computer spaced some distance from the computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
[0019] The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions or code. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data
processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
[0020] These computer program instructions may also be stored in a non- transitory computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
[0021] The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
[0022] Fig. 1 is a block diagram illustrating an example computing device 100. Computing device 100 may be used to perform various procedures, such as those discussed herein. Computing device 100 can function as a server, a client, or any other computing entity. Computing device can perform various monitoring functions as discussed herein, and can execute one or more application programs, such as the application programs described herein. Computing device 100 can be any of a wide variety of computing devices, such as a desktop computer, a notebook computer, a server computer, a handheld computer, tablet computer and the like. A server system 102a- 102c may include one or more computing devices 100 each including one or more processors.
[0023] Computing device 100 includes one or more processor(s) 102, one or more memory device(s) 104, one or more interface(s) 106, one or more mass storage device(s) 108, one or more Input/Output (I/O) device(s) 110, and a display device 130 all of which are coupled to a bus 112. Processor(s) 102 include one or more processors or controllers that execute instructions stored in memory device(s) 104 and/or mass storage device(s) 108. Processor(s) 102 may also include various types of computer-readable media, such as cache memory.
[0024] Memory device(s) 104 include various computer-readable media, such as volatile memory (e.g., random access memory (RAM) 114) and/or nonvolatile memory (e.g., read-only memory (ROM) 116). Memory device(s) 104 may also include rewritable ROM, such as Flash memory.
[0025] Mass storage device(s) 108 include various computer readable media, such as magnetic tapes, magnetic disks, optical disks, solid-state memory (e.g., Flash memory), and so forth. As shown in Fig. 1, a particular mass storage device is a hard disk drive 124. Various drives may also be included in mass storage device(s) 108 to enable reading from and/or writing to the various computer readable media. Mass storage device(s) 108 include removable media 126 and/or non-removable media.
[0026] I/O device(s) 110 include various devices that allow data and/or other information to be input to or retrieved from computing device 100. Example I/O device(s) 110 include cursor control devices, keyboards, keypads, microphones, monitors or other display devices, speakers, printers, network interface cards, modems, lenses, CCDs or other image capture devices, and the like.
[0027] Display device 130 includes any type of device capable of displaying information to one or more users of computing device 100. Examples of display device 130 include a monitor, display terminal, video projection device, and the like.
[0028] Interface(s) 106 include various interfaces that allow computing device 100 to interact with other systems, devices, or computing environments. Example interface(s) 106 include any number of different network interfaces 120, such as interfaces to local area networks (LANs), wide area networks (WANs), wireless networks, and the Internet. Other interface(s) include user interface 118 and peripheral device interface 122. The interface(s) 106 may also include one or more user interface elements 118. The interface(s) 106 may also include one or more peripheral interfaces such as interfaces for printers, pointing devices (mice, track pad, etc.), keyboards, and the like.
[0029] Bus 112 allows processor(s) 102, memory device(s) 104, interface(s) 106, mass storage device(s) 108, and I/O device(s) 110 to communicate with one another, as well as other devices or components coupled to bus 112. Bus 112 represents one or more of several types of bus structures, such as a system bus, PCI bus, IEEE 1394 bus, USB bus, and so forth.
[0030] For purposes of illustration, programs and other executable program components are shown herein as discrete blocks, although it is understood that such programs and components may reside at various times in different storage components of computing device 100, and are executed by processor(s) 102. Alternatively, the systems and procedures described herein can be implemented in hardware, or a combination of hardware, software, and/or firmware. For example, one or more application specific
integrated circuits (ASICs) can be programmed to carry out one or more of the systems and procedures described herein.
[0031] Referring to Fig. 2, is a schematic block diagram of a network
environment 200 in which the methods disclosed herein may be implemented. The network environment may include a server system 202a that generates a database application as described herein in response to user inputs. The server system 202a or a different server system 202b. The server system 202a, 202b that executes a database application may host or access a raw data repository 104a, 104b either directly or through a remote server system 202b, 202a.
[0032] Inputs from a user defining a database application according to the methods described herein may provide inputs through a user workstation 106 that is coupled to the server system 202a directly or through another server system 202b or a network 108. The workstation 106 may be desktop or laptop computer, tablet computer, or other computing device. The network 108 may be a local area network (LAN), wide area network (WAN), the Internet, or any other type of wired or wireless network connection.
[0033] The server system 202a may host or access a project database 110 representing a database application generated according to the methods disclosed herein. In particular, the creation of the project database 110 may be performed by the server system 202a in response to user inputs according to the methods disclosed herein. A project database 110 may include a data model 112a, a workflow 112b, and processing logic 112c.
[0034] Referring to Fig. 3, the project database 110 may be defined according to user input by performing the method 300. The method 300 may be executed by the server system 202a, a user workstation 106, or some other computing device.
[0035] The method 300 may include defining 302 a data model. The data model may be described using a high-level language, such as graphical user interface (GUI) language that specifies elements of the data model using icons, links between icons, and other GUI elements (menus, buttons, toggles), such as described herein below.
[0036] Define 302 the data model may include receiving inputs in the high level language that describe data to processed in terms of data type and data structure.
[0037] The method 300 may further include defining 304 a workflow. Again, the workflow may be defined 304 may interpreting inputs received using the high-level language described above. The workflow may describe how concurrent data processing work is to be coordinated in terms of job dependency and precedence.
[0038] The method 300 may further include defining 306 data processing logic, such as based on inputs received using the high-level language. The data processing logic may specify how one or more data sets of data elements can be transformed into other data sets of data elements. Data elements in the result data sets may therefore be formatted in a different data model depending on the data processing logic.
[0039] The method 300 may further include defining 308 a data store at which the results of the workflow and processing logic will be stored. Defining 308 the data store may include receiving inputs using the high-level language. In particular, the data store may be received as interactions with the GUI. For example, the data store may be input to a dialog box or selected from a list of available data stores. In some
embodiments, the data store is created in response to the received inputs such that it is universally addressable, can be queried by property arguments, can be assigned or loaded with input data, and can be looked up and reused by some or all workflows executing on the server system 202a, 202b executing the workflows.
[0040] Defining 308 may be characterized by creating a data model that describes the data elements stored in it. The data store can be populated with input data sets of compatible data model. It can also be queried to return a data set of a different data model.
[0041] The method 300 may further include executing the workflow 304. This may include retrieving data from a raw data store 204a, 204b, applying the processing logic 306 effective to perform operations on the data and to transform the data into one or more different data models defined at step 302. The results of the processing logic 306 may then be stored in the data store defined at step 308. These steps of executing the workflow may be scheduled, prioritized, and executed according to the parameters specified in the workflow at step 304.
[0042] The workflow defined and executed according to the method 300 of Fig. 3 produces output data sets stored in the data store defined at step 308. This data store may then be used in various ways. For example, data analytics may be
implemented with respect to the data store, including a query language processor. The query capability of the query language processor may include basic data transform capabilities, such as those described above with respect to the data processing logic of step 306. The query language processor may further enable the navigation of search results, including multidimensional style rollup and drill down on underlying data. The
query language processor may further implement chaining of multiple queries.
[0043] A workflow defined according to the method 300 of Fig. 3 may be managed throughout a life cycle. In particular, the data model, workflow, and data store may be managed. In particular these artifacts may be subsequently redefined, created, modified, and also referred to by other artifact definitions.
[0044] These artifacts (data model, workflow, data store) may also be combined to implement higher-level logic. For example, logic for multi-dimensional data representation and analytics may be implemented for powering domain applications.
[0045] Fig. 4 illustrates an example implementation of an application according to the method 300 of Fig. 3. Data from a raw data store 204a, 204b may be received through a data bus 402 and collected by a collector 404. The collected data may then be converted to the data model 406a defined at step 302, including one or more sets 408a- 408c of data formatted according to the data model.
[0046] The data sets 408a-408c are input to the workflow 410 as defined at step 304. The workflow then implements processing logic 412 as defined at step 306. As noted above, the workflow manages scheduling, conflicts, dependencies, and precedence among processing tasks such that the data sets 408a-408c are processed according to processing logic 412 in an efficient manner and in appropriate order.
[0047] The output of the workflow 410 will be formatted according to a same or different data model 406b. In particular, a number of data sets 408d-408e may be output from the workflow and formatted according to data model 406b. These data sets 408d-408e are then written to the data store 410 defined at step 308. The data of the data store 410 may then be subsequently provided to an analytics engine 412 that performs
analysis, executes query, and performs other operations to enable the characterization or visualization of the data sets 408d-408e.
[0048] Fig. 5 illustrates software components that may implement creation of a data application according to the method 300 of Fig. 3 and execution of the data application according to the Fig. 4. Beginning at the top, an application layer 500 may include one or more domain applications 502. A domain application 502 may include a data model, workflow, processing logic, and a data store defined according to the method 300. A domain application 502 may include multiples of these elements that reference one another to implement a complex multidimensional domain application.
[0049] A platform application programming interface (API) layer 504 implements software modules that generate the domain application 502 responsive to user inputs. In particular, the API layer 504 may implement a GUI that allows users to graphically define one or more data models, workflows, processing logic, and data stores of a domain application 502.
[0050] The GUI allows users to visually construct data model, workflow and processing logic in a drag and drop style. The specifications of these elements are generated internally according to a scripting language, which is a high level expression language that can be translated into commands to backend engines for execution.
[0051] The API layer 504 may include a module manager 506 that is programmed to allows Java programmers to plug in custom logic as modules. Modules can be referenced in a workflow and thus invoked in the workflow execution.
[0052] The API layer 504 may include a data model builder 508. The data model builder 508 is programmed to enable users to specify data models. Data models
are used to describe the structure and type of data elements such that data processing logic can operate on them in an appropriate manner.
[0053] The API layer 504 may include a workflow builder 510. The workflow builder 510 that is programmed to enable users to build workflows, which specify execution dependency among tasks.
[0054] The API layer 504 may include a data store builder 512. The data store builder 512 is programmed to enable users to specify data representation in underlying storage in terms of data stores. Data stores are conceptual containers of data elements of the same data model.
[0055] A platform service layer 514 implements software components that execute the domain application 502 and therefore functions as an execution framework. The platform service layer 514 are a software platform upon which multiple domain applications 502 can be built or be executed.
[0056] The platform service layer 514 is composed of a set of service engines 516-532. Each engine is responsible of a specific functional area. Each engine is able to handle multi-tenant requests. That is, applications 502 on top of it can serve different tenants (customers) such that no data logic of a tenant will interfere with the data logic of another tenant. Each engine is able to handle requests involving big data across distributed systems in a scalable way.
[0057] For example, the platform service layer 514 may include a raw data repository 516 that implements a database server providing raw data for processing by the domain application 502. For example, the raw data repository 516 may be an ORACLE, SQL, MySQL, DB2, INFORMIX, SAP, SPARK, TERADATA, or other type
of database server.
[0058] The platform service layer 514 may include a workflow engine 518. As noted above, a workflow dictates dependencies and precedence among data processing tasks. Accordingly, the workflow engine 518 may schedule processing tasks and/or interrupt processing tasks in order to implement the policies specified by the workflow.
[0059] The platform service layer 514 may include a data engine 520. The data engine 520 executes processing logic as specified by a designer of the domain application 502 and as invoked by the workflow engine 518 according to the policies specified by the workflow. A data store manager 522. The data store manager 522 writes results of the processing logic to the data store.
[0060] The platform service layer 514 may implement a data consumption service 524 that is a web service that can receive queries from applications and deliver query results in response to the queries. The platform service layer 514 may function as the main query interface between application and platform services.
[0061] The platform service layer 514 may implement a metadata repository 526 that stores metadata definitions. Metadata is the information to describe the data to be processed. For example, data model and workflow are both types of metadata.
[0062] The platform service layer 514 may implement a data store catalog 528 that is a catalog of a definitions of a data store.
[0063] The platform service layer 514 may implement a service catalog that stores the information and status of all platform service engines. For example, the location (e.g. network node) where a platform service engine is executing and the status of the platform service engine (e.g., running or stopped)
[0064] The platform service layer 514 may implement system management services 532 that perform system management tasks such as temporary data purging, job scheduling, and other system management tasks known in the art.
[0065] Referring to Fig. 6, illustrates a deployment architecture for a domain application implemented according to the methods disclosed herein. In particular, a set of platform services 514 may each implement an application node 600 of a plurality of application nodes 600. The application nodes 600 may execute as described above with respect to a data cluster 602 including one or more databases 604, such as the illustrated SPARK HBASE HDFS databases. In particular, the databases 605 may function as the raw data repository 204a, 204b.
[0066] Referring to Fig. 7, the data model, workflow, processing logic, and data store of a domain application may be specified using a high-level language, such as a visual programming language having a GUI for receiving user inputs. For example, the illustrated method 700 may be performed using the GUI. In particular, the visual programming language enables a non-programmer to describe a data pipeline that can be translated to the artifacts generated according to the method 300 for execution in the execution framework of Fig. 5. In addition the GUI of the visual programming language is enables users to construct the data processing logic using drag-and-drop components and interconnecting lines, as discussed in greater detail below.
[0067] The method 700 may include navigating 702 to a selected data source according to user inputs. Navigation may be performed using menus, hierarchical representations of a file system, or any other conventional technique for navigating a file system and receiving a user selection of a storage device, portion of a storage device, or a
specific file, folder, database, or collection of databases. In particular, the navigation and selection may be performed with respect to data within a data source repository, such as a raw data repository 204a, 204b. The user may select one or more properties of a data set in addition to or instead of selecting the data set. Accordingly, a graphical display of properties and an interface for selecting one or more of them may also be displayed and a selection received using this interface.
[0068] The method 700 may further include receiving 704 through the visual programming language GUI, user inputs describing the data model in terms of data hierarchy and primitive data types. In general, a data model specifies a data element's type if it is primitive, or its structure if it is compound of two or more primitives.
[0069] The method 700 may further include receiving 706 user placement of nodes and user placement of links between nodes in the GUI, where each node represents a predefined sequence of commands selected from a palette of sequences and links indicate an execution dependency between nodes. For example, an example of nodes are nodel = [commandl, command2, command3], node2 = [command4, command5], node3 =[command6, command7]. An example workflow showing a dependency among nodes may include workflow = [nodel->node2, node3->node2], which means commands in node2 can only be executed upon completion of commands in nodel and commands in node3 can only be executed upon completion of commands in node2.
[0070] The method 700 may further include receiving selection of a destination where data processed according to the workflow are to be saved. This may include navigating and selecting a destination in the same manner in which the data source was selected at step 302 using a visual interface to a file system and/or database.
[0071] The method 700 may further include receiving selection and placement of GUI representations of primitive logic and connecting them using lines that represent the flow of data from one primitive logic operation to the next. For example, a palette of graphical elements may be displayed, each of which may be selected and placed in the GUI and connected to other graphical elements and each of which is represents one of a library of built-in data transformation commands.
[0072] The method 700 may further include receiving custom processing logic scripts. For example, graphical elements may be placed in the GUI that represent runtime scripts provided by a user and connected as described above to represent data flow to other graphical elements. These scripts may then be executed as part of the workflow in accordance to their placement in the GUI. In particular, the execution framework may include a run-time scripting environment capable of executing the run-time scripts.
[0073] Referring to Fig. 8, the systems and methods disclosed herein may provide a data representation mechanism with which users can define custom multidimensional models, data filtering logic, and data aggregation policy such that high performance data analysis tasks can be accomplished. This is to facilitate application designers to design the data representation to fit the need of data analysis application.
[0074] For example, an application designer may execute the illustrated method 800, including defining 802, using the visual programming language, a multi- dimension model in terms of dimensions and hierarchical member attributes. For example, a "customer" dimension may have the member attributes name, date of birth, and address. The address attribute may have the structure street-number, city, state, zip. The "customer" dimension along with other dimensions, such as a "account" and "time"
dimension can form a simple multi-dimension model of an underlying data
representation.
[0075] A multi-dimensional data model may be a conceptual model that describes data in terms of multiple dimensions. For example, a spread sheet with rows and columns may be a two-dimensional model. An N-dimensional data set having entries corresponding to N different dimensions, where N is greater than two may also be implemented. Such a concept can be supported by some underlying physical
representation on distributed systems. Such physical representation can be constructed by executing data processing workflows that are automatically generated from a
specification of the multi-dimension model.
[0076] The method 800 may further include defining 804, using the visual programming language, one or more derived attributes representing aggregated data values from raw data in simple terms. For example, "numberOfAccounts" may be a derived attribute that represents the total number of open accounts that a customer has as of a certain date. It can be defined in using a declarative language and be calculated automatically for each input data batch and stored in advance of an application to query requesting it. Accordingly, the derived values may be returned in response to a query but need not be calculated subsequent to receiving the query.
[0077] The method 800 may further include defining 806 named filtering logic to apply to a dimension based on certain query criteria so that applications can query the underlying store using the filter name to achieve proper data scoping. For example, we can define "Rich" to be those Customers with a certain zip code and apply "Rich" scoping in all customer queries without having to perform a zip code lookup in response
to the query. This reduces the time required to process the query.
[0078] The method 800 may further include defining 808 customer data representations. Defining 808 custom data representation may include defining data representations tailored to various query patterns. The custom data representation may include data that is pre-aggregated at data population time so that a run time query has much better performance.
[0079] Figs. 9 through 17 illustrate example interfaces of the GUI for the visual programming language. The illustrated interfaces may be used to provide inputs for some or all of the steps of the methods 300, 700, and 800.
[0080] Referring to Fig. 9 a project may be initiated using the illustrated interface for providing a name and description. The illustrated interface further includes elements to invoke an interface for creating a data model ("Model the Data") and for defining a source of data to be processed ("Define the Data Source"). The intent of a data analytics task is expressed by a user in a "Project". A project may begin with an expression of a "MODEL."
[0081] Referring to Figs. 10 and 11, the data elements of the data model may be received from the user (step 302 of the method 300; step 704 of the method 700) using the illustrated interface. For example, data elements including "customer account" and "income" have been added to the project as shown. As shown in Fig. 3, upon receiving selection of one of the data elements, the properties thereof may be displayed
("properties" tab). The user may further select which of these properties will be used as part of the data model using the "Key" and "Required" check boxes for each property. The contents of the selected data elements, if any, may be displayed in the "Preview" tab.
[0082] Referring to Fig. 12, the illustrated interface may be displayed in order to receive the data sources to be operated on according to the intent expressed by the user (step 702 of the method 700). The data source may be an actual data source or a data set that is pre-compiled or compiled upon access according to some query or definition used to select and/or structure the data set. Aspects of the data source needed for subsequent access may be derived automatically by the system, such as data arrival date and the like.
[0083] Referring to Fig. 13, the data analytics intent of the user is then input using the illustrated interface (steps 304, 306 of the method 300; steps 706, 710 of the method 700). The stages of the analysis are placed and connected using a graphical user interface. For example, the elements "input," "delimited," "select," "group," and "map" may be selected and placed using a pointing device and connected to one another using a pointing device as well. Each of the elements may represent a function to be performed on an input from another element shown. The elements may be selected from a palette of elements represent possible functions to be performed. The palette may include predefined functions, user defined functions, and the like. The functions represented by the elements may include data processing functions such as those illustrated that may be performed with respect to a large set of data.
[0084] Referring to Figs. 14 and 15, once the elements are selected and inputs and outputs defined by coupling them to one another and to the inputs and outputs, the system creates the data processing the algorithms, logic, and/or transformations required by the elements of the analytic intent. For example, as shown in the "Preview" tab of Figs. 14 and 15, the system generates the required aggregations and calculations of each of the data elements, such as the "delimited" and "map" functions selected in Figs. 7 and 8,
which will result in the output data shown in the "Preview" tab.
[0085] The properties of elements placed by the user in the analytic intent may be selected and, in response, properties of the element may be displayed in the "Preview" tab in response to this received interaction. The properties of the element may be modified by the user by means of inputs to the "Properties" tab interface elements.
[0086] Referring to Fig. 16, the data exposure of the results of the analytic intent may then be received from the user using the illustrated interface. For example, the exposure specified by the user may be automatically implemented using RESTful (representative state transfer) APIs (application programming interface). For example, in the illustrated embodiment, the user specified a method ("Get") and uniform resource indicator ("URI") that are used to retrieve the result of the analytic intent and present it to the user. User interface elements for manipulating, filtering, or otherwise representing the output data may be specified by the user as part of the exposing step shown in Fig. 16.
[0087] Referring to Fig. 17, the manner in which the results of the analytic intent are consumed may be specified using the illustrated interface. For example, in the illustrated embodiment, data processing functions represented by graphical elements are placed and coupled to one another to define a data flow for the output of the analytic intent. Resources and code for implementing the functions represented by the graphical elements are then instantiated. For example, the "Get" function may be written to a "data" store and invoke a "response." The properties of these functions may be adjusted by selecting the element and adjusting the properties in the "properties" tab. Likewise, upon selecting an element, the "preview" tab may display the results of the functions performed by that data element.
[0088] The systems and methods performed in response to user inputs received in the illustrated interfaces may be according to the functions described with respect to Figs. 9 through 17. The various different screens are illustrate the steps and flow of expressing user intent in the "visual programming language." The user intent as expressed using the "visual programming language" will be translated into "a sequence of data language" by the system. The "sequence of data language" are then translated to "services commands" for actual execution.
[0089] As is apparent in the foregoing description the systems and methods disclosed herein provide the following:
- Intent based advanced analytics modeling.
- A data language expressed in the transformation layers of user, application, and execution levels.
- Visual language translation to a data language
- Advanced data applications may be generated using the above mentioned technologies.
[0090] The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative, and not restrictive.
Claims
1. A method for generating data applications, the method comprising:
receiving, by a server system, a data model defining one or more data types and one or more data structure.
receiving, by the server system, a workflow, the workflow describing
coordination of concurrent data processing work with respect to job dependency and precedence;
receiving, by the server system, data processing logic, the data processing logic specifying transformation of one or more input data sets into one or more output data sets and a data type of the one or more data types of the one or more output data sets to be performed during execution of the workflow;
receive, by the server system, specification of a data source to input to the workflow;
receive, by the server system, specification of a data store to store an output of the workflow; and
executing, by the server system, the workflow.
2. The method of claim 1, wherein the data source is universally addressable and is configured to receive queries including property arguments and is configured to receive assignment of input data or to be loaded with the input data.
3. The method of claim 1, wherein the data store defines a data store model describing data elements stored in the data store.
4. The method of claim 3, further comprising:
receiving, by the data store, a query;
obtaining, by the data store, a result of the query;
transforming, by the data store, the result of the query into a transformed result having a different data model that the data store model; and
returning, by the data store, the transformed result.
5. The method of claim 1, further comprising:
managing, by the server system, the creating of one or more additional data models, one or more additional workflows, and one or more additional data flows.
6. The method of claim 5, where creating the one or more additional data models, the one or more additional workflows, the one or more additional data store comprises including in at least one of the one or more additional data models, the one or more additional workflows, the one or more additional data flows references to the data model, the workflow, and the data store.
7. The method of claim 6, further comprising:
combining the one or more additional data models, the one or more additional workflows, the one or more additional data store comprises including in at least one of the one or more additional data models, the one or more additional workflows, the one or more additional data flows with the data model, the workflow, and the data store effective
to generate a multi-dimensional domain application.
8. The method of claim 7, wherein executing the workflow comprises executing the workflow within an execution framework, the execution framework comprising a plurality of service engines, the service engines comprising:
a raw data repository, the data source referencing the raw data repository;
a workflow engine configured to execute the workflow;
a data engine configured to execute the data processing logic;
a data store manager configure to manage storage of data within the data store; and
a data consumption service configured to retrieve data from the raw data repository for consumption by the workflow engine.
9. The method of claim 7, further comprising executing multiple multidimensional domain applications including the multi-dimensional domain application simultaneously by the execution framework.
10. The method of claim 1, wherein receiving, by the server system, the specification of the data source comprises receiving, in a graphical user interface, a selection of the data source and at least one property from a graphical representation of a data source repository.
11. The method of claim 10, wherein receiving the data model comprises
receiving, by the server system through the graphical user interface, a description of the data model with respect to a data hierarchy and one or more primitive data types.
12. The method of claim 11, wherein receiving the workflow comprises receiving, by the server system through the graphical user interface, placement of nodes and linking of nodes, wherein each nodes represents a sequence of commands and each link represents an execution dependency between nodes connected by the each link.
13. The method of claim 12, wherein receiving the specification of the data store comprises receiving, by the server system through the graphical user interface, selection of a data destination.
14. The method of claim 13, wherein receiving the data processing logic comprises receiving, by the server system through the graphical user interface, placement of graphical elements, each graphical element representing a primitive logic function from a library of transformation commands.
15. The method of claim 14, wherein receiving the data processing logic further comprises receiving run-time scripts through the graphical user interface.
16. The method of claim 15, wherein receiving the data model further comprises receiving definitions of derived attributes representing aggregated data values from raw data.
17. The method of claim 16, wherein receiving the data model further comprises defining named filtering logic and applying the named filtering logic to a dimension of the plurality of dimensions according to a query criteria.
18. The method of claim 17, further comprising:
receiving a custom data representation mapped to a query pattern;
aggregating data in the data store according to the custom data representation prior to receiving a query according to the query pattern.
19. A method comprising:
receiving, by a computer system, one or more dimensions and hierarchical attributes for one or more data members; and
automatically generating, by the computer system, a multidimensional data model according to the one or more dimensions and the hierarchical attributes.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16762121.8A EP3265905A4 (en) | 2015-03-06 | 2016-02-24 | Systems and methods for generating data visualization applications |
CN201680013996.7A CN107533453B (en) | 2015-03-06 | 2016-02-24 | System and method for generating data visualization applications |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562129647P | 2015-03-06 | 2015-03-06 | |
US62/129,647 | 2015-03-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2016144546A2 true WO2016144546A2 (en) | 2016-09-15 |
WO2016144546A3 WO2016144546A3 (en) | 2016-11-03 |
Family
ID=56850562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2016/019360 WO2016144546A2 (en) | 2015-03-06 | 2016-02-24 | Systems and methods for generating data visualization applications |
Country Status (4)
Country | Link |
---|---|
US (1) | US10275221B2 (en) |
EP (1) | EP3265905A4 (en) |
CN (1) | CN107533453B (en) |
WO (1) | WO2016144546A2 (en) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528327B2 (en) * | 2015-11-23 | 2020-01-07 | Microsoft Technology Licensing Llc | Workflow development system with ease-of-use features |
US20220164840A1 (en) | 2016-04-01 | 2022-05-26 | OneTrust, LLC | Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design |
US11416589B2 (en) | 2016-06-10 | 2022-08-16 | OneTrust, LLC | Data processing and scanning systems for assessing vendor risk |
US11636171B2 (en) | 2016-06-10 | 2023-04-25 | OneTrust, LLC | Data processing user interface monitoring systems and related methods |
US11416798B2 (en) | 2016-06-10 | 2022-08-16 | OneTrust, LLC | Data processing systems and methods for providing training in a vendor procurement process |
US11481710B2 (en) | 2016-06-10 | 2022-10-25 | OneTrust, LLC | Privacy management systems and methods |
US11354435B2 (en) | 2016-06-10 | 2022-06-07 | OneTrust, LLC | Data processing systems for data testing to confirm data deletion and related methods |
US11410106B2 (en) | 2016-06-10 | 2022-08-09 | OneTrust, LLC | Privacy management systems and methods |
US11520928B2 (en) | 2016-06-10 | 2022-12-06 | OneTrust, LLC | Data processing systems for generating personal data receipts and related methods |
US11416590B2 (en) | 2016-06-10 | 2022-08-16 | OneTrust, LLC | Data processing and scanning systems for assessing vendor risk |
US11562097B2 (en) | 2016-06-10 | 2023-01-24 | OneTrust, LLC | Data processing systems for central consent repository and related methods |
US11134086B2 (en) | 2016-06-10 | 2021-09-28 | OneTrust, LLC | Consent conversion optimization systems and related methods |
US11354434B2 (en) | 2016-06-10 | 2022-06-07 | OneTrust, LLC | Data processing systems for verification of consent and notice processing and related methods |
US10318761B2 (en) | 2016-06-10 | 2019-06-11 | OneTrust, LLC | Data processing systems and methods for auditing data request compliance |
US10846433B2 (en) | 2016-06-10 | 2020-11-24 | OneTrust, LLC | Data processing consent management systems and related methods |
US11188615B2 (en) | 2016-06-10 | 2021-11-30 | OneTrust, LLC | Data processing consent capture systems and related methods |
US11222139B2 (en) | 2016-06-10 | 2022-01-11 | OneTrust, LLC | Data processing systems and methods for automatic discovery and assessment of mobile software development kits |
US11475136B2 (en) | 2016-06-10 | 2022-10-18 | OneTrust, LLC | Data processing systems for data transfer risk identification and related methods |
US11727141B2 (en) | 2016-06-10 | 2023-08-15 | OneTrust, LLC | Data processing systems and methods for synching privacy-related user consent across multiple computing devices |
US12118121B2 (en) | 2016-06-10 | 2024-10-15 | OneTrust, LLC | Data subject access request processing systems and related methods |
US11366909B2 (en) | 2016-06-10 | 2022-06-21 | OneTrust, LLC | Data processing and scanning systems for assessing vendor risk |
US11366786B2 (en) | 2016-06-10 | 2022-06-21 | OneTrust, LLC | Data processing systems for processing data subject access requests |
US11586700B2 (en) | 2016-06-10 | 2023-02-21 | OneTrust, LLC | Data processing systems and methods for automatically blocking the use of tracking tools |
US11222142B2 (en) | 2016-06-10 | 2022-01-11 | OneTrust, LLC | Data processing systems for validating authorization for personal data collection, storage, and processing |
US11392720B2 (en) | 2016-06-10 | 2022-07-19 | OneTrust, LLC | Data processing systems for verification of consent and notice processing and related methods |
US11188862B2 (en) | 2016-06-10 | 2021-11-30 | OneTrust, LLC | Privacy management systems and methods |
US10284604B2 (en) | 2016-06-10 | 2019-05-07 | OneTrust, LLC | Data processing and scanning systems for generating and populating a data inventory |
US11544667B2 (en) | 2016-06-10 | 2023-01-03 | OneTrust, LLC | Data processing systems for generating and populating a data inventory |
US11438386B2 (en) * | 2016-06-10 | 2022-09-06 | OneTrust, LLC | Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods |
US11227247B2 (en) | 2016-06-10 | 2022-01-18 | OneTrust, LLC | Data processing systems and methods for bundled privacy policies |
US11418492B2 (en) | 2016-06-10 | 2022-08-16 | OneTrust, LLC | Data processing systems and methods for using a data model to select a target data asset in a data migration |
US10678945B2 (en) | 2016-06-10 | 2020-06-09 | OneTrust, LLC | Consent receipt management systems and related methods |
US11651106B2 (en) | 2016-06-10 | 2023-05-16 | OneTrust, LLC | Data processing systems for fulfilling data subject access requests and related methods |
US11461500B2 (en) | 2016-06-10 | 2022-10-04 | OneTrust, LLC | Data processing systems for cookie compliance testing with website scanning and related methods |
US11651104B2 (en) | 2016-06-10 | 2023-05-16 | OneTrust, LLC | Consent receipt management systems and related methods |
US11403377B2 (en) | 2016-06-10 | 2022-08-02 | OneTrust, LLC | Privacy management systems and methods |
US12045266B2 (en) | 2016-06-10 | 2024-07-23 | OneTrust, LLC | Data processing systems for generating and populating a data inventory |
US11416109B2 (en) | 2016-06-10 | 2022-08-16 | OneTrust, LLC | Automated data processing systems and methods for automatically processing data subject access requests using a chatbot |
US10740487B2 (en) | 2016-06-10 | 2020-08-11 | OneTrust, LLC | Data processing systems and methods for populating and maintaining a centralized database of personal data |
US10997318B2 (en) | 2016-06-10 | 2021-05-04 | OneTrust, LLC | Data processing systems for generating and populating a data inventory for processing data access requests |
US11625502B2 (en) | 2016-06-10 | 2023-04-11 | OneTrust, LLC | Data processing systems for identifying and modifying processes that are subject to data subject access requests |
US11294939B2 (en) | 2016-06-10 | 2022-04-05 | OneTrust, LLC | Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software |
US11341447B2 (en) | 2016-06-10 | 2022-05-24 | OneTrust, LLC | Privacy management systems and methods |
US10909488B2 (en) | 2016-06-10 | 2021-02-02 | OneTrust, LLC | Data processing systems for assessing readiness for responding to privacy-related incidents |
US11675929B2 (en) | 2016-06-10 | 2023-06-13 | OneTrust, LLC | Data processing consent sharing systems and related methods |
US10949565B2 (en) | 2016-06-10 | 2021-03-16 | OneTrust, LLC | Data processing systems for generating and populating a data inventory |
US12052289B2 (en) | 2016-06-10 | 2024-07-30 | OneTrust, LLC | Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods |
KR20180080924A (en) * | 2017-01-05 | 2018-07-13 | 주식회사 엑셈 | Apparatus and method for monitoring the processing result of big data processing server |
GB201708818D0 (en) * | 2017-06-02 | 2017-07-19 | Palantir Technologies Inc | Systems and methods for retrieving and processing data |
US10013577B1 (en) | 2017-06-16 | 2018-07-03 | OneTrust, LLC | Data processing systems for identifying whether cookies contain personally identifying information |
CN107967359B (en) * | 2017-12-21 | 2022-05-17 | 百度在线网络技术(北京)有限公司 | Data visual analysis method, system, terminal and computer readable storage medium |
CN108460077B (en) * | 2018-01-03 | 2020-10-30 | 北京字节跳动网络技术有限公司 | Index analysis method, system and computer readable storage medium |
CN110727729A (en) * | 2018-06-29 | 2020-01-24 | 贵州白山云科技股份有限公司 | Method and device for realizing intelligent operation |
CN110020021B (en) * | 2018-09-03 | 2023-04-07 | 福建星瑞格软件有限公司 | Visualization-based data stream processing method |
US11544409B2 (en) | 2018-09-07 | 2023-01-03 | OneTrust, LLC | Data processing systems and methods for automatically protecting sensitive data within privacy management systems |
US10803202B2 (en) | 2018-09-07 | 2020-10-13 | OneTrust, LLC | Data processing systems for orphaned data identification and deletion and related methods |
CN109388385B (en) * | 2018-09-18 | 2022-08-19 | 西门子(中国)有限公司 | Method and apparatus for application development |
CN109523318A (en) * | 2018-11-16 | 2019-03-26 | 杭州市商务委员会(杭州市粮食局) | The analysis platform of electronic commerce data visual modeling transboundary |
US10838744B2 (en) * | 2018-12-04 | 2020-11-17 | Sap Se | Web component design and integration system |
US11232172B2 (en) | 2018-12-04 | 2022-01-25 | Sap Se | Collaborative web application and data system |
US20200265353A1 (en) * | 2019-02-15 | 2020-08-20 | Siemens Product Lifecycle Management Software Inc. | Intelligent workflow advisor for part design, simulation and manufacture |
CN109977154A (en) * | 2019-02-22 | 2019-07-05 | 青岛农业大学 | A kind of more API sets at big data terminal system method for building up |
CN109933622A (en) * | 2019-02-26 | 2019-06-25 | 美林数据技术股份有限公司 | A kind of data visualisation system and implementation method |
US11144569B2 (en) | 2019-05-14 | 2021-10-12 | International Business Machines Corporation | Operations to transform dataset to intent |
US20210096704A1 (en) * | 2019-09-27 | 2021-04-01 | Rockwell Automation Technologies, Inc. | User interface logical and execution view navigation and shifting |
CN111208994B (en) * | 2019-12-31 | 2023-05-30 | 西安翔腾微电子科技有限公司 | Execution method and device of computer graphics application program and electronic equipment |
CN113448678A (en) * | 2020-03-24 | 2021-09-28 | 阿里巴巴集团控股有限公司 | Application information generation method, deployment method, device, system and storage medium |
CN111752552A (en) * | 2020-06-28 | 2020-10-09 | 南京优倍自动化系统有限公司 | Industrial software design and application platform |
WO2022011142A1 (en) | 2020-07-08 | 2022-01-13 | OneTrust, LLC | Systems and methods for targeted data discovery |
US11444976B2 (en) | 2020-07-28 | 2022-09-13 | OneTrust, LLC | Systems and methods for automatically blocking the use of tracking tools |
WO2022032072A1 (en) | 2020-08-06 | 2022-02-10 | OneTrust, LLC | Data processing systems and methods for automatically redacting unstructured data from a data subject access request |
US11436373B2 (en) | 2020-09-15 | 2022-09-06 | OneTrust, LLC | Data processing systems and methods for detecting tools for the automatic blocking of consent requests |
WO2022061270A1 (en) | 2020-09-21 | 2022-03-24 | OneTrust, LLC | Data processing systems and methods for automatically detecting target data transfers and target data processing |
WO2022099023A1 (en) | 2020-11-06 | 2022-05-12 | OneTrust, LLC | Systems and methods for identifying data processing activities based on data discovery results |
WO2022159901A1 (en) | 2021-01-25 | 2022-07-28 | OneTrust, LLC | Systems and methods for discovery, classification, and indexing of data in a native computing system |
WO2022170047A1 (en) | 2021-02-04 | 2022-08-11 | OneTrust, LLC | Managing custom attributes for domain objects defined within microservices |
EP4288889A1 (en) | 2021-02-08 | 2023-12-13 | OneTrust, LLC | Data processing systems and methods for anonymizing data samples in classification analysis |
WO2022173912A1 (en) | 2021-02-10 | 2022-08-18 | OneTrust, LLC | Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system |
US11775348B2 (en) | 2021-02-17 | 2023-10-03 | OneTrust, LLC | Managing custom workflows for domain objects defined within microservices |
US11546661B2 (en) | 2021-02-18 | 2023-01-03 | OneTrust, LLC | Selective redaction of media content |
EP4305539A1 (en) | 2021-03-08 | 2024-01-17 | OneTrust, LLC | Data transfer discovery and analysis systems and related methods |
US11562078B2 (en) | 2021-04-16 | 2023-01-24 | OneTrust, LLC | Assessing and managing computational risk involved with integrating third party computing functionality within a computing system |
CN114579190B (en) * | 2022-02-17 | 2022-10-14 | 中国科学院计算机网络信息中心 | Cross-center cooperative computing arrangement method and system based on pipeline mechanism |
US11620142B1 (en) | 2022-06-03 | 2023-04-04 | OneTrust, LLC | Generating and customizing user interfaces for demonstrating functions of interactive user environments |
CN117289924A (en) * | 2023-10-13 | 2023-12-26 | 河北云在信息技术服务有限公司 | Visual task scheduling system and method based on Flink |
CN118034672B (en) * | 2024-04-10 | 2024-06-21 | 浪潮软件股份有限公司 | Spark-based visual data processing analysis method and system |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143754A1 (en) | 2011-03-31 | 2014-05-22 | Charles E. Henderson | System and method for the structuring and interpretation of organic computer programs |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038393A (en) * | 1997-09-22 | 2000-03-14 | Unisys Corp. | Software development tool to accept object modeling data from a wide variety of other vendors and filter the format into a format that is able to be stored in OMG compliant UML representation |
US6167564A (en) * | 1998-09-17 | 2000-12-26 | Unisys Corp. | Software system development framework |
AU7857300A (en) * | 1999-10-05 | 2001-05-10 | Togethersoft Corporation | Method and system for developing software |
US7370315B1 (en) * | 2000-11-21 | 2008-05-06 | Microsoft Corporation | Visual programming environment providing synchronization between source code and graphical component objects |
US7917888B2 (en) * | 2001-01-22 | 2011-03-29 | Symbol Technologies, Inc. | System and method for building multi-modal and multi-channel applications |
US20060064666A1 (en) * | 2001-05-25 | 2006-03-23 | Amaru Ruth M | Business rules for configurable metamodels and enterprise impact analysis |
CA2443454A1 (en) * | 2003-09-11 | 2005-03-11 | Teamplate Inc. | Data binding method in workflow system |
CA2451164C (en) * | 2003-09-11 | 2016-08-30 | Teamplate Inc. | Customizable components |
US20050210455A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method for generating an executable workflow code from an unstructured cyclic process model |
US8271541B2 (en) * | 2004-03-31 | 2012-09-18 | Fusionops Corporation | Method and apparatus for developing composite applications |
US7779384B2 (en) * | 2004-12-22 | 2010-08-17 | International Business Machines Corporation | Managing visual renderings of typing classes in a model driven development environment |
US7941784B2 (en) * | 2005-03-14 | 2011-05-10 | Research In Motion Limited | System and method for generating component based applications |
US8010940B2 (en) * | 2005-11-02 | 2011-08-30 | Sourcecode Technologies Holdings, Inc. | Methods and apparatus for designing a workflow process using inheritance |
US8676617B2 (en) * | 2005-12-30 | 2014-03-18 | Sap Ag | Architectural design for self-service procurement application software |
US8407664B2 (en) * | 2005-12-30 | 2013-03-26 | Sap Ag | Software model business objects |
KR100633478B1 (en) * | 2006-01-02 | 2006-10-16 | 김길웅 | System and its method for developing software based on business operating system |
WO2007134265A2 (en) * | 2006-05-12 | 2007-11-22 | Captaris, Inc. | Workflow data binding |
EP2076874A4 (en) * | 2006-05-13 | 2011-03-09 | Sap Ag | Consistent set of interfaces derived from a business object model |
EP1857930A3 (en) * | 2006-05-17 | 2008-07-23 | Ipreo Holdings LLC | System, method, and apparatus to allow for a design, administration, and presentation of computer software applications |
GB0620855D0 (en) * | 2006-10-19 | 2006-11-29 | Dovetail Software Corp Ltd | Data processing apparatus and method |
US9229920B1 (en) * | 2007-04-30 | 2016-01-05 | Oracle America Inc. | Compound undo/redo manager for mixed model edits |
US8307334B2 (en) * | 2007-09-17 | 2012-11-06 | International Business Machines Corporation | Method for assisting a user in the process of creating software code |
US8307333B2 (en) * | 2007-09-17 | 2012-11-06 | International Business Machines Corporation | System and computer program product for assisting a user in the process of creating software code |
US8417715B1 (en) * | 2007-12-19 | 2013-04-09 | Tilmann Bruckhaus | Platform independent plug-in methods and systems for data mining and analytics |
US20090222749A1 (en) * | 2008-02-29 | 2009-09-03 | Business Objects, S.A. | Apparatus and method for automated creation and update of a web service application |
EP2110741A1 (en) * | 2008-04-14 | 2009-10-21 | Siemens Aktiengesellschaft | A method and a system for transforming an object model |
US9235909B2 (en) * | 2008-05-06 | 2016-01-12 | International Business Machines Corporation | Simplifying the presentation of a visually complex semantic model within a graphical modeling application |
US8539444B2 (en) * | 2008-06-30 | 2013-09-17 | International Business Machines Corporation | System and method for platform-independent, script-based application generation for spreadsheet software |
US8818884B2 (en) * | 2008-09-18 | 2014-08-26 | Sap Ag | Architectural design for customer returns handling application software |
US8332811B2 (en) * | 2009-04-30 | 2012-12-11 | United Parcel Service Of America, Inc. | Systems and methods for generating source code for workflow platform |
US8949772B1 (en) * | 2009-06-01 | 2015-02-03 | Amazon Technologies, Inc. | Dynamic model based software application development |
US9164738B2 (en) * | 2009-07-01 | 2015-10-20 | International Business Machines Corporation | Database mapping of models for reporting tools in model driven development |
US20140032606A1 (en) * | 2009-08-20 | 2014-01-30 | Adobe Systems Incorporated | Collapsible groups in graphical workflow models |
US20110088011A1 (en) * | 2009-10-14 | 2011-04-14 | Vermeg Sarl | Automated Enterprise Software Development |
CA2786451A1 (en) | 2010-01-15 | 2011-07-21 | Endurance International Group, Inc. | Unaffiliated web domain hosting service based on a common service architecture |
US8484610B2 (en) * | 2010-03-17 | 2013-07-09 | Microsoft Corporation | Workflow execution model |
CA2793401C (en) * | 2010-03-17 | 2019-05-07 | Siamak Farah | A cloud-based desktop and subscription application platform apparatuses, methods and systems |
US8843892B2 (en) * | 2010-12-03 | 2014-09-23 | Adobe Systems Incorporated | Visual representations of code in application development environments |
US9104389B2 (en) * | 2011-10-18 | 2015-08-11 | International Business Machines Corporation | Hierarchical functional and variable composition diagramming of a programming class |
US9052907B2 (en) * | 2011-10-25 | 2015-06-09 | Software Ag | Selective change propagation techniques for supporting partial roundtrips in model-to-model transformations |
US9223847B2 (en) * | 2012-03-07 | 2015-12-29 | Microsoft Technology Licensing, Llc | Using dimension substitutions in OLAP cubes |
US9461876B2 (en) * | 2012-08-29 | 2016-10-04 | Loci | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction |
US9557988B2 (en) * | 2012-09-07 | 2017-01-31 | Inadev Corporation | Workflow-based application generator |
US20140201705A1 (en) * | 2013-01-12 | 2014-07-17 | Xuewei Ren | Extended framework for no-coding dynamic control workflow development on spatial enterprise system |
US10320885B2 (en) * | 2013-03-15 | 2019-06-11 | Gadget Software, Inc. | Method for single workflow for multi-platform mobile application creation and delivery |
EP2972814A1 (en) * | 2013-03-15 | 2016-01-20 | Beeonics Inc. | Method for single workflow for multi-platform mobile application creation and delivery |
US9753700B2 (en) * | 2013-05-29 | 2017-09-05 | Sap Se | Application building blocks for on demand and on premise usage |
US20140365242A1 (en) * | 2013-06-07 | 2014-12-11 | Siemens Medical Solutions Usa, Inc. | Integration of Multiple Input Data Streams to Create Structured Data |
CN103761111A (en) * | 2014-02-19 | 2014-04-30 | 中国科学院软件研究所 | Method and system for constructing data-intensive workflow engine based on BPEL language |
US9256403B2 (en) * | 2014-04-28 | 2016-02-09 | Verizon Patent And Licensing Inc. | Unified flow designer |
US9436507B2 (en) * | 2014-07-12 | 2016-09-06 | Microsoft Technology Licensing, Llc | Composing and executing workflows made up of functional pluggable building blocks |
CN104268143B (en) * | 2014-08-08 | 2017-10-20 | 华迪计算机集团有限公司 | The treating method and apparatus of XML data |
US9858174B2 (en) * | 2014-09-26 | 2018-01-02 | Oracle International Corporation | Updatable native mobile application for testing new features |
US9851968B2 (en) * | 2014-09-26 | 2017-12-26 | Oracle International Corporation | High performant iOS template based application build system |
US9146962B1 (en) * | 2014-10-09 | 2015-09-29 | Splunk, Inc. | Identifying events using informational fields |
US9245057B1 (en) * | 2014-10-09 | 2016-01-26 | Splunk Inc. | Presenting a graphical visualization along a time-based graph lane using key performance indicators derived from machine data |
CN104267971A (en) * | 2014-10-20 | 2015-01-07 | 张璇 | Aspect-oriented trusted software process modeling method |
US9348563B1 (en) * | 2014-12-10 | 2016-05-24 | Sap Se | Bi-directional editing between visual screen designer and source code |
US10417577B2 (en) * | 2015-06-05 | 2019-09-17 | Facebook, Inc. | Machine learning system interface |
KR102071335B1 (en) * | 2015-06-11 | 2020-03-02 | 한국전자통신연구원 | Method for generating workflow model and method and apparatus for executing workflow model |
-
2016
- 2016-02-24 US US15/052,449 patent/US10275221B2/en active Active
- 2016-02-24 CN CN201680013996.7A patent/CN107533453B/en active Active
- 2016-02-24 EP EP16762121.8A patent/EP3265905A4/en not_active Withdrawn
- 2016-02-24 WO PCT/US2016/019360 patent/WO2016144546A2/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143754A1 (en) | 2011-03-31 | 2014-05-22 | Charles E. Henderson | System and method for the structuring and interpretation of organic computer programs |
Non-Patent Citations (1)
Title |
---|
See also references of EP3265905A4 |
Also Published As
Publication number | Publication date |
---|---|
US10275221B2 (en) | 2019-04-30 |
EP3265905A2 (en) | 2018-01-10 |
WO2016144546A3 (en) | 2016-11-03 |
US20160259626A1 (en) | 2016-09-08 |
CN107533453B (en) | 2021-06-01 |
EP3265905A4 (en) | 2018-11-21 |
CN107533453A (en) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10275221B2 (en) | Systems and methods for generating data visualization applications | |
JP6985441B2 (en) | Workload automation and data system analysis | |
US11086917B2 (en) | Design-time information based on run-time artifacts in transient cloud-based distributed computing clusters | |
JP6815456B2 (en) | Processing data from multiple sources | |
US11663033B2 (en) | Design-time information based on run-time artifacts in a distributed computing cluster | |
US9800675B2 (en) | Methods for dynamically generating an application interface for a modeled entity and devices thereof | |
US9996592B2 (en) | Query relationship management | |
US9754230B2 (en) | Deployment of a business intelligence (BI) meta model and a BI report specification for use in presenting data mining and predictive insights using BI tools | |
US9298596B2 (en) | Test framework for computing jobs | |
EP2577507B1 (en) | Data mart automation | |
US9342536B2 (en) | Intent based automation of data management operations by a data management engine | |
Suresh et al. | Building scalable and flexible cluster managers using declarative programming | |
JP2019530121A (en) | Data integration job conversion | |
Balliu et al. | A big data analyzer for large trace logs | |
Omitola et al. | Capturing interactive data transformation operations using provenance workflows | |
Scherbaum et al. | Spline: Spark lineage, not only for the banking industry | |
Chellappan et al. | Practical Apache Spark | |
US9779132B1 (en) | Predictive information discovery engine | |
Gibson et al. | Application of Named Graphs Towards Custom Provenance Views. | |
Hilal et al. | An OLAP Endpoint for RDF Data Analysis Using Analysis Graphs. | |
Pribeanu | An approach to task modeling for user interface design | |
Sundaravarathan et al. | MEWSE: Multi-engine workflow submission and execution on apache yarn | |
Saxon et al. | Opening the black-box of model transformation | |
Pribeanu | Task modeling for user interface design: a layered approach | |
EP3289454B1 (en) | Online data management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16762121 Country of ref document: EP Kind code of ref document: A2 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
REEP | Request for entry into the european phase |
Ref document number: 2016762121 Country of ref document: EP |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16762121 Country of ref document: EP Kind code of ref document: A2 |