A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The following commonly owned, co-pending United States patents and patent applications, including the present application, are related to each other. Each of the other patents/applications are incorporated by reference herein in its entirety:
U.S. patent application Ser. No. 10/______, entitled APPLICATION BUILDER, by Jamie J. No et al., filed ______, 20______ (Attorney Docket No. 48-0C/988US).
The field of the invention relates generally to the applications, such as applications for mobile device.
The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also be inventions.
In conventional database systems, users access their data resources in one logical database. A user of such a conventional system typically retrieves data from and stores data on the system using the user's own systems. A user system might remotely access one of a plurality of server systems that might in turn access the database system. Data retrieval from the system might include the issuance of a query from the user system to the database system. The database system might process the request for information received in the query and send to the user system information relevant to the request. The ease of use and efficient retrieval of accurate information and subsequent delivery of this information to the user system, in a manner that is easy to understand, has been and continues to be a goal of administrators of database systems.
It also may be desirable to access servers by mobile devices. To access a server efficiently for a particular purpose it may be desirable to have an application tailored for that purpose and/or server.
Unfortunately, conventional database approaches might become inefficient, if for example, if the relationship is relatively complex. A database system may also process a query relatively slowly if, for example, a relatively large number of users substantially concurrently access the database system. Also, writing an applications can be tedious and may require extensive programming knowledge.
In the following drawings like reference numbers are used to refer to like elements. Although the following figures depict various examples, the one or more implementations are not limited to the examples depicted in the figures.
General Overview
Systems and methods are provided for Application Builder.
As used herein, the term multi-tenant database system refers to those systems in which various elements of hardware and software of the database system may be shared by one or more customers. For example, a given application server may simultaneously process requests for a great number of customers, and a given database table may store rows for a potentially much greater number of customers. As used herein, the term query plan refers to a set of steps used to access information in a database system.
Next, mechanisms and methods for providing Application Builder will be described with reference to example embodiments.
System 100 provides tools via which a user may create an application. Application may be a collection of tabs, in which each tab provides access to an object. Packaging a particular group of objects together in an application and optionally setting up a workflow within the application may facilitate certain tasks. Server 110 stores code for creating an application for smart phone. Server 110 may be part of a multi-tenant database. Tenants of the multi-tenant database may access the code, via a user interface, and create an application. The application created may facilitate performing certain tasks on the multi-tenant database that the tenant may perform often. Alternatively, the application created may be made available to customers of the tenant for accessing the tenant's server and/or portions of the multi-tenant database set aside for the tenant.
Network 112 may be any combination of different type of communications networks. For example, network 112 may be any combination of Local Area Networks LANs), Wide Area Networks (WANs), wireless networks, and/or phone networks. Server 110 communicates, via network 112 with user devices.
User device 114 may be a system used by a user that has a permission level for making an application. For example, user device 114 may be a developer or administrator that works for or is associated with a tenant or the multi-tenant database. User device 114 may be any network device. A network device is any device that can connect to, and communicate via, a network. User device 114 may be a computer, laptop, smart phone, and/or tablet computer, for example. User device 114 may run a browser (an HTTP client) for communicating with server 110. The browser interprets rendering information from server 110, and displays an image specified by rendering information, in the display area browser. Alternatively, user device 114 may download an application from server 110 and communicate with server 110, via the application. Server 110 sends information to user device 114, which when interpreted or consumed by user device 114, determine which page of the application to display on the user device 114 and provides information, which is used for populating the page of the application being displayed. Whether a browser or an application is for accessing server 110, server 110 sends information, via network 112 to user device 114. User device 114 consumes the information sent, and then displays a page on the user device determined by the information sent.
User device 114 may be a system used by a user that accesses server 110. User device 114 may be any user device or network device. In at least one embodiment user device 116 is a smart phone. User device 116 may download an application created by user device 114 from server 110 or from a server of a tenant of the multi-tenant database system, and communicate with server 110, via the application. Server 110 sends information to user device 116, which when interpreted or consumed by user device 116, determine which page of the application to display on the user device 116 and provides information, which is used for populating the page of the application being displayed.
Server system 200 may be an embodiment of server 100. Graphical User Interface (GUI) 204 includes code for producing rendering information or other information, which when consumed by user device 114 causes pages to appear on user device. the user interacts with the pages, and the interactions causes the messages to be sent to server system 204, directing server system to construct an application having the features chosen by the user. GUI 204 allows the user to interact with the server 110, via a network 112, by providing webpages to user systems having various fields and for users to fill in and various active icons that the user may interact with to request server 110 to perform various activities. Application builder 202 assimilates the data inputted by the user to the server, via GUI 204, and thereby creates the application. Multi-tenant database 206 provides a system in which various elements of hardware and software of the database system may be shared by one or more tenants. For example, the server 110 may interact with one or more customers simultaneously by providing access to application builder 202, via GUI 204.
In this specification, the term on-demand multi-tenant database system refers to a database in which portions of the database are rented to tenants. Each tenant may have their own officers, employees, and customers, whom have a level of access to the multi-tenant database as a result of the portion of the multi-tenant database that the tenant has access to as a result of being a tenant of the multi-tenant database. Multi-tenant database may have administrators that oversee the entire multi-tenant database. Additionally, each tenant may assign various employees or officers the role of administrator to oversee the portions of the database to which the tenant has access.
The term on-demand means that the database is provided to the tenant as a service. Beyond learning the various features of the GUI provided by the multi-tenant database, the tenant does not need to know how the multi-tenant database works and does not need to maintain the multi-tenant database. In an embodiment, the on-demand multi-tenant database is a relational database including schema having many database tables that are related to one another. In this specification that database tables may be referred to as database objects or as just simply tables or objects. The programming objects of the application created by application builder 202 may include one or more application pages of the application, and may retrieve data from the database objects of the multi-tenant database (e.g., by causing database commands to be executed). One or more of the programming objects of the application created may be interfaces for specific database objects of the multi-tenant database system.
In step 304b, the server 110 determines the method selected based on the selection received in step 304a. If it is determined in step 304b, that in step 304a, the user decided to use a template to create the application, then in step 304c, server 110 sends the user a choice of templates to choose from. In step 304d, the server receives the user's choice of templates. In step 306, server 110 sends the user one or more webpages with choices related to objects that the user can add to the application. For example, the user may be sent a choice of whether the to create a new object or to add an object that already exists. If the user selects to add an object that already exists, the use may be offered a choice of objects to select from. In step 308, the server 110 receives the user selections for adding one or more objects to the application. In step 310, the server 110 receives a request to generate an application and generates the application. In an embodiment, on each webpage sent to the user has a link (e.g., a button), which if selected by the user causes the application to be created. If the user selects link for creating an application after just assigning a name to the application, without having performed any other steps, then an application is created having nothing more than a name, but the application does not do anything. If the user selects the link for creating an application after selecting a template, but not doing anything else the application will be essentially no different than the template.
Returning to step 304b, if it is determined that the user selected another method (other than selecting a template), then in step 310b, webpages are sent to the user for creating the application via the other method selected. In step 310c, the server 110 receives the pages, objects, and application created by the user. There may be multiple exchanges between the user device and server as the user uploads portions of the application. After step 310c, method 300 proceeds to step 310a.
After step 310a, in step 311, the server 110 sends the a webpage for building pages of the application. The pages may be part of one or more particular objects. Also, in step 311, server 110 receives input from the user for building pages, which may start a new page or revise (e.g., change, add, or remove a feature) an existing page. In step 311, the user may change a page and then receives a new page for building pages that reflects the change made. Step 311 may involve several instances of the user uploading a revision to one or more application pages, and the server returning a webpage reflecting the revisions uploaded by the user. In step 312, the server 110 enables application customization. For example, server 110 sends one or more webpages to the user that have options for the user to select to customize the application by editing (e.g., changing adding, and/or deleting) the objects, fields, and/or pages of the application. In step 314, the server 110 receives the user-generated customization. In step 316, the server 110 generates the customized application. Steps 312, 314, and 316 may be repeated multiple times to further customize the application.
In at least one embodiment, each of the steps of method 300 is a distinct step. In another embodiment, although depicted as distinct steps in
If the user device sent a selection of a template, then method 400 proceeds to step 410. In step 410, the user device receives the application template options page from the server 110, which may include a choice of templates to use as the starting point of the application. Also as part of step 410, the user enters a selection and sends the selection to the server. In step 416, the user device 114 receives more template options as part of the Application Builder page, via user device 114. For example, the user may be offered an option to add objects to the application. The choices offered may include an option to create a new object and/or to add an already created object. There may be a library of objects that were created by other users and/or that a collection of objects and/or templates for objects may be included with the application upon installation. In step 418, the template options are displayed on the user interface, in step 418. After selecting the desired template, in step 420, the user device 114 then sends template preferences to the server. Steps 416, 418 and 420 may be repeated multiple times. In repeating steps 416, 418, and 420 each repeat one or more of steps 416, 418, and 420 may be skipped.
Returning to step 408, if the user chooses to use a spreadsheet to create the application, in step 421a, the user device receives a spreadsheet that may be used for creating an application. Also, as part of step 421a the user makes entries into the spreadsheet and uploads the entries to the server. After step 421a, the method 400 proceeds to step 422.
Returning to step 408, if the user chooses to create the application from scratch, in step 421b, the user device receives a webpage for creating an application from scratch, which may provide tools to assist with creating the application. Also, as part of step 421b the user makes entries creating the application and uploads the entries to the server. After step 421b, the method 400 proceeds to step 422.
In step 422, the user creates an application by selecting a link (e.g., a button), which sends a message to server 110 requesting that an application be created according to the preferences selected in the prior steps. Depending on whether the user chose to add a new object to the application (prior to creating the application), a different branch of the flowchart is followed. If the user chose to add a new object to the application, then in step 426 user device 114 then receives a list of pages that can be edited. In another embodiment, the user may be able to create the specifics of a new object, add, and/or edit pages in objects prior to selecting a link to create the application. As part of step 426, the user selects a page and/or object to edits, and sends the choice to the page to server 110. In response, in step 428, the user device 114 receives a webpage with elements for editing and/or creating the application page selected, by adding elements to the application page. The elements may include fields and elements, such as text fields, check boxes, radio buttons, static and dynamic elements.
In step 430, in step in step the fields received by the user device are displayed. In step 432, the user device 114 detects and sends new object input and selected existing objects to the server 110. Steps 426, 428, 430, and 432 may be repeated multiple times (not necessarily in the same order), adding, creating, editing, and removing multiple elements in multiple objects. At one or more points while implementing steps 426, 428, 430, and 432, the user may be presented with, or be able to navigate to, a page having a create or update application link.
Steps 434-442 are implemented when the user device 114 navigates to a page having a button to create or update the application (which may be during steps 426-432), and the user decides to select the button to create and/or update the application. In step 436, the application link (e.g., button) is displayed on user device 114, and the user selects. In step 438, the user interface detects that the user has selected the create or update application link. In response, in step 440, user device 114 sends a request to update or create the application. In step 442, the user device receives the final generated application from the server 110.
In at least one embodiment, each of the steps of method 400 is a distinct step. In another embodiment, although depicted as distinct steps in
In step 518, the server 110 determines which method of creating an application was selected, and depending on the selection, server 110 sends the appropriate webpage to user device 114. If in step 518, it is determined that the user selected to create the application from a template, method 510 proceeds to step 520. In step 520, the server 110 can then send the application template option page to the user device, in step, which may include a choice of templates. For example, the template webpage may include a predefined set of templates for use in application generation. Alternatively, if in step 518, it is determined that the user selected to create the application from a template, method 510 proceeds to step 522. In step 522, the server 110 sends the spreadsheet page to the user device 114, thereby enabling the user to create the an application using the spreadsheet. Alternatively, in step 524, the server 110 can send a webpage for creating an application from scratch to the user device 114. In step 526, the server 110 receives the template selection from the user device. In step 528a, the server 110 sends to the user device 114 the option to import objects and to create objects. In step 528b, server 110 receives the selection from user device 114. After step 522, after step 524, or after step 528b, method 510 proceeds to step 528c. In step 528c, the user is sent a link create the application. Also, in step 528c, the server 110 receives the user selection of the link, and creates the application with the already created objects and with pages for the new objects, even though the new objects need to be further built. In an alternative embodiment, the user may also build the new objects before creating the application. The user may have also been sent the link to create the application at earlier and/or later steps, and server 110 may receive are request to build the application at earlier and/or later times.
In step 529, the server 110 determines whether there is a new object that needs to be built. If it is determined that there is a new object that needs to be built, then method 510 proceeds to step 530. In step 530, the user is sent a list of objects to create and/or edit, and (if a selection of an object is made by the user) in response server 110 receives a selection of an object to create and/or edit (although not explicitly indicated in the flowchart, the user could also choose to move to a different task instead). In step 532, in response to receiving a selection of an object, the server sends a webpage for creating and/or editing the selected objects to the user device 114. In step 534, the server receives the selected existing objects and any newly created objects from the user device. In step 536, the server generates a specific page on the Application Builder for each object received. Steps 530, 532, 534, and 536 may be implemented multiple times, optionally, in different orders to modify and/or create multiple objects.
In an embodiment, steps 538-544 are implemented when the server 110 receives a request to generate the application, which may be when the server 110 has completed page generation for each object received. In step 538, the server sends the enabled create application link to the user device. Upon the user's decision to generate the application, the server receives the create application selection in step 540. The create application link may be available for the user to selected throughout steps 530-536. The application is generated in step 542, and the server sends the current page or the Page Builder page to the user device in step 544.
In at least one embodiment, each of the steps of method 510 is a distinct step. In another embodiment, although depicted as distinct steps in
In step 616, the server receives the user's selection of a feature to add to, or modify on, the application page. In an embodiment, the feature may be a page element (such as an image, a content area, or a section) or a field (such as a text field or numerical field). Depending on whether the selection was for a page element or for a field method 600 proceeds to a different step. If it is determined that a page element was selected, method 600 proceeds to step 618. In step 618, the server 110 sends a webpage requesting the user to select features of element being created. For example, the page element features may include font, size, dimensions, a background, a text, a design, a color, etc. In step 622, the server 110 receives the user's selection of the features. Optionally, in step 624, the server 110 sends a webpage requesting that user make choices regarding sub-features of the page element. Optionally, in step 626, the server 110 receives a selection of the sub-features.
Returning to step 616, if it is determined that a field was selected, method 600 proceeds to step 630. In step 630, the server 110 sends a choice of features of the field of the user to select. Field features can include, whether the field the is dynamic, an auto computed number, a rollup. A formula, a relationship field, a lookup field, a master-detail field, static field, a text field a numeric field, a text area, a check box, a picklist, or a location, for example. In step 632, the server 110 receives the selected field features from the user device. In optional step 634, the server 110 sends a choice of field sub-features in the Page Builder to user device 114 and, in step 636, server 110 receives a selection of the sub-features from the user device 114. In step 638, after the page element and field sub-features are sent to the user device 114, the server 110 then receives user input further customizing element of the field. For example, as part of step 638, server 110, if the field is for a formula, server 110 receives the specific formula or if the field is a static text field, the server 110 receives the specific text for the field. In step 640, the server then generates the new Page Builder webpage incorporating the customized field, as a representation of how the application page will appear when the file is incorporated. In step 642 server 110 sends the Page Builder to the user device 114.
In at least one embodiment, each of the steps of method 600 is a distinct step. In another embodiment, although depicted as distinct steps in
In step 712, the user device receives user selection for formatting options and then sends said selection to the server in step 714. In at least one embodiment, the user then receives page element features and sub-features in steps 716 and 718, respectively. For example, the page element features may include font, size, dimensions, design, etc. In step 720, the user displays the page element sub-features, and then receives user input and page element sub-feature selection in step 722.
In a second embodiment, the user receives field features and sub-features from the server in steps 724 and 726, respectively. Field features can include, for example, work order, priority sequence, location, problem description, etc. In step 728, the user displays field sub-features on the interface between the user and server. In step 730, the user receives input and selection of field sub-features. After the user device has received the input/selection of page element and field sub-features, the user sends the customizable feature selection and user input to the server pursuant to step 732. In step 734, the user receives the customized Page Builder page with the incorporated user input and feature selection. In step 736, the interface displays the customized Page Builder page for the user to view.
In at least one embodiment, each of the steps of method 700 is a distinct step. In another embodiment, although depicted as distinct steps in
Social network 800 may be any social network, such as Facebook, Twitter, Linkedin, or Chatter, for example. In an embodiment, social network 800 is associated with the multi-tentant database 206 (
Homepage 900 is a homepage of a web application for creating applications for other devices, such as smart phones and tablet computers. Homepage 900 displays a variety of types of information that a user may want to interact with. Homepage 900 may include links to other applications the user can select from when generating an application. In at least one embodiment, homepage 900 may include a variety of application templates that are located in different boxes. Selecting one of the application templates in one of the boxes causes a webpage to be presented that shows information about the application template. (In an embodiment, when the user's cursor hovers over an icon for one of the applications some of the information listed in the application template webpage may be displayed, such as the template author and the number of votes received for and/or against the document.)
Recently used application list 901 is a list of applications presented to the user based on the number of times the user has selected to create a particular application. Create application link 902 is optional. When create application link 902 is selected, a message is sent to server 110 to send a webpage that start the process of creating an application. Application 904 is one of the applications created by server 110. Homepage 900 includes a list of applications, and application 904 is an example of one of the applications. Description 906 is a description of one of the applications. Status 908 is the status of one of the application. Status 908 may have values, such as complete on in-progress, for example.
New application prompt 1002 appears in response to selecting new application link create application link 802 (
New application prompt 1002 is an interface that allows users to define certain aspects of the application being generated. In other words, when a user selects a link to create an application 802 (
Application method options 1005 is a region in new application prompt 1002 that contains a pre-defined selection of options of methods for creating an application. Method options 1006 are the methods that the user may select, which are listed in application method options 1005. Method options 1006 may be capable of being utilized when generating a new application. When a method option 1006 is selected, the method options 1005 expands to display additional options based on the user selection (the webpage associated with the expanded method options 1005 will be discussed in conjunction with
New application prompt 1002, close prompt 1002a, application name box 1003, input name field 1004, application method options 1005, method options 1006, create application link 1008, and were explained above in conjunction with
Template choices 1102 allows the user to select from predefined templates for use in application generation. In at least one embodiment, when the user selects a desired format, method option 1006 is expanded allowing a limited number of available template choices 1102 to be displayed. In other words, the display of template choices 1102 is dependent on the user decision to generate the application using a template. Change 1103, when selected, causes server 110 to offer other choices for the method used for creating the application. For example, the user may decide to start making an application from a spread sheet rather than form a template. Template choices 1102 present to the user a choice of templates that the user may select as the template for creating the user's application. In other words, a limited number of available template choices 1102 are displayed upon user selection of template from method options 1006 as the method for creating the application, if the user desired template option is not among those displayed, the user can select change 1103 to select from a larger pool of available template options. The user selection will then be displayed in the expanded method option 1006, enabling user to select desired template now available in template option field. Change 1103 allows the user to change selection of the method of making the application that had previously been chosen from method option 1006 (
Object import box 1104 allows the user to choose whether to add objects to the application in addition to the objects already included in the template used for making the application. In other words, object import box 1104 enables the user to import objects for use within the application being generated. Selecting object import box 1104 causes server 110 to send to user machine 114 one or more webpages with options that the user may choose, which when selected cause server 110 to add one or more objects to the application. In at least one embodiment, the user may select from previously created objects, and then the data associated with the object will be incorporated within the application being generated. In other embodiments, the user may select from predefined objects, lacking any associated data, and at a later time the user may decide whether to create data to be associated with the selected object.
Homepage 900 (interface), recently used application list 901, new application prompt 1002, close prompt 1002a, application name box 1003 having an input name field 1004, application method options 1005 having method options 1006, create application link 1008, links to other applications 1210, template choices 1102 having a change 1103 and object import box 1104 were explained above in conjunction with
Existing object box 1202 indicates whether the to include objects that already exist. Multi-tenant database 1006 may several objects that have already been created and/or other users associated with the tenant may have already created objects, which are now available for other users to choose from. The multi-tenant database may provides a series of objects for incorporation into applications, which act as interfaces to objects that are provided to each tenant. Selected objects 1204 is a field in which the objects that were already created are listed, which were selected by the user. The user adds any already created objects desired to object field 1204, and application builder 202 will incorporate those objects into the applications generated. Existing object box 1202 coupled with a selected objects 1204, allows the user to select a plurality of objects previously created. In at least one embodiment, when the user affirmatively selects object import box 1104, interface 1200 is expanded and the user may enter previously created objects in selected objects 1204. Alternatively, objects previously created by the user may be automatically listed in selected objects 1204, and is then presented the option to deselect any existing objects the user does not wish to be incorporated into the application being generated and add other objects that the user also wants incorporated in the application. In other words, existing object box 1202 and selected objects 1204 provide a user the ability to incorporate existing objects and the data associated with those objects thereby enabling the generation of a functional application by leveraging the existing information contained in previously generated objects.
Include social network 1206, allows the user the option of including Chatter. In at least one embodiment, Chatter enables real-time enterprise collaboration within the application being generated. By selecting include social network 1206, a link to social network is included in the application created. Additionally, when posting the application to that social network for others to use, a link for creating a new application may also be posted.
New object box 1208 is a box for listing new objects that the user wishes to create. New object name field 1210 allows the user to choose a name for the new object. New object box 1208 coupled with new object name field 1210, causes the application builder 202 to initiate the creation of new objects that will be incorporated in the application being generated. In at least one embodiment, new object name field 1210 enables the user to input a title for the object being created which will then be associated with that specific object that will be created later. In at least one embodiment, the user is not limited by the number of objects previously created when generating an application. Rather, the user may include existing objects and/or generate a new object. New-object type 1212 designates a type to the object being created. The type may be indicative of the properties of the object, such as the types of data and/or method accessing the data retrieved by the object. An example of an object type is “cloud console.” Additional object creation box 1214 enables the user to list names of additional objects that the user would like to create and use within the application being generated. Selecting additional object creation box 1214 may cause another pair of boxes (a second new object creation box and new object type box) to appear in new object box 1208.
Application overview page 1300 displays information about pages created from objects imported or created (
Overview selection 1316 allows the user to navigate to various additional overview pages. In the current embodiment, “pages” is selected among the available options, which list the pages of the application. Selecting a different option within navigation field 1316, causes an overview page of the selected option to be rendered and a plurality of elements, specific to that selection, are thereby presented. The user may also select components to see a list of available components, which may include components installed in the application and other components made by others that are available in a component exchange. The user may also select to view a list of assets included in the application. Selecting from one of the options within the navigation field 1316 is discussed in conjunction with
New page tab 1318 provides the user the ability to create and/or import additional objects. In other words, the user is not limited by the initial process described above (
Actions 1320 displays a list of actions available to the user to perform, which may just be to edit or delete one of the pages listed. Edit/delete tab 1322 initiates a process that allows the user to delete or edit an object. Page name 1324 lists the names of pages of the application to which the action may be applied. Created by indicator 1326 associates a name or unique identifier with the user that created the specific page listed. Similarly, modified by indicator 1328 associates a name or unique identifier with the user that most recently modified a specific page. Search bar 1330 includes one or more links and/or fields that allow a user to formulate a search query to search for a particular page of the application. As a result of interacting with search bar 1330, a search may be conducted for elements meeting the search query. For example, search bar 1330 allows a user to enter a combination of key-words, which may be used as part of a search query to find a page of the application. Search button 1331, when selected, initiates a search based on a search query formulated from the current entries in search bar 1330. After the search has been initiated, a result webpage may be presented. View indicator 1332 provides a representation of current view being displayed. For example, view indicator 1332 may represent a list view, which is the case in
Components 1334, when selected, causes application builder 202 to produce a list of components and bring the user to a page in which the user can create new components or open and edit components that were already created. Installed components 1336 lists components that are installed in the current application. Component exchange 1338 is a location where users post components for other users to use the components. Assets 1340 brings the user to a page listing assets, allowing the user to create new assets and/or edit already created assets.
Name 1302b is the name of the application that is used by the application builder 202 to identify the application. Label 1304b is a text label placed on the application to identify the application to users. In an embodiment, name 1302b and label 1304b are required fields that must be filled in by the user. Description 1306b is a description of the application. Filling out page 1300b completes the first step of creating an application.
Page 1300c is used for adding a logo to the application, which may be used to identify the application in a menu, for example. Insert-an-image 1302c, when selected, imports an image file that is used as the logo of the application. In an embodiment, opens a box that may be navigated to a location where an image file may be found. Once the image file is found, the user selects the image file, and the image file is imported into the application. Filling out page 1300c completes the second step of creating an application.
Available objects 1302d include a list of objects that are available for use in the application. Incorporated objects 1304d includes a list of objects that have already been incorporated into the application. The objects of available objects and incorporated objects may be database objects, such as database tables (e.g., which are associated with a relational database) or other objects. Add icon 1306d adds objects from the available objects to the incorporated object, incorporating the object into the application. The user selects an available object 1302d and then selects the add icon 1306d, and the selected object is added to the application, appearing in the incorporated objects 1304d. Remove icon 1308d removes objects form the incorporated objects placing the removed objects back into the available objects. The user selects an incorporated object 1304d and then selects the remove icon 1308d, and the selected object is removed from the application, removing the selected object from the incorporated objects 1304d placing the object in the available objects 1302d. Using page 1300d to add objects to the application completes the third step of creating an application.
Profiles 1302e identify different the permissions of different types of users. Different roles (e.g., managers, salespeople, accountants, etc.) may be assigned different profiles, which may be associated with different privileges. Visibility indication 1304e indicates whether the application is visible to the associated profile (and thereby can be allowed to use the profile). Default indication 1306e indicates whether by default uses with that profile are given permission to use the application. Filling out page 1300e completes the fourth step of creating an application.
Available actions 1302f are actions that are available for a given application, which may include edit and/or delete. Edit allows the user to edit the application associated with the available action, and delete allows the user to delete the associated application. Applications 1304f is a list of names of the applications, which may be links opening the application to use the application. Custom indication 1306f indicates whether the application was custom made or an application provided by the system for users to use. Description 1308f describes the purpose of the application. Buttons 1310f may include buttons for adding a new application, opening page 1300b for quickly starting a new application or reordering the order that the applications are listed in. Page 1300f allows the user to further customize the application after the application is created.
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312 and function bar 1314 were explained above in conjunction with
Object page 1400 is a webpage that represents the corresponding page of the application. Object page 1400 may be used to add, delete, and/or modify features of a page of the application. Object page 1400 allows a user to visualize and/or interact with the application page created, which is coupled to the selected one of object tabs 1312. In other words, object page 1400 enables user to customize each page in a plurality of ways, thereby allowing the user to customize the application.
Search bar 1402 allows a user to search for features of the object page 1400. When selected, search bar 1402 initiates a search based on a search query formulated from the current entries in search bar 1402. Element list 1404 includes one or more links and/or fields representing components capable of being incorporated within object page 1400. In other words, a user can select from a plurality of page elements form element list 1404, and the selection will add an element (e.g., a static element) to the page which can be further customized. Field list 1406 includes one or more links and/or fields capable of being incorporated within object page 1400. In other words, a user can select from a plurality of field options from field list 1406, and the selection will add a field (e.g., an input field and/or a static field) to object page 1400. Interaction with and/or customization utilizing field list 1406 will be discussed below in conjunction with
Representative interface 1408 displays the layout of the specific page coupled with the selected object tab 1312. Additionally, representative interface 1408 enables a user the ability to interact with the various customizable features and/or components, discussed above, while visualizing how those features and/or components will look in the finished application. In at least one embodiment, representative interface 1408 is specific to the layout of a user system 114 that is an iPad, which is
In at least one embodiment, representative interface 1408 may include page selector 1410, task bar 1412, task elements 1413a-d, action bar 1414, and a plurality of customizable fields. Page selector 1410 provides user the ability to navigate between pages while interacting with the finished application on user system 114. In other words, page selector 1410, when selected, initiates the rendering of the selected page to occur on user system 114. Task bar 1412 provides user the ability to interact with a finished application through one of the task elements 1413a-d. Task elements 1413a-d may be embodiments of function bar 1314. The icons used for task elements 1413a-d are suggestive of many different types of functions, such as search, add, copy, cut, paste and user logout. Action bar 1414 allows users to interact with various action, create new actions and/or edit the flow of actions within a specific page. Interacting with action bar 1414 is discussed in conjunction with
Create new field page 1500 may be used to create a specific field not present in object page 1406 (
Interaction 1600 occurs when the user selects a specific field, which is “text area” in
Create new field page 1500, close box 1502, dynamic fields 1504, relationship fields 1506, static fields 1508, save tab 1510, and close tab 1512 were explained above in conjunction with
Interaction 1900 occurs in response to when a user selects the field “picklist” in
Field properties 1902 may also include more detailed properties available through selection of one or more links within field properties box 1902, such as the font of the items in the picklist, or whether the picklist is displayed vertically or horizontally.
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312, function bar 1314 were discussed in conjunction with
Existing field 2002 is a field that has already been created. In the example of
Close box 1502, save tab 1510 and close tab 1512 were explained in conjunction with
Color 2204 is the color to which the background will change if the rule of rule box 2104 is met.
Interaction 2500 occurs when user selects an option create is “lookup” field to an object. In other words, selecting to create a lookup field causes interaction 2500 to be rendered and thereby field properties box 2502 presented. Field properties box 2502 may allow users to enter information about the selected field being created.
Close box 1502 and close tab 1512 were explained in conjunction with
Selected field tab 2608 displays fields selected. Add 2610 causes cross-object relationships to be created and incorporated. The result of user selection of “vehicles” 2603c is explained in conjunction with
Close box 1502 and close tab 1512 were explained in conjunction with
Search box 2705 includes one or more links and/or fields that allow a user to formulate a search query. As a result of interacting with the search box 2705, a search may be conducted for fields meeting the search query that are coupled to the object 2603a-c selected in object list 2602. For example, interacting with the search box 2705 allows a user to enter a combination of keywords, which may be used as part of a search query to assist user in finding the desired field. Selected fields box 2608 lists the fields that have been selected. Select 2709 is a tab, which when depressed, selects the highlighted field causing the field to be added to selected fields box 2608. Select 2709 initiates a process that results in the addition of the selected field to field box 2608. In at least one embodiment, select 2709 removes the information displayed in field list 2604 and field property list 2606 thereby enables user to begin the process of adding additional fields to be included within cross-object relationship entry.
In at least one embodiment, users may interact with available fields 2607a-h, thereby initiating a process that causes properties specific of a selected field of fields 2607b-h to be displayed. For example, interacting with field “account” 2607a results in “account” properties being presented. The “account” properties may include date purchase, date on field, name, model, lease end, location, and make.
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312 and function bar 1314 were explained above in conjunction with
Work order name box 2801 is a field that the user added to object page 1400, which provides an overview of general information pertaining to the work order in question. In at least one embodiment, this information could include vehicle type, date and time of the next reservation, and/or location of the vehicle. Basic details box 2802 is a field that the user added to object page 1400, which provides more specific information pertaining to the work order in name box 2801. The user has added fields object page 1400 that include a problem description, priority number, work order number, assignment to the user, case number, status, and/or date and time of the next reservation.
Vehicle information box 2803 is a field that the user added to object page 1400, which provides information pertaining to the vehicle that is the subject of the work order. In the example of
Action setting link 2804, when selected, causes action option box 2805 to be sent to the user device 114. In other words, action setting link 2804 provides a user with access to action settings, thereby enabling a user the ability to create new actions, edit existing actions and/or edit page flows by selecting the respective link contained in action option box.
Action option box 2805 includes a choice of links, which when selected, bring the user to a page for modifying actions. For example, the links in action option box may include edit and action, create an action, and edit page flows. A page flow is a sequence of pages that follow or “flow” one another in which when the user is finished interacting with one page the next page in the sequence is presented. The edit page flow link brings the user to a page in which the user can modify and/or create the sequence of pages that makes up a page flow.
Close box 1502 and save tab 1510 were explained above in conjunction with
New action page 2900 is a page that initiates adding actions to an object page 1312. Actions perform a sequence of actions, which may be determined by a set of logic rules, which may involve navigating to different locations in the application when a page event occurs. For example, action page 2900 allows a user to add an action to the webpage. In at least one embodiment, new action page 2900 allows a user to create a selectable action that is presented to a user when he/she selects and/or hovers over action bar 1414. Button properties 2902 is a set of fields into which the user enters information that characterize and/or define the action being created. Button properties 2902 allow a user to enter unique information related to the action being created in new action page 2900. For example, if user creates an action to display user information, user may wish to provide the action with a name and/or title that will allow recognition of the actions function. Button properties 2902 provide the user this ability. Button properties 2902 may include button label 2902a, button name 2902b, and trigger flow 2902c. Button label 2902a is a field into which a user enters an identifier, which will be displayed when user interacts with action bar 1414. Button name 2902b is a field into which a user enters an identifier to be associated with the action, which will be displayed within application builder 202 to identify the action. In at least one embodiment, selecting action setting link 2802 (
Trigger flow 2902c is a field that the user selects to determine the sequence of tasks that make up the action. Trigger flow 2902c allows a user the ability to determine the order in which actions take place. Interacting with trigger flow 2902c enables a user to assign an action to the button properties entered above. In at least one embodiment, trigger flow 2902c actions may include navigating the user from field to field that need to be filled in. For example, a manager may generate an application including an action that walks the end user through the process of filling out a work order. Trigger flow 2904 provides manager the ability to control the order of tasks that make up an action execute. In the example of
Action preview page 3000 provides user the ability to observe, how actions will look and/or perform on any number of user devices 4212, thereby enabling the ability to discover errors within an application before completion. Selecting action tab 3002 causes a different action associated with a specific object page 1312 (
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312, function bar 1314, overview selection 1316, component list 1334 consisting of installed components 1336 and component exchange 1338 were explained above in conjunction with
Component exchange page 3200 displays components that other users have posted, and also displays a variety of types of information that a user may want to interact with when determining whether to install a component. Component search bar 3202, when selected, initiates a search based on a search query. After the search has been initiated, server system 110 sends the webpage to user device 114 in the search result page, as the results of the search to the user. Search result page is discussed below in conjunction with
Top component box 3204 displays one or more of the most popular components available for installation. In at least one embodiment, the components displayed in top component box 3204 are determined by the popularity of a component. For example, the components displayed in top component box 3204 are the components that have been installed more times than any other component. In another embodiment, the popularity of a component could be based on the number times a component has been incorporated into an application, as opposed to being installed but not incorporated. Additional embodiments may base the popularity of a component on the price paid, the highest ranking, featured, whether the component is free, the number of installations over a specific length of time and/or any combination of factors already discussed and/or other factors instead of, or in addition to, those listed.
Component tile 3206 displays a variety of types of information that a user may want to use when determining which component to install. In at least one embodiment, component tile may include install tab 3206a, component name 3206b, and component rating 3206c. Selecting install tab 3206a initiates an installation of the component or initiates a process whereby the selected component is stored and subsequently available to a user within installed component page discussed below in conjunction with
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312, function bar 1314, overview selection 1316 and component list 1334 consisting of installed components 1336 and component exchange 1338 were explained above in conjunction with
Filter tab 3304 may allow the user to select from a menu of filters that have already been associated with system 200. In at least one embodiment, filters may include component creator, category, subject, location, and/or date created. Sort tab 3302 may allow a user to alter how search results are displayed in search result page 3300. For example, a user may sort the results based on price by selecting to display the results from highest price to lowest price or vice versa. Sort may include price high to low, price low to high, date released newest to oldest, date released oldest to newest, ranting high to low, rating low to high, download number high to low and download number low to high. Filter tab 3304 may allow the user to select from a menu of filters that have already been associated with system 200. In at least one embodiment, filters may include component creator, category, subject, location, and/or date created.
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312, function bar 1314, overview selection 1316, actions 1320 and component list 1334 consisting of installed components 1336 and component exchange 1338 were explained above in conjunction with
Installed component page 3400 may display the components that are already installed and a variety of information specific to components installed by a user. New component link 3402, when selected, initializes a process of adding a new component to the object, and may allow users to install additional components. When selected, new component tab 3402 causes component exchange page 3200 to be rendered on the user device 114, having an enabling selection of new components. Action 3403 is an action associated with the component listed. The action may be performed by the component, for example. Component name list 3404 displays names of one or more installed components in a list where the component is identified by component name 3206b. Status list 3406 displays the status of the one or more installed components. For example, if user incorporates a map component into page A, status list 3406 may indicate the location of the map component by displaying A. In another embodiment, status list may be left blank if a user has installed a component but not yet assigned the component to a page. Last modified list 3408 associates a name or unique identifier with the user who most recently modified a specific component.
New page tab interaction 3500 causes a new page to be created. Interaction 3500 occurs when new page tab 1318 is selected. When selected, causes the create new page box to be rendered on a user device, thereby allowing the user to import and/or create new objects which will be incorporated as new pages within the overview tab 1310. Create new page box is further explained below in conjunction with
Interface 3600 includes box for creating a new page, which has an expanded set of options for designing applications and import and/or creation objects. Page name box 3601 includes one or more fields into which a user enters the page name. As a result of entering the name into name box 3601, a name will be associated (stored) with the page. For example, input name field 3602 allows a user to enter a combination of letters, symbols, and/or numbers which will be stored with the application and will allow the user to find and interact with the name's page in future embodiments. In at least one embodiment, if no combination of letters, symbols, or numbers is entered, a generic name will be given to the application.
Page template box 3603 allows the user to select from predefined templates for use in page generation. In at least one embodiment, page template box 3603 displays a limited number of available template option fields 3604 from which the user can select. In other words, the user selects a particular layout from template option fields 3604, which determines the template for the new page.
Object import box 3605 allows the user to import a data object into the new page. In other words, object import box 3605 enables the user to import objects for use within the application being generated. In at least one embodiment, the user may select from previously created objects and the data associated with the object will be incorporated within the application being generated. In other embodiments, the user may select from predefined objects, lacking any associated data, and at a later time decide to create data to be associated with the selected object. In other embodiments, object import box 3605 may not have all of the elements listed and/or may have other elements instead of, or in addition to, those listed.
Object import box 3605 is similar to object import box 1104, with the exception that 3605 provides an expandable object option field 1206 that allows the user to select the type of object to import. In other words, upon selecting expandable object option field 1206, additional objects are displayed for the user to select.
Create page box 3607, when selected, brings the user to a object page 1400 that includes links and/or instructions for further customization of the page being generated (the webpage associated with the page overview interface is discussed in conjunction with
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312 and function bar 1314 were explained above in conjunction with
Object page 3700 is rendered and displayed on user device 114 as a result of user interaction with interface 3600. Blank region 3702 represents a blank region that is part of object page 3700, which is being added to an object. If nothing further is done, the resulting application will have a blank page that looks like blank region 3702. New field interaction 3704, represents a user selecting (and thereby requesting to add) a new component to blank region 3702. In new field interaction 3704, the user has selected “free component” from the list of components, in order to add the free component to object page 3700.
Interaction 3800 adds the free component to the work order application. Although the interface for interaction 3800 is titled create new application, interaction 3800 may be an interface for adding a component to an application. Object page 3700 may be customized via interaction 3800. Object name 3802 provides users with an expandable drop-down menu that, when selected, displays a pre-determined set of names from which user may choose. In at least one embodiment, object name 3802 may be termed “Work Orders.” Location field name 3804 provides user with an expandable drop-down menu that, when selected, displays a pre-determined set of names from which user may choose. In at least one embodiment, the location field name 3804 may be termed “Location.” Surrounding radius 3806 allows users to select a particular distance around the selected location that will be displayed on component 3902. In at least one embodiment, the surrounding radius may be 25 miles. List view name 3808 provides users with an expandable drop-down menu that, when selected, displays a pre-determined set of names from which user may choose. In at least one embodiment, list view name 3808 may be termed “All Open Work Orders.” Save button 3810 applies the customized features selected by user and renders component 3902 further described in conjunction with
User indicator 1302, logout 1304, help 1306, navigation tab 1308, overview tab 1310, object tabs 1312 and function bar 1314 were explained above in conjunction with
Component 3902 is an example of a component that may be added to an object. Although a map is used as an example of component 3902, other types of components may be substituted instead. As result of interaction 3800 (
Work order list 4002 displays a column of the various work orders with their respective problem descriptions. Work order location 4004 allows user to select a particular work order based on geographic location in order to visualize additional details.
User device 4100 may be a smart phone, tablet computer, other mobile device, or other user device that uses applications. User device 4100 is one embodiment of user device 116, for example.
Output system 4102 may include any one of, some of, any combination of, or all of a monitor system, a handheld display system, a speaker system, a connection or interface system to a sound system, an interface system to peripheral devices and/or a connection and/or interface system to a mobile device, intranet, and/or internet, for example.
Input system 4104 may include any one of, some of, any combination of, or all of a keyboard system, a track ball system, a track pad system, buttons on a handheld system, a scanner system, a microphone system, a connection to a sound system, and/or a connection and/or interface system to a mobile device, intranet, and/or internet (e.g., IrDA, USB), for example.
Antenna 4106 communicatively links output system 4102, input system 4104, memory system 4108, processor system 4110, and/or input/output system 4112 to each other. Antenna 4106 may include any means of sending signals through air or water via wireless communications. Some examples of means of sending signals through air and/or water include systems for transmitting electromagnetic waves such as infrared and/or radio waves and/or systems for sending sound waves.
Memory system 4108 may include, for example, any one of, some of, any combination of, or all of a long term storage system, such as a hard drive; a short term storage system, such as random access memory; a removable storage system, such as a floppy drive or a removable drive; and/or flash memory. Memory system 4108 may include one or more non-transitory machine-readable media that may store a variety of different types of information. The term non-transitory machine-readable medium is used to refer to any non-transitory medium capable carrying information that is readable by a machine. One example of a machine-readable medium is a computer-readable medium.
Processor system 4110 may include any one of, some of, any combination of, or all of multiple parallel processors, a single processor, a system of processors having one or more central processors and/or one or more specialized processors dedicated to specific tasks.
Input/output system 4112 may include devices that have the dual function as input and output devices. For example, input/output system 4112 may include one or more touch sensitive screens, which display an image and therefore are an output device and accept input when the screens are pressed by a finger or stylus, for example. The touch sensitive screens may be sensitive to heat and/or pressure. One or more of the input/output devices may be sensitive to a voltage or current produced by a stylus, for example. Input/output system 4112 is optional, and may be used in addition to or in place of output system 4102 and/or input device 4104.
Environment 4210 is an environment in which an on-demand database service exists. User system 4212 may be any machine or system that is used by a user to access a database user system. For example, any of user systems 4212 can be a handheld computing device, a mobile phone, a laptop computer, a work station, and/or a network of computing devices. User devices 114 and 116 are examples of user system 4212. As illustrated in
An on-demand database service, such as system 4216, is a database system that is made available to outside users that do not need to necessarily be concerned with building and/or maintaining the database system, but instead may be available for their use when the users need the database system (e.g., on the demand of the users). Some on-demand database services may store information from one or more tenants stored into tables of a common database image to form a multi-tenant database system (MTS). Accordingly, “on-demand database service 4216” and “system 4216” will be used interchangeably herein. A database image may include one or more database objects. A relational database management system (RDMS) or the equivalent may execute storage and retrieval of information against the database object(s). Application platform 4218 may be a framework that allows the applications of system 4216 to run, such as the hardware and/or software, e.g., the operating system. In at least one embodiment, on-demand database service 4216 may include an application platform 4218 that enables creation, managing and executing one or more applications developed by the provider of the on-demand database service, users accessing the on-demand database service via user systems 4212, or third party application developers accessing the on-demand database service via user systems 4212.
The users of user system 4212 may differ in their respective capacities, and the capacity of a particular user system 4212 might be entirely determined by permissions (permission levels) for the current user. For example, where a salesperson is using a particular user system 4212 to interact with system 4216, that user system 4212 has the capacities allotted to that salesperson. However, while an administrator is using that user system to interact with system 4216, that user system 4212 has the capacities allotted to that administrator. In systems with a hierarchical role model, users at one permission level may have access to applications, data, and database information accessible by a lower permission level user, but may not have access to certain applications, database information, and data accessible by a user at a higher permission level. Thus, different users will have different capabilities with regard to accessing and modifying application and database information, depending on a user's security or permission level.
Network 4214 is any network or combination of networks of devices that communicate with one another. For example, network 4214 can be any one or any combination of a LAN (local area network), WAN (wide area network), telephone network, wireless network, point-to-point network, star network, token ring network, hub network, or other appropriate configuration. As the most common type of computer network in current use is a TCP/IP (Transfer Control Protocol and Internet Protocol) network, such as the global internetwork of networks often referred to as the “Internet” with a capital “I,” that network will be used in many of the examples herein. However, it should be understood that the networks that the one or more implementations might use are not so limited, although TCP/IP is a frequently implemented protocol.
User system 4212 might communicate with system 4216 using TCP/IP and, at a higher network level, use other common Internet protocols to communicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTP is used, user system 4212 might include an HTTP client commonly referred to as a “browser” for sending and receiving HTTP messages to and from an HTTP server at system 4216. Such an HTTP server might be implemented as the sole network interface between system 4216 and network 4214, but other techniques might be used as well or instead. In some implementations, the interface between system 4216 and network 4214 includes load sharing functionality, such as round-robin HTTP request distributors to balance loads and distribute incoming HTTP requests evenly over a plurality of servers. At least as for the users that are accessing that server, each of the plurality of servers has access to the MTS' data; however, other alternative configurations may be used instead.
In at least one embodiment, system 4216, shown in
One arrangement for elements of system 4216 is shown in
Several elements in the system shown in
According to one embodiment, each user system 4212 and all of its components are operator configurable using applications, such as a browser, including computer code run using a central processing unit such as an Intel Pentium® processor or the like. Similarly, system 4216 (and additional instances of an MTS, where more than one is present) and all of their components might be operator configurable using application(s) including computer code to run using a central processing unit such as processor system 4217, which may include an Intel Pentium® processor or the like, and/or multiple processor units. A computer program product embodiment includes a non-transitory machine-readable storage medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the processes of the embodiments described herein. Computer code for operating and configuring system 4216 to intercommunicate and to process webpages, applications and other data and media content as described herein are preferably downloaded and stored on a hard disk, but the entire program code, or portions thereof, may also be stored in any other volatile or non-volatile memory medium or device as is well known, such as a ROM or RAM, or provided on any media capable of storing program code, such as any type of rotating media including floppy disks, optical discs, digital versatile disk (DVD), compact disk (CD), microdrive, and magneto-optical disks, and magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data. Additionally, the entire program code, or portions thereof, may be transmitted and downloaded from a software source over a transmission medium, e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, VPN, LAN, etc.) using any communication medium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as are well known. It will also be appreciated that computer code for implementing embodiments can be implemented in any programming language that can be executed on a client system and/or server or server system such as, for example, C, C++, HTML, any other markup language, Java™, JavaScript, ActiveX, any other scripting language, such as VBScript, and many other programming languages as are well known may be used. (Java™ is a trademark of Sun Microsystems, Inc.).
According to one embodiment, each system 4216 is configured to provide webpages, forms, applications, data and media content to user (client) systems 4212 to support the access by user systems 4212 as tenants of system 4216. As such, system 4216 provides security mechanisms to keep each tenant's data separate unless the data is shared. If more than one MTS is used, they may be located in close proximity to one another (e.g., in a server farm located in a single building or campus), or they may be distributed at locations remote from one another (e.g., one or more servers located in city A and one or more servers located in city B). As used herein, each MTS could include one or more logically and/or physically connected servers distributed locally or across one or more geographic locations. Additionally, the term “server” is meant to include a computer system, including processing hardware and process space(s), and an associated storage system and database application (e.g., OODBMS or RDBMS) as is well known in the art. It should also be understood that “server system” and “server” are often used interchangeably herein. Similarly, the database object described herein can be implemented as single databases, a distributed database, a collection of distributed databases, a database with redundant online or offline backups or other redundancies, etc., and might include a distributed database or storage network and associated processing intelligence.
User system 4212, network 4214, system 4216, tenant data storage 4222, and system data storage 4224 were discussed above in
Application platform 4218 includes an application setup mechanism 4338 that supports application developers' creation and management of applications, which may be saved as metadata into tenant data storage 4222 by save routines 4336 for execution by subscribers as one or more tenant process spaces 4304 managed by tenant management process space 4310 for example. Invocations to such applications may be coded using PL/SOQL 4334 that provides a programming language style interface extension to API 4332. A detailed description of some PL/SOQL language embodiments is discussed in commonly owned co-pending U.S. Provisional Patent Application 60/828,192 entitled, PROGRAMMING LANGUAGE METHOD AND SYSTEM FOR EXTENDING APIS TO EXECUTE IN CONJUNCTION WITH DATABASE APIS, by Craig Weissman, filed Oct. 4, 2006, which is incorporated in its entirety herein for all purposes. Invocations to applications may be detected by one or more system processes, which manages retrieving application metadata 4216 for the subscriber making the invocation and executing the metadata as an application in a virtual machine.
Each application server 4300 may be communicably coupled to database systems, e.g., having access to system database 4225 and tenant data 4314, via a different network connection. For example, one application server 43001 might be coupled via the network 4214 (e.g., the Internet), another application server 4300N-1 might be coupled via a direct network link, and another application server 4300N might be coupled by yet a different network connection. Transfer Control Protocol and Internet Protocol (TCP/IP) are typical protocols for communicating between application server 4300 and the database system. However, it will be apparent to one skilled in the art that other transport protocols may be used to optimize the system depending on the network interconnect used.
In certain at least one embodiment, each application server 4300 is configured to handle requests for any user associated with any organization that is a tenant. Because it is desirable to be able to add and remove application servers from the server pool at any time for any reason, there is preferably no server affinity for a user and/or organization to a specific application server 4300. In at least one embodiment, therefore, an interface system implementing a load balancing function (e.g., an F5 Big-IP load balancer) is communicably coupled between the application servers 4300 and the user systems 4212 to distribute requests to the application server 4300. In at least one embodiment, the load balancer uses a least connections algorithm to route user requests to the application server 4300. Other examples of load balancing algorithms, such as round robin and observed response time, also can be used. For example, in certain at least one embodiment, three consecutive requests from the same user could hit three different application servers 4300, and three requests from different users could hit the same application server 4300. In this manner, system 4216 is multi-tenant, wherein system 4216 handles storage of, and access to, different objects, data and applications across disparate users and organizations.
As an example of storage, one tenant might be a company that employs a sales force where each salesperson uses system 4216 to manage their sales process. Thus, a user might maintain contact data, leads data, customer follow-up data, performance data, goals and progress data, etc., all applicable to that user's personal sales process (e.g., in tenant data storage 4222). In an example of a MTS arrangement, since all of the data and the applications to access, view, modify, report, transmit, calculate, etc., can be maintained and accessed by a user system having nothing more than network access, the user can manage his or her sales efforts and cycles from any of many different user systems. For example, if a salesperson is visiting a customer and the customer has Internet access in their lobby, the salesperson can obtain critical updates as to that customer while waiting for the customer to arrive in the lobby.
While each user's data might be separate from other users' data regardless of the employers of each user, some data might be organization-wide data shared or accessible by a plurality of users or all of the users for a given organization that is a tenant. Thus, there might be some data structures managed by system 4216 that are allocated at the tenant level while other data structures might be managed at the user level. Because an MTS might support multiple tenants including possible competitors, the MTS should have security protocols that keep data, applications, and application use separate. Also, because many tenants may opt for access to an MTS rather than maintain their own system, redundancy, up-time, and backup are additional functions that may be implemented in the MTS. In addition to user-specific data and tenant specific data, system 4216 might also maintain system level data usable by multiple tenants or other data. Such system level data might include industry reports, news, postings, and the like that are sharable among tenants.
In certain at least one embodiment, user systems 4212 (which may be client systems) communicate with application servers 4300 to request and update system-level and tenant-level data from system 4216 that may require sending one or more queries to tenant data storage 4222 and/or system data storage 4224. System 4216 (e.g., an application server 4300 in system 4216) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. System data storage 4224 may generate query plans to access the requested data from the database.
Each database can generally be viewed as a collection of objects, such as a set of logical tables, containing data fitted into predefined categories. A “table” is one representation of a data object, and may be used herein to simplify the conceptual description of objects and custom objects. It should be understood that “table” and “object” may be used interchangeably herein. Each table generally contains one or more data categories logically arranged as columns or fields in a viewable schema. Each row or record of a table contains an instance of data for each category defined by the fields. For example, a CRM database may include a table that describes a customer with fields for basic contact information such as name, address, phone number, fax number, etc. Another table might describe a purchase order, including fields for information such as customer, product, sale price, date, etc. In some multi-tenant database systems, standard entity tables might be provided for use by all tenants. For CRM database applications, such standard entities might include tables for Account, Contact, Lead, and Opportunity data, each containing pre-defined fields. It should be understood that the word “entity” may also be used interchangeably herein with “object” and “table”.
In some multi-tenant database systems, tenants may be allowed to create and store custom objects, or they may be allowed to customize standard entities or objects, for example by creating custom fields for standard objects, including custom index fields. U.S. patent application Ser. No. 10/817,161, filed Apr. 2, 2004, entitled “Custom Entities and Fields in a Multi-Tenant Database System”, and which is hereby incorporated herein by reference, teaches systems and methods for creating custom objects as well as customizing standard objects in a multi-tenant database system. In certain at least one embodiment, for example, all custom entity data rows are stored in a single multi-tenant physical table, which may contain multiple logical tables per organization. It is transparent to customers that their multiple “tables” are in fact stored in one large table or that their data may be stored in the same table as the data of other customers.
In step 4504, system 4216 (
In step 4506, user system 4212 is communicatively coupled to network 4214. In step 4508, system 4216 is communicatively coupled to network 4214 allowing user system 4212 and system 4216 to communicate with one another (
While one or more implementations have been described by way of example and in terms of the specific embodiments, it is to be understood that one or more implementations are not limited to the disclosed embodiments. To the contrary, it is intended to cover various modifications and similar arrangements as would be apparent to those skilled in the art. Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
This application claims the benefit of U.S. Provisional Patent Application 61/695,980 (Docket #988PROV) entitled TAB VISION, by Jamie No, filed Aug. 31, 2012 (Attorney Docket No. 988PROV), the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61695980 | Aug 2012 | US |