An intelligent framework is provided that is disposed between a high-level language environment and a database system environment. According to one embodiment, the framework programmatically receives information regarding definitions of data structures of objects participating in a software application and information regarding relationships among the objects. Based upon the particular request from the high-level language environment and upon the definitions and relationships, the framework programmatically and dynamically generates appropriate statements associated with the database system environment that accomplish the request. For example, the framework may issue statements to define the structure of a database, access information from the database, and/or manipulate information within the database.

Patent
   7412455
Priority
Apr 30 2003
Filed
Apr 30 2004
Issued
Aug 12 2008
Expiry
Jul 14 2025
Extension
440 days
Assg.orig
Entity
Large
1124
30
EXPIRED
23. A method of manipulating a data store within a storage system comprising:
automatically and programmatically receiving from a software application by an intelligent framework coupled between a high-level language environment and the storage system (a) information regarding definitions of a plurality of data structures associated with a plurality of objects participating in the software application, and (b) information regarding relationships among the plurality of data structures, each object of a plurality of objects generated as a result of compilation of the software application by a compiler and representing an instance of a data structure of the plurality of data structures, wherein said programmatically receiving includes interrogating the plurality of objects;
in response to receipt of a request from the software application to manipulate an object of the plurality of objects, programmatically and dynamically generating a data manipulation expression (DME) comprising one or more statements based at least in part upon the object's relationship with one or more other objects of the plurality of objects; and
responsive to the request, the intelligent framework causing the storage system to manipulate the data store by directing the storage system based on the one or more statements.
12. A method of accessing a data store within a storage system comprising:
automatically and programmatically receiving from a software application by an intelligent framework coupled between a high-level language environment and the storage system (a) information regarding definitions of a plurality of data structures associated with a plurality of objects participating in the software application, and (b) information regarding relationships among the plurality of data structures, each object of a plurality of objects generated as a result of compilation of the software application by a compiler and representing an instance of a data structure of the plurality of data structures, wherein said programmatically receiving includes interrogating the plurality of objects;
in response to receipt of a request from the software application to read an object of the plurality of objects from the data store, programmatically and dynamically generating a data query expression (DQE) comprising one or more statements based at least in part upon the object's relationship with one or more other objects of the plurality of objects; and
responsive to the request, the intelligent framework causing the storage system to retrieve information associated with the object from the data store by querying the storage system based on the one or more statements.
1. A method of creating a structure of a data store within a storage system comprising:
automatically and programmatically receiving from a software application by an intelligent framework coupled between a high-level language environment and the storage system (a) information regarding definitions of a plurality of data structures associated with a plurality of objects participating in the software application, and (b) information regarding relationships among the plurality of data structures, each object of the plurality of objects generated as a result of compilation of the software application by a compiler and representing an instance of a data structure of the plurality of data structures, wherein said programmatically receiving includes interrogating the plurality of objects;
based upon the information regarding definitions of the plurality of data structures and the information regarding relationships among the plurality of data structures, programmatically and dynamically generating a data definition expression (DDE) comprising one or more statements to define the structure of the data store inferred by the relationships; and
in response to receipt of a request from the software application, the intelligent framework causing the storage system to create the structure of the data store by directing the storage system based on the one or more statements.
36. A method of accessing a database within a relational database management system comprising:
automatically and programmatically receiving by an intelligent framework coupled between a high-level language environment and the relational database management system (a) information regarding definitions of a plurality of classes specified by semantics of a high-level, object-oriented programming language and generated by a compiler that are associated with a plurality of objects participating in a software application, and (b) information regarding relationships among the plurality of classes, wherein said programmatically receiving includes interrogating the plurality of objects;
in response to receipt of a request from the software application to read one or more objects of the plurality of objects from the database, the intelligent framework programmatically and dynamically generating one or more Structured query language (SQL) data query language statements based at least in part upon a relationship of an object template associated with the one or more objects with one or more other objects of the plurality of objects and a state of the object template; and
the intelligent framework causing the relational database management system to retrieve information associated with the one or more objects by querying the relational database management system based on the one or more SQL data query language statements.
35. A method comprising:
automatically and programmatically receiving by an intelligent framework coupled between a high-level language environment and a relational database management system information regarding definitions of a plurality of classes associated with a plurality of objects participating in a software application, each class of the plurality of classes containing information regarding its relationships with one or more other classes of the plurality of classes, each object of the plurality of objects generated as a result of compilation of the software application by a compiler and representing an instance of a class of the plurality of classes, wherein said programmatically receiving includes interrogating the plurality of objects;
based upon the definitions of the plurality of classes, programmatically and dynamically generating one or more Structured query language (SQL) statements associated with the relational database management system, the one or more SQL statements defining the structure of a relational database inferred by the relationships;
causing the storage system to create the structure of the relational database by directing the relational database management system based on the one or more SQL statements;
in response to receipt of a request to read an object of the plurality of objects from the relational database:
programmatically and dynamically generating one or more SQL statements associated with the relational database management system based at least in part upon relationships of the object with one or more other objects of the plurality of objects; and
causing the relational database management system to retrieve information associated with the object by querying the relational database management system based on the one or more SQL statements; and
in response to receipt of a request to manipulate an object of the plurality of objects:
programmatically and dynamically generating one or more SQL statements associated with the relational database management system based at least in part upon relationships of the object with one or more other objects of the plurality of objects; and
causing the relational database management system to manipulate the relational database by directing the relational database management system based on the one or more SQL statements.
2. The method of claim 1, wherein the one or more statements comprise language statements associated with the storage system.
3. The method of claim 1, wherein the information regarding definitions of a plurality of data structures comprises definitions of a plurality of classes that are specified by semantics of a high-level, object-oriented programming language and generated by the compiler.
4. The method of claim 3, wherein the information regarding relationships is implemented as one or more properties of those of the plurality of classes that embody the relationships.
5. The method of claim 3, wherein complex relationships between classes of the plurality of classes are supported, and include one or more of child, parent, peer, children, recursive peer, recursive parent, foreign parent, foreign child, and constant.
6. The method of claim 4, wherein the storage system comprises a relational database management system.
7. The method of claim 2, wherein the language statements comprise Structured query language (SQL) data definition language statements.
8. The method of claim 6, wherein within the relational database management system, tables are used to represent the objects participating in the software application.
9. The method of claim 8, wherein each table has a primary key.
10. The method of claim 1, wherein the storage system comprises an extensible markup language (XML) database system.
11. The method of claim 1, wherein the storage system comprises an object-oriented database system.
13. The method of claim 12, wherein the one or more statements comprise language statements associated with the storage system.
14. The method of claim 12, wherein the information regarding definitions of a plurality of data structures comprises definitions of a plurality of classes that are specified by semantics of a high-level, object-oriented programming language and generated by the compiler.
15. The method of claim 14, wherein the information regarding relationships is implemented as one or more properties of those of the plurality of classes that embody the relationships.
16. The method of claim 14, wherein complex relationships between classes of the plurality of classes are supported, and include one or more of child, parent, peer, children, recursive peer, recursive parent, foreign parent, foreign child, and constant.
17. The method of claim 15, wherein the storage system comprises a relational database management system.
18. The method of claim 13, wherein the language statements comprise Structured query language (SQL) data query language statements.
19. The method of claim 17, wherein within the relational database management system, tables are used to represent the objects participating in the software application.
20. The method of claim 19, wherein each table has a primary key.
21. The method of claim 12, wherein the storage system comprises an extensible markup language (XML) database system.
22. The method of claim 12, wherein the storage system comprises an object-oriented database system.
24. The method of claim 23, wherein the one or more statements comprise language statements associated with the storage system.
25. The method of claim 23, wherein the information regarding definitions of a plurality of data structures comprises definitions of a plurality of classes that are specified by semantics of a high-level, object-oriented programming language and generated by the compiler.
26. The method of claim 25, wherein the information regarding relationships is implemented as one or more properties of those of the plurality of classes that embody the relationships.
27. The method of claim 25, wherein complex relationships between classes of the plurality of classes are supported, and include one or more of child, parent, peer, children, recursive peer, recursive parent, foreign parent, foreign child, and constant.
28. The method of claim 26, wherein the storage system comprises a relational database management system.
29. The method of claim 24, wherein the language statements comprise Structured query language (SQL) data manipulation language statements.
30. The method of claim 28, wherein within the relational database management system, tables are used to represent the objects participating in the software application.
31. The method of claim 30, wherein each table has a primary key.
32. The method of claim 28, wherein the request to manipulate the object of the plurality of objects comprises one of (i) a request to insert the object into the data store; (ii) a request to update the object in the data store; or (iii) a request to delete the object from the data store.
33. The method of claim 23, wherein the storage system comprises an extensible markup language (XML) database system.
34. The method of claim 23, wherein the storage system comprises an object-oriented database system.
37. The method of claim 1, wherein said interrogating the plurality of objects comprises use of language reflection.
38. The method of claim 12, wherein said interrogating the plurality of objects comprises use of language reflection.
39. The method of claim 23, wherein said interrogating the plurality of objects comprises use of language reflection.
40. The method of claim 35, wherein said interrogating the plurality of objects comprises use of language reflection.
41. The method of claim 36, wherein said interrogating the plurality of objects comprises use of language reflection.
42. An article of manufacture comprising a computer-readable medium having stored thereon instructions, which when executed by one or more processors cause the method of claim 1 to be performed.
43. An article of manufacture comprising a computer-readable medium having stored thereon instructions, which when executed by one or more processors cause the method of claim 12 to be performed.
44. An article of manufacture comprising a computer-readable medium having stored thereon instructions, which when executed by one or more processors cause the method of claim 23 to be performed.
45. An article of manufacture comprising a computer-readable medium having stored thereon instructions, which when executed by one or more processors cause the method of claim 35 to be performed.

This application claims the benefit of Provisional Application No. 60/466,939, filed Apr. 30, 2003, which is hereby incorporated by reference in its entirety.

Contained herein is material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction of the patent disclosure by any person as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all rights to the copyright whatsoever.

1. Field of Invention

Embodiments of the present invention generally relate to design and implementation of database applications. More particularly, embodiments of the present invention relate to methods and techniques of programmatically managing the creation of database structure, populating the database structure, and accessing and/or manipulating data stored in a database.

2. Description of the Related Art

Development of database applications currently involves two distinct skill sets typically requiring the involvement of both database engineers and software engineers. An example of current database modeling activities may include the following: (1) One or more database engineers capture the requirements of the database application in an entity relationship diagram (ERD); (2) manually or with the assistance of a database tool, such as Oracle9i Designer of Oracle Corporation, the database engineer(s) create an appropriate database schema to support the relationships presented by the ERD; (3) the database engineer(s) convey the requirements of the database application to one or more software engineers; (4) the software engineer(s) capture the requirements in an appropriate form, such as uniform modeling language (UML) diagrams, for development of needed data structures, e.g., class definitions; and (5) the software engineer(s) create the data structures. Other tasks, such as provisioning and providing for access and manipulation of the database typically require similar interactions among the database engineers and the software engineers.

As can be appreciated, a software development team composed of both database engineers and software engineers implementing the above database modeling process is costly both in terms of communication overhead and payroll. Consequently, a need exists to reduce the complexity of and/or automate database design and development tasks thereby allowing application developers with limited or no database skills to efficiently and effectively perform such tasks.

Embodiments of the present invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:

FIG. 1 is a block diagram that illustrates a typical architecture that may be used in many database applications and in connection with one or more embodiments of the present invention.

FIG. 2 is an example of a computer system with which embodiments of the present invention may be utilized.

FIG. 3 is a UML diagram illustrating relationships between objects of an example web portal application.

FIG. 4 is an entity relationship diagram for the example web portal application.

FIG. 5 is a flow diagram illustrating schema object initialization processing according to one embodiment of the present invention.

FIG. 6 is a flow diagram illustrating table object creation processing according to one embodiment of the present invention.

FIG. 7 is a flow diagram illustrating JoinTable object creation processing according to one embodiment of the present invention.

FIG. 8 is a flow diagram illustrating database schema generation processing according to one embodiment of the present invention.

FIG. 9 is a flow diagram illustrating generation of a data definition expression to create tables according to one embodiment of the present invention.

FIG. 10 conceptually illustrates structural relationships for primitive attributes according to one embodiment of the present invention.

FIG. 11 conceptually illustrates structural relationships for inheritance according to one embodiment of the present invention.

FIG. 12 conceptually illustrates structural relationships for parent attributes according to one embodiment of the present invention.

FIG. 13 conceptually illustrates structural relationships for recursive parent according to one embodiment of the present invention.

FIG. 14 conceptually illustrates structural relationships for Foreign Parent, Foreign Child or Constant according to one embodiment of the present invention.

FIG. 15 conceptually illustrates structural relationships for peer or children according to one embodiment of the present invention.

FIG. 16 conceptually illustrates structural relationships for recursive peer according to one embodiment of the present invention.

FIG. 17 is a flow diagram illustrating processing associated with saving an object according to one embodiment of the present invention.

FIG. 18 is a flow diagram illustrating generation of data manipulation language statements to save the state of a storable object according to one embodiment of the present invention.

FIG. 19 is a flow diagram illustrating provider traversal processing used in connection with a save algorithm according to one embodiment of the present invention.

FIG. 20 is a flow diagram illustrating storable preparation processing used to conditionally assign a primary key value during save according to one embodiment of the present invention.

FIG. 21 is a flow diagram illustrating processing associated with persisting a storable according to one embodiment of the present invention.

FIG. 22 is a flow diagram illustrating peer traversal processing according to one embodiment of the present invention.

FIG. 23 is a flow diagram illustrating update children processing according to one embodiment of the present invention.

FIG. 24 is a flow diagram illustrating processing associated with deleting an object according to one embodiment of the present invention.

FIG. 25 is a flow diagram illustrating generation of data manipulation language statements to delete a storable object according to one embodiment of the present invention.

FIG. 26 is a flow diagram illustrating processing associated with updating RecursiveParent relationships during deletion of a storable object according to one embodiment of the present invention.

FIG. 27 is a flow diagram illustrating dependent traversal processing according to one embodiment of the present invention.

FIG. 28 is a flow diagram illustrating extension traversal processing according to one embodiment of the present invention.

FIG. 29 is a flow diagram illustrating foreign child traversal processing according to one embodiment of the present invention.

FIG. 30 is a flow diagram illustrating processing associated with reading an object according to one embodiment of the present invention.

FIG. 31 is a flow diagram illustrating reading of storable object(s) using class and filter according to one embodiment of the present invention.

Apparatus and methods are described for providing a software framework that facilitates efficient design and implementation of database applications. According to one embodiment, a software framework creates a structure of a data store within a storage system by programmatically receiving information regarding definitions of data structures of objects participating in a software application and information regarding relationships among the data structures. Based upon the information regarding definitions and the information regarding relationships, the framework programmatically and dynamically generates appropriate statements associated with the database system environment that define the structure of a database. The framework then creates the structure of the database by issuing the statements.

According to one embodiment, a method is provided for the framework to accesses the data store by programmatically receiving information regarding definitions of data structures associated with objects participating in a software application and information regarding relationships among the data structures. In response to receipt of a request to read an object from the data store, the framework programmatically and dynamically generates one or more statements based at least in part upon the object's relationship with other objects. Then, the framework queries the data store by issuing to the storage system the one or more statements.

According to one embodiment, a method is provided for the framework to manipulate the data store by programmatically receiving information regarding definitions of data structures associated with objects participating in a software application and information regarding relationships among the data structures. In response to receipt of a request to manipulate an object, the framework programmatically and dynamically generates one or more statements based at least in part upon the object's relationship with one or more other objects. Then, the framework manipulates the data store by issuing to the storage system the one or more statements.

Other features of embodiments of the present invention will be apparent from the accompanying drawings and from the detailed description that follows.

Apparatus and methods are described for providing a software framework that facilitates efficient design and implementation of database applications. Broadly stated, embodiments of the present invention seek to automate the tasks of defining the structure, accessing and manipulating a database by abstracting the underlying syntax and semantics of the particular database system being employed. According to one embodiment, such abstraction is accomplished by providing an interface layer, referred to below as “Lentils,” between a high-level programming language environment and the database environment provided by the particular database vendor. For example, a Lentils application programming interface (API) may be provided that programmatically and dynamically generates appropriate data definition, data query, and/or data manipulation expressions, which according to one embodiment may be one or more statements from a data definition language, data query language and/or data manipulation language associated with a database storage system, responsive to receipt of information concerning a desired operation and appropriate data structure definitions.

According to one embodiment, the Lentils API reduces or eliminates the need for the software developer that is coding in the high-level programming language environment to understand SQL. For example, storable objects may be read from a database by the software developer creating an instance of a specific type of storable object, called the pattern storable, optionally associating data values with primitive attributes, optionally creating and preparing a DBFilter, and making the appropriate API call including the pattern storable and optionally the DBFilter. Within the API call, appropriate DQEs are prepared based upon the state of the pattern storable and optional DBFilter, thus abstracting the complexities of direct interfaces with the underlying storage system.

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

Embodiments of the present invention include various steps, which will be described below. Such steps may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, the steps may be performed by a combination of hardware and software or firmware.

Embodiments of the present invention may be provided as a computer program product which may include a machine-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process according to the methods and techniques described herein. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, embodiments of the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer to a requesting computer by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).

While, for convenience, embodiments of the present invention are described with reference to a relational database and Java™, the present invention is equally applicable to various other databases and high-level programming languages. For example, the teachings herein are useful in connection with design and development of database applications involving object oriented databases, extensible markup language (XML) databases and the like. Similarly, various other high-level languages may be employed to interface with Lentils, such as current or future versions of C, C++, C# and the like. While the implementation specifics may vary, conceptually, the embodiments described herein would function in the same manner. While an intermediate layer interposed between a high-level language and a database management system is a likely choice for implementation of embodiments of the present invention, it is also contemplated that the mechanisms described herein could be incorporated into semantics of a high-level language or incorporated into the database management system itself

Terminology

Brief definitions of terms, abbreviations, and phrases used throughout this application are given below.

Each table has a set of “ascendant tables”, which is a collection of table objects having an order corresponding to the levels of inheritance of the storable class to which the owning table is associated with. The first table in the set corresponds to the most significant super-table.

The term “COMMITTED” generally refers to a state of a storable object that has been saved at least once before to the database.

The term “COMMITTING” generally refers to a state of a storable with respect to the database when the storable is undergoing transition. According to one embodiment, if the full save cycle is successful, the state of the storable will roll forward to COMMITTED.

The terms “connected” or “coupled” and related terms are used in an operational sense and are not necessarily limited to a direct physical connection or coupling.

The phrase “database application” generally refers to a software program that makes use of a database to store, access and/or manipulate information.

The phrase “data definition expression” or “DDE” generally refers to one or more language statements, such as data definition language (DDL) statements, that define structure or schema of a storage system.

The phrase “data manipulation expression” or “DME” generally refers to one or more language statements, such as data manipulation language (DML) statements, that are used to cause changes to a database. Exemplary DML statements include, but are not limited to, INSERT, UPDATE and DELETE.

The phrase “data query expression” or “DQE” generally refers to one or more language statements, such as data query language (DQL) statements that are used to extract information from a database.

According to one embodiment, a “dependent table” is any table whose associated storable class contains a dependent relational attribute, which includes, but is not limited to, parent and ForeignParent attributes.

Each table has a set of “descendant tables”, which is a collection of table objects having an order corresponding to the levels of inheritance of the storable to which the owning table is associated with. The last table in the set corresponds to the most significant super-table.

The term “DELETED” generally refers to a state of a storable with respect to the database when a full delete cycle has been completed on the storable.

The term “DELETING” generally refers to a state of a storable with respect to the database when the storable is undergoing transition. According to one embodiment, if the full delete cycle is successful, the state of the storable will roll forward to DELETED.

The phrases “in one embodiment,” “according to one embodiment,” and the like generally mean the particular feature, structure, or characteristic following the phrase is included in at least one embodiment of the present invention, and may be included in more than one embodiment of the present invention. Importantly, such phases do not necessarily refer to the same embodiment.

If the specification states a component or feature “may”, “can”, “could”, or “might” be included or have a characteristic, that particular component or feature is not required to be included or have the characteristic.

An “object template” generally refers to an instance of a specific type of object of the class desired to be retrieved from a storage system and having a state (e.g., one or more data values) that are used to extract matching objects from the storage system. An example of an object template is a pattern storable.

According to one embodiment, an “orphan table” is used to create a sub-query that identifies super-records that are to be deleted. When a storable is deleted, the records that are deleted are based on the data values associated with a storable's attributes, and the class ID. When the records from a sub-table are deleted, there is no longer any information that might be necessary to identify which super-records should be deleted. According to one embodiment, a WHERE NOT IN clause is included in the Primary Key Specification (PKS), that identifies all still existing sub-records, and is then used in a NOT IN clause that identifies all the super-records that are orphaned. This technique depends on the inclusion of a clause that binds the CLASS column to the class ID value of the storable that is being deleted.

A “Primary Key Specification” or “PKS” generally refers to a SELECT sub-query, which when executed returns a set of rows from a table containing only primary key data. According to one embodiment, the structure of the PKS is as follows: SELECT primary keys FROM tables WHERE matching record specification. If current table corresponds to a storable that extends some storable, the PKS will include conditions where the primary columns of a sub-table equal the primary columns of the super-table. If the storable contains data values that are associated with primitive attributes via columns associated with the current table and super-tables, the PKS will include conditions where the columns must equal the data values in storable that are associated with the columns. If the orphan table is defined, the PKS will include conditions where the primary columns from the super-table are not in a list of existing records in the orphan table, which is otherwise referred to as a sub-table with respect to the previous iteration of the descendant tables. If the nested WHERE IN clause is defined, it is included as an additional clause in the PKS.

The term “programmatically” generally refers to an automated process the steps of which are executed by one or more computer programs.

The term “responsive” includes completely or partially responsive.

The phrase “storage system” generally refers to a data repository for persisting data. According to various embodiments of the present invention a storage system may be a relational database system (RDBS), an extensible Markup Language (XML) database, an object-oriented database or the like.

The term “TRANSIENT” generally refers to a state of a storable object that has never been saved to the database.

Overview

A software framework that intelligently and efficiently connects software applications to a database system is proposed. This intelligent connection simplifies some of the regular tasks that are commonly associated with designing and implementing database applications, such as database modeling, provisioning, and providing for access and manipulation. These functions are artfully abstracted within Lentils to reduce the skill level required to develop database applications and allow potential reduction in headcount required to staff such development efforts.

The Application

FIG. 1 is a block diagram that illustrates a typical architecture 100 that may be used in many database applications and in connection with one or more embodiments of the present invention. In the present example, the architecture 100 includes a database 120, a computer 115, a console 170, a personal digital assistant (PDA) 180 and a laptop computer 190.

On the computer 115 runs an operating system 130, such as UNIX, Linux, Windows, etc. An application 110, such as a database application or software application that relies upon a database to perform its tasks, runs within the operating system 130 and the operating system 130 supports a set of database access and services 140, such as a Java Database Connectivity (JDBC) API, an Open DataBase Connectivity (ODBC) database API, etc., which allows the application 110 to create, access, and manipulate data within the database 120 and otherwise interact with the database 120. A console input/output (I/O) interface 160 and an Internet/intranet I/O interface 150 faclitate interactions among the application and the console 170, PDA 180, and laptop computer 190.

Depending upon the particular implementation, the application 110 may be simple, like an address book, or complex, for example, an order entry application that automatically generates factory orders, downloads instructions to machines and schedules production.

As explained above, the application 110 runs on the operating system 130, which in turn runs on the computer 115. The application 110 may interact with users using some form of input/output (I/O) through the console terminal 170, connected directly to the computer 115, or through other devices connected to a network such as the Internet, a local intranet, or both.

An exemplary computer system 200, representing an exemplary computer 115, with which various features of the present invention may be utilized, will now be described with reference to FIG. 2. In this simplified example, the computer system 200 comprises a bus 230 or other communication means for communicating data and control information, and one or more processors 205, such as Intel® Itanium® or Itanium 2 processors, coupled with bus 230.

Computer system 200 further comprises a random access memory (RAM) or other dynamic storage device (referred to as main memory 215), coupled to bus 230 for storing information and instructions to be executed by processor(s) 205. Main memory 215 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor(s) 215.

Computer system 200 also comprises a read only memory (ROM) 220 and/or other static storage device coupled to bus 230 for storing static information, such as instructions for processor(s) 205.

A mass storage device 225, such as a magnetic disk or optical disc and its corresponding drive, may also be coupled to bus 230 for storing information and instructions.

One or more communication ports 210 may also be coupled to bus 230 for supporting network connections and communication of information to/from the computer system 200 by way of a Local Area Network (LAN), Wide Area Network (WAN), the Internet, or the public switched telephone network (PSTN), for example. The communication ports 210 may include various combinations of well-known interfaces, such as one or more modems to provide dial up capability, one or more 10/100 Ethernet ports, one or more Gigabit Ethernet ports (fiber and/or copper) or other well-known network interfaces commonly used in internetwork environments. In any event, in this manner, the computer system 200 may be coupled to a number of other network devices, clients, and/or servers via a conventional network infrastructure, such as an enterprise's Intranet and/or the Internet, for example.

Finally, removable storage media 240, such as one or more external or removable hard drives, tapes, floppy disks, magneto-optical discs, compact disk-read-only memories (CD-ROMs), compact disk writable memories (CD-R, CD-RW), digital versatile discs or digital video discs (DVDs) (e.g., DVD-ROMs and DVD+RW), Zip disks, or USB memory devices, e.g., thumb drives or flash cards, may be coupled to bus 230 via corresponding drives, ports or slots.

Example Application

An example application is introduced for purposes of explaining and illustrating how one embodiment of Lentils may be used, and illustrating the advantages over traditional technologies. The example application is a web portal application. A web portal is an Internet (or intranet) application that limits user access to the application, and further restricts user access to specific pages in the application.

A user interacts with the application using a web browser. To access the application the user must log in, providing a domain name, username and password. A user is a person that belongs to an organization and has access to the application.

The domain name is a simple word, phrase, or sequence of characters that uniquely identifies an organization the user belongs to. For example, it may be the organization's Internet domain name.

An organization has many persons and demographic information. An organization may have multiple sub-organizations. An organization has many page groups. Page groups are described later in this document.

A user is associated with a collection of page groups, and has access to any page that belongs to the page groups in the collection. The application restricts the page groups a user may be associated with to the page groups belonging to the organization to which the user belongs.

The application monitors each time a user accesses the application by recording session information. A session begins when a user first logs in, and lasts until the user logs out, or times out.

The application provides features that are only available to a super user. A super user is a user, and typically has the responsibility of interacting with the applications most critical features.

FIG. 3 is a UML diagram 300 illustrating relationships between objects of an example web portal application. This type of diagram is well understood by those who are skilled in the art of object-oriented software development. Each of the boxes 305-350 in FIG. 3 represents a class. The classes are shown as containing data members (e.g., 355) and relationships (e.g., 360) to other classes. Instances of the classes are referred to as objects. While the present example is discussed with reference to classes and objects, it is to be understood that embodiments of the present invention are applicable to data structures generally and not limited to object oriented languages, applications, or databases.

Depending upon the embodiment, the information regarding relationships among the classes may be contained within the data structures representing the classes or may be provided via a separate configuration file. The configuration file may override or supplement relationships defined in classes or not otherwise provided by the classes.

Table 1 shows exemplary class definitions using pseudo code with syntax similar to that employed by Java or C++. These classes contain example members and references for implementing the models shown in FIG. 3.

TABLE 1
CLASS DEFINITIONS (I.E., JAVA, C++)
Class ACCESS (320)
{
    Integer id;
    String username;
    String password;
    PAGEGROUP [] page groups;
};
Class DEMOGRAPHIC (330)
{
    Integer id;
    String address;
    String address2;
    String city;
    String zipcode;
    String phone;
    String email;
    STATE state;
};
Class ORGANIZATION (345)
{
    Integer id;
    String name;
    String domain;
    DEMOGRAPHIC profile;
    PERSON [] personnel;
    PAGEGROUP [] pageGroups;
    ORGANIZATION parent;
};
Class PAGEDESCRIPTOR (340)
{
    Integer id;
    String name;
};
Class PAGEGROUP (335)
{
    Integer id;
    String title;
    PAGEDESCRIPTOR [] pages;
};
Class PERSON (315)
{
    Integer id;
    String first;
    String last;
    DEMOGRAPHIC profile;
};
Class SESSION (325)
{
    Integer id;
    Boolean expired;
    Access access;
};
Class STATE (350)
{
    Integer id;
    String name;
    String abbreviation;
};
Class SUPERUSER extends USER (305)
{
};
Class USER extends PERSON (310)
{
    ACCESS passkey;
};

In the present example, the application is required to persist and/or otherwise save, update, read and delete objects, the relationships between objects to a storage system, and adhere to the implications of the relationships between the objects.

The storage system may be a relational database system (RDBS), an XML database, an object-oriented database or the like. Consistent with the intended purpose of this document, this example is explained with reference to a relational database system. Those skilled in the art will be able to apply the teachings contained herein to other storage system environments.

This example has been described first with a generic description, independent of the assumption that software would be used to implement the application, but then quickly transitions from a generic description to UML diagrams to supporting classes. This progression occurs frequently in industry as applications are developed. However, it is also a frequent occurrence that the progression starts with a generic description, and transitions into a database design space involving entity relationship diagrams (ERDs) and a schema. Once these elements are stable, then software is developed.

As described earlier in the background, this leads to a problem frequently experienced in industry. Applications that are both database and software intensive typically require individuals who are skilled in database technology, and individuals who are skilled in software development technologies.

FIG. 4 is an entity relationship diagram (ERD) 400 for the example web portal application. Assuming the initial design model is software centric, FIG. 4 represents an example of what a resulting ERD 400 might look like for the web portal example. The ERD 400 is capable of supporting the application requirement for persisting data. Notice that there are more “boxes” (e.g., 470-485) in the ERD 400. This is because the relationships between the primary entities are modeled like primary entities themselves.

Note that if the design of the application was initiated from a database design space, the generic description would have to be augmented to support the relationship entities in the ERD 400. This is called artificial modeling, and tends to make it more difficult to understand the design. Using a software-centric design space, the generic description uses natural modeling, and is easier to understand.

Note that if a software developer initially developed the model from a generic description, to a UML model, to pseudo code, some time and coordination must be given for the software developer to communicate the elements of the design to a database developer, who then in turn after understanding the requirements, creates a schema in agreement with the needs of the software developer. The information that must be communicated includes the content of the objects, the relationships between the objects, and any constraints associated with the contents and relationships.

It is not always obvious from the ERD or UML diagram what kind of dependencies exists between two primary entities. For example, referencing FIG. 4, compare the relationship between ACCESS 420 and PAGE_GROUP 435, and ORGANIZATION 445 and PAGE_GROUP 435. Both of these relationships show an intermediate entity joining the two primary entities together. ORGANIZATION_PAGEGROUPS 475 joins ORGANIZATION 445 and PAGE_GROUP 435, and ACCESS_PAGEGROUPS 470 joins ACCESS 420 and PAGE_GROUP 435. Structurally, the joining entities RGANIZATION_PAGEGROUPS and ACCESS_PAGEGROUPS are similar. However, there are differences implied by the relationship that govern the dependencies between the data. When an Organization is deleted, all Page Groups associated with the Organization should be deleted. When an Access is deleted, its relationship to the Page Groups deleted, but the Page Groups themselves should be left in tact.

What would be the benefits if the relationships and dependencies between classes could be annotated in a UML diagram, and implemented as properties of the classes that embody the relationships and dependencies? The information exchange between the software developer and the database developer could be conveyed programmatically.

Further, if the creation of a storage structure or schema, and query for, and manipulation of the data uses some structured process or language, the acts of creating the storage structure, and querying and manipulating data could be programmatically automated based on the properties of the classes participating in the application.

Relational database systems use SQL to create structure, and query and manipulate data, and thus is a prime candidate for programmatically automating these processes.

Scenarios

Included herein are a number of sample scenarios and a corresponding description of actions that occur within the example application and supporting RDBS. The purpose is to provide a sense of the complexities involved in accommodating the rules that govern the relationships between the classes and the constraints of the underlying RDBS.

Software implements the requirements of the applications and is the means of accommodating the rules that govern the relationships between the classes and the constraints of the underlying RDBS. The software is implicitly complex. According to one embodiment, Lentils may be employed to encapsulate the complexities. In the attached Appendix, two techniques for implementing the scenario of saving and organization are compared. The comparison demonstrates at least some of the benefits of using Lentils.

Creating a Schema

In simple terms, a database schema is a collection of database tables and columns. A schema is created by executing CREATE TABLE SQL statements. Other SQL statements may be used to establish indexes, foreign key constraints and other constraints or structures.

Saving an Organization

In accordance with the present example application, saving an organization follows a sequence that satisfies the constraints of the underlying database in accordance with the dependencies of the relationships, and the intent of “saving” the state of an object. The order of the sequence will be noted in a “lazy” fashion.

An organization must be saved. If an organization has a parent organization, the parent organization should be saved first. According to the present example, the parent organization is saved in accordance with the sequences outlined in this section.

An organization's demographic should be saved before the organization is saved. If there are new relationships between organization and page groups, the prior relationships between the organization and page groups are deleted.

Any page group in the prior relationships to organization that are not in the new relationships between organization and page groups are deleted.

Each page group in the new relationships between organization and page groups are saved.

The new relationships between organization and page groups are saved after the organization and page groups have been saved.

If there are new relationships between organization and persons, the prior relationships between the organization and persons are deleted.

Any person in the prior relationships to organization that are not in the new relationships between organization and persons are deleted.

Each person in the new relationships between organization and persons are saved. The new relationships between organization and persons are saved after the organization and persons have been saved.

For each person being deleted, if that person is a user, the user is deleted before the person is deleted.

For each user that is deleted, the user's access is deleted, after the user is deleted.

For each access that is deleted, any session belonging to the access is deleted before the access is deleted.

For each access that is deleted, the relationships between an access and page group is deleted before the access is deleted.

For each page group that is deleted, the relationship between the page group and page descriptors are deleted before the page group is deleted.

For each person being saved, the person's demographic is first saved.

For each person being saved, if the person is a user, the user is saved after the person is saved.

For each user being saved, the user's access is first saved.

For each access being saved, if there are any sessions associated with the access, the sessions are saved after the access is saved.

For each access being saved, if there are any pages groups associated with the access, the page groups and access are saved before the relationship between the access and page groups are saved.

Collections of data manipulation language (DML) SQL statements are used to cause the changes to the database. The DML statements may include, among other statements, INSERT, UPDATE and DELETE.

In general, if an object or corresponding record pre-exists in the database, the record is saved using an UPDATE SQL statement, otherwise the record is saved using an INSERT SQL statement. Objects/records are removed from the database using DELETE SQL statements.

Data values used in the SQL statements are obtained from the objects participating in the scenario.

Verifying User Login

This scenario provides an example where an object is reconstituted as a result of querying the database. In order to use the application, a user must provide a username, password and organization. The application verifies the user belongs to an organization and has access to the application.

The application reads exactly one Access object where an organization has the given domain name and the organization contains a person, that is a user, and the user has access having the given username and password.

Deleting an Organization

This scenario provides an example of how an object is deleted, and the complex actions that result. Deleting an organization must satisfy the constraints of the underlying database in accordance with the dependencies of the relationships and the intent of “deleting” an organization (i.e. object). The order of the sequence will be noted in “lazy” fashion.

An organization is deleted. If the organization has any child organizations, the child organizations are deleted first. According to the present example, the child organizations are deleted in accordance with the sequence outlined in this section.

An organization's demographic profile is deleted after the organization is deleted. Before the organization is deleted, its demographic profile should be referenced and cached by the application. The organization contains a reference to its demographic profile. The organization is removed from the database before the demographic profile is. The cached reference to the demographic profile is subsequently used to identify and delete the demographic profile.

Any person belonging to the organization is deleted. Before the organization is deleted, each person should be referenced and cached by the application. The relationship information is deleted from the database before the organization is deleted. When person is deleted, there are no inherent means to relate person to the organization. The cached reference to person is subsequently used to identify and delete the person.

For each person deleted, the relationship between organization and person is deleted before organization and person are deleted.

For each person being deleted, if that person is a user, the user is deleted before the person is deleted.

For each user that is deleted, the user's access should be deleted, after the user is deleted.

For each access that is deleted, any session belonging to the access is deleted before the access is deleted.

For each access that is deleted, the relationships between an access and page group should be deleted before the access is deleted.

Any page group belonging to the organization is deleted. Before the organization is deleted, each page group should be referenced and cached by the application. The relationship information is deleted before the organization is deleted. When page group is deleted, there are no inherent means to relate page group to the organization. The cached reference to page group is subsequently used to identify and delete the page group.

For each page group deleted, the relationship between organization and page group is deleted before organization and page group are deleted.

For each page group deleted, the relationship between page group and page descriptor are deleted, before the page group is deleted.

Compare & Contrast Implementation

Saving an Organization

Initial Conditions

It is assumed that a new organization object was created that has multiple persons, a demographic profile, and multiple page groups. The person is a user that has access to the application and through that access is associated with the same page groups as the organization.

Note the following weaknesses of a current state-of-the-art non-Lentils technique

An understanding of how Lentils works begins with the storable class. According to one embodiment, storable is a base class that is extended to implement data classes, and is used to retain instances of primitive data and references to other storable objects corresponding to the requirements of a client application. In the example application, ACCESS, DEMOGRAPHIC, ORGANIZATION, PAGEDESCRIPTOR, PAGEGROUP, PERSON, SESSION, STATE, SUPERUSER and USER are all data classes that are derived from storable.

Data

Storable is used to retain instances of primitive data and references to other storable objects. According to one embodiment, data values and references are retained in a collection where the data values and references are associated with static attributes, or synergistic attributes, that are properties of storable sub-classes.

Attribute

A storable sub-class uses synergistic attributes to define its structure that includes primitive data, relationships to other storable classes, and other ancillary information that may be used to describe a relationship with a storage system. According to one embodiment of the present invention, a synergistic attribute is a static property of a derived storable class and has one or more of the following characteristics:

Name: Ancillary information providing an indication of the string expression that might be used to name an element within a storage system that corresponds to the attribute.

Size: Ancillary information providing an indication of how much space should be allocated by the storage system to store values associated with the attribute.

AttributeProfile: attributeProfile contains the ancillary information that may be used to describe a relationship with a storage system. This includes the following:

Relational Attribute: According to one embodiment, a special type of attribute is provided that is used to describe relationships between storable classes, called relational. Relational attributes are recognized by the StorageAgent and are used to determine how the storage system should look and be constructed, and how to interact with the storage system when saving, reading and deleting object data. Relational attributes are defined in recognition of generic relationships found in a software object model, and structural constraints of a storage system used in support of the software object model. Relational attributes may include, but are not limited to the following:

Parent

A data structure or class, e.g., a storable class, that contains a parent attribute referencing another class is called the child of the referenced storable, and the referenced storable is called the parent. The existence of a child storable is dependent on the prior existence of a parent storable. A child storable derives its primary identity from its parent.

RecursiveParent

A data structure or class, e.g., a storable class, containing a RecursiveParent attribute, references itself through the RecursiveParent attribute. An instance of a storable class that contains a RecursiveParent attribute takes on a role of child to the storable referenced through the RecursiveParent attribute. If the AttributeProfile allows a null relationship, a child storable may exist, as whole, without reference to a parent, otherwise the existence of the child is dependent on the prior existence of a parent. In the example application, ORGANIZATION has a recursive parent relationship to itself.

ForeignParent

A data structure or class, e.g., a storable class, that contains a ForeignParent attribute referencing a different storable class is called a child, and the referenced storable class is called the foreign parent. The existence of a child storable is dependent on the prior existence of its foreign parent storable. A child storable provides its own primary identity. In the described embodiment, the child is intrinsically aware of the relationship to the foreign parent, but the foreign parent is not. In the example application, SESSION has a foreign child relationship to ACCESS.

Peer

A data structure or class, e.g., storable class, that contains a peer attribute referencing a different storable class is called the owner of a peer relationship to the referenced class. Storable objects with peer relationships may exist independent of each other. In the described embodiment, all storables associated with a peer relationship provide their own primary identity. In the example application, ACCESS owns a peer relationship to PAGEGROUP, and PAGEGROUP owns a peer relationship to PAGEDESCRIPTOR.

RecursivePeer

RecursivePeer relationships differ from peer relationships because the storable class with the RecursivePeer attribute is both the owner and subject of the relationship. Storable objects with RecursivePeer attributes may reference themselves. Storable objects with RecursivePeer attributes may exist independent of each other. All storable objects associated with a RecursivePeer relationship provide their own primary identity.

Children

A data structure or class, e.g., a storable class, that contains a children attribute referencing a different storable class is called the parent. Children relationships use a peer mechanism to implement the relationship, and as such the parent is also the owner of the peer relationship, and the child is the subject of the peer relationship. The existence of a child storable referenced by a parent storable is dependent on the existence of a parent storable. The child storable class provides their own primary identity. A child storable class is not intrinsically aware of its relationship to the parent storable class. In the example application, ORGANIZATION is the parent in a children relationship to PERSON.

ForeignChild

A data structure or class, e.g., a storable class, that contains a ForeignChild attribute referencing a different storable class is called the parent, and the referenced storable class is called the foreign child. The existence of a foreign child storable is dependent on the prior existence of a parent. In the described embodiment, a foreign child storable provides its own primary identification, but the parent also contains the identity of its foreign child. The parent is intrinsically aware of the foreign child, but the foreign child is not aware of its relationship to the parent.

Constant

A data structure or class, e.g., a storable class, that contains a Constant attribute referencing a different storable class considers objects of the referenced class constants. Instances of a storable class containing a Constant reference to a different class depend on the existence of the constant storable. The existence of a storable referenced through a Constant relationship is not dependent on the storable containing the Constant attribute. The storable containing the Constant attribute provides its own identity, but also contains the identity of the constant storable. In the example application, DEMOGRAPHIC has a constant relationship to STATE.

Extends

A data structure or class, e.g., a storable class, that contains an Extends attribute to a different class must literally extend the very same class. The storable that contains an Extends attribute is called an extended class, or sub-class. The class from which the storable class is extended is called the super-class. In the example application, USER extends PERSON, and SUPERUSER extends USER.

If a set of rules governing the relationship within a class or between two or more classes is identified, and the existing set of relational attributes, which reflect governing rules do not accommodate the identified rules, then a new relational attribute may be defined that reflects the governing rules. The Storage Agent is then extended or enhanced to accommodate and enforce the set of rules that govern the new relationship.

Table 2 illustrates exemplary Lentils classes that may be used in connection with the example application.

TABLE 2
Exemplary Lentils Classes for the Example Application
Class ACCESS extends IDStorable
{
    Attribute ACCESS = Name ( );
  Attribute ID = Primitive (NUMBER (5), AttributeProfile.Primary);
    Attribute USERNAME = Primitive (CHAR (15), AttributeProfile.UniqueNotNULL);
    Attribute PASSWORD = Primitive (CHAR (15), AttributeProfile.NotNULL);
    Attribute PAGEGROUPS = Peer (PAGEGROUP.class);
};
Class DEMOGRAPHIC extends IDStorable
{
    Attribute DEMOGRAPHIC = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.UniquePrimary);
    Attribute ADDRESS = Primitive (CHAR (80));
    Attribute ADDRESS2 = Primitive (CHAR (80));
    Attribute CITY = Primitive (CHAR (80));
    Attribute ZIPCODE = Primitive (CHAR (10));
    Attribute PHONE = Primitive (CHAR (20));
    Attribute EMAIL = Primitive (CHAR (80));
    Attribute STATE = Constant (STATE.class, AttributeProfile.NotNULL);
};
Class ORGANIZATION extends IDStorable
{
    Attribute ORGANIZATION = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.UniquePrimary);
    Attribute NAME = Primitive (CHAR (80), AttributeProfile.NotNULL);
    Attribute DOMAIN = Primitive (CHAR (15), AttributeProfile.UniqueNotNULL);
    Attribute PERSONNEL = Children (PERSON.class);
    Attribute PROFILE = ForeignChild (DEMOGRAPHIC.class);
    Attribute PARENT = RecursiveParent (ORGANIZATION.class);
    Attribute PAGEGROUPS = Children (PAGEGROUP.class);
};
Class PAGEDESCRIPTOR extends IDStorable
{
    Attribute PAGEDESC = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.UniquePrimary);
    Attribute NAME = Primitive (CHAR (32));
};
Class PAGEGROUP extends IDStorable
{
    Attribute PAGEGROUP = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.UniquePrimary);
    Attribute TITLE = Primitive (CHAR (80), AttributeProfile.NotNULL);
    Attribute PAGES = Peer (PAGEDESCRIPTOR.class, AttributeProfile.NotNULL);
};
Class PERSON extends IDStorable
{
    Attribute PERSON = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.UniquePrimary);
    Attribute FIRST = Primitive (CHAR (15), AttributeProfile.NotNULL);
    Attribute LAST = Primitive (CHAR (15), AttributeProfile.NotNULL);
    Attribute PROFILE = ForeignChild (DEMOGRAPHIC.class);
};
Class SESSION extends IDStorable
{
    Attribute SESSION = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.Primary);
    Attribute ACCESS = ForeignParent (ACCESS.class);
    Attribute EXPIRED = Primitive (NUMBER (1));
};
Class STATE extends IDStorable
{
    Attribute STATE = Name ( );
    Attribute ID = Primitive (NUMBER (5), AttributeProfile.UniquePrimary);
    Attribute NAME = Primitive (CHAR (20));
    Attribute ABBREVIATION = Primitive (CHAR (2));
};
Class SUPERUSER extends USER
{
};
Class USER extends PERSON
{
    Attribute USER = Name ( );
    Attribute PASSKEY = ForeignChild (ACCESS.class);
};

Given the description of storable, attribute, primitive and the various relational attributes, exemplary Lentils storable classes for the example application are shown in Table 2. The classes shown in Table 2 assume the use of language reflection to obtain certain information. For example, language reflection is used to determine that SUPERUSER extends USER, and USER extends PERSON. The name of each of the attributes is set using language reflection using the member names associated with the attributes. In alternative embodiments, language reflection need not be employed and various other methods can be used. Consider the following examples:

Later, when describing the Schema class, Schema obtains all attributes for a given storable sub-class. The classes shown in Table 2 assume the use of language reflection to allow Schema to obtain this information. In alternative embodiments, language reflection need not be employed. One technique may require all storables to declare an array containing references to all attributes. For example, USER may include the following method to provide an array:

Class USER extends PERSON
{
    Attribute USER = Name( );
    Attribute PASSKEY = ForeignChild (ACCESS.class);
    Attribute[] getAttributes ( )
    {
        return Attribute[] = {USER, PASSKEY};
    }
};

Also, Table 2, illustrates how primitive attribute may be used. Other embodiments may be preferred. For example, if STRING extends primitive, then FIRST attribute in PERSON may be declared in the following way:

Or if NUMBER extends Primitive, then ID attribute in SESSION may be declared in the following way:

According to one embodiment, a storage agent acts as an intermediary between storable classes, storable objects and the storage system. The particular implementation of a storage agent varies and is dependent on the APIs or access mechanism provided by the storage system. DBAdmin is an instance of StorageAgent and serves an intermediary between storable classes and relational database systems (RDBS). The DBAdmin object generates SQL, programmatically and dynamically, in accordance with its responsibilities as a storage agent and the actions of the client application.

Creating a Schema

According to one embodiment, a relational database schema may be generated by invoking the create method of a DBAdmin object. Note that in this example it is assumed that the DBAdmin object implements StorageAgent. According to this example, the creation of a DBAdmin object requires a username, password and location for the database, and a Schema object. The creation of a Schema object requires an array of storable classes that are used by the application. Therefore, the DBAdmin uses a Schema that references the storable classes that are used by the application as illustrated below in Table 3.

TABLE 3
Exemplary Schema used by DBAdmin
Class [] schemaClasses =
{
    ACCESS.class,
    SESSION.class,
    PAGEDESCRIPTOR.class,
    PAGEGROUP.class,
    PERSON.class,
    USER.class,
    ORGANIZATION.class,
    STATE.class,
    DEMOGRAPHIC.class,
    SUPERUSER.class,
};
Schema schema = new Schema ( schemaClasses );
Storage dbAdmin = DBAdmin (username, password, url, schema);
dbAdmin.create ( );

Initializing Schema Object

In accordance with the present example, when a Schema object is instantiated, it creates for itself a collection of objects that are used to model the elements found in a database and the relationship between those elements and the storable classes participating in the application.

FIG. 5 is a flow diagram illustrating schema object initialization processing according to one embodiment of the present invention. For purposes of this example, prior to initialization, it is assumed the application has defined an array of storable classes.

At block 505, a storable class that is used in the assignment of primary keys is added to the collection of storable classes. The primary key storable, PKey, is used to record the values of primary keys that have been assigned automatically by Lentils during the runtime of the application.

At block 510, each storable class in the array is prepared and sorted. Certain embodiments assume language reflection is used to specify various properties of the storable class. This includes an ancillary name of the storable class, ancillary names of the attributes, and information as to whether a storable sub-class extends some other storable sub-class. The array of storable classes is sorted according to dependent relationships. Storable classes may contain relational attributes. A storable class containing a relational attribute that references some other storable class is located after the referenced storable class.

In block 511, for each storable class, a table object is created. At decision block 515, a determination is made regarding whether there are further storable classes to be processed. If so, at block 520, the table object is created for the next storable class. Details regarding table object creation are discussed below with reference to FIG. 6. Otherwise, if a table object has been created for each storable class, then processing continues with block 525.

At block 525, table objects are retrieved. In block 526, for each table object created, any JoinTables associated with the table are created. At decision block 530, a determination is made regarding whether there are further table objects to be processed. If so, at block 540, peer relationships are identified. Otherwise, if all table objects have been processed, then the processing flow continues with block 550.

For each peer relational attribute in a storable, a JoinTable will be created. At decision block 535, a determination is made regarding whether there are further peer relational attributes in the current storable to process. If so, a JoinTable object is created at block 545. Details regarding JoinTable object creation are discussed below with reference to FIG. 6. Otherwise, if all peer relational attributes in the current storable have been processed, then processing continues with decision block 530.

At block 550, the tables are made aware of their relationship to other tables. According to one embodiment, awareness includes knowledge of what tables are peers, providers, dependents, ascendants and descendants.

FIG. 6 is a flow diagram illustrating table object creation processing of block 520 according to one embodiment of the present invention. At decision block 605, a determination is made regarding whether the table is the root extension. If the table is the root extension, then at block 615 a CLASS column is created. The CLASS column models a physical column that contains a number that uniquely identifies the CLASS. This information is used when reading a storable to re-construct the correct type of storable.

If the table is not a root extension, then at block 610 for each primary column associated with the super table, a reference column is created with a foreign key reference to the super column.

At block 620, the attributes are obtained. In block 621, the attributes obtained for the specific storable class are iterated over. At decision block 625, a determination is made with regard to whether all attributes have been processed. If more attributes remain to be processed, the processing continues with decision block 630; otherwise, processing is complete.

At decision block 630, the attribute type is determined. If the attribute is of type Name, then the name of the table is assigned at block 635.

If the attribute is of type primitive, then at block 640 a column is created and assumes the properties of the attribute and AttributeProfile. This includes the name of the column, size if applicable, whether it is primary, unique or nullable.

If the attribute is one of the following provider types, Parent, Constant, ForeignParent or ForeignChild, then at block 645 for each primary column associated with the provider table, a reference column is created with a foreign key reference to the provider column.

FIG. 7 is a flow diagram illustrating JoinTable object creation processing of block 545 according to one embodiment of the present invention. According to this example, a JoinTable is created for all peer attributes. According to one embodiment, the name of the JoinTable is the concatenation of the owner table, an underscore, and the name of the peer attribute. A JoinTable models a physical table in the database, and embodies a relationship between two tables.

At block 710, the peer attribute is obtained. At decision block 720, the attribute type is determined. If the peer attribute is of type RecursivePeer, then at block 730 for each primary column associated with the owner table a left and right column is created. Each of the left and right columns contain a foreign key reference to the provider column. According to one embodiment, for RecursivePeer columns, the name of the left column is the concatenation of the owning table name, an underscore, the name of the peer column, an underscore and the letter ‘L’. Similarly, according to one embodiment, for RecursivePeer columns, the name of the right column is the concatenation of the owning table name, an underscore, the name of the peer column, an underscore and the letter ‘R’.

For all other, or simple peer attributes, at block 740 for each primary column associated with the owner table a left column is created and contains a foreign key reference to the provider column. For each primary column associated with the peer table, a right column is created and contains a foreign key reference to the provider column. By convention, in the present example, the name of a simple peer column is the concatenation of the provider column's table name, an underscore and the name of the provider column. In alternative embodiments, other conventions may be employed for establishing the name of a peer column.

FIG. 8 is a flow diagram illustrating database schema generation processing according to one embodiment of the present invention. According to the present example, a DB schema is created by executing a series of SQL statements which taken in their entirety, result in a fully manifested DB schema.

The process begins at block 810 by creating a SQL cache or FIFO. This cache is used to store SQL statements in the order they were placed into the cache.

At block 820, the process of generating SQL statements is performed. Details regarding the generation of the create schema SQL sequence are discussed below with reference to FIG. 9. Upon completion of block 820, the cache contains a collection of SQL statements.

In this example, in block 821, each SQL statement in the cache is then executed in the order the statements were place in the cache. At decision block 825, a determination is made regarding whether additional SQL statements remain in the cache to be executed. If one or more SQL statements remain in the cache, then at block 830 the next SQL statement is executed. If no further SQL statements remain in the cache, then processing is complete.

While in the above example, all SQL statements are cached in a FIFO in the natural order as a particular action, such as creating, deleting and saving an object, propagates through data and relationships according to an appropriate algorithm, in alternative embodiments one or more SQL statements may be executed out of this natural order and/or without adding them to the FIFO. For example, one or more SQL statements in the FIFO may be executed before completing the propagation. Additionally, any SQL statement generated as part of the action, that does not present a dependency on the generation of subsequent SQL or the effect of such subsequent SQL can be executed without being added to the FIFO cache; and any series of SQL statements contained in FIFO that do not present a dependency on the generation of subsequent SQL or the effect of such subsequent SQL can be executed without completing the propagation.

FIG. 9 is a flow diagram illustrating block 820 of FIG. 8 according to one embodiment of the present invention. According to the present example, for each table in a Schema object, a CREATE TABLE statement is created. Note that a JoinTable extends, or is a table, and therefore CREATE TABLE statements are created for them as well.

At block 910, all tables are obtained. In block 911, all tables are iterated over. At decision block 915, a determination is made regarding whether all tables have been processed. If one or more tables remain to be processed, at block 920, generation of the appropriate sequence of one or more SQL statements for is started. According to one embodiment, the name of the table is used to define the table name in a CREATE TABLE SQL statement.

A table has columns. For each column associated with the table, a column definition is added to the CREATE TABLE statement. At block 925, the columns associated with the table are identified.

In block 926, all columns of the current table are iterated over. At decision block 930, a determination is made regarding whether one or more columns of the table remain to be processed. If one or more columns of the table remain to be processed, at block 935, the column definition is included within the CREATE TABLE definition. A column has characteristics that include name, data type, size, primary, unique, null, and foreign references. Each of these characteristics is manifested in the CREATE TABLE definition by some means. The exact syntax of the definition varies depending upon the vendor of the database system in use. If supported by the database vendor, for each column that is a primary key, the column definition will include an expression defining the column as a primary key. Some database vendors do not support the definition of a primary key using this technique. For those vendors, additional SQL is included in the cache during the post table create process (945).

The use of post table create step depends on the type of database vendor in use. For example, some database vendors prefer primary key definitions to be declared outside the CREATE TABLE statement. For those vendors, this section may create and cache a CREATE INDEX statement. Additionally, other database vendors may have their own unique syntax or variation that may be supported by embodiments of the present invention.

For example when provisioning the primary key column ID in table ACCESS. The following DDL statements illustrate the same effect for different database vendors.

Primary Key, Database Vendor A:

Or when provisioning primary key column ACCESS in table SESSION having a foreign key reference to column ID in ACCESS, the following DDL statements illustrate the same effect for different database vendors:

Foreign Key Database Vendor A:

In similar ways, by specifying implicit, explicit and ancillary properties of storable classes and their attributes (i.e. primitive and relational), appropriate data definition expressions (DDE) are programmatically generated containing proper syntax for a given database vendor. The DDE are used to provision elements of a schema, including, but not limited to, tables, columns, column data types, column size, and integrity constraints including but not limited to primary keys, unique keys, foreign keys and whether null values are allowed; and performance characteristics, including, but not limited to, indexes.

Regardless of the database vendor, the creation of a table includes the appropriate combination of SQL statements to create a table, assign indexes to the columns having primary keys and declare foreign key references to provider columns. At block 940, once all columns have been processed, the appropriate combination of SQL statements generated by blocks 920-935 are cached in the FIFO for subsequent execution. At block 945, optional post TABLE CREATE SQL statements are cached in the FIFO for execution.

FIG. 10 conceptually illustrates structural relationships for primitive attributes according to one embodiment of the present invention. According to one embodiment, generally, for each primitive attribute, e.g., primitive 1011, in a storable class, e.g., A 1012, a column 1031 is created in a table, e.g., table A 1032, associated with the storable class.

In this example, the structural relationship for a primitive attribute is illustrated in each of application space 1010, Lentils space 1020 and database space 1030. Application space 1010 refers to the context or perspective of a database application, e.g., a software application that utilizes Lentils to facilitate access to a database system. Lentils space 1020 refers to the context or perspective of the Lentils software. Database space 1030 refers to the context or perspective of the database system, e.g., an RDBS.

In application space 1010, a database application (not shown) has created an instance, A 1012, of a storable class (not shown). The storable class included a primitive attribute, primitive 1011. Lentils space 1020 programmatically receives the definition of the storable class from the database application via DBAdmin 1015 (an instance of a StorageAgent). In Lentils space 1020, the storable object, A 1012, is represented as a table, table A 1022, having a column 1021 corresponding to primitive 1011. Database space 1030 creates a table object, table A 1032, having a column reference, column 1031, responsive to appropriate instructions, e.g., one or more SQL statements or storage system API calls, by Lentils software.

FIG. 11 conceptually illustrates structural relationships for inheritance according to one embodiment of the present invention. Generally, for any storable class B that extends a storable class A, other than storable itself, then for each primary column (super-column) in the table associated with storable class A, a column is created in the table associated with storable class B, and the extended column contains a foreign key reference to the super-column in the table associated with the storable class A.

In the present example, in application space 111O, storable class B 1113 extends a storable class A 1112 having primitive attribute, primitive 1111. In Lentils space 1120, this is represented in an intermediate form as a first table object, table A 1122, corresponding to storable class A 1112 having a column reference 1121; and a second table object, table B 1124, corresponding to storable class B 1113, having a column reference 1123.

Finally, in database space 1130, two tables, table A 1132 and table B 1134, corresponding to table A 1122 and table B 1124, respectively, are created. An extended column 1133 corresponding to column reference 1123, is created in table 1134 which contains a foreign key reference 1135 to a primary column (super-column) 1131 of table A 1132, corresponding to the column reference 1121.

FIG. 12 conceptually illustrates structural relationships for parent attributes according to one embodiment of the present invention. Generally, for each parent attribute in storable class B referencing storable class A, then for each primary column in the table associated with storable A, a column is created in the table associated with the storable class B, and the column in the table associated with the storable class B contains a foreign key constraint referencing its corresponding column in the table associated with the storable class A.

In the present example, in application space 1210, a parent attribute 1214 of a storable class B 1213 references a storable class A 1212, which has a primary primitive attribute 1211. In Lentils space 1220, this is represented in an intermediate form as a first table object, table A 1222, corresponding to storable class A 1212 having a column reference 1221; and a second table object, table B 1224, corresponding to storable class B 1213, having a column reference 1223.

Finally, in database space 1230, two tables, table A 1232 and table B 1234, corresponding to table A 1222 and table B 1224, respectively, are created. A column 1233 is created in table 1234 that contains a foreign key reference 1235 to a primary column (super-column) 1231 of table A 1232, corresponding to the column reference 1221.

FIG. 13 conceptually illustrates structural relationships for recursive parent according to one embodiment of the present invention. Generally, for each RecursiveParent attribute in a storable class, then for each primary column in the table, a recursive column is created and contains a foreign key constraint to the primary column.

In the present example, in application space 1310, a storable class A 1312 has a RecursiveParent attribute 1314 and a primary primitive attribute 1311. In Lentils space 1320, this is represented in an intermediate form as a table object, table A 1322, having a first column reference 1321 corresponding to the primary primitive attribute 1311 and a second column reference 1323 corresponding to the RecursiveParent attribute 1314.

Finally, in database space 1330, a table A 1332 is created having a primary column 1331 corresponding to column reference 1321 and a recursive column 1333 corresponding to column reference 1323. The recursive column 1333 contains a foreign key constraint 1335 to the primary column 1331.

FIG. 14 conceptually illustrates structural relationships for Foreign Parent, Foreign Child or Constant according to one embodiment of the present invention. Generally, for each ForeignParent, ForeignChild or Constant attribute in storable class B referencing storable class A, then for each primary column in the table associated with storable A, a reference column is created in the table associated with storable B, and the reference column contains a foreign key constraint to its corresponding column in the table associated with the storable class A.

In the present example, in application space 1410, a Foreign Parent, Foreign Child or Constant attribute 1416 of a storable class B 1413 references a storable class A 1412, which has a primary primitive attribute 1411. Storable class B 1413 also has a primary primitive attribute 1414. In Lentils space 1420, this is represented in an intermediate form as a first table object, table A 1422, corresponding to storable class A 1412 having a column reference 1421; and a second table object, table B 1424, corresponding to storable class B 1413, having a first column reference 1423 corresponding to the Foreign Parent, Foreign Child or Constant attribute 1416 and a second column reference 1426 corresponding to the primary primitive attribute 1414.

Finally, in database space 1430, two tables, table A 1432 and table B 1434, corresponding to table A 1422 and table B 1424, respectively, are created. A column is created in table A 1432 corresponding to the column reference 1421. A first column 1433 is created in table B 1434 corresponding to the column reference 1426 and a reference column 1436 is created in table B 1434 that contains a foreign key constraint 1435 to column 1431.

FIG. 15 conceptually illustrates structural relationships for peer or children according to one embodiment of the present invention. Generally, for each peer or children attribute in storable class B referencing storable class A, a join table is created. In the join table, for each primary column in the table associated with storable class B, a column is created in the join table with a foreign key constraint referencing the column in the table associated with storable class B; and for each primary column in the table associated with storable class A, a column is created in the join table with a foreign key constraint referencing the column in the table associated with storable class A.

In the present example, in application space 1510, a peer or children attribute 1516 of a storable class B 1513 references a storable class A 1512, which has a primary primitive attribute 1511. Storable class B 1513 also has a primary primitive attribute 1514. In Lentils space 1520, this is represented in an intermediate form as a first table object, table A 1522, corresponding to storable class A 1512 having a column reference 1521 corresponding to the primary primitive attribute 1511, a second table object, table B 1524, corresponding to storable class B 1513, having a first column reference 1526 corresponding to the primary primitive attribute 1514, and a third table object, JoinTable BA 1528 having a first column reference 1527 corresponding to column reference 1521 and a second column reference 1523 corresponding to column reference 1526.

Finally, in database space 1430, three tables, table A 1532, table B 1534, and table BA 1537 corresponding to table A 1522, table B 1524 and JoinTable BA 1528, respectively, are created. A column 1531 is created in table A 1532 corresponding to the column reference 1521. A column 1533 is created in table B 1534 corresponding to the column reference 1526. A first column 1538 is created in table BA 1537 with a foreign key constraint 1536 referencing column 1533 of table B 1534 and a second column 1539 is created in table BA 1537 with a foreign key constraint 1535 referencing column 1531 of table A 1532.

FIG. 16 conceptually illustrates structural relationships for recursive peer according to one embodiment of the present invention. Generally, for each recursive peer attribute in storable class A, a join table is created. In the join table, for each primary column in the table associated with storable class A, a left column is created with a foreign key constraint referencing the column in the table associated with storable class A; and a right column is created with a foreign key constraint referencing the column in the table associated with the storable class A.

In the present example, in application space 1610, a storable class A 1612 has a recursive peer attribute 1614 and a primary primitive attribute 1611. In Lentils space 1620, this is represented in an intermediate form as a table object, table A 1622, having a column reference 1621 corresponding to the primary primitive attribute 1611; and a join table object, JoinTable AA 1623, corresponding to the recursive peer attribute 1614, having a left column reference, i.e., column L 1624, and a right column reference, i.e., column R 1626, both referencing column reference 1621.

Finally, in database space 1630, two tables, table A 1632, corresponding to table A 1622, and table AA 1638, corresponding to JoinTable AA 1623, are created. A column 1631 is created in table A 1632 corresponding to column reference 1621. A left column 1634 is created in table AA 1638 corresponding to left column reference 1624 and having a foreign key constraint 1635 referencing column 1631 in table A 1632. A right column 1636 is created in table AA 1638 corresponding to right column 1626 and having a foreign key constraint 1637 referencing column 1631 in table A 1632.

Saving an Object

Table 4 shows exemplary pseudo code for saving a storable object.

TABLE 4
Saving a Storable Object
Storable storable = // Some Storable object, ORGANIZATION for
example...
Storage dbAdmin = DBAdmin (username, password, url, schema);
dbAdmin.save ( storable );

FIG. 17 is a flow diagram illustrating processing associated with saving an object according to one embodiment of the present invention. According to the present example, a storable object is saved by executing a series of SQL statements which taken in their entirety, result in a specific set of records in the database that contain information reflecting the state of the storable, all instances of relationships between other storables, and the state of the other storables.

The process begins at block 1710 where a SQL cache or FIFO is created. This cache is used to store SQL statements in the order they were placed into the cache.

At block 1720, the process of generating SQL statements to save the storable is performed. Details regarding generation of data manipulation language statements to save the state of a storable object are discussed below with reference to FIG. 18. Similar statement generation methodologies may be employed for other forms of data manipulation expressions.

After block 1720, the cache contains a collection of SQL statements and each SQL statement in the cache is executed in the order the statements were place in the cache. At decision block 1730, a determination is made regarding whether more SQL statements remain in the cache. If so, at block 1740, the next SQL statement is executed. Otherwise, if there are no further SQL statements in the cache to be executed, then processing continues with block 1750 where the rollback states of the storables are set to COMMITTED.

FIG. 18 is a flow diagram illustrating data manipulation language statement generation of blocks 1720, 1950 and 2245 according to one embodiment of the present invention. In the present example, the save process creates a sequence of SQL statements to save the state of the storable, all relationships between other storables, and the state of other storables, and which aligns with the physical constraints with the database and supporting physical tables and columns.

At block 1810, the process begins by obtaining a set of ascendant tables for the current storable. The current storable is of a certain type, and Schema maps the class type to the table.

The ascendant tables are iterated over. The current table corresponds to the table of a given iteration cycle. At decision block 1820, a determination is made regarding whether more ascendant tables remain to be processed. When all ascendant tables have been processed, processing branches to block 1880 where the rollback state of the current storable is set to COMMITTING.

If one or more ascendant tables remain to be processed, then at block 1830, the provider relationships are traversed. According to one embodiment, a provider has its records manipulated before any dependent records are manipulated to satisfy foreign key constraints. Details regarding provider traversal processing are discussed below with reference to FIG. 19.

At decision block 1840, a determination is made regarding whether the current table is the first table in the ascendant collection. If the current table is the first table in the ascendant collection, then the current storable is prepared at block 1850. After block 1850 and for each subsequent table in the ascendant collection processing continues with block 1860.

At block 1860, the current storable is persisted. Persisting a storable may result in the creation of an INSERT or UPDATE SQL data manipulation language statement, depending on the state of the storable. Details regarding processing relating to persisting a storable are discussed below with reference to FIG. 20. Similar persisting processing statement generation methodologies may be employed for other forms of data manipulation expressions.

At block 1870, peer relationships are traversed. Details regarding processing relating to peer relationship traversal are discussed below with reference to FIG. 22.

FIG. 19 is a flow diagram illustrating provider traversal processing of block 1830 according to one embodiment of the present invention. According to one embodiment, a provider attribute represents or implies one or more records must exist in the database before a dependent record can be inserted. Exemplary provider attributes include Parent, ForeignParent, ForeignChild and Constant.

At block 1910, all provider attributes for the current table are obtained. The attributes are only those that belong to the specific storable class, corresponding to the current table. All provider attributes are then iterated over.

In block 1911, all attributes are iterated over. At decision block 1920, a determination is made regarding whether all attributes have been processed. If one or more provider attributes remain to be processed, then processing continues with block 1930 where, the provider storable for the current storable is obtained. At decision block 1940, a determination is made regarding whether the current storable has a provider storable. If so, the provider storable is saved at block 1950. As above, the current SQL cache is used to collect SQL statements necessary to save the provider storable. If the current storable does not have a provider storable, then processing continues with decision block 1920.

When all attributes have been iterated over, then provider traversal processing is complete.

FIG. 20 is a flow diagram illustrating storable preparation processing of block 1850 according to one embodiment of the present invention. In this example, preparing a storable to be saved is a process that verifies all the primitive attributes, that represent primary values, have values assigned. A primitive attribute is specified as a primary using the attribute's AttributeProfile primary setting.

At block 2010, all primitive attributes that represent primary values are obtained. In block 2011, the primary primitive attributes are iterated over.

At decision block 2020, a determination is made regarding whether there are additional attributes to process. If so, it is determined, at decision block 2030, whether a value is assigned to the next attribute. If a value is not assigned to the attribute, then at block 2040 a unique value is obtained and associated with the attribute. According to one embodiment, DBAdmin tracks the next values to be assigned to an attribute that serves as a primary key. Next values are cached in association with PKey storable objects. The PKey storable contains attributes associated with a table, column and a range of values. When DBAdmin assigns all the values from the range of values, the PKey storable's range of values is advanced and the PKey storable is saved. DBAdmin saves PKey storables so that if the application is restarted, DBAdmin initializes its next values from the records associated with PKey and is guaranteed to assign unique values.

Using this technique, the storable's primary values that uniquely identify the storable are guaranteed to be available to the application, immediately after the storable has been saved.

Once the current storable's primary key values have been fully assigned, the SQL necessary to persist the current storable can be generated.

FIG. 21 is a flow diagram illustrating processing of block 1860 associated with persisting a storable according to one embodiment of the present invention. In the present example, persisting a storable is the process of creating a SQL statement which when executed will store the data values associated with the current storable's attributes into a record belonging to the current table. Only the data values associated with the primitive attributes, belonging to the specific storable class, that corresponds to the current table are included. Primitive attributes that are not associated with data values in the current storable will not influence the formation of the SQL statement.

At decision block 2110, a determination is made regarding the state of the current storable. If the state of the current storable is TRANSIENT, then at block 2120 the data values are stored using an INSERT SQL statement. The INSERT is created and placed into the SQL cache.

If the state of the current storable is COMMITTED, then at block 2130 the data values are stored using an UPDATE SQL statement. The UPDATE is created and placed into the SQL cache.

If the current storable has any state other than TRANSIENT or COMMITTED, no SQL will be generated or cached.

FIG. 22 is a flow diagram illustrating peer traversal processing of blocks 1870 and 2535 according to one embodiment of the present invention. At block 2210, the peer attributes associated with the current table are obtained. In block 2211, the peer attributes associated with the current table are iterated over. The current peer attribute corresponds to the peer attribute of a given iteration cycle.

At decision block 2215, a determination is made regarding whether more attributes remain to be processed. If so, then processing continues with decision block 2220. At decision block 2220, a determination is made regarding whether peer storables are defined. The current peer attribute is skipped if peer storables are not defined, or otherwise specified.

At decision block 2225, a determination is made regarding whether the attribute is of type children. If the attribute is of type children, then the update process for children is performed at block 2230.

At block 2235, the peer storables associated with the current peer attribute are obtained from the current storable. In block 2236, the peer storables obtained are iterated over. The current peer storable corresponds to the peer storable of a given iteration cycle. At decision block 2240, a determination is made regarding whether more peer storables remain to be processed. If so, the current peer storable is saved at block 2245. According to one embodiment, because of foreign key references in the join table, all peer storables are first saved in the database. The current SQL cache is used to collect the SQL necessary to save the current peer storable.

Once the SQL cache includes statements to persist the collection of peer storables, a DELETE is created and added to the cache at block 2250. The DELETE will remove all current existing records from the join table where the columns in the join table, corresponding to the current peer attribute, contain rows corresponding to the current storable's primary data values.

At block 2255, the peer storables associated with the current peer attribute are obtained from the current storable. In block 2256, the peer storables associated with the current peer attribute are iterated over. The current peer storable corresponds to the peer storable of a given iteration cycle.

At decision block 2260, a determination is made regarding whether further peer storables associated with the current peer attribute remain to be processed. If so, at block 2265, an INSERT is created and added to the SQL cache that records in the join table the relationship between the current storable and the current peer storable.

At the end of the peer traversal process, the SQL cache contains statements that will result in the replacement of prior relationships to the current storable with the current specified peer relationships.

FIG. 23 is a flow diagram illustrating update children processing according to one embodiment of the present invention. According to the present example, the children attribute is a type of peer attribute with unique save semantics. The parent (storable) of storables through a children attribute is not intended to share ownership of the children storables. When a parent storable is saved, any storables that were related to the parent through children attribute that are not part of a current specified collection are deleted.

At block 2310, the current children storables collection is obtained. At block 2320, the children storables that are not part of the current specified collection are read.

In block 2321, each storable read is deleted. At decision block 2330, a determination is made with regard to whether more storables remain to be deleted. If so, at block 2340, the next storable is deleted.

Deleting an Object

Table 5 shows exemplary pseudo code for saving a storable object.

TABLE 5
Deleting a Storable Object
Storable storable = // Some Storable object, ORGANIZATION for
example...
Storage dbAdmin = DBAdmin (username, password, url, schema);
dbAdmin.deleteAll ( storable );

FIG. 24 is a flow diagram illustrating processing associated with deleting an object according to one embodiment of the present invention. In the present example, a storable object is deleted by executing a series of SQL statements which taken in their entirety, result in the removal of a specific set of records from the database that reflect the deletion of the storable, and where appropriate, the removal of dependent records (objects) or nullifying foreign key references in accordance with the relational attributes and their AttributeProfiles.

The process begins at block 2410 by creating a SQL cache or FIFO. This cache is used to store SQL statements in the order they were placed into the cache.

At block 2420, the process of generating SQL statements to delete the storable is performed. Details regarding generation of data manipulation language statements to delete a storable object are discussed below with reference to FIG. 25. Similar statement generation methodologies may be employed for other forms of data manipulation expressions.

After block 2420, the cache contains a collection of SQL statements. In block 2421, each SQL statement in the cache is executed in the order the statements were place in the cache. At decision block 2430, a determination is made regarding whether more SQL statements remain to be executed. If so, at block 2440, the next SQL statement form the cache is executed. When execution of all SQL statements from the cache has been completed, processing continues with block 2450 where the rollback state of the current storable is set to DELETED.

FIG. 25 is a flow diagram illustrating blocks 2340, 2670, 2830, and 2950 relating to generation of data manipulation language statements to delete a storable object according to one embodiment of the present invention. At block 2505, the rollback state of the current storable is set to DELETING.

At block 2510, the set of ascendant tables for the current storable is obtained. The storable is of a certain type, and Schema maps the class type to the table.

In block 2511, the ascendant tables are iterated over. The current table corresponds to the table of a given iteration cycle.

At decision block 2515, a determination is made regarding whether there are more tables to process. If so, then at block 2520, the Primary Key Specification (PKS) is pushed onto the PKS Stack, a new PKS is created, the orphan table is assigned, and a DELETE is created and retained for later inclusion in the SQL cache. The DELETE matches the primary keys of the current table to the current PKS.

At block 2525, the RecursiveParent relationships are updated. Details regarding processing associated with updating RecursiveParent relationships are discussed below with reference to FIG. 26.

At block 2530, dependent relationships are updated. These include parent and ForeignParent relationships. Details regarding processing associated with updating dependent relationships are discussed below with reference to FIG. 27.

At block 2535, peer relationships are updated. Details regarding processing relating to peer relationship traversal are discussed above with reference to FIG. 22.

At block 2540, the DELETE that was previously prepared for the current table is placed into the SQL cache.

At block 2545, ForeignChildren relationships are updated. Details regarding processing associated with updating ForeignChildren relationships are discussed below with reference to FIG. 29.

At block 2550, the previous PKS is popped off the PKS Stack and descendant table iteration continues with decision block 2515.

As some databases do not support self-referencing sub-queries, an alternate technique for generating a collection of SQL statements to delete a storable, and its corresponding records is also provided. According to this alternative technique, rather than using a hierarchy of nested SELECT sub-queries to identify affected records, the PKS of this algorithm does not use self-referencing sub-queries and emphasizes the use of primary key values to identify affected records.

According to the alternate technique that emphasizes the use of primary key values to identify affected records, the following processing is substituted for that described above with reference to block 2515. The current Primary Key Specification is pushed onto a PKS Stack and a new PKS is generated that contains a list of primary key values corresponding to the records to be deleted in the current table. If the current table is the super-table, the PKS primary key values are obtained using a SELECT statement based on the data values associated with the storable being deleted. The storable class may consist of multiple levels of inheritance, and the storable being deleted may have data values associated with inherited tables. If so, the SELECT statement that retrieves the primary key values includes terms to bind the data values to their respective columns and tables, and terms to bind the primary columns of a sub-table to the primary columns of the super-table. If the current table is not the super-table, then the new PKS is generated binding the values of the previously saved PKS to the primary columns of the current table. A DELETE statement is created and retained for later inclusion in the SQL cache. When executed, the DELETE statement will remove all records from the current table whose primary key values are included in the PKS.

FIG. 26 is a flow diagram illustrating processing of block 2525 associated with updating RecursiveParent relationships during deletion of a storable object according to one embodiment of the present invention. In the present example, RecursiveParent relationships are updated during the delete process so that if a parent record is deleted, any child records are updated or deleted in accordance with the relationship and AttributeProfile.

At block 2610, all RecursiveParent attributes are obtained for the current table. In block 2611, all obtained RecursiveParent attributes are iterated over. At decision block 2620, a determination is made regarding whether more attributes remain to be processed. If so, processing continues with decision block 2630.

At decision block 2630, a determination is made regarding whether the attribute allows a null reference. If so, at block 2640, an UPDATE is created and cached that sets the foreign key references in the child records to NULL.

If, however, the attribute does not allow a null reference, then at block 2650 all child storables of the current storable are read.

In block 2651, each child storable read is deleted. The current SQL cache is used to collect the SQL necessary to delete each storable read. At decision block 2660, a determination is made regarding whether more storables remain to be deleted. If so, at block 2670, the SQL statements for deleting the next storable are stored in the current SQL cache. FIG. 27 is a flow diagram illustrating dependent traversal processing of block 2530 according to one embodiment of the present invention. In the present example, records in a dependent table are updated and or deleted in accordance with the type of attribute and AttributeProfile.

At block 2710, the current table's dependent tables are obtained. In block 2711, the dependent relationships obtained are iterated over. At decision block 2720, a determination is made regarding whether more dependent relationships remain to be processed. If so, at decision block 2730, a determination is made regarding whether the AttributeProfile allows a null reference. If so, at block 2740, an UPDATE is created that sets the foreign keys of the dependent records to NULL.

If the AttributeProfile does not allow a null reference, then at block 2750 a nested WHERE IN clause is pushed onto a stack and a new nested WHERE IN clause is created.

The nested WHERE IN clause is an expression where the foreign key columns of the dependent table are in the set of values implied by the current PKS. Note in the context of this step, the PKS is a SELECT sub-query that represents the rows of primary columns from the current (a.k.a. parent or provider) table are affected by the delete operation. Therefore, the nested WHERE IN clause will be used to identify the affected records in the dependent table across the relationship. The nested WHERE IN clause identifies records in all tables that are related to the dependent table through inheritance relationships of the dependent table's associated storable class.

According to the alternate technique that emphasizes the use of primary key values to identify affected records, the following processing is substituted for that described above with reference to block 2750. The PKS for the current table is pushed onto the PKS Stack and a new PKS is created containing primary key values identifying records to be deleted from all tables associated with the dependent relationship. The primary key values for the new PKS are obtained using a SELECT statement containing terms that binds the primary key values of the saved PKS to the foreign columns of the dependent table, and binds the primary columns of all tables in the dependent inheritance hierarchy to the primary columns of their super-table, and returns primary key values from the dependent table's root-table.

At block 2760, the extensions of the dependent table are traversed and updated. Details regarding processing associated with extension traversal are discussed below with reference to FIG. 28.

At block 2770, the nested WHERE IN clause is popped off the stack and dependent table iteration processing continues with decision block 2720. Alternatively, if the primary key value based on the PKS is being used, then the previously saved PKS is popped off the PKS Stack.

FIG. 28 is a flow diagram illustrating extension traversal processing of block 2760 according to one embodiment of the present invention. In the traverse extensions step, a dependent table is involved in a delete operation that is spanning a dependent relationship. For example, parent and ForeignParent represent dependent relationships. Records in the dependent table are deleted in this process. The dependent table can be related to other tables through inheritance relationships of the dependent table's associated storable class. Other tables related to the dependent table, through inheritance relationships are defined as a table's extensions, or sub-tables. The dependent table is included in the collection of table extensions. If the records of a dependent table that are to be deleted are related to other records in extended tables, then related records in the extended tables are first deleted.

At block 2810, the table extensions for the dependent table are obtained. In block 2811 the table extensions obtained are iterated over. At decision block 2820, a determination is made regarding whether more table extensions remain to be processed. If so, at block 2830, the current storable is pushed onto a stack. Additionally, a new, default, current storable is created from the extended table. The table is aware of its storable class, and using this knowledge, a default storable may be created. The newly created storable has no data values associated with it, other than its class ID. Note that at this step, the nested WHERE IN clause sufficiently identifies affected records in the dependent table, which then will be used to identify records in the extended table.

The current orphan table is pushed onto a stack. The current orphan table is undefined.

At block 2840, the current (default) storable is deleted. The current SQL cache is used to collect the SQL necessary to delete the default storable.

At block 2850, the current storable is popped off the stack. The current orphan table is also popped off the stack. Then, table extension iteration processing continues with decision block 2820.

Alternatively, if the primary key value based on the PKS is being used, then the current table is pushed onto a stack. The table extensions for the dependent table are obtained. The table extensions are iterated over. A determination is made regarding whether more table extensions remain to be processed. If so, the extended table is assigned as current table and delete processing continues at block 2510.

FIG. 29 is a flow diagram illustrating foreign child traversal processing of block 2545 according to one embodiment of the present invention. According to the present example, in a ForeignChild relationship, the parent storable semantically owns the child storables, but structurally, in the database, a parent record is dependent on the child record. When a parent record is deleted, the child record is deleted as well. Because the parent record is deleted first, there will be no natural data relationship to identify the child record that is to be deleted. This process is designed to delete the child storables.

At block 2910, ForeignChild attributes are obtained from the current table. At block 2920, all the parent storable records are read using the PKS. The parent storables intrinsically contain all child proxy storables.

In block 2921, The ForeignChild attributes are iterated over. At decision block 2930, a determination is made regarding whether more ForeignChild attributes remain to be processed. If so, for each parent storable, and ForeignChild attribute, the corresponding child storable is deleted. At decision block 2930, a determination is made regarding whether parent storables remain to be processed.

If one or more parent storables remain to be processed, then at block 2940 the ForeignChild proxy is obtained from the next parent. At block 2950, The current SQL cache is used to collect the SQL necessary to delete the ForeignChild proxy storable.

Alternatively, using value-based PKS, ForeignChild attributes are obtained for the current table. All ForeignChild attributes are iterated over. A determination is made regarding whether more ForeignChild attributes remain to be processed. If so, the current PKS is pushed onto the PKS Stack and a new PKS is created containing primary key values identifying records to be deleted from the tables associated with the ForeignChild attribute. The primary key values for the new PKS are obtained using a SELECT statement containing terms that binds the primary key values of the saved PKS to the foreign columns of the ForeignChild table, and binds the primary columns of all tables in the ForeignChild inheritance hierarchy to the primary columns of their super-table, and returns primary key values from the ForeignChild table's root-table. The extensions for the corresponding ForeignChild table are traversed and updated. Using value based PKS, the previously saved PKS is popped off the PKS Stack.

Reading a Storable

Table 6 shows exemplary pseudo code for reading a storable object.

TABLE 6
Reading a Storable Object
Storage dbAdmin = DBAdmin (username, password, url, schema);
Storable storable = // Some Storable object, ORGANIZATION for
example...
StorageFilter filter = dbAdmin.getFilter ( );
Storable[] storables = dbAdmin.readAll ( storable, filter );

FIG. 30 is a flow diagram illustrating processing associated with reading an object according to one embodiment of the present invention. According to the present example, reading storable objects from a database is done by creating an instance of a specific type of storable object, called the pattern storable, optionally associating data values with primitive attributes, and optionally creating and preparing a DBFilter. When a storable is read, all columns from the tables associated with the storable are read. Note that for each level of inheritance a specific storable class has, extending from storable, and containing attributes, there is a corresponding table.

Blocks 3005 and 3010 are performed in application space. At block 3005, the pattern storable is prepared. At block 3010, an optional DBFilter is prepared.

At block 3015, the table corresponding to the pattern storable is obtained. At block 3020, all columns are obtained for the table corresponding to the pattern storable. All columns include the columns from the related super-tables.

In block 3021, the columns are iterated over. At decision block 3025, a determination is made regarding whether more columns remain to be processed. If so, processing continues with decision block 3030.

At decision block 3030, it is determined if the column is a sub-column. If the column is a sub-column, having a foreign key reference to its super-column, then at block 3035 a WHERE EQUAL clause is added to the DBFilter that binds the sub-column to the super-column.

At decision block 3040, it is determined if the column corresponds to a primitive attribute and if the pattern storable contains a data value associated with the primitive attribute. If so, then at block 3045 a WHERE EQUAL clause is added to the DBFilter that binds the column corresponding to the primitive attribute to the data value.

Once all columns have been iterated over, at block 3050 the rows are read using the class corresponding to the pattern storable, called the pattern class, and the DBFilter. The result set of the database read operation creates a collection of storables that are returned to the application.

FIG. 31 is a flow diagram illustrating reading of storable object(s) using class and filter according to one embodiment of the present invention. In the present example, at block 3105, all columns are obtained for the table corresponding to the pattern class. At block 3110, a SELECT is created for all the columns. At block 3115, a WHERE clause is extracted from the DBFilter and added to the SELECT. At block 3120, an ORDER BY clause is extracted from the DBFilter and added to the SELECT.

At block 3125, the SELECT is executed and a result set is obtained. In block 3126, the result set is iterated over. At decision block 3130, a determination is made regarding whether more results remain to be processed. If so, at block 3135, a default storable is created of type corresponding to the pattern class.

At block 3140, all columns are obtained for the table corresponding to the pattern class. In block 3141, the columns obtained for the table corresponding to the pattern class are iterated over. At decision block 3145, a determination is made regarding whether more columns remain to be processed.

If more columns remain to be processed, then at decision block 3150 it is determined whether the column is a sub-column. If so, then there is no data in the result set, and the column is ignored as a sub-column references the same information that is associated with a super-column. The super-column will contain the necessary information.

At decision block 3155, it is determined if the result set for the column is null data. If so, then the column is ignored.

At decision block 3160, it is determined if the column represents the CLASS column. If so, then a new storable is created of a type corresponding to the class associated with the class ID data. The new storable is of the correct type when the original storable was last saved.

At decision block 3170, it is determined if the column is a reference column. If the column is a reference column, then the column references a primary key component of another storable object. At decision block 3175, it is determined if a proxy storable exists. If the current storable contains a storable object associated with the attribute, corresponding to the column then the data value is assigned to the referenced storable object. Note that this referenced storable object is called a proxy because it will contain primary identification data values and will be of the correct type corresponding to the relational attribute, but will not contain full data values, and may not be the correct class type with respect to inheritance. Thus, it is only a proxy.

If a proxy storable does not exist, then at block 3180 a proxy storable is created based on the class type associated with the table that the reference column belongs to. This proxy is then associated with the relational attribute of the current storable.

If the column corresponds to a primitive attribute then at block 3190 the data value or the result set is associated with the primitive attribute of the current storable.

Finally, at block 3195 the rollback state of the storable is set to COMMITTED.

In the foregoing specification, the present invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

At decision block 3170, it is determined if the column is a reference column. If the column is a reference column, then the column references a primary key component of another storable object. At decision block 3175, it is determined if a proxy storable exists. If the current storable contains a storable object associated with the attribute, corresponding to the column then the data value is assigned to the referenced storable object. Note that this referenced storable object is called a proxy because it will contain primary identification data values and will be of the correct type corresponding to the relational attribute, but will not contain full data values, and may not be the correct class type with respect to inheritance. Thus, it is only a proxy.

If a proxy storable does not exist, then at block 3180 a proxy storable is created based on the class type associated with the table that the reference column belongs to. This proxy is then associated with the relational attribute of the current storable.

If the column corresponds to a primitive attribute then at block 3190 the data value or the result set is associated with the primitive attribute of the current storable.

Finally, at block 3195 the rollback state of the storable is set to COMMITTED.

In the foregoing specification, the present invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

APPENDIX
Non-Lentils Technique
saveOrganization( ORGANIZATION org )
{
INSERT INTO [DEMOGRAPHIC] ( [ID], [ADDRESS], [CITY], [ZIPCODE], [PHONE], [EMAIL], [STATE] ) VALUES (1000, ‘12345
E. West Dr. #1234’, ‘Anytown’, ‘80000], ‘720-123-4567’,
‘info@info.com’, 1005 )
String sqlOrgProfile;
DEMOGRAPHIC profile = org.profile;
sqlOrgProfile = “INSERT INTO [DEMOGRAPHIC] ( [ID], [ADDRESS], [CITY], [ZIPCODE], [PHONE], [EMAIL], [STATE] )
VALUES (”;
profile.id = DATABASE_SERVICE.getNextID(“DEMOGRAPHIC”); // NOTE: DATABASE_SERVICE assumed to provide essentials.
sqlOrgProfile += addInteger ( profile.id );
sqlOrgProfile += appendString ( profile.address ); // NOTE: appendString adds comma and surrounds stick with tick marks.
sqlOrgProfile += appendString ( profile.city );
sqlOrgProfile += appendString ( profile.zipcode );
sqlOrgProfile += appendString ( profile.phone );
sqlOrgProfile += appendString ( profile.email );
sqlOrgProfile += appendInteger ( profile.state.id );
sqlOrgProfile += “)”;
INSERT INTO [ORGANIZATION] ( [ID], [NAME], [DOMAIN], [PROFILE] ) VALUES ( 1000, Software Company″, ‘swco’, 1000 )
String sqlOrg;
sqlOrg = “INSERT INTO [ORGANIZATION] ( [ID], [NAME], [DOMAIN], [PROFILE] ) VALUES (”;
org.id = DATABASE_SERVICE.getNextId (“ORGANIZATION”);
sqlOrg += addInteger ( org.id );
sqlOrg += appendString ( org.name );
sqlOrg += appendString ( org.domain );
sqlOrg += appendInteger ( org.profile.id );
sqlOrg += “)”;
String sqlPersonProfile[SIZEOFARRAY(org.personnel)];
String sqlPerson[SIZEOFARRAY(org.personnel)];
String sqlAccess[SIZEOFARRAY(org.personnel)];
For ( Integer i=0; i<SIZEOFARRAY(org.personnel); i++)
{
Person person = org.persons[i];
INSERT INTO [DEMOGRAPHIC] ( [ID], [ADDRESS], [CITY], [ZIPCODE], [PHONE], [EMAIL], [STATE] ) VALUES ( 1001,
‘12345 E. West Dr. #1234’, ‘Anytown’, ‘80000’, ‘720-123-4567’,
‘info@info.com’, 1005 )
DEMOGRAPHIC profile = person.profile;
profile.id = DATABASE_SERVICE.getNextID(“DEMOGRAPHIC”);
sqlPersonProfile [i] = “INSERT INTO [DEMOGRAPHIC] ( [ID], [ADDRESS], [CITY], [ZIPCODE], [PHONE], [EMAIL],
[STATE] ) VALUES (”;
sqlPersonProfile [i] += addInteger ( profile.id );
sqlPersonProfile [i] += appendString ( profile.address );
sqlPersonProfile [i] += appendString ( profile.city );
sqlPersonProfile [i] += appendString ( profile.zipcode );
sqlPersonProfile [i] += appendString ( profile.phone );
sqlPersonProfile [i] += appendString ( Profile.email );
sqlPersonProfile [i] += appendInteger ( profile.state.id );
sqlPersonProfile [i] += “)”;
INSERT INTO [PERSON] ( [ID], [FIRST], [LAST], [PROFILE] ) VALUES ( 1000, ‘Bob’, ‘Smith’, 1001 )
sqlPerson [i] = “INSERT INTO [PERSON] ( [ID], [FIRST], [LAST], [PROFILE] ) VALUES (”;
person.id = DATABASE_SERVICE.getNextID(“PERSON”);
sqlPerson [i] += addInteger ( person.id );
sqlPerson [i] += appendString ( person.first );
sqlPerson [i] += appendString ( person.last );
sqlPerson [i] += appendInteger ( person.profile.id );
sqlPerson [i] += “)”;
INSERT INTO [ACCESS] ( [ID], [USERNAME], [PASSWORD] ) VALUES ( 1000, ‘username’, ‘password’ )
sqlAccess [i] = “INSERT INTO [ACCESS] ( [ID], [USERNAME], [PASSWORD] ) VALUES (”;
USER user = (USER)person; // NOTE: Assumes language allows casting.
ACCESS access = user.access;
access.id = DATABASE_SERVICE.getNextID(“ACCESS”);
sqlAccess [i] += addInteger (access.id );
sqlAccess [i] += appendString (access,username );
sqlAccess [i] += appendString (access.password );
sqlAccess [i] += “)”;
}
String sqlPageGroupPage [SIZEOFARRAY(org.pageGroups)][ ]; // Second dimension of array has dependencies
String sqlOldPageGroupPage [SIZEOFARRAY(org.pageGroups)];
String sqlPageGroup [SIZEOFARRAY(org.pageGroups)];
for ( Integer i=0; i<SIZEOFARRAY(org.pageGroups); i++)
{
INSERT INTO [PAGEGROUP] ( [ID], [TITLE] ) VALUES ( 1000, ‘Installation’ )
sqlPageGroup [i] = “INSERT INTO [PAGEGROUP] ( [ID], [TITLE] ) VALUES (”;
PAGEGROUP pageGroup = org.pageGroups[i];
pageGroup.id = DATABASE_SERVICE.getNextID(“PAGEGROUP”);
sqlPageGroup [i] += addInteger ( pageGroup.id );
sqlPageGroup [i] += appendString ( pageGroup.title );
sqlPageGroup [i] += “)”;
DELETE FROM [PAGEGROUP_PAGES] WHERE [PAGEGROUP_PAGES.PAGEGROUP_ID]=1000
sqlOldPageGroupPage [i] = “DELETE FROM [PAGEGROUP_PAGES] WHERE [PAGEGROUP_PAGES.PAGEGROUP_ID]=”;
sqlOldPageGroupPage [i] += addInteger ( pageGroup.id );
sqlPageGroupPage [i] = String[SIZEOFARRAY(pageGroup.pages)]; // Sizing second dimension of array
for ( Integer j=0; j<SIZEOFARRAY(pageGroup.pages); j++ )
{
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1005 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1006 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1007 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1008 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1009 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1010 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1011 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1012 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1013 )
INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES ( 1000,1014 )
sqlPageGroupPage [i][j] = “INSERT INTO [PAGEGROUP_PAGES] ( [PAGEGROUP_ID], [PAGEDESC_ID] ) VALUES (”
PAGEDESCRIPTOR page = pageGroup.pages[j];
sqlPageGroupPage [i][j] += addInteger ( pageGroup.id );
sqlPageGroupPage [i][j] += appendInteger ( page.id );
sqlPageGroupPage [i][j] += “)”;
}
}
String sqlOldAccessPageGroup [SIZEOFARRAY(org.person)];
String sqlNewAccessPageGroup [SIZEOFARRAY(org.person)][ ]; // Second dimension of array has dependencies
String sqlUser[SIZEOFARRAY(org.personnel)];
for ( Integer i=0; i<SIZEOFARRAY(org.persons); i++ )
{
DELETE FROM [ACCESS_PAGEGROUPS] WHERE [ACCESS_PAGEGROUPS.ACCESS_ID]=1000
USER user = (USER)org.persons[i];
ACCESS access = user.access;
sqlOldAccessPage [i] = “DELETE FROM [ACCESS_PAGEGROUPS] WHERE [ACCESS_PAGEGROUPS.ACCESS_ID]=”;
sqlOldAccessPage [i] = addInteger ( access.id );
for ( Integer j=0; j<SIZEOFARRAY(access.pageGroups); j++ )
{
INSERT INTO [ACCESS_PAGEGROUPS] ( [ACCESS_ID], [PAGEGROUP_ID] ) VALUES ( 1000, 1000 )
sqlNewAccessPage [i][j] = “INSERT INTO [ACCESS_PAGEGROUPS] ( [ACCESS_ID], [PAGEGROUP_ID] ) VALUES (”;
sqlNewAccessPage [i][j] += addInteger ( access.id );
sqlNewAccessPage [i][j] += appendInteger ( access.pageGroups[j] );
sqlNewAccessPage [i][j] += “)”;
}
INSERT INTO [USER] ( [ID], [PASSKEY] ) VALUES ( 1000, 1000 )
sqlUser [i] = “INSERT INTO [USER] ( [ID], [PASSKEY] ) VALUES (”;
sqlUser [i] += addInteger ( user.id ); // User extends person, and uses person.id.
sqlUser [i] += appendInteger ( access.id );
sqlUser [i] += “)”;
}
DELETE FROM [ORGANIZATION_PERSONNEL] WHERE [ORGANIZATION_PERSONNEL.ORGANIZATION_ID]=1000
String sqlOldOrgPerson;
sqlOldOrgPerson = “DELETE FROM [ORGANIZATION_PERSONNEL] WHERE [ORGANIZATION_PERSONNEL.ORGAN-
IZATION_ID]=”;
sqlOldOrgPerson += addInteger ( org.id );
String sqlNewOrgPerson[SIZEOFARRAY(org.persons)];
for ( Integer i=0; i<SIZEOFARRAY(org.persons); i++ )
{
INSERT INTO [ORGANIZATION_PERSONNEL] ( [ORGANIZATION_ID], [PERSON_ID] ) VALUES ( 1000, 1000 )
PERSON person = org.persons[i];
sqlNewOrgPerson [i] = “INSERT INTO [ORGANIZATION_PERSONNEL] ( [ORGANIZATION_ID], [PERSON_ID] ) VALUES (”;
sqlNewOrgPerson [i] += addInteger ( org.id );
sqlNewOrgPerson [i] += addInteger ( person.id );
sqlNewOrgPerson [i] += “)”;
}
DELETE FROM [ORGANIZATION_PAGEGROUPS] WHERE [ORGANIZATION_PAGEGROUPS.ORGANIZATION_ID]=1000
String sqlOldOrgPageGroup;
sqlOldOrgPageGroup = “DELETE FROM [ORGANIZATION_PAGEGROUPS] WHERE [ORGANIZATION_PAGEGROUPS.ORGAN-
IZATION_ID]=”;
sqlOldOrgPageGroup += addInteger ( org.id );
String sqlNewOrgPageGroup[SIZEOFARRAY(org.pageGroups)];
for ( Integer i=0; i<SIZEOFARRAY(org.pageGroups); i++ )
{
INSERT INTO [ORGANIZATION_PAGEGROUPS] ( [ORGANIZATION_ID], [PAGEGROUP_ID] ) VALUES ( 1000, 1000 )
PAGEGROUP pagegroup = org.pageGroups[i];
sqlNewOrgPageGroup [i] = “INSERT INTO [ORGANIZATION_PAGEGROUPS] ( [ORGANIZATION_ID], PAGE-
GROUP_ID] ) VALUES (”;
sqlNewOrgPageGroup [i] += addInteger ( org.id );
sqlNewOrgPageGroup [i] += addInteger ( pageGroup.id );
sqlNewOrgPageGroup [i] += “)”;
}
DATABASE_SERVICES.beginTransaction ( );
DATABASE_SERVICES.executeSQL ( sqlOrgProfile );
DATEBASE_SERVICES.executeSQL ( sqlOrg );
for ( integer i=0; i<SIZEOFARRAY(sqlPersonProfile); i++ )
DATABASE_SERVICES.executeSQL ( sqlPersonProfile[i] );
for ( Integer i=0; i<SIZEOFARRAY(sqlPerson); i++ )
DATABASE_SERVICES.executeSQL ( sqlPerson[i] );
for ( Integer i=0; i<SIZEOFARRAY(sqlAccess); i++ )
DATABASE_SERVICES.executeSQL ( sqlAccess[i] );
for ( Integer i=0; i<SIZEOFARRAY(sqlPageGroupPage); i++ )
{
String sql[ ] = sqlPageGroupPage[i];
for ( j=0; j<SIZEOFARRAY(sql); j++ )
DATABASE_SERVICES.executeSQL ( sql[j] );
}
for ( Integer i=0; i<SIZEOFARRAY(sqlOldPageGroup); i++ )
DATABASE_SERVICES.executeSQL ( sqlOldPageGroupPage [i] );
for ( Integer i=0; i<SIZEOFARRAY(sqlPageGroup); i++ )
DATABASE_SERVICES.executeSQL ( sqlPageGroup [i] );
for ( Integer i=0; i<SIZEOFARRAY(sqlOldAccessPageGroup); i++ )
DATABASE_SERVICES.executeSQL ( sqlOldAccessPageGroup [i] );
for ( Integer i=0; i<SIZEOFARRAY(sqlNewAccessPageGroup); i++ )
{
String sql[ ] = sqlNewAccessPageGroup [i];
for ( j=0; j<SIZEOFARRAY(sql); j++ )
DATABASE_SERVICES.executeSQL ( sql[j] );
}
for ( Integer i=0; i<SIZEOFARRAY(sqlUser); i++ )
DATABASE_SERVICES.executeSQL (sqlUser [i] );
DATABASE_SERVICES.executeSQL ( sqlOldOrgPerson );
for ( Integer i=0; i<SIZEOFARRAY(sqlNewOrgPerson); i++ )
DATABASE_SERVICES.executeSQL (sqlNewOrgPerson [i] );
DATABASE_SERVICES.executeSQL ( sqlOldOrgPageGroup );
for ( Integer i=0; i<SIZEOFARRAY(sqlNewOrgPageGroup); i++ )
DATABASE_SERVICES.executeSQL (sqlNewOrgPageGroup [i] );
DATABASE_SERVICES.commitTransaction ( );
 }
Lentils Technique
saveOrganization ( ORGANIZATION org )
{
dbAdmin.save(org);

Dillon, David M.

Patent Priority Assignee Title
10001983, Jul 27 2016 SALESFORCE COM, INC Rolling version update deployment utilizing dynamic node allocation
10007607, May 31 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Invalidation and refresh of multi-tier distributed caches
10007956, Jan 29 2015 Salesforce.com, Inc. Systems and methods of data mining to customize software trial demonstrations
10013278, Apr 20 2010 Salesforce.com, Inc. Methods and systems for batch processing in an on-demand service environment
10013294, Aug 25 2014 Salesforce.com, Inc. Detecting and managing flooding of multi-tenant message queues
10031730, Apr 22 2015 SALESFORCE COM, INC Systems and methods of implementing extensible browser executable components
10037233, Sep 15 2015 Salesforce.com, Inc. System having in-memory buffer service, temporary events file storage system and events file uploader service
10037316, Apr 30 2012 Salesforce, Inc. Selective capture of incoming email messages for diagnostic analysis
10037430, Dec 19 2012 Salesforce.com, Inc. System and method for controlling the on and off state of features of business logic at runtime
10042868, Oct 15 2010 Salesforce.com, Inc. Methods and apparatus for discontinuing the following of records in an on-demand database service environment
10044660, Aug 26 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for providing communication between network domains in a service cloud
10048949, May 20 2010 Salesforce.com, Inc. Methods and systems for providing a user interface
10049131, Jul 02 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for determining user access to custom metadata
10049137, Dec 02 2005 Salesforce.com, Inc. Methods and systems for optimizing text searches over structured data in a multi-tenant environment
10049141, Oct 10 2014 salesforce.com,inc.; SALESFORCE COM, INC Declarative specification of visualization queries, display formats and bindings
10049337, Aug 31 2015 SALESFORCE, INC Quantitative metrics for assessing status of a platform architecture for cloud computing
10051055, Apr 11 2012 Salesforce.com, Inc. System and method for synchronizing data objects in a cloud based social networking environment
10055328, Feb 24 2010 SALESFORCE, INC System, method and computer program product for monitoring data activity utilizing a shared data store
10057206, Apr 18 2016 Salesforce.com, Inc. Combining updates of a social network feed
10069841, Aug 22 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for sharing data of an information feed of an online social network
10083024, Dec 01 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Application aware virtual patching
10083158, Jun 30 2014 Salesforce.com, Inc. Fast CSS parser
10083236, May 29 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Database searching using a graph of nodes and edges formed using log node pairs
10084796, Apr 03 2013 Salesforce.com, Inc. System, method and computer program product for managing access to systems, products, and data based on information associated with a physical location of a user
10089286, Mar 25 2014 Salesforce.com, Inc. Systems and methods for collaborative editing of interactive walkthroughs of content
10089368, Sep 18 2015 SALESFORCE COM, INC Systems and methods for making visual data representations actionable
10089638, Sep 17 2012 SALESFORCE COM, INC Streamlined data entry paths using individual account context on a mobile device
10089700, Jul 26 2011 SALESFORCE, INC Method and system for viewing a contact network feed in a business directory environment
10095797, Oct 03 2014 Salesforce.com, Inc. Suggesting actions for evaluating user performance in an enterprise social network
10097667, Jul 16 2012 Salesforce.com, Inc. Methods and systems for regulating database activity
10101883, Mar 12 2010 Salesforce.com, Inc. Service cloud console
10102133, May 31 2016 SALESFORCE COM, INC ; Salesforce.com, Inc. Reducing latency by caching derived data at an edge server
10108733, May 26 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and systems for providing customized web pages to users of a website
10114737, Sep 14 2015 Salesforce.com, Inc. Methods and systems for computing code coverage using grouped/filtered source classes during testing of an application
10114873, Apr 17 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Computer implemented methods and apparatus for retrieving content related to a feed item of an online social network
10115213, Sep 15 2015 Salesforce, Inc.; SALESFORCE COM, INC Recursive cell-based hierarchy for data visualizations
10116502, Feb 23 2016 Salesforce.com, Inc.; SALESFORCE COM, INC System and method for providing configuration settings to services in a cloud infrastructure
10116660, Nov 30 2016 SALESFORCE COM, INC Security modes for a component-based web security model
10120848, Dec 09 2014 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and systems for applying responsive design to subframes on a web page
10121110, Jul 27 2011 Salesforce.com, Inc. System, method and computer program product for progressive rendering of report results
10122592, Mar 15 2010 Salesforce.com, Inc. System, method and computer program product for serving an application from a custom subdomain
10122661, Jun 10 2016 Salesforce.com, Inc. Messaging systems and methods that employ a blockchain to ensure integrity of message delivery
10127560, Sep 13 2013 Salesforce.com, Inc. Methods and systems for facilitating customer support using a social post case feed and publisher
10129258, Nov 30 2016 SALESFORCE COM, INC Secure component-based web applications
10135847, May 18 2016 Salesforce.com, Inc. Reverse shell network intrusion detection
10136044, Feb 22 2017 Salesforce.com, Inc. Method, apparatus, and system for communicating information of selected objects of interest displayed in a video-chat application
10140322, Nov 02 2011 Salesforce.com, Inc. Tools and techniques for extracting knowledge from unstructured data retrieved from personal data sources
10140456, Jun 08 2016 Salesforce.com, Inc. Runtime analysis of software security vulnerabilities
10146526, Mar 15 2010 Salesforce.com, Inc. System, method and computer program product for deploying an update between environments of a multi-tenant on-demand database system
10146581, Jan 13 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Dynamically configuring a process based on environmental characteristics monitored by a mobile device
10146592, Sep 18 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Managing resource allocation in a stream processing framework
10146597, Nov 14 2013 Salesforce.com, Inc. Delegating handling of computing events of a mobile device application
10146812, Dec 17 2012 Salesforce.com, Inc. Third party files in an on-demand database service
10146915, Sep 14 2015 SALESFORCE COM, INC Publication of collaborative file to library
10147054, Jul 26 2013 Salesforce.com, Inc. Displaying content of an enterprise social network feed on a mobile device
10152489, Jul 24 2015 SALESFORCE, INC Synchronize collaboration entity files
10152508, Sep 23 2003 Salesforce.com, Inc. Improving a multi-tenant database query using contextual knowledge about tenant data
10152515, Oct 25 2010 Salesforce.com, Inc. Triggering actions in an information feed system
10157196, Aug 12 2015 Salesforce.com, Inc. Intra-platform data migration
10158638, Aug 31 2011 SALESFORCE, INC Computer implemented methods and apparatus for providing access to an online social network
10162872, Jun 07 2010 Salesforce.com, Inc. System, method and computer program product for performing a synchronization of data
10163056, Aug 29 2014 Salesforce.com, Inc. Systems and methods for partitioning sets of features for a Bayesian classifier
10164859, Aug 29 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and apparatus to perform elastic monitoring of software applications using embedded watchdogs
10169312, Mar 08 2017 Salesforce.com, Inc.; SALESFORCE COM, INC System and method in a social networking system for displaying updates in an information feed
10175873, Jan 21 2013 Salesforce.com, Inc. System and method for retrieving data based on scrolling velocity
10175999, Feb 25 2015 Salesforce.com, Inc. Converting video into a walkthrough for an application or an online service
10176337, Oct 04 2006 Salesforce.com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
10178156, Sep 11 2014 SALESFORCE, INC Extraction and capture of information from customizable header
10178424, Feb 27 2017 Salesforce.com, Inc. Content delivery system and method for providing customized channels and content to terminal devices
10187403, Dec 02 2015 SALESFORCE, INC False positive detection reduction system for network-based attacks
10191768, Sep 16 2015 Salesforce.com, Inc. Providing strong ordering in multi-stage streaming processing
10198484, Sep 10 2015 SALESFORCE COM, INC Displaying reduced and detailed visual representations of calendar items based on mouse cursor movement
10198490, Jan 06 2014 Salesforce.com, Inc. Systems and methods for interactively configuring multiple conditions and multiple actions in a workflow application
10198496, May 15 2008 Salesforce.com, Inc. System, method and computer program product for applying a public tag to information
10200337, Apr 18 2016 Salesforce.com, Inc. Combining updates of a social network feed
10203889, Apr 01 2016 Salesforce.com, Inc. Multi-tier file system with transparent holes
10204345, Jun 28 2016 SALESFORCE, INC Driving customer service interactions on social media
10205684, Feb 14 2012 Salesforce.com, Inc. Smart messaging for computer-implemented devices
10205751, Oct 10 2014 Salesforce.com, Inc. System, method and computer program product for sharing content via links
10210218, Jun 16 2015 Salesforce.com, Inc. Processing a file to generate a recommendation using a database system
10210466, May 03 2013 Salesforce.com, Inc. Providing access to a private resource in an enterprise social networking system
10212057, Feb 23 2016 salesforce.com inc.; SALESFORCE COM, INC Disparate monitoring for IoT
10212189, Oct 11 2016 SALESFORCE, INC Authentication of client devices using modified images
10218667, Mar 23 2012 Salesforce.com, Inc. Social network communities
10223136, Sep 30 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Generating content objects using an integrated development environment
10223367, Aug 27 2014 SALESFORCE, INC Distributed sorting of event log files
10223389, Nov 03 2015 Salesforce.com, Inc. System and method for analyzing complex metadata
10235148, Sep 09 2005 SALESFORCE, INC Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
10235637, Aug 28 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Generating feature vectors from RDF graphs
10241890, Jul 28 2016 Salesforce.com, Inc. Hybrid code modification in intermediate language for software application
10248297, Jul 03 2012 Salesforce.com, Inc. Systems and methods for cross domain service component interaction
10250715, Jun 30 2016 Salesforce.com, Inc. Dynamic adjustment of boxcarring of action requests from component-driven cloud applications
10250716, Jun 30 2016 Salesforce.com, Inc. Priority-driven boxcarring of action requests from component-driven cloud applications
10261890, Sep 14 2015 SALESFORCE COM, INC Methods and systems for executing tests using grouped/filtered test classes during testing of an application
10262027, May 27 2010 Salesforce.com, Inc. Transforming queries in a multi-tenant database system
10262032, Feb 24 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Cache based efficient access scheduling for super scaled stream processing systems
10268574, Sep 01 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Deployment testing for infrastructure delivery automation
10268772, Jul 01 2016 Salesforce.com, Inc. System and method for encouraging user engagement during a presentation
10268828, Jan 15 2016 SALESFORCE, INC Space-efficient storage of encrypted data
10275281, Sep 30 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Scheduling jobs for processing log files using a database system
10275298, Oct 12 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Alerting system having a network of stateful transformation nodes
10277583, Mar 31 2010 Salesforce.com, Inc. System, method and computer program product for authenticating and authorizing an external entity
10282352, May 03 2016 Salesforce.com, Inc. Computing systems and processes for improved database junction relationships
10289375, Mar 07 2012 Salesforce.com, Inc. Verification of shared display integrity in a desktop sharing system
10296440, Jun 24 2015 Salesforce.com, Inc. Multi-tenant aware debugging methods and systems
10296563, May 09 2016 Salesforce.com, Inc. Automated testing of perceptible web page elements
10296661, Sep 11 2015 Salesforce.com, Inc. Processing log files using a database system
10296717, May 14 2015 Salesforce.com, Inc. Automated prescription workflow for device management
10296753, Aug 26 2014 SALESFORCE, INC Permission comparator
10304144, Apr 03 2013 Salesforce.com, Inc. Capturing information regarding an interaction to a database
10305323, Jan 20 2012 Salesforce.com, Inc. Site management in an on-demand system
10313329, Nov 15 2007 SALESFORCE COM, INC On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
10313476, Mar 08 2012 Salesforce.com, Inc. Systems and methods of audit trailing of data incorporation
10324773, Sep 17 2015 SALESFORCE COM, INC Processing events generated by internet of things (IoT)
10324901, May 08 2008 SALESFORCE COM, INC System, method and computer program product for sharing tenant information utilizing a multi-tenant on-demand database service
10324922, Feb 13 2014 Salesforce.com, Inc. Providing a timeline of events regarding a database record
10324991, Oct 30 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Search promotion systems and method
10331432, Aug 06 2013 Salesforce.com, Inc. Providing an improved web user interface framework for building web applications
10331689, Oct 01 2015 Salesforce.com, Inc. Methods and apparatus for presenting search results according to a priority order determined by user activity
10331798, Jun 04 2010 Salesforce.com, Inc. Methods and systems for analyzing a network feed in a multi-tenant database system environment
10332084, May 25 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for automatically collection of performance data in a multi-tenant database system environment
10332129, Nov 01 2013 SALESFORCE COM, INC Methods and systems for processing a log file
10332289, Mar 15 2017 Salesforce.com, Inc. Methods and systems for providing a visual feedback representation of performance metrics
10333941, Oct 01 2004 SALESFORCE, INC Secure identity federation for non-federated systems
10339126, Aug 11 2014 Salesforce.com, Inc. Processing log files using a database system
10341279, Oct 09 2014 Salesforce.com, Inc.; SALESFORCE COM, INC Action links
10346370, Aug 30 2016 SALESFORCE, INC Rate limiting in a moderation framework of a database system
10346451, May 27 2016 SALESFORCE, INC Identifying conversations in unstructured media
10346882, Jan 02 2014 Salesforce.com, Inc.; SALESFORCE COM, INC System and method for aggregating web clipping data
10356088, Jan 25 2017 SALESFORCE, INC User authentication based on multiple asymmetric cryptography key pairs
10360136, May 23 2017 SALESFORCE.COM., INC. Dashboard execution engine
10361990, Jul 22 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for integrating a social network information feed with a network communications application
10366517, Mar 31 2010 SALESFORCE COM, INC System, method and computer program product for interacting with a process diagram
10367649, Nov 13 2013 SALESFORCE COM, INC Smart scheduling and reporting for teams
10372421, Aug 31 2015 SALESFORCE, INC Platform provider architecture creation utilizing platform architecture type unit definitions
10372600, Mar 01 2017 Salesforce.com, Inc. Systems and methods for automated web performance testing for cloud apps in use-case scenarios
10372934, Jul 21 2016 SALESFORCE, INC Access controlled queries against user data in a datastore
10374987, Mar 11 2015 Salesforce.com, Inc. Electronic notifications of users concurrently interacting with the same feed item of a social network feed
10375006, Oct 01 2012 Salesforce.com, Inc. Systems and methods of redactive messaging
10375557, Nov 23 2016 Salesforce.com, Inc. System and method for coordinating an emergency response at a facility
10379724, Oct 28 2013 Salesforce.com, Inc. Providing a user interface for customizing state transitions of panes in a bounding window
10380094, Sep 30 2016 SALESFORCE COM, INC Custom multi-tenant non-relational platform objects
10380347, Jun 08 2016 SALESFORCE.COM., INC. Hierarchical runtime analysis framework for defining vulnerabilities
10387041, Nov 02 2017 Salesforce.com, Inc. Data migration system
10387439, Sep 11 2015 Salesforce.com, Inc. Configuring service consoles based on service feature templates using a database system
10387658, Jun 08 2016 Salesforce.com, Inc. Runtime analysis of software security vulnerabilities
10387821, Aug 31 2015 SALESFORCE, INC Quantitative metrics for assessing status of a platform architecture for cloud computing
10389774, Oct 09 2015 Salesforce.com, Inc. System for broadcasting events
10394412, Oct 09 2014 Salesforce.com, Inc. User-customizable permissions in a computing environment
10397309, May 13 2015 Salesforce.com, Inc. Systems and methods of implementing tracking of resource usage for a cloud-based system
10402174, Aug 25 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Overriding component attributes in a web application builder
10402367, Jan 13 2016 Salesforce.com, Inc. Batch job processing using a database system
10402382, May 02 2008 Salesforce.com, Inc. Method and system for managing recent data in a mobile device linked to an on-demand service
10409583, Nov 27 2017 Salesforce.com, Inc. Content deployment system having a content publishing engine with a filter module for selectively extracting content items provided from content sources for integration into a specific release and methods for implementing the same
10409650, Feb 24 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Efficient access scheduling for super scaled stream processing systems
10409697, Feb 23 2017 Salesforce.com, Inc. Automated self-healing database system and method for implementing the same
10409816, Aug 23 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Accessing and displaying shared data
10410013, Oct 03 2006 Salesforce.com, Inc. Methods and systems for controlling access to custom objects in a database
10410107, Jul 26 2016 Salesforce.com, Inc. Natural language platform for database system
10412158, Jul 27 2016 SALESFORCE COM, INC Dynamic allocation of stateful nodes for healing and load balancing
10416952, Jun 27 2017 Salesforce.com, Inc. Identifying a viewport within a browser window
10417183, Mar 14 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Database and file structure configurations for managing text strings to be provided by a graphical user interface
10417210, Aug 30 2016 SALESFORCE, INC Multi-token matching scheme
10423522, Apr 12 2017 Salesforce.com, Inc. System and method for detecting an error in software
10423715, Sep 12 2008 Salesforce.com, Inc. Method and system for sharing documents between on-demand services
10423799, Apr 28 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and apparatus for scalable metrics gathering from secure data centers
10423883, Mar 08 2012 Salesforce.com, Inc. System and method for fast evaluation of standing queries in conjunctive normal form
10423907, Oct 18 2013 SALESFORCE COM, INC Geolocation based work data on a mobile device using a database system
10423909, Sep 18 2012 Salesforce.com, Inc. Method and system for managing business deals
10430332, Mar 25 2013 Salesforce.com, Inc. System and method for performance tuning of garbage collection algorithms
10430608, Jun 14 2013 Salesforce.com, Inc. Systems and methods of automated compliance with data privacy laws
10430765, Sep 11 2015 Salesforce.com, Inc. Processing keyboard input to perform events in relation to calendar items using a web browser-based application or online service
10432697, Jul 26 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Method and system for re-deploying metadata and associated data from a source organization to a destination organization
10437635, Feb 10 2016 SALESFORCE COM, INC Throttling events in entity lifecycle management
10437834, Jan 17 2013 Salesforce.com, Inc. Displaying aggregated connection data using a database system
10447672, Nov 01 2016 Salesforce.com, Inc. Facilitating encrypted persistent storage in browsers
10452244, May 04 2015 Salesforce.com, Inc. Systems and methods of optimizing delivery of form factor specific content
10459597, Feb 03 2016 Salesforce.com, Inc. System and method to navigate 3D data on mobile and desktop
10459941, Feb 22 2017 Salesforce.com, Inc. Providing context-specific content relating to a displayed personal information management (PIM) message for display in a user interface of a PIM application
10466983, Aug 13 2013 Salesforce.com, Inc. Responsive self-service website template
10467225, Dec 20 2013 Salesforce.com, Inc. Identifying recurring sequences of user interactions with an application
10469438, Feb 27 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Facilitating integration of collaborative communication platform and document collaboration tool
10474673, Mar 28 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and apparatus for performing machine learning to improve capabilities of an artificial intelligence (AI) entity used for online communications
10481903, Aug 17 2007 Salesforce.com, Inc. On-demand database service system, method, and computer program product for validating a developed application
10481996, Jul 28 2016 Salesforce.com, Inc. Hybrid code modification in intermediate language for software application
10482070, Nov 12 2013 Salesforce.com, Inc. Form field creation systems and methods
10482141, Aug 30 2016 SALESFORCE, INC Extensible moderation framework
10489170, Jun 19 2017 SALESFORCE, INC Application warmup engine
10489497, Jun 30 2014 Salesforce.com, Inc. Fast CSS parser
10489790, Oct 30 2009 salesforce.com, inc Integrating and managing social networking information in an on-demand database system
10496673, Dec 27 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Org sync async subscribe emails
10503806, Jun 10 2011 SALESFORCE, INC Extracting a portion of a document, such as a web page
10504069, May 12 2017 Salesforce.com, Inc. Calendar application, system and method for performing actions on records in a cloud computing platform from within the context of the calendar application
10505877, Jun 10 2016 Salesforce.com, Inc. Messaging systems and methods that employ a blockchain to ensure integrity of message delivery
10509546, Aug 31 2017 SALESFORCE COM, INC History component for single page application
10509633, Aug 30 2017 Salesforce.com, Inc. Base editor component in a web application builder framework
10509843, Oct 28 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for managing tabs in web applications
10514896, Aug 30 2017 Salesforce.com, Inc. Web application builder framework
10515326, Aug 28 2015 EXACTTARGET, INC Database systems and related queue management methods
10521211, Sep 09 2005 SALESFORCE, INC Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
10521804, Jun 28 2016 SALESFORCE, INC Driving customer service interactions on social media
10528211, Oct 08 2015 Salesforce.com, Inc. Computing systems and processes for simultaneous co-development of dashboard interfaces
10528370, Oct 20 2010 salesforce.com.inc. Framework for custom actions on an information feed
10528750, Mar 01 2010 Salesforce.com, Inc. Execution of bulk requests against one or more databases
10536439, May 08 2017 Salesforce.com, Inc. Client fingerprinting for information system security
10540149, Aug 30 2017 Salesforce.com, Inc. Property editor component in a web application builder framework
10540369, Dec 19 2016 Salesforce.com, Inc. Org sync suspend and resume data sync
10540413, Jul 26 2011 Salesforce.com, Inc. Fragmenting newsfeed objects
10542043, Mar 08 2012 SALESFORCE COM, INC System and method for enhancing trust for person-related data sources
10547583, Apr 18 2016 Salesforce.com, Inc. Combining updates of a social network feed
10552464, Dec 18 2014 SALESFORCE, INC Identifying relevant material for cases
10554503, May 07 2010 Salesforce.com, Inc. Methods and apparatus for interfacing with a phone system in an on-demand service environment
10558336, Mar 08 2005 SALESFORCE, INC Systems and methods for implementing multi-application tabs and tab sets
10558685, Jan 23 2009 Salesforce.com, Inc. Sharing information in a multi-tenant database system
10559042, Apr 03 2013 Salesforce.com, Inc. Capturing information regarding an interaction to a database
10560349, Jan 31 2018 SALESFORCE, INC Data consistency of policy enforcement for distributed applications
10565217, Jan 21 2013 SALESFORCE, INC Computer implemented methods and apparatus for recommending events
10567311, Apr 29 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Publisher and share action integration in a user interface for automated messaging
10572031, Sep 28 2016 Salesforce.com, Inc. Processing keyboard input to cause re-sizing of items in a user interface of a web browser-based application
10572467, Aug 25 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for feed-based case management
10579368, Mar 10 2017 SALESFORCE, INC Blockchain version control systems
10579641, Aug 01 2017 Salesforce.com, Inc. Facilitating mobile device interaction with an enterprise database system
10579691, Sep 27 2017 Salesforce.com, Inc. Application programming interface representation of multi-tenant non-relational platform objects
10579692, Sep 27 2017 Salesforce.com, Inc. Composite keys for multi-tenant non-relational platform objects
10585564, May 03 2012 Salesforce.com, Inc. Computer implemented methods and apparatus for representing a portion of a user interface as a network address
10585955, Jul 30 2012 Salesforce.com, Inc. System and method for providing an information-centric application
10586025, Sep 07 2017 Salesforce.com, Inc. Managing the display of hidden proprietary software code to authorized licensed users
10587401, Apr 03 2017 SALESFORCE, INC Secure handling of customer-supplied encryption secrets
10592282, Sep 16 2015 Salesforce.com, Inc. Providing strong ordering in multi-stage streaming processing
10592474, Sep 11 2015 Salesforce.com, Inc. Processing log files using a database system
10592487, Dec 17 2012 Salesforce.com, Inc. Third party files in an on-demand database service
10592841, Oct 10 2014 SALESFORCE COM, INC Automatic clustering by topic and prioritizing online feed items
10592866, May 12 2017 Salesforce.com, Inc. Calendar application, system and method for creating records in a cloud computing platform from within the context of the calendar application
10594815, Apr 03 2017 Salesforce.com, Inc. Systems and methods for electronic notification broadcasts
10599454, May 27 2010 Salesforce.com, Inc. Database systems and related methods for validation workflows
10599683, Feb 24 2015 Salesforce.com, Inc. Interest groups based on network feed items
10599755, Sep 05 2012 Salesforce.com, Inc. System and method for automatically inserting correct escaping functions for field references in a multi-tenant computing environment
10606436, Jul 25 2012 Salesforce.com, Inc. Computer implemented methods and apparatus for composing and batch publishing feed items in a feed-based interaction context
10606860, Jul 11 2013 Salesforce.com, Inc. Systems and methods for interacting with external content objects
10609140, Aug 28 2017 Salesforce.com, Inc. Dynamic resource management systems and methods
10613709, Sep 30 2016 SALESFORCE COM, INC ; Salesforce.com, Inc. Leveraging and managing assessment environments in an assessment hub
10616079, Sep 17 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Simplified entity lifecycle management
10621238, Jul 20 2007 SALESFORCE, INC Application update system, method and computer program product
10628445, Jun 07 2010 Salesforce.com, Inc. System, method and computer program product for performing a synchronization of data
10628470, Jun 14 2010 Salesforce.com, Inc. Methods and systems for dynamically suggesting answers to questions submitted to a portal of an online service
10635659, Sep 19 2016 Salesforce.com, Inc. Mobile application bundled with metadata database
10637658, Jan 25 2017 SALESFORCE, INC Secure internal user authentication leveraging public key cryptography and key splitting
10642474, Sep 28 2016 Salesforce.com, Inc. Processing keyboard input to cause movement of items in a user interface of a web browser-based application
10642872, Oct 21 2016 SALESFORCE, INC System for optimizing content queries
10642916, Sep 25 2018 SALESFORCE COM, INC Systems and methods for providing client-side enablement of server communications via a single communication session for a plurality of browser-based presentation interfaces
10645138, May 02 2017 SALESFORCE, INC Event stream processing system using a coordinating spout instance
10664192, Apr 26 2018 SALESFORCE, INC In-memory service with plural buffer type assignment
10664244, Aug 22 2017 Salesforce.com, Inc. Dynamic page previewer for a web application builder
10664266, Sep 04 2018 SALESFORCE, INC Maintaining client version affinity during a server cluster upgrade
10664928, Oct 10 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for informing a user of social network data when the data is relevant to the user
10666722, Nov 22 2016 SALESFORCE COM, INC Message delivery in a distributed server environment
10671236, Sep 20 2018 Salesforce.com, Inc.; SALESFORCE COM, INC Stateful, contextual, and draggable embedded widget
10671248, Jan 18 2018 SALESFORCE, INC Live agent chat console
10671626, Sep 27 2016 SALESFORCE COM, INC Identity consolidation in heterogeneous data environment
10678757, Apr 08 2016 Salesforce.com, Inc. Reliable generation of a unique key in a distributed system
10678838, Oct 12 2011 Salesforce.com, Inc. Augmented reality display apparatus and related methods using database record data
10680958, Jan 31 2018 SALESFORCE, INC Policy enforcement as a service for third party platforms
10684752, Apr 12 2013 SALESFORCE COM, INC Computer implemented methods and apparatus for responding to actionable text patterns in a feed item
10684847, Nov 27 2017 Salesforce.com, Inc. Content deployment system having a proxy for continuously providing selected content items to a content publishing engine for integration into a specific release and methods for implementing the same
10685004, Jul 11 2016 SALESFORCE, INC Multiple feature hash map to enable feature selection and efficient memory usage
10685015, Sep 12 2008 Salesforce.com, Inc. Method and system for providing in-line scheduling in an on-demand service
10686739, Oct 18 2018 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for enabling client-side rendering of rich content by a plurality of browser-based messaging interfaces communicating with a server via a single communication session
10686741, Jun 29 2017 SALESFORCE COM, INC Method and system for real-time blocking of content from an organization activity timeline
10691437, Sep 09 2005 Salesforce.com, Inc. Application directory for a multi-user computer system environment
10691667, Oct 02 2006 Salesforce.com, Inc. Method and system for selecting amongst a plurality of processes to send a message
10693883, Jan 22 2018 SALESFORCE, INC Technologies for integrating and sandboxing web resources
10693922, Jul 25 2016 Salesforce.com, Inc. Multi-channel customer engagement platform
10693951, Jun 01 2017 Salesforce.com, Inc. Decentralized, resource aware load distribution in a distributed system
10693952, Oct 23 2017 SALESFORCE, INC Technologies for low latency messaging
10699452, Mar 15 2017 Salesforce.com, Inc. Methods and systems for providing a visual feedback representation of performance metrics
10705860, Jul 27 2018 SALESFORCE COM, INC Method and system for declarative configuration of user self-registration and log in pages and processes for a service provider and automatic deployment of the same
10708420, Mar 22 2018 Salesforce.com, Inc.; SALESFORCE COM, INC Method and system for automatically transcribing a call and updating a record based on transcribed voice data
10713066, Sep 30 2016 Salesforce.com, Inc. Generating content objects using an integrated development environment
10713223, Jun 01 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Opportunistic gossip-type dissemination of node metrics in server clusters
10713230, Apr 02 2004 Salesforce.com, Inc. Custom entities and fields in a multi-tenant database system
10713376, Apr 14 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Fine grain security for analytic data sets
10713588, Feb 23 2016 Salesforce.com, Inc. Data analytics systems and methods with personalized sentiment models
10713604, Sep 30 2016 Salesforce.com, Inc. Bi-directional notification framework
10715525, Aug 31 2011 SALESFORCE, INC Computer implemented methods and apparatus for providing access to an online social network
10719555, Feb 07 2017 Salesforce.com, Inc.; SALESFORCE COM, INC System and method in a database system for sharing a data item with an entity in another tenant domain
10719811, Jun 29 2017 SALESFORCE COM, INC Method and system for retroactive removal of content from an organization activity timeline
10721152, Apr 27 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Automated analysis and recommendations for highly performant single page web applications
10726039, Nov 29 2016 SALESFORCE, INC Systems and methods for updating database indexes
10726505, Oct 08 2010 Salesforce.com, Inc. Following data records in an information feed
10735277, Mar 15 2010 Salesforce.com, Inc. System, method and computer program product for serving an application from a custom subdomain
10735426, Feb 09 2017 Salesforce.com, Inc. Secure asynchronous retrieval of data behind a firewall
10742714, Jul 26 2016 Salesforce.com, Inc. Method and system for re-deploying metadata and associated data from a source organization to a destination organization
10742806, May 08 2018 Salesforce.com, Inc. Method, system and bot architecture for automatically sending a user content, that is responsive to user messages from that user, to solicit additional information from that user
10747551, Jan 23 2019 SALESFORCE, INC Software application optimization
10747571, Aug 10 2015 Salesforce.com, Inc. Systems and methods of improving parallel functional processing
10747670, May 31 2016 Salesforce.com, Inc. Reducing latency by caching derived data at an edge server
10756991, Sep 17 2015 Salesforce.com, Inc. Simplified entity engagement automation
10761829, Jul 27 2016 Salesforce.com, Inc. Rolling version update deployment utilizing dynamic node allocation
10762292, Mar 25 2014 Salesforce.com, Inc. Systems and methods for collaborative editing of interactive walkthroughs of content
10768818, Nov 02 2017 Salesforce.com, Inc. Data migration system
10769119, Sep 23 2010 Salesforce.com, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
10769563, Sep 18 2012 Salesforce.com, Inc. Method and system for managing business deals
10771353, Jan 31 2018 SALESFORCE, INC Policy enforcement as a service for third party platforms with asynchronous user tracking mechanisms
10775969, Aug 25 2017 Salesforce.com, Inc. System and method for notifying a softphone of navigation change events
10776425, Aug 31 2012 Salesforce.com, Inc. Systems and methods for providing access to external content objects
10778543, Jan 31 2018 SALESFORCE, INC Opaque interface for enclosed/wrapped asynchronous pushing and/or pulling data between policy enforcement as a service (PEaaS) components
10778559, Oct 17 2016 Salesforce.com, Inc. Facilitating simulation of network conditions in a hybrid application environment
10778611, May 19 2004 Salesforce.com, Inc. Techniques for providing connections to services in a network environment
10783063, Oct 23 2018 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for testing a customer environment
10783188, Feb 17 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Intelligent embedded self-help service
10783200, Oct 10 2014 Salesforce.com, Inc. Systems and methods of de-duplicating similar news feed items
10789052, Oct 29 2018 Salesforce.com, Inc.; SALESFORCE COM, INC User interface (UI) design system mapping platform for automatically mapping design system components to a design document file from a design tool to generate a mapped specification
10802944, Jan 23 2019 SALESFORCE, INC Dynamically maintaining alarm thresholds for software application performance management
10803080, Mar 21 2017 SALESFORCE, INC Thread record provider
10803493, Jan 02 2014 Salesforce.com, Inc. System and method for aggregating web clipping data
10805309, Apr 03 2013 Salesforce.com, Inc. System, method and computer program product for managing access to systems, products, and data based on information associated with a physical location of a user
10810230, Mar 21 2017 SALESFORCE, INC Thread record provider
10817815, Mar 27 2017 Salesforce.com, Inc. Providing attendees from a different organization with supplemental information related to a calendar event
10819712, Jan 22 2008 Salesforce.com, Inc. Security verification of communications to tenants of a multi-tenant system
10819800, Mar 26 2010 Salesforce.com, Inc. Methods and systems for providing time and date specific software user interfaces
10824620, Oct 21 2016 SALESFORCE, INC Compiling a relational datastore query from a user input
10831462, Oct 03 2006 SALESFORCE, INC Methods and systems for upgrading and installing application packages to an application platform
10833882, Apr 22 2013 Salesforce.com, Inc. Systems and methods of viral enablement of features by peer-to-peer connection
10838941, Jun 14 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Automated image-based record creation and related database systems
10846068, Aug 30 2017 Salesforce.com, Inc. Interactions layer in a web application builder framework
10852926, May 23 2017 SALESFORCE.COM., INC.; SALESFORCE COM , INC Filter of data presentations via user-generated links
10853046, Dec 13 2018 Salesforce.com, Inc.; SALESFORCE COM, INC Deployment of software applications on server clusters
10853334, Mar 02 2018 SALESFORCE, INC Technologies for providing service isolation, scalability, and proactive tenant migration in multi-tenant ecosystems
10860377, Mar 22 2017 SALESFORCE, INC Technologies for identifying thread memory allocation
10862957, Jun 01 2017 Salesforce.com, Inc. Dissemination of node metrics in server clusters
10862996, Jun 30 2016 Salesforce.com, Inc. Characterization of network latency using boxcarring of action requests from component-driven cloud applications
10866819, Jan 13 2017 Salesforce.com, Inc. Dynamically configuring a process based on environmental characteristics monitored by a mobile device
10866959, Sep 20 2018 SALESFORCE COM, INC Debug tracing of next best action strategy engine
10866996, Jan 29 2019 saleforce.com, inc.; SALESFORCE COM, INC Automated method and system for clustering enriched company seeds into a cluster and selecting best values for each attribute within the cluster to generate a company profile
10868790, Feb 27 2017 Salesforce.com, Inc. Facilitating integration of collaborative communication platform and document collaboration tool
10872200, Oct 08 2010 Salesforce.com, Inc. Structured data in a business networking feed
10877985, Sep 18 2015 Salesforce.com, Inc. Systems and methods for making visual data representations actionable
10878218, Jun 18 2018 SALESFORCE, INC Device fingerprinting, tracking, and management
10878379, Sep 17 2015 Salesforce.com, Inc. Processing events generated by internet of things (IoT)
10880255, Feb 27 2017 Salesforce.com, Inc.; SALESFORCE COM, INC System and method in a social networking system for filtering updates in an information feed
10880257, Apr 18 2016 Salesforce.com, Inc. Combining updates of a social network feed
10884995, Oct 15 2010 Salesforce.com, Inc. Methods and apparatus for discontinuing the following of records in an on-demand database service environment
10885179, Oct 05 2011 Salesforce.com, Inc. Just-in-time user provisioning framework in a multitenant environment
10887281, Dec 19 2017 SALESFORCE, INC Automated host-based firewall configuration management
10891175, Sep 15 2015 Salesforce.com, Inc. System having in-memory buffer service, temporary events file storage system and events file uploader service
10891263, Dec 09 2016 Salesforce.com, Inc. Systems and methods for providing database updates for data visualization
10891298, Mar 28 2017 Salesforce.com, Inc. Systems and methods for package component visualizations
10891308, Sep 24 2018 Salesforce.com, Inc. Automated self-scaling database system for automatically scaling out write operations and method for implementing the same in a multi-tenant, cloud-based computing environment
10891357, Sep 07 2017 Salesforce.com, Inc. Managing the display of hidden proprietary software code to authorized licensed users
10891627, Feb 15 2017 Salesforce.com, Inc. Methods and apparatus for using artificial intelligence entities to provide information to an end user
10896192, Sep 08 2016 SALESFORCE, INC Allowing in-line edit to data table of linked data of a data store
10902021, Sep 24 2018 Salesforce.com, Inc. Automated self-scaling database system for automatically scaling out read operations and method for implementing the same
10904197, Dec 19 2017 SALESFORCE COM, INC Management of members of social network conversations
10909070, Aug 31 2017 SALESFORCE COM, INC Memory efficient policy-based file deletion system
10915295, Jun 07 2018 Salesforce.com, Inc. Automated generation of audio daily activity overview powered by a database
10915299, Oct 16 2015 Salesforce.com, Inc. Automatically matching start criteria and completion criteria of a walkthrough for an application or online service
10915519, Sep 09 2016 Salesforce.com, Inc. Processing offline updates to records of a database system
10915827, Sep 24 2018 Salesforce.com, Inc. System and method for field value recommendations based on confidence levels in analyzed dataset
10922062, Apr 15 2019 SALESFORCE, INC Software application optimization
10922095, Apr 15 2019 SALESFORCE, INC Software application performance regression analysis
10936308, Apr 30 2018 SALESFORCE, INC Multi-tenant collaborative learning
10936477, Jan 31 2018 Salesforce.com, Inc.; SALESFORCE COM, INC End-to-end user interface component testing
10936571, Apr 28 2020 Salesforce.com, Inc. Undo based logical rewind in a multi-tenant system
10936611, Oct 30 2015 Salesforce.com, Inc. Search promotion systems and method
10936743, Apr 28 2016 Salesforce.com, Inc. Methods and apparatus for scalable metrics gathering from secure data centers
10938684, Feb 23 2016 Salesforce.com, Inc. Disparate monitoring for IoT
10938755, Oct 07 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Browser-independent multi-tab communication methods and systems
10942714, Aug 13 2013 Salesforce.com, Inc. Responsive self-service template
10942726, Aug 06 2013 Salesforce.com, Inc. Providing an improved web user interface framework for building web applications
10942903, Aug 30 2016 SALESFORCE, INC Rate limiting in a moderation framework of a database system
10949056, Feb 03 2016 Salesforce.com, Inc. System and method to navigate 3D data on mobile and desktop
10949435, Aug 22 2007 Salesforce.com, Inc. System, method and computer program product for defining custom junction objects in an on-demand database service
10949865, Sep 17 2012 Salesforce.com, Inc. Streamlined data entry paths using individual account context on a mobile device
10956146, Nov 27 2017 Salesforce.com, Inc. Content deployment system having a content publishing module for selectively extracting content items for integration into a specific release and methods for implementing the same
10956288, Nov 05 2010 SALESFORCE, INC Server clustering in a computing-on-demand system
10958431, May 30 2018 Salesforce.com, Inc. Authenticating computing system requests across tenants of a multi-tenant database system
10958535, May 07 2010 Salesforce.com, Inc. Methods and apparatus for interfacing with a phone system in an on-demand service environment
10963477, Oct 10 2014 Salesforce.com, Inc. Declarative specification of visualization queries
10963489, Feb 24 2015 Salesforce.com, Inc. Interest groups based on network feed items
10965632, Jun 10 2016 Salesforce.com, Inc. Messaging systems and methods that employ a blockchain to ensure integrity of message delivery
10970468, Mar 15 2013 Salesforce.com, Inc. Systems and methods for creating custom actions
10971159, Feb 19 2019 Salesforce.com, Inc. Cross account access for a virtual personal assistant via voice printing
10972566, Apr 03 2017 Salesforce.com, Inc. Systems and methods for electronic notification broadcasts
10977013, Apr 22 2015 Salesforce.com, Inc. Systems and methods of implementing extensible browser executable components
10977236, Apr 03 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Dynamic recommendation methods and systems for database changes
10977334, Sep 25 2018 Salesforce.com, Inc. Systems and methods for providing client-side enablement of server communications via a single communication session for a plurality of browser-based presentation interfaces
10977661, Oct 30 2009 Salesforce.com, Inc. Integrating and managing social networking information in an on-demand database system
10984070, Oct 18 2017 SALESFORCE, INC Dynamic content placeholders for microblogging posts
10984283, Sep 10 2019 Salesforce.com, Inc. Recognition of biases in data and models
10984665, Sep 30 2016 Salesforce.com, Inc. Customizing sequences of content objects
10986051, Oct 31 2019 Salesforce.com, Inc. System and method for dynamic chat message customization
10991000, Mar 09 2012 Salesforce.com, Inc. Advertisement distribution system, method and computer program product using a multi-tenant on-demand database system
10997260, Aug 30 2016 SALESFORCE, INC Extensible moderation framework
11005801, Jan 31 2020 Salesforce.com, Inc. Personalized dashboard chart for email subscriptions
11010405, Jun 07 2010 Salesforce.com, Inc. System, method and computer program product for performing a synchronization of data
11010701, Apr 30 2012 SALESFORCE COM, INC System and method for managing sales meetings
11016722, Sep 24 2018 Salesforce.com, Inc. Database systems and methods for conversation-driven dynamic updates
11016757, Nov 27 2017 Salesforce.com, Inc. Content deployment system having a proxy for continuously providing selected content items to a content publishing engine for integration into a specific release and methods for implementing the same
11016791, Jul 27 2018 Salesforce.com, Inc. Method and system for declarative configuration of user self-registration pages and processes for a service provider and automatic deployment of the same
11017368, May 25 2010 Salesforce.com, Inc. Systems and methods for automatically collection of performance data in a multi-tenant database system environment
11023428, Nov 12 2013 Salesforce.com, Inc. Form field creation systems and methods
11023564, Sep 14 2015 Salesforce.com, Inc. Publication of collaborative file to library
11025513, Jan 31 2018 SALESFORCE, INC Data consistency of policy enforcement for distributed applications
11025629, Nov 30 2016 Salesforce.com, Inc. Secure component-based web applications
11029940, Sep 04 2018 SALESFORCE, INC Maintaining client version affinity during a server cluster upgrade
11030180, Aug 12 2015 Salesforce.com, Inc. Intra-platform data migration
11036349, Sep 20 2018 Salesforce.com, Inc. Stateful, contextual, and draggable embedded widget
11036357, Sep 27 2017 Salesforce.com, Inc. Generating or updating cross-community streams
11038863, Nov 01 2016 Salesforce.com, Inc. Facilitating encrypted persistent storage in browsers
11042270, Aug 31 2017 Salesforce.com, Inc. History component for single page application
11042271, Oct 01 2004 SALESFORCE, INC Multiple stakeholders for a single business process
11042434, Jan 31 2019 SALESFORCE COM, INC Database ingestion across internal and external data sources using error rate handling
11042557, Oct 01 2015 Salesforce.com, Inc. Methods and apparatus for presenting search results according to a priority order determined by user activity
11048663, Nov 15 2017 Salesforce.com, Inc.; SALESFORCE COM, INC Database systems and methods for automated database modifications
11048684, Jan 16 2018 SALESFORCE, INC Lazy tracking of user system web cache
11049025, Mar 15 2017 Salesforce.com, Inc. Systems and methods for compute node management protocols
11054971, May 23 2017 SALESFORCE.COM., INC.; SALESFORCE COM , INC Modular runtime environment
11055093, Dec 23 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and systems for automated, intelligent application development by scanning metadata by a plug-in to make recommendations
11055162, Oct 31 2018 SALESFORCE, INC Database system performance degradation detection
11061908, Oct 25 2010 Salesforce.com, Inc. Triggering actions in an information feed system
11068445, Jul 24 2015 SALESFORCE, INC Synchronize collaboration entity files
11074030, Jun 27 2017 Salesforce.com, Inc. Identifying a viewport within a browser window
11074559, Aug 30 2019 Salesforce.com, Inc. Payments platform, method and system for a cloud computing platform
11075863, Apr 29 2016 Salesforce.com, Inc. Publisher and share action integration in a user interface for automated messaging
11080704, Aug 30 2019 SALESFORCE COM, INC Payments platform, method and system having external and internal operating modes for ingesting payment transaction data from payment gateway services at a cloud computing platform
11082519, May 08 2017 Salesforce.com, Inc. System and method of providing web content using a proxy cache
11086687, Sep 18 2015 Salesforce.com, Inc. Managing resource allocation in a stream processing framework
11086688, Sep 18 2015 Salesforce.com, Inc. Managing resource allocation in a stream processing framework
11087333, Jul 30 2019 Salesforce.com, Inc. Facilitating session-based read/write of context variables to share information across multiple microservices
11088925, Dec 04 2017 SALESFORCE, INC Technologies for capacity remediation in multi-tenant cloud environments
11093356, Feb 23 2017 Salesforce.com, Inc. Automated self-healing database system and method for implementing the same
11093467, Nov 02 2011 Salesforce.com, Inc. Tools and techniques for extracting knowledge from unstructured data retrieved from personal data sources
11093486, Dec 20 2013 Salesforce.com, Inc. Identifying recurring sequences of user interactions with an application
11093866, Jun 28 2011 Salesforce.com, Inc. Systems and methods for creating a rich social media profile
11093916, May 25 2010 Salesforce.com, Inc. Systems and methods for automatic collection of performance data in a multi-tenant database system environment
11099973, Jan 28 2019 Salesforce.com, Inc. Automated test case management systems and methods
11100065, Nov 02 2011 Salesforce.com, Inc. Tools and techniques for extracting knowledge from unstructured data retrieved from personal data sources
11100813, May 09 2019 Salesforce.com, Inc. System and method for managing screen reader announcements on web pages
11113302, Apr 23 2019 SALESFORCE COM, INC Updating one or more databases based on dataflow events
11113459, May 22 2020 Salesforce.com, Inc. Dynamic guidance engine for software customization systems
11120003, Mar 31 2010 Salesforce.com, Inc. System, method and computer program product for maintaining data stored in a data structure
11120146, Jan 17 2018 Salesforce.com, Inc. Managing the sharing of common library packages with subscribers
11120702, Dec 01 2019 SALESFORCE COM, INC Systems and methods for validating localized assessments in an external system
11126673, Jan 29 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Method and system for automatically enriching collected seeds with information extracted from one or more websites
11128606, May 08 2017 Salesforce.com, Inc. Client fingerprinting for information system security
11132501, May 25 2018 Salesforce.com, Inc. Smart column selection for table operations in data preparation
11137883, Sep 30 2016 Salesforce.com, Inc. Leveraging and managing assessment environments in an assessment hub
11137885, Jul 03 2012 Salesforce.com, Inc. Systems and methods for cross domain service component interaction
11138195, Aug 31 2017 Salesforce.com, Inc. Systems and methods for translating n-ary trees to binary query trees for query execution by a relational database management system
11138228, Dec 27 2016 Salesforce.com, Inc. Org sync async subscribe emails
11144558, Dec 02 2005 Salesforce.com, Inc. Methods and systems for optimizing text searches over structured data in a multi-tenant environment
11151088, Aug 02 2019 Salesforce.com, Inc. Systems and methods for verifying performance of a modification request in a database system
11151638, Jan 27 2020 Salesforce.com, Inc. Methods and systems for performing change management at login
11157298, May 21 2019 Salesforce.com, Inc. Method and system for automatically invoking functionality while using a primary application without user action
11157337, Jan 28 2019 Salesforce.com, Inc. Method and system for processing a stream of incoming messages sent from a specific input message source and validating each incoming message of that stream before sending them to a specific target system
11163731, May 04 2020 Salesforce.com, Inc. Autobuild log anomaly detection methods and systems
11170322, Aug 13 2019 Salesforce.com, Inc. Using a client-side machine learning model dynamically in a mobile enterprise application on a mobile device
11177973, Jan 10 2020 SALESFORCE, INC Distributed audience computation software service
11182144, Dec 31 2018 Salesforce.com, Inc. Preventing database package updates to fail customer requests and cause data corruptions
11183875, Jan 20 2012 Salesforce.com, Inc. Site management in an on-demand system
11190344, Jan 25 2017 SALESFORCE, INC Secure user authentication based on multiple asymmetric cryptography key pairs
11190420, Oct 31 2018 SALESFORCE COM, INC Generating events from host based logging for consumption by a network logging host
11194591, Jan 23 2019 SALESFORCE, INC Scalable software resource loader
11194774, Jul 20 2020 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for logically copying data from a source database to one or more target databases
11194957, May 03 2012 Salesforce.com, Inc. Computer implemented methods and apparatus for representing a portion of a user interface as a network address
11199944, Sep 24 2018 SALESFORCE COM, INC System and method for navigation within widget-sized browser panels
11201806, Apr 27 2017 Salesforce.com, Inc. Automated analysis and recommendations for highly performant single page web applications
11206273, Jan 31 2018 SALESFORCE, INC Content management system connect
11210198, Jan 30 2019 salesforce.com, inc Distributed web page performance monitoring methods and systems
11216444, Jan 31 2019 SALESFORCE, INC Scalable event sourcing datastore
11216785, Nov 18 2019 SALESFORCE COM, INC System and method for a single, unified community and learning experience
11218461, Jun 29 2018 Salesforce.com, Inc.; SALESFORCE COM, INC Authenticating computing system requests with an unknown destination across tenants of a multi-tenant system
11223656, Mar 08 2012 Salesforce.com, Inc. System and method for enhancing trust for person-related data sources
11226950, Aug 25 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for feed-based case management
11227005, Jun 30 2016 Salesforce.com, Inc. Gesture-based database actions
11227100, Sep 12 2008 Salesforce.com, Inc. Method and system for sharing documents between on-demand services
11232223, Sep 13 2016 Salesforce.com, Inc. Providing web application components within remote systems
11233787, Jan 31 2020 SALESFORCE, INC Automated on call and ad hoc access to restricted resources
11240190, Mar 23 2012 Salesforce.com, Inc. Social network communities
11245729, Jul 09 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Group optimization for network communications
11245789, Mar 22 2018 Salesforce.com, Inc. Automatically updating a record in a customer relationship management (CRM) database based on video information extracted from a video call
11250055, Aug 31 2012 Salesforce.com, Inc. Systems and methods for providing access to external content objects
11252119, Jun 04 2018 SALESFORCE, INC Message logging using two-stage message logging mechanisms
11256772, Sep 25 2018 SALESFORCE COM, INC Systems and methods for providing client-side enablement of server communications via a single communication session for a plurality of browser-based presentation interfaces
11263178, Jan 31 2019 SALESFORCE COM, INC Intelligent prediction of future generation of types of data objects based on past growth
11269668, May 27 2010 Salesforce.com, Inc. Database systems and related methods for validation workflows
11269938, Jun 21 2017 Salesforce.com, Inc. Database systems and methods for conversational database interaction
11281847, Sep 30 2016 Salesforce.com, Inc. Generating content objects using an integrated development environment
11283292, Jan 20 2012 Salesforce.com, Inc. Site management in an on-demand system
11288142, Sep 18 2015 Salesforce.com, Inc. Recovery strategy for a stream processing system
11288338, Jun 10 2011 SALESFORCE, INC Extracting a portion of a document, such as a page
11288511, Nov 30 2017 Salesforce.com, Inc. System and method for displaying pertinent data to supplement information in images provided from a mobile communication device using augmented reality
11288640, Aug 30 2019 Salesforce.com, Inc. Cloud computing platform, method and system having a payments platform for integrating an asynchronous payment gateway service with the cloud computing platform
11294648, May 22 2020 SALESFORCE, INC Application development architecture for mobile applications
11295067, Mar 15 2013 Salesforce.com, Inc. Systems and methods for creating custom actions
11295194, Jul 26 2016 Salesforce.com, Inc. Natural language platform for database system
11296961, Sep 17 2015 Salesforce.com, Inc. Simplified entity lifecycle management
11296998, May 07 2010 Salesforce.com, Inc. Resolving information in a database environment
11297022, Jun 10 2016 Salesforce.com, Inc. Messaging systems and methods that employ a blockchain to ensure integrity of message delivery
11297028, Dec 19 2017 Salesforce.com, Inc. Management of members of social network conversations
11297501, Jan 31 2020 SALESFORCE, INC Firewall discovery and management
11301766, Sep 24 2018 Salesforce.com, Inc. System and method for field value recommendations based on confidence levels in analyzed dataset
11307957, Nov 07 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for determining optimal cost-to-serve for cloud applications in the public cloud
11308067, Sep 21 2018 SALESFORCE COM, INC Associating flows in different states to a database record
11308168, Jul 20 2007 SALESFORCE, INC Application update system, method and computer program product
11308424, May 03 2013 Salesforce.com, Inc. Providing access to a private resource in an enterprise social networking system
11314494, Sep 09 2005 SALESFORCE, INC Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
11314790, Nov 18 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Dynamic field value recommendation methods and systems
11314821, Jul 14 2011 SALESFORCE, INC Computer implemented methods and apparatus for providing internal custom feed items
11315055, Jul 26 2018 Salesforce.com, Inc. System and method for visualizing an order allocation process
11321422, Mar 09 2021 Salesforce.com, Inc. User-configurable aggregate web components
11327987, Sep 11 2015 Salesforce, Inc. Configuring service consoles based on service feature templates using a database system
11328032, Dec 21 2020 Salesforce.com, Inc. Systems and methods for presenting a demo for enabling a visual dialogue with a customer by single user tap actions
11341208, Sep 19 2016 Salesforce.com, Inc. Mobile application bundled with metadata database
11347795, Aug 08 2019 Salesforce.com, Inc. Tools and methods that format mapping information from a data integration system
11354726, Dec 20 2019 SALESFORCE, INC Change order application programming interfaces
11372660, Oct 20 2010 Salesforce.com, Inc. Framework for custom actions on an information feed
11379266, Sep 10 2019 SALESFORCE, INC Automatically identifying and right sizing instances
11381540, Oct 31 2019 Salesforce, Inc. Tracking premature events in electronic message processing
11385876, Apr 01 2021 Salesforce.com, Inc.; SALESFORCE COM, INC Infrastructure control interface for database systems
11386258, Nov 19 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Dynamic scalable vector graphics (SVG) system and methods for implementing the same
11386380, Jan 30 2019 Salesforce.com, Inc. System and method for visual, artificial intelligence, and rule based quality assurance
11386434, Oct 30 2009 Salesforce, Inc. Integrating and managing social networking information in an on-demand database system
11392581, Jan 28 2020 Salesforce.com, Inc.; SALESFORCE COM, INC System and method for providing dynamically grouped search results from a hierarchy
11397736, Jan 27 2020 Salesforce, Inc. Large scale data ingestion
11397780, Jan 29 2019 Salesforce.com, Inc. Automated method and system for clustering enriched company seeds into a cluster and selecting best values for each attribute within the cluster to generate a company profile
11403265, Oct 02 2019 SALESFORCE, INC Dynamically controlling data migration
11403280, Sep 25 2019 Salesforce.com, Inc. Master data management technologies
11409695, Jan 13 2016 Salesforce, Inc. Batch job processing using a database system
11409736, Mar 28 2017 Salesforce.com, Inc. Methods and apparatus for performing machine learning to improve capabilities of an artificial intelligence (AI) entity used for online communications
11410107, Nov 07 2019 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for real-time determination of cost-to-serve metrics and cost attribution for cloud applications in the public cloud
11416116, Jan 31 2018 SALESFORCE COM, INC Generation of mobile device notifications
11416211, Sep 24 2018 Salesforce.com, Inc. Database systems and methods for conversation-driven dynamic updates
11416677, Apr 09 2020 Salesforce.com, Inc.; SALESFORCE COM, INC Dynamic resource management systems and form integration methods
11416790, Sep 18 2012 Salesforce, Inc. Method and system for managing business deals
11416830, Sep 25 2018 SALESFORCE COM, INC Method and system for automatically creating action plans based on an action plan template
11418473, Jan 31 2020 Salesforce.com, Inc. Personalized dashboard chart for email subscriptions
11423063, Jul 31 2018 SALESFORCE COM, INC Flattening hierarchical database records using inverted indexing
11429257, Apr 15 2021 SALESFORCE, INC Dynamically generated help based on derived hierarchical context
11429714, Mar 12 2019 Salesforce.com, Inc. Centralized privacy management system for automatic monitoring and handling of personal data across data system platforms
11430346, Dec 01 2019 Salesforce, Inc. Systems and methods for validating localized assessments in an external system
11431481, Nov 07 2019 SALESFORCE COM, INC System for securing memory dumps
11431500, Nov 26 2019 SALESFORCE, INC Authorization code management for published static applications
11431663, Oct 24 2019 SALESFORCE, INC Technologies for predicting personalized message send times
11436223, Jan 30 2017 SALESFORCE, INC Query pin planner
11436227, Aug 23 2016 Salesforce, Inc. Accessing and displaying shared data
11442691, Sep 24 2018 Salesforce.com, Inc. Database systems and methods for conversation-driven dynamic updates
11442754, Oct 27 2021 Salesforce, Inc. Targeting system for web page components
11449525, Aug 01 2017 Salesforce, Inc. Facilitating mobile device interaction with an enterprise database system
11460975, Sep 18 2020 SALESFORCE COM, INC Metric presentation within a flow builder
11468020, Oct 15 2010 Salesforce.com, Inc. Methods and apparatus for discontinuing the following of records in an on-demand database service environment
11474793, May 22 2020 SALESFORCE, INC Polymorphic application architecture
11475049, Jan 31 2020 SALESFORCE, INC Methods and systems for organization extensibility and cluster scalability
11475064, Jun 08 2017 Salesforce.com, Inc. System and method in a database system for creating a field service work order
11481184, Sep 24 2018 Salesforce.com, Inc. Database systems and methods for conversation-driven dynamic updates
11481440, Nov 30 2015 Salesforce.com, Inc. System and method for processing metadata to determine an object sequence
11481464, Oct 03 2014 Salesforce, Inc. Suggesting actions for evaluating user performance in an enterprise social network
11481540, Nov 19 2019 Salesforce.com, Inc. Discrepancy resolution processor and methods for implementing the same
11483135, Apr 03 2017 Salesforce, Inc. Secure handling of customer-supplied encryption secrets
11483258, May 19 2004 Salesforce, Inc. Techniques for providing connections to services in a network environment
11487718, Sep 23 2010 Salesforce, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
11494410, Jan 23 2009 Salesforce.com, Inc. Sharing data in a data storage system
11496434, Feb 27 2017 Salesforce, Inc. Facilitating integration of collaborative communication platform and document collaboration tool
11507617, Nov 15 2019 SALESFORCE COM, INC Unsupervised dialogue topic extraction
11507729, May 13 2021 Salesforce, Inc. Scoped containers using CSS custom properties and color pairs
11509608, Apr 13 2020 Salesforce, Inc. Methods and systems for configuring an email engine
11514008, Oct 02 2019 SALESFORCE, INC Dynamically controlling data migration
11520468, Jul 03 2012 Salesforce, Inc. Systems and methods for cross domain service component interaction
11520482, Feb 22 2021 Salesforce.com, Inc. Navigating displayed graphical user interface panels using assigned keyboard shortcut key(s)
11520691, Apr 14 2021 Salesforce.com, Inc. Test procedure systems and methods
11526539, Jan 31 2019 SALESFORCE, INC Temporary reservations in non-relational datastores
11526551, Apr 10 2020 SALESFORCE, INC Search query generation based on audio processing
11526655, Nov 19 2019 Salesforce.com, Inc. Machine learning systems and methods for translating captured input images into an interactive demonstration presentation for an envisioned software product
11537503, Jan 31 2020 Salesforce.com, Inc. Code editor for user interface component testing
11537628, Jul 11 2013 Salesforce, Inc. Systems and methods for interacting with external content objects
11538000, Aug 30 2019 Salesforce.com, Inc. Cloud computing platform, method and system having a payments platform for integrating a synchronous payment gateway service with the cloud computing platform
11539652, Apr 13 2020 Salesforce, Inc.; SALESFORCE COM, INC Rate limiting actions with a message queue
11544125, Jan 28 2019 Salesforce.com, Inc. Method and system for processing a stream of incoming messages sent from a specific input message source and validating each incoming message of that stream before sending them to a specific target system
11544450, Oct 08 2010 Salesforce, Inc. Structured data in a business networking feed
11544762, Nov 19 2019 Salesforce.com, Inc. Techniques and architectures for recommending products based on work orders
11552802, Apr 15 2020 Salesforce, Inc.; SALESFORCE COM, INC Stateless mutual authentication between services
11556461, Jun 16 2020 Salesforce.com, Inc.; SALESFORCE COM, INC Middleware for transparent user interface testing
11567786, Jul 27 2018 Salesforce.com, Inc. Method and system for declarative configuration of user self-registration pages and processes for a service provider and automatic deployment of the same
11567957, Sep 25 2019 Salesforce.com, Inc. Incremental addition of data to partitions in database tables
11568322, Aug 13 2019 Salesforce, Inc. Using a client-side machine learning model dynamically in a mobile enterprise application on a mobile device
11573682, Jan 27 2021 Lifetime Products, Inc System and method for selecting one out of a plurality of participants in a network-based video meeting
11580179, Sep 24 2018 SALESFORCE COM, INC Method and system for service agent assistance of article recommendations to a customer in an app session
11580276, Jan 28 2020 Salesforce.com, Inc. Dynamic asset management system and methods for generating interactive simulations representing assets based on automatically generated asset records
11582277, Oct 09 2015 Salesforce.com, Inc. System for broadcasting events
11586643, Aug 11 2020 Salesforce.com, Inc. Enabling dynamic data capture with database objects
11586945, Aug 06 2019 Salesforce.com, Inc. Methods and systems for automated, intelligent application process development that recommend how to modify applications based on usage patterns of end users
11588840, Jan 31 2020 SALESFORCE, INC Automated encryption degradation detection, reporting and remediation
11604765, Mar 14 2017 Salesforce.com, Inc. Database and file structure configurations for managing text strings to be provided by a graphical user interface
11604814, Feb 24 2015 Salesforce, Inc. Interest groups based on network feed items
11609896, Mar 31 2010 Salesforce.com, Inc. System, method and computer program product for maintaining data stored in a data structure
11620114, Aug 13 2013 Salesforce.com, Inc. Responsive self-service template
11620124, Apr 23 2021 Salesforce.com, Inc. System and method for flow runtime versioning
11620177, Oct 12 2016 Salesforce.com, Inc. Alerting system having a network of stateful transformation nodes
11620305, Mar 25 2021 salesforce.com, inc Ruleset engine for generating homogeneous data sets
11625409, Sep 24 2018 Salesforce, Inc. Driving application experience via configurable search-based navigation interface
11627039, Jan 20 2012 Salesforce.com, Inc. Site management in an on-demand system
11630844, Jan 29 2021 Salesforce.com, Inc.; SALESFORCE COM, INC System and method for augmenting synced data across multiple systems to facilitate data cleansing
11635944, Nov 19 2019 Salesforce.com, Inc. Methods and systems for programmatic creation of an interactive demonstration presentation for an envisioned software product
11636025, Apr 27 2021 SALESFORCE COM, INC Intelligent generation of automated user interface testing methods
11636076, May 02 2008 SALESFORCE, INC Method and system for managing recent data in a mobile device linked to an on-demand service
11636181, Sep 14 2015 Salesforce, Inc. Publication of collaborative file to library
11637831, Oct 09 2019 SALESFORCE, INC Application programmer interface platform with direct data center access
11640407, Sep 24 2018 Salesforce, Inc. Driving application experience via search inputs
11656889, May 21 2019 Salesforce.com, Inc. Method and system for automatically invoking functionality while using a primary application without user action
11657027, Jul 20 2020 Salesforce.com, Inc. Systems and methods for logically copying data from a source database to one or more target databases
11658930, Jan 31 2020 Salesforce.com, Inc. Personalized dashboard chart for email subscriptions
11658957, Oct 23 2020 Salesforce.com, Inc. Methods and apparatuses for temporary session authentication and governor limits management
11663169, Jan 28 2020 Salesforce.com, Inc. Dynamic asset management system and methods for automatically tracking assets, generating asset records for assets, and linking asset records to other types of records in a database of a cloud computing system
11663205, May 04 2017 SALESFORCE, INC Technologies for asynchronous querying
11663544, Jan 28 2020 Salesforce.com, Inc. System and methods for risk assessment in a multi-tenant cloud environment
11665173, Jan 22 2008 Salesforce, Inc. Security verification of communications to tenants of a shared system
11665268, Jul 30 2021 Salesforce.com, Inc.; SALESFORCE COM, INC Customization in standard application programming interfaces (APIs) provided by a cloud computing platform
11675800, Nov 30 2020 Salesforce, Inc.; SALESFORCE COM, INC Version control and execution on a mobile device
11675803, Apr 23 2019 Salesforce, Inc. Updating one or more databases based on dataflow events
11675890, Oct 05 2011 SALESFORCE COM, INC Just-in-time user provisioning framework in a multitenant environment
11681522, Oct 21 2021 SALESFORCE, INC Self-healing build pipelines for an application build process across distributed computer platforms
11681656, Nov 15 2017 Salesforce.com, Inc. Database systems and methods for automated database modifications
11687422, Nov 05 2010 SALESFORCE, INC Server clustering in a computing-on-demand system
11687523, Nov 25 2020 Salesforce, Inc. System and method for efficiently transferring data for offline use
11687524, Dec 20 2013 Salesforce, Inc. Identifying recurring sequences of user interactions with an application
11693675, Oct 27 2021 Salesforce.com, Inc. Targeting system for web page components
11694220, Mar 09 2012 SALESFORCE, INC Advertisement distribution system, method and computer program product using a multi-tenant on-demand database system
11698888, Nov 12 2013 Salesforce.com, Inc. Form field creation systems and methods
11698891, Jul 30 2019 Salesforce.com, Inc. Database systems and related multichannel communication methods
11704102, Sep 09 2005 SALESFORCE, INC Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
11711330, Jan 31 2020 SALESFORCE COM, INC Out of office message configuration
11714811, Sep 27 2017 Salesforce, Inc. Run-time querying of multi-tenant non-relational platform objects
11714923, Sep 26 2013 Salesforce, Inc. Methods and systems for protecting data integrity
11715110, Oct 30 2009 Salesforce, Inc. Integrating and managing social networking information in an on-demand database system
11720953, Jan 27 2020 Salesforce.com, Inc. Methods and systems for performing change management at login
11734265, Mar 08 2022 SALESFORCE, INC Automatic GraphQL data source field change handler
11741119, Jan 26 2021 SALESFORCE, INC Canonical data model for distributed data catalog and metadata exchange
11741408, Sep 18 2012 Salesforce, Inc. Method and system for managing business deals
11748243, Apr 27 2021 Salesforce, Inc. Intelligent generation of page objects for user interface testing
11750460, Oct 06 2022 Salesforce, Inc. Identifying duplicate entries in views of same and other network management interfaces
11755400, Nov 30 2021 SALESFORCE, INC Error detection and mitigation for software pull requests
11755720, Jan 31 2020 Salesforce, Inc. Secure membranes and cross namespace communication
11757806, Apr 29 2016 Salesforce, Inc. Publisher and share action integration in a user interface for automated messaging
11762656, Aug 25 2020 SALESFORCE, INC Service fabrication tool
11763208, Jun 28 2011 Salesforce, Inc. Systems and methods for creating a rich social media profile
11775435, May 31 2016 Salesforce, Inc. Invalidation and refresh of multi-tier distributed caches
11775859, Aug 28 2015 Salesforce, Inc. Generating feature vectors from RDF graphs
11797638, Feb 24 2021 Salesforce.com, Inc. Aggregate component for parallel browser-initiated actions
11797866, Jul 18 2018 Salesforce.com, Inc. Systems and methods for accelerating execution of processes based on artificial intelligence (AI) prediction of blockchain consensus
11803677, Jan 28 2020 Salesforce.com, Inc. Dynamic asset management system and methods for generating interactive simulations representing assets based on automatically generated asset records
11822583, Feb 24 2015 Salesforce, Inc. Interest groups based on network feed items
11836072, Aug 23 2021 Salesforce.com, Inc.; SALESFORCE COM, INC Risk-based root cause identification methods and related autobuild systems
11847096, Nov 15 2017 Salesforce.com, Inc. Database systems and methods for automated database modifications
11853699, Jan 29 2021 Salesforce.com, Inc. Synthetic crafting of training and test data for named entity recognition by utilizing a rule-based library
11868702, May 13 2021 Salesforce, Inc. Scoped containers using CSS custom properties and color pairs
11874797, Jun 23 2022 Salesforce, Inc. Smart privilege escalation in a cloud platform
11886458, Nov 05 2021 SALESFORCE, INC Configurable data transformation between different database systems
11887033, Jan 13 2017 Salesforce, Inc. Dynamically configuring a process based on environmental characteristics monitored by a mobile device
11887076, Aug 30 2019 SALESFORCE, INC Payments platform, method and system for a cloud computing platform
11887117, Aug 30 2019 SALESFORCE, INC Payments platform, method and system having external and internal operating modes for ingesting payment transaction data from payment gateway services at a cloud computing platform
11893377, Apr 27 2022 Salesforce, Inc.; SALESFORCE, INC Dependency-aware rules engine for delivering managed package upgrades
11907385, Sep 18 2020 SALESFORCE COM, INC Process flow granular control and execution
11915834, Apr 09 2020 Salesforce, Inc. Efficient volume matching of patients and providers
11916918, Apr 14 2020 SALESFORCE COM, INC System mode override during flow execution
7809702, May 08 2007 International Business Machines Corporation Generating from application modifications commands to modify the objects in a repository
7958154, Aug 29 2007 International Business Machines Corporation Apparatus, system, and method for command manager support for pluggable data formats
8056000, Aug 27 2007 International Business Machines Corporation Apparatus and system for an automated bidirectional format transform
8086642, Jun 10 2005 SAP SE Apparatus, system, and method for processing hierarchical data in disparate data repositories
8566648, Feb 02 2011 Salesforce, Inc. Automated testing on devices
8595635, Jan 25 2007 SALESFORCE COM, INC System, method and apparatus for selecting content from web sources and posting content to web logs
8713043, Mar 01 2010 Salesforce.com, Inc. System, method and computer program product for sharing a single instance of a database stored using a tenant of a multi-tenant on-demand database system
8713530, May 13 2010 Salesforce.com, Inc. Test framework of visual components in a multitenant database environment
8732088, Oct 02 2006 Salesforce.com, Inc. Method and system for integrating a PBX-equipped client and an on-demand database service
8732150, Sep 23 2010 Salesforce.com, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
8732606, Oct 25 2010 Salesforce.com, Inc. Computer implemented methods and apparatus for dynamic windowing in user interfaces
8732663, Feb 24 2010 Salesforce.com, Inc. System, method and computer program product for providing automated testing by utilizing a preconfigured point of entry in a test or by converting a test to a predefined format
8738603, May 20 2010 Salesforce.com, Inc. Metrics-based accessing of social threads
8738620, Nov 12 2009 SALESFORCE, INC Implementing enterprise level business information networking
8738689, Mar 26 2001 Salesforce.com, Inc. Method, system, and computer program product for managing interchange of enterprise data messages
8744972, Oct 02 2006 Salesforce.com, Inc. Method and system for integrating a PBX-equipped client and an on-demand database service
8745272, Mar 12 2010 SALESFORCE COM, INC Service cloud console
8745625, Jul 26 2011 Salesforce.com, Inc. System, method and computer program product for conditionally executing related reports in parallel based on an estimated execution time
8751402, Oct 02 2006 Salesforce.com, Inc. Method and system for integrating a PBX-equipped client and an on-demand database service
8756196, Jun 30 2006 International Business Machines Corporation Propagating tables while preserving cyclic foreign key relationships
8756221, Dec 03 2010 Salesforce.com, Inc. Social files
8762281, Oct 02 2006 Salesforce.com, Inc. Method and system for integrating a PBX-equipped client and an on-demand database service
8762329, Oct 02 2006 Salesforce.com, Inc. Method and system for synchronizing a server and an on-demand database service
8768964, May 13 2010 SALESFORCE COM, INC Security monitoring
8769416, Mar 12 2010 SALESFORCE COM, INC Service cloud console
8775315, Oct 02 2006 Salesforce.com, Inc. Method and system for integrating a PBX-equipped client and an on-demand database service
8775946, May 07 2010 SALESFORCE COM, INC Resolving information in a multitenant database environment
8776064, Apr 20 2010 Salesforce.com, Inc. Methods and systems for batch processing in an on-demand service environment
8776082, Oct 02 2006 Salesforce.com, Inc. Method and system for providing a client access to an external service via an application services platform
8776083, Oct 02 2006 Salesforce.com, Inc. API method and system for providing access to an external service via an application services platform
8781988, Jul 19 2007 SALESFORCE COM, INC System, method and computer program product for messaging in an on-demand database service
8782785, Jul 19 2007 Salesforce.com, Inc. System, method and computer program product for rendering data of an on-demand database service safe
8788510, Aug 17 2007 SALESFORCE COM, INC System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database
8788532, Dec 02 2005 Salesforce.com, Inc. Firewalls for securing customer data in a multi-tenant environment
8793691, Apr 15 2010 SALESFORCE COM, INC Managing and forwarding tasks to handler for processing using a message queue
8799233, Sep 09 2005 Salesforce.com, Inc. System, method and computer program product for validating one or more metadata objects
8799298, Aug 17 2007 SALESFORCE COM, INC On-demand database service system, method, and computer program product for enforcing the inclusion of tests in a developed application
8799320, Dec 02 2005 Salesforce.com, Inc. Firewalls for securing customer data in a multi-tenant environment
8799327, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for deriving commonalities among data entries
8812346, Oct 04 2006 Salesforce.com, Inc. Method and system for load balancing a sales forecast by selecting a synchronous or asynchronous process based on a type of event affecting the sales forecast
8812438, Jan 20 2012 SALESFORCE COM, INC System, method and computer program product for synchronizing data using data identifying messages
8812533, May 21 2009 SALESFORCE COM, INC System, method and computer program product for automatically presenting selectable options in a lookup field
8818938, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for synchronizing entities within a system
8818985, Apr 06 2010 SALESFORCE COM, INC Rule-based prioritization of social data
8825704, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for enabling access to a resource of a multi-tenant on-demand database service utilizing a token
8832054, Sep 12 2008 SALESFORCE COM, INC Method and system for sharing documents between on-demand services
8850219, May 13 2010 Salesforce.com, Inc. Secure communications
8863251, Nov 15 2007 Salesforce.com, Inc. On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
8868605, May 08 2008 Salesforce.com, Inc. System, method and computer program product for sharing tenant information utilizing a multi-tenant on-demand database service
8875152, Apr 22 2010 Salesforce.com, Inc. System, method and computer program product for dynamically increasing resources utilized for processing tasks
8875259, Nov 15 2007 Salesforce.com, Inc. On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
8886766, Oct 25 2010 Salesforce.com, Inc. Systems and methods for tracking responses on an online social network
8892573, Sep 23 2010 Salesforce.com, Inc. Methods and apparatus for selecting updates to associated records to publish on an information feed in an on-demand database service environment
8898287, Feb 24 2010 SALESFORCE COM, INC System, method and computer program product for monitoring data activity utilizing a shared data store
8898582, Mar 10 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Configurable highlights panel for display of database records
8898639, Mar 18 2010 Salesforce.com, Inc. System, method and computer program product for automated test case generation and scheduling
8898753, Nov 15 2007 Salesforce.com, Inc. On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
8903770, Oct 15 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and apparatus for discontinuing the following of records in an on-demand database service environment
8903851, Sep 09 2005 Salesforce.com, Inc. Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
8903943, Feb 15 2011 Salesforce.com, Inc. Integrating cloud applications and remote jobs
8904011, May 07 2010 Salesforce.com, Inc. Resolving information in a multitenant database environment
8914438, May 20 2010 Salesforce.com, Inc. Methods and systems for providing a user interface in a multi-tenant database environment
8914539, Mar 12 2010 SALESFORCE COM, INC Service cloud console
8925041, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for performing one or more actions based on a determined access permissions for a plurality of users
8930933, Mar 19 2010 Salesforce.com, Inc. System, method and computer program product for associating a plurality of stored elements with a creation of a patch
8949185, Jul 20 2007 Salesforce.com, Inc. Application update system, method and computer program product
8959483, May 13 2010 Salesforce.com, Inc. Test framework of visual components in a multitenant database environment
8966577, Oct 14 2003 Salesforce.com, Inc. Method, system, and computer program product for facilitating communication in an interoperability network
8972431, May 06 2010 Salesforce.com, Inc. Synonym supported searches
8973106, May 03 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for providing permissions to users in an on-demand service environment
8977647, Jul 19 2007 SALESFORCE COM, INC On-demand database service system, method and computer program product for conditionally allowing an application of an entity access to data of another entity
8977675, Mar 26 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and systems for providing time and date specific software user interfaces
8977713, Aug 10 1999 Salesforce.com, Inc. Method, system, and computer program product for locating network files
8984051, Jul 26 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for communicating feed information to one or more recipients
8984409, Mar 12 2010 SALESFORCE COM, INC Service cloud console
8984434, Oct 25 2010 Salesforce.com, Inc. Computer implemented methods and apparatus for dynamic windowing in user interfaces
8990144, Mar 08 2010 Salesforce.com, Inc. System, method and computer program product for performing one or more actions utilizing a uniform resource locator
8990958, Aug 31 2012 SALESFORCE COM, INC Systems and methods for content management in an on demand environment
8996493, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for storing reports for use by tenants of a multi-tenant on-demand database service
8996574, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for portal user data access in a multi-tenant on-demand database system
8996610, Mar 15 2010 Salesforce.com, Inc. Proxy system, method and computer program product for utilizing an identifier of a request to route the request to a networked device
8996674, Mar 19 2012 Salesforce.com, Inc. System, method and computer program product for SNMP based mobile device management
9002891, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for portal user data access in a multi-tenant on-demand database system
9007364, Oct 12 2011 Salesforce.com, Inc. Augmented reality display apparatus and related methods using database record data
9009669, May 07 2010 Salesforce.com, Inc. Visual user interface validator
9009709, Mar 16 2010 SALESFORCE COM, INC Asynchronous rollup numbers forecasting methods and systems
9020905, Oct 31 2009 International Business Machines Corporation Synchronizing database and non-database resources without a commit coordinator
9021435, May 20 2010 Salesforce.com, Inc. Methods and systems for providing a user interface in a multi-tenant database environment
9031957, Oct 08 2010 Salesforce.com, Inc. Structured data in a business networking feed
9031996, Mar 15 2010 salesforce.com System, method and computer program product for creating a plurality of CNAMES for a website
9037546, Mar 25 2010 SALESFORCE COM, INC System, method and computer program product for automatic code generation for database object deletion
9037561, Dec 02 2005 Salesforce.com, Inc. Methods and systems for optimizing text searches over structured data in a multi-tenant environment
9037722, May 07 2010 SALESFORCE COM, INC Resolving information in a multitenant database environment
9038074, Oct 04 2011 Salesforce.com, Inc. System, method and computer program product for recursively executing a process control operation to use an ordered list of tags to initiate corresponding functional operations
9043362, Apr 02 2004 Salesforce.com, Inc. Custom entities and fields in a multi-tenant database system
9047070, Nov 03 2011 Salesforce.com, Inc. System, method and computer program product for defining applications using metadata records created from an object specifying a predefined metadata format
9047479, Sep 12 2008 SALESFORCE COM, INC System, method and computer program product for providing a team object in association with an object
9053132, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for providing a team object in association with an object
9058361, Oct 02 2006 Salesforce.com, Inc. Method and system for applying a group of instructions to metadata
9058363, Oct 07 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for providing a distribution list of users in an online social network
9059981, Jan 22 2008 Salesforce.com, Inc. System, method, and computer program product for security verification of communications to tenants of an on-demand database service
9063632, Mar 15 2013 SALESFORCE COM, INC Systems and methods for interacting with records via a publisher and an information feed
9064339, Jun 28 2011 Salesforce.com, Inc. Computer implemented systems and methods for providing a mobile social enterprise interface
9069803, Sep 09 2005 Salesforce.com, Inc. Application installation system, method and computer program product for allowing a package to be installed by a third party
9069858, Sep 18 2012 SALESFORCE COM, INC Systems and methods for identifying entity mentions referencing a same real-world entity
9070137, Jun 21 2010 Salesforce.com, Inc. Methods and systems for compiling marketing information for a client
9076072, Oct 11 2012 Salesforce.com, Inc. System and method for web page rendering test automation suite
9081869, Mar 16 2010 SALESFORCE COM, INC System, method and computer program product for communicating data between a database and a cache
9083601, Mar 26 2001 Salesforce.com, Inc. Method, system, and computer program product for managing interchange of enterprise data messages
9087128, Jan 22 2008 Salesforce.com, Inc. System, method and computer program product for creating mobile custom views with filtering for tenants of an on-demand database service
9092501, Apr 02 2004 Salesforce.com, Inc. Custom entities and fields in a multi-tenant database system
9094359, May 09 2012 Salesforce.com, Inc. Method and system for inter-social network communications
9098365, Mar 16 2010 Salesforce.com, Inc. System, method and computer program product for conditionally enabling an installation aspect
9098539, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for enabling access to a resource of a multi-tenant on-demand database service utilizing a token
9098618, May 07 2010 Salesforce.com, Inc. Validating visual components
9100240, Jun 07 2010 Salesforce.com, Inc. System, method and computer program product for performing a synchronization of data
9106761, Sep 23 2010 Salesforce.com, Inc. Methods and apparatus for inviting users to follow records in an on-demand database service environment
9111006, Mar 16 2010 Salesforce.com, Inc. System, method and computer program product for communicating data between a database and a cache
9117003, Mar 12 2010 Salesforce.com, Inc. System, method and computer program product for navigating content on a single page
9123028, Jul 01 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for controlling the inclusion of edited information in an information feed
9135304, Dec 02 2005 SALESFORCE COM, INC Methods and systems for optimizing text searches over structured data in a multi-tenant environment
9137124, Mar 15 2010 SALESFORCE COM, INC System, method and computer program product for serving an application from a custom subdomain
9146951, Oct 02 2006 Salesforce.com, Inc. Method and system for selecting amongst a plurality of processes to send a message
9148438, Jun 25 2012 Salesforce.com, Inc. System, method and computer program product for publishing non-malicious third party content to a data feed
9152658, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for providing a team object in association with an object
9152725, Nov 04 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for configuring and performing a custom rule to process a preference indication
9154985, Aug 30 2011 SALESFORCE COM, INC Mechanism for facilitating dynamic and segment-based monitoring of cellular network performance in an on-demand services environment
9164992, Jul 20 2007 Salesforce.com, Inc. Application update system, method and computer program product
9171033, Oct 04 2006 Salesforce.com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
9171034, Oct 04 2006 Salesforce.com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
9171049, Jun 13 2002 SALESFORCE COM, INC Offline simulation of online session between client and server
9171180, Dec 03 2010 SALESFORCE COM, INC Social files
9176730, Aug 17 2007 SALESFORCE COM, INC On-demand database service system, method, and computer program product for validating a developed application
9177007, May 14 2012 SALESFORCE COM, INC Computer implemented methods and apparatus to interact with records using a publisher of an information feed of an online social network
9177070, Jun 21 2010 SALESFORCE COM, INC System, method and computer program product for performing actions associated with a portal
9178753, Aug 31 2011 SALESFORCE, INC Computer implemented methods and apparatus for providing access to an online social network
9178788, Feb 24 2010 Salesforce.com, Inc. System, method and computer program product for monitoring data activity utilizing a shared data store
9183266, Jun 13 2002 Salesforce.com, Inc. Method, system, and computer program product for synchronizing data
9189521, Jun 21 2011 SALESFORCE COM, INC Statistics management for database querying
9189532, Jul 26 2011 Salesforce.com, Inc. System, method and computer program product for locally defining related reports using a global definition
9191291, Sep 14 2012 Salesforce.com, Inc. Detection and handling of aggregated online content using decision criteria to compare similar or identical content items
9195438, Dec 19 2012 Salesforce.com, Inc. System, method and computer program product for creating an application within a system
9195648, Oct 12 2011 Salesforce.com, Inc. Multi-lingual knowledge base
9195681, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for transmitting a group of data elements
9195687, Sep 09 2005 Salesforce.com, Inc. System, method and computer program product for validating one or more metadata objects
9195760, Jun 14 2010 Salesforce.com, Inc. Methods and systems for dynamically suggesting answers to questions submitted to a portal of an online service
9195850, Mar 01 2010 Salesforce.com, Inc. System, method and computer program product for sharing a single instance of a database stored using a tenant of a multi-tenant on-demand database system
9195854, Dec 19 2012 SALESFORCE COM, INC System and method for controlling the on and off state of features at runtime
9197513, May 03 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for representing a portion of a user interface as a network address
9201907, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for providing a team object in association with an object
9203881, Mar 25 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods of online social environment based translation of entity methods
9208187, Jun 24 2011 Salesforce.com, Inc. Using a database system for selective inclusion and exclusion of types of updates to provide a configuration feed of a social networking system
9215096, Aug 26 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for providing communication between network domains in a service cloud
9218423, Jun 14 2010 Salesforce.com, Inc. Methods and systems for dynamically suggesting answers to questions submitted to a portal of an online service
9219678, Mar 26 2001 SALESFORCE COM, INC Method, system, and computer program product for sending and receiving messages
9219775, Nov 03 2008 Salesforce.com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
9223480, Oct 01 2004 Salesforce.com, Inc. Multiple stakeholders for a single business process
9223852, Jun 11 2010 Salesforce.com, Inc. Methods and systems for analyzing search terms in a multi-tenant database system environment
9229793, Apr 22 2010 SALESFORCE COM, INC System, method and computer program product for routing messages to a server
9230068, Oct 03 2006 SALESFORCE COM, INC Method and system for managing license objects to applications in an application platform
9235330, Oct 25 2010 Salesforce.com, Inc. Computer implemented methods and apparatus for dynamic windowing in user interfaces
9235614, Aug 25 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for feed-based case management
9235631, Jun 13 2002 Salesforce.com, Inc. Method, system, and computer program product for simulating an online session
9237080, Feb 24 2010 Salesforce.com, Inc. System, method and computer program product for monitoring data activity utilizing a shared data store
9237156, May 21 2012 Salesforce.com, Inc. Systems and methods for administrating access in an on-demand computing environment
9239722, Mar 31 2010 SALESFORCE COM, INC System, method and computer program product for interacting with a process diagram
9241017, Jul 03 2012 SALESFORCE COM, INC Systems and methods for cross domain service component interaction
9244599, Oct 01 2004 Salesforce.com, Inc. Multiple stakeholders for a single business process
9244660, Aug 13 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Responsive self-service website template
9244954, May 28 2010 SALESFORCE COM, INC Customizing standard formula fields in a multi-tenant database system environment
9244992, Jun 13 2002 Salesforce.com, Inc. Method, system, and computer program product for simulating an online session
9244995, Oct 02 2006 SALESFORCE COM, INC Method and system for synchronizing a server and an on-demand database service
9246707, Mar 16 2010 SALESFORCE COM, INC Cost-based SMTP email routing
9246892, Apr 03 2013 Salesforce.com, Inc. System, method and computer program product for managing access to systems, products, and data based on information associated with a physical location of a user
9246959, Oct 10 2012 SALESFORCE, INC System and method for location-based social network feeds
9251164, Feb 26 2010 SALESFORCE COM, INC System, method and computer program product for using a database to access content stored outside of the database
9251229, Jun 13 2002 Salesforce.com, Inc. Method, system, and computer program product for simulating an online session
9251239, May 15 2008 SALESFORCE COM, INC System, method and computer program product for applying a public tag to information
9251240, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for portal user data access in a multi-tenant on-demand database system
9252976, May 09 2012 Salesforce.com, Inc. Method and system for social media cooperation protocol
9253224, May 04 2007 Salesforce.com, Inc. Method and system for on-demand communities
9253283, Sep 14 2012 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for ghosting and providing proxies in a network feed
9262393, Aug 31 2010 Salesforce.com, Inc. Method and system for providing simplified form filling in an on-demand service
9262456, May 02 2008 SALESFORCE COM, INC Method and system for managing recent data in a mobile device linked to an on-demand service
9262461, Dec 04 2012 CA, Inc. Aggregating keys of dependent objects for a given primary object
9264391, Nov 01 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for providing near real-time predicted engagement level feedback to a user composing a social media message
9268955, Mar 12 2010 SALESFORCE COM, INC System, method and computer program product for conditionally sharing an object with one or more entities
9268963, Jul 19 2007 Salesforce.com, Inc. On-demand database service system, method and computer program product for conditionally allowing an application of an entity access to data of another entity
9275033, Mar 25 2010 SALESFORCE COM, INC System, method and computer program product for creating an object within a system, utilizing a template
9275094, Nov 12 2009 SALESFORCE, INC Security in enterprise level business information networking
9275105, Sep 23 2003 Salesforce.com, Inc. System and methods of improving a multi-tenant database query using contextual knowledge about non-homogeneously distributed tenant data
9275253, May 08 2008 Salesforce.com, Inc. System, method and computer program product for sharing tenant information utilizing a multi-tenant on-demand database service
9277432, Oct 09 2013 Salesforce.com, Inc. Systems and methods for automated on-device performance testing of mobile applications
9280596, Jul 01 2010 Salesforce.com, Inc. Method and system for scoring articles in an on-demand services environment
9286364, Jan 23 2009 SALESFORCE COM INC Methods and systems for sharing information in a supply chain
9292181, Dec 03 2010 Salesforce.com, Inc. Filtering objects in a multi-tenant environment
9292534, Jun 04 2010 Salesforce.com, Inc. Sharing information between tenants of a multi-tenant database
9292589, Sep 04 2012 Salesforce.com, Inc.; SALESFORCE COM, INC Identifying a topic for text using a database system
9294432, Jul 26 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for communicating feed information to one or more recipients
9298750, Sep 09 2005 Salesforce.com, Inc. System, method and computer program product for validating one or more metadata objects
9298842, Nov 03 2008 Salesforce.com, Inc. System, method and computer program product for publicly providing web content of a subscriber of an on-demand database service
9304614, Oct 20 2010 Salesforce.com, Inc. Framework for custom actions on an information feed
9323804, Oct 04 2006 SALESFORCE COM, INC Method and system for allowing access to developed applications via a multi-tenant on-demand database service
9348576, Oct 03 2006 SALESFORCE, INC Methods and systems for upgrading and installing application packages to an application platform
9348910, Jan 22 2008 Salesforce.com, Inc. System, method and computer program product for creating mobile custom views for tenants of an on-demand database service
9349101, Aug 29 2014 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods for partitioning sets of features for a bayesian classifier
9367626, Jul 23 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for implementing a topical-based highlights filter
9367643, Sep 23 2010 SALESFORCE COM, INC Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
9369468, Oct 18 2011 Salesforce.com, Inc. Generation of a visually obfuscated representation of an alphanumeric message that indicates availability of a proposed identifier
9378227, Sep 09 2005 SALESFORCE, INC Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
9378392, Oct 03 2006 SALESFORCE COM, INC Methods and systems for controlling access to custom objects in a database
9398156, Apr 12 2013 SALESFORCE COM, INC Computer implemented methods and apparatus for managing agent workload in a customer service environment
9400840, Mar 25 2013 Salesforce.com, Inc. Combining topic suggestions from different topic sources to assign to textual data items
9411855, Oct 25 2010 SALESFORCE COM, INC Triggering actions in an information feed system
9418003, Oct 10 2012 Salesforce.com, Inc. System, method and computer program product for conditionally performing garbage collection
9418077, May 03 2012 Salesforce.com, Inc. System and method for geo-location data type searching in an on demand environment
9419863, May 07 2010 Salesforce.com, Inc. Methods and apparatus for interfacing with a phone system in an on-demand service environment
9420104, Aug 18 2015 Salesforce.com, Inc. Systems and methods for an omni-channel routing broker
9424283, Dec 03 2010 Salesforce.com, Inc. Social files
9426249, Aug 05 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Providing an improved web user interface framework for building web applications
9430536, Jan 22 2008 Salesforce.com, Inc. System, method and computer program product for creating a visual component for tenants of an on-demand database service
9430583, Jun 10 2011 SALESFORCE COM, INC Extracting a portion of a document, such as a web page
9430670, Aug 10 1999 SALESFORCE COM, INC Method, system, and computer program product for locating network files
9432320, Jul 30 2012 Salesforce.com, Inc. System and method for providing an information-centric application
9436345, Oct 03 2006 Salesforce.com, Inc. Method and system for customizing a user interface to an on-demand database service
9436837, Jul 19 2007 Salesforce.com, Inc. System, method and computer program product for messaging in an on-demand database service
9436841, Apr 01 2009 Salesforce.com, Inc. Enhanced system security
9442713, Mar 15 2010 Salesforce.com, Inc. System, method and computer program product for deploying an update between environments of a multi-tenant on-demand database system
9443007, Nov 02 2011 SALESFORCE COM, INC Tools and techniques for extracting knowledge from unstructured data retrieved from personal data sources
9443224, Mar 01 2011 Salesforce.com, Inc. Systems, apparatus and methods for selecting updates to associated records to publish on an information feed
9443225, Jul 18 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for presentation of feed items in an information feed to be displayed on a display device
9449102, Sep 12 2008 Salesforce.com, Inc. System, method and computer program product for enabling access to a resource utilizing a token
9450896, Jun 07 2010 SALESFORCE COM, INC Methods and systems for providing customized domain messages
9450946, Oct 01 2004 Salesforce.com, Inc. Secure identity federation for non-federated systems
9456044, Sep 23 2010 Salesforce.com, Inc. Business networking information feed alerts
9460442, Sep 19 2014 Salesforce.com, Inc. Sensor data gathering
9460474, May 03 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Providing access to a private resource in an enterprise social networking system
9462002, Oct 10 2014 Salesforce.com, Inc. System, method, and computer program product for sharing files based on user profile visibility
9465828, Jan 22 2013 SALESFORCE COM, INC Computer implemented methods and apparatus for identifying similar labels using collaborative filtering
9465847, Dec 02 2005 Salesforce.com, Inc. Methods and systems for optimizing text searches over structured data in a multi-tenant environment
9465852, Aug 02 2007 Amazon Technologies, Inc. Data format for processing information
9467405, Mar 26 2001 SALESFORCE, INC Routing messages between applications
9467424, Oct 07 2011 Salesforce.com, Inc. Methods and systems for proxying data
9467434, Jul 15 2013 Salesforce.com, Inc. Document rendering service
9467564, Feb 02 2012 Salesforce.com, Inc. Methods and systems for partially updating a web page using an embedded iFrame
9471619, Jul 01 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for controlling the inclusion of edited information in an information feed
9471648, Mar 01 2010 Salesforce.com, Inc. System, method and computer program product for displaying one or more data sets to a user
9471666, Nov 02 2011 SALESFORCE COM, INC System and method for supporting natural language queries and requests against a user's personal data cloud
9473443, May 07 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Methods and systems for sharing email in a multitenant database system
9473536, Oct 14 2003 Salesforce.com, Inc. Method, system, and computer program product for facilitating communication in an interoperability network
9477369, Mar 08 2010 Salesforce.com, Inc. System, method and computer program product for displaying a record as part of a selected grouping of data
9477449, Aug 13 2013 Salesforce.com, Inc. Responsive self-service website template
9477768, Sep 18 2012 Salesforce.com, Inc. Disambiguation of online social mentions
9479387, Jun 22 2012 Salesforce.com, Inc. Methods and systems for priority-based notifications for mobile devices
9483526, Mar 21 2013 Salesforce.com, Inc. Automatically subscribing users of an enterprise network to a record
9489415, Sep 27 2012 SALESFORCE, INC System and method for updating infographics based on multiple online social networks
9491126, Mar 26 2001 SALESFORCE, INC Routing messages between applications
9491180, Nov 03 2008 Salesforce.com, Inc. System, method and computer program product for publicly providing web content using a multi-tenant system
9495079, Jan 10 2013 Salesforce.com, Inc. Persistent feeder component for displaying feed items received from information feeds of online social networks
9495342, Sep 05 2012 Salesforce.com, Inc.; SALESFORCE COM, INC System and method for automatically inserting correct escaping functions for field references in a multi-tenant computing environment
9495430, Sep 06 2012 SALESFORCE, INC Systems and methods for batch processing of data records in an on-demand system
9495557, Sep 18 2012 SALESFORCE COM, INC Methods and systems for managing access to data in an on-demand system
9501453, Dec 23 2007 salesforce.com inc. Method and system for a flexible-data column user interface
9501514, Feb 25 2010 Salesforce.com, Inc. Systems and methods for implementing customized drop-down menus
9503535, Mar 06 2012 Salesforce.com, Inc. Computer implemented methods and apparatus for automatically following entities in an online social network
9507872, Aug 12 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Accessing multi-page data using a page index in a scrollbar
9507957, May 20 2010 Salesforce.com, Inc.; SALESFORCE COM, INC Providing features in a database system environment
9509715, Aug 21 2014 Salesforce.com, Inc.; SALESFORCE COM, INC Phishing and threat detection and prevention
9519630, Jun 30 2014 Salesforce.com, Inc.; SALESFORCE COM, INC Fast CSS parser engineered for runtime use
9519711, Oct 30 2009 SALESFORCE COM, INC Integrating and managing social networking information in an on-demand database system
9524157, Aug 06 2013 SALESFORCE COM, INC Providing an improved web user interface framework for building web applications
9529488, Mar 15 2013 SALESFORCE COM, INC Systems and methods for creating custom actions
9529652, Nov 07 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Triaging computing systems
9530015, Jul 19 2007 Salesforce.com, Inc. System, method and computer program product for messaging in an on-demand database service
9538377, Aug 22 2014 Salesforce.com, Inc. Switching between restricted-access websites on mobile user devices
9542372, Mar 08 2010 Salesforce.com, Inc. System, method and computer program product for performing one or more actions utilizing a uniform resource locator
9542472, Apr 19 2013 Salesforce.com, Inc. Facilitating collaboration on a record among a group of users of a feed-based enterprise network
9542711, Oct 07 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for providing selective notifications in an online social network
9542864, Jul 11 2011 Salesforce.com, Inc. Methods and apparatus for digital steganography
9544307, Oct 29 2014 Salesforce.com, Inc.; SALESFORCE COM, INC Providing a security mechanism on a mobile device
9553783, Sep 14 2012 Salesforce.com, Inc. Spam flood detection methodologies
9558218, Jul 01 2011 Salesforce.com, Inc. Truncating data associated with objects in a multi-tenant database
9558277, Apr 04 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for identifying topical influence in an online social network
9563712, Jul 14 2011 SALESFORCE, INC Computer implemented methods and apparatus for providing internal custom feed items
9565182, Nov 15 2007 SALESFORCE COM, INC Managing access to an on-demand service
9569060, Jul 25 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for composing and batch publishing feed items in a feed-based interaction context
9569478, Oct 08 2010 Salesforce.com, Inc. Following data records in an information feed
9575871, Sep 04 2012 Salesforce.com, Inc. System and method for dynamically debugging data in a multi-tenant database environment
9577835, Feb 07 2014 SALESFORCE, INC Online chats without displaying confidential information
9588828, Mar 26 2001 Salesforce.com, Inc. System and method for routing messages between applications
9588982, Sep 12 2008 Salesforce.com, Inc. Method and system for sharing documents between on-demand services
9589070, Oct 10 2011 SALESFORCE COM, INC Method and system for updating a filter logic expression representing a boolean filter
9589306, Oct 08 2010 Salesforce.com, Inc. Structured data in a business networking feed
9590943, Oct 25 2013 Salesforce.com, Inc. Offline prompts of online social network mentions
9591090, Aug 22 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for sharing data of an information feed of an online social network
9594790, Mar 21 2013 SALESFORCE, INC System and method for evaluating claims to update a record from conflicting data sources
9600155, Jul 15 2013 Salesforce.com, Inc. Computer implemented methods and apparatus for customizing a data interface in an on-demand service environment
9600510, Aug 25 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for feed-based case management
9600512, Feb 25 2010 Salesforce.com, Inc. Systems and methods for implementing customized drop-down menus
9600575, Jan 22 2008 Salesforce.com, Inc. System, method and computer program product for creating mobile custom views for tenants of an on-demand database service
9602597, Apr 11 2012 Salesforce.com, Inc. System and method for synchronizing data objects in a cloud based social networking environment
9607034, Feb 24 2010 Salesforce.com, Inc. System, method and computer program product for monitoring data activity utilizing a shared data store
9607090, Jan 21 2013 SALESFORCE COM, INC Computer implemented methods and apparatus for recommending events
9613152, Oct 15 2010 Salesforce.com, Inc. Methods and apparatus for discontinuing the following of records in an on-demand database service environment
9619524, Aug 25 2011 SALESFORCE COM, INC Personalizing scoping and ordering of object types for search
9619530, Mar 01 2010 Salesforce.com, Inc. System, method and computer program product for displaying one or more data sets to a user
9619652, Mar 31 2010 Salesforce.com, Inc. System, method and computer program product for determining a risk score for an entity
9619655, Sep 12 2014 Salesforce.com, Inc. Cloud-based security profiling, threat analysis and intelligence
9621488, Oct 02 2006 Salesforce.com, Inc. Method and system for selecting amongst a plurality of processes to send a message
9626523, Mar 08 2012 SALESFORCE COM, INC Systems and methods of audit trailing of data incorporation
9626637, Sep 18 2012 SALESFORCE COM, INC Method and system for managing business deals
9628493, Jul 03 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for managing permission sets and validating user assignments
9632849, Sep 15 2015 Salesforce.com, Inc. System having in-memory buffer service, temporary events file storage system and events file uploader service
9632852, Aug 25 2014 SALESFORCE COM, INC Detecting and managing flooding of multi-tenant message queues
9633101, Apr 01 2010 Salesforce.com, Inc. System, method and computer program product for portal user data access in a multi-tenant on-demand database system
9634977, Oct 01 2012 Salesforce.com, Inc. Systems and methods of redactive messaging
9641349, Apr 22 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods of viral enablement of features by peer-to-peer connection
9641685, Aug 18 2015 Salesforce.com, Inc. Systems and methods for an omni-channel routing broker
9645712, Oct 01 2004 SALESFORCE COM, INC Multiple stakeholders for a single business process
9646064, Dec 10 2014 Salesforce.com, Inc. Template based software container
9646068, Jun 07 2010 Salesforce.com, Inc. System, method and computer program product for performing a synchronization of data
9647922, May 15 2013 SALESFORCE COM, INC Computer implemented methods and apparatus for trials onboarding
9658801, Sep 25 2015 Salesforce.com, Inc. System having in-memory buffer service, temporary events file storage system and backup events file uploader service
9659049, Jun 24 2011 Salesforce.com, Inc. Creating and managing granular relationships on an online social network
9665261, Oct 28 2013 Salesforce.com, Inc. Providing a user interface for customizing state transitions of panes in a bounding window
9672575, Apr 03 2013 Salesforce.com, Inc. Capturing information regarding an interaction to a database
9680836, Oct 18 2011 Salesforce.com, Inc. Generation of a visually obfuscated representation of an alphanumeric message that indicates availability of a proposed identifier
9686348, Oct 28 2013 SALESFORCE COM, INC Inter-entity connection maps
9691041, May 03 2013 Salesforce.com, Inc. Providing access to a private resource in an enterprise social networking system
9692722, Jul 22 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for integrating a social network information feed with a network communications application
9692851, Sep 14 2012 Salesforce.com, Inc. Systems and methods for ghosting and providing proxies in a network feed
9697287, Sep 14 2012 Salesforce.com, Inc. Detection and handling of aggregated online content using decision criteria to compare similar or identical content items
9697377, Jul 19 2007 Salesforce.com, Inc. On-demand database service system, method and computer program product for conditionally allowing an application of an entity access to data of another entity
9703799, Jun 04 2010 Salesforce.com, Inc. Sharing information between tenants of a multi-tenant database
9703815, Dec 17 2012 Salesforce.com, Inc. Third party files in an on-demand database service
9703826, Sep 12 2008 Salesforce.com, Inc. Method and system for providing in-line scheduling in an on-demand service
9710127, Oct 09 2014 Salesforce.com, Inc. User-customizable permissions in a computing environment
9713004, Aug 22 2014 Salesforce.com, Inc. Switching between restricted-access websites on mobile user devices
9715555, Feb 26 2010 Salesforce.com, Inc. System, method and computer program product for user registration with a multi-tenant on-demand database system
9715879, Jul 02 2012 Salesforce.com, Inc. Computer implemented methods and apparatus for selectively interacting with a server to build a local database for speech recognition at a device
9716730, Oct 10 2014 Salesforce.com, Inc. System, method and computer program product for sharing content via links
9720990, Jun 13 2002 Salesforce.com, Inc. Method, system, and computer program product for simulating an online session
9727924, Oct 10 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for informing a user of social network data when the data is relevant to the user
9733920, Mar 19 2010 SALESFORCE, INC System, method and computer program product for associating a plurality of stored elements with a creation of a patch
9736107, Mar 25 2013 Salesforce.com, Inc. Systems and methods of online social environment based translation of entity mentions
9736168, Jan 22 2008 Salesforce.com, Inc. System, method, and computer program product for security verification of communications to tenants of an on-demand database service
9740374, Mar 08 2005 SALESFORCE COM, INC Systems and methods for implementing multi-application tabs and tab sets
9740466, Sep 09 2005 Salesforce.com, Inc. Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
9740871, Mar 01 2012 Salesforce.com, Inc. System and method for initializing tokens in a dictionary encryption scheme
9742708, May 04 2007 Salesforce.com, Inc. Method and system for on-demand communities
9747006, Mar 08 2005 SALESFORCE COM, INC Systems and methods for implementing multi-application tabs and tab sets
9747388, Aug 31 2012 Salesforce.com, Inc. Systems and methods for providing access to external content objects
9749267, Feb 14 2012 Salesforce.com, Inc. Intelligent automated messaging for computer-implemented devices
9753703, Feb 04 2014 Salesforce.com, Inc. Generating identifiers for user interface elements of a web page of a web application
9753706, May 27 2010 Salesforce.com, Inc. Adding directives for versions of source files directly into source code
9753926, Apr 30 2012 SALESFORCE COM, INC Extracting a portion of a document, such as a web page
9755916, Mar 15 2010 Salesforce.com, Inc. System, method and computer program product for serving an application from a custom subdomain
9756039, Jul 15 2013 Salesforce.com, Inc. Document rendering service
9756110, Oct 10 2014 Salesforce.com, Inc. Systems and methods for optimizing web page load time
9760844, Oct 04 2006 SALESFORCE COM, INC Forecasting method, system and machine readable storage medium for the selection between asynchronous or synchronous forecasting based on event criteria
9766965, Nov 25 2015 Salesforce.com, Inc.; SALESFORCE COM, INC System and method for monitoring and detecting faulty storage devices
9767022, Sep 16 2014 SALESFORCE COM, INC In-memory buffer service
9767040, Aug 31 2015 SALESFORCE, INC System and method for generating and storing real-time analytics metric data using an in memory buffer service consumer framework
9767136, Mar 31 2010 Salesforce.com, Inc. System, method and computer program product for maintaining data stored in a data structure
9769180, Aug 22 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for sharing data of an information feed of an online social network
9773050, Jun 19 2015 Salesforce.com, Inc.; SALESFORCE COM, INC User interface for aggregated task data
9774555, Sep 14 2012 SALESFORCE COM, INC Computer implemented methods and apparatus for managing objectives in an organization in a social network environment
9774558, May 09 2012 Salesforce.com, Inc. Method and system for inter-social network communications
9774603, Aug 22 2014 Salesforce.com, Inc. Managing user permissions in relation to system events occurring in a database system
9778820, Jan 18 2013 SALESFORCE COM, INC Managing applications on a computing device
9781049, May 07 2010 SALESFORCE COM, INC Resolving information in a database environment
9785560, Apr 19 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Scene-isolated internet application
9785640, Oct 12 2011 Salesforce.com, Inc. Augmented reality display apparatus and related methods using database record data
9785782, Apr 01 2010 SALESFORCE COM, INC Monitoring system and shared access permissions for a plurality of users
9787714, Aug 21 2014 Salesforce.com, Inc. Phishing and threat detection and prevention
9791993, May 08 2008 salesforce.com, inc System, method and computer program product for creating a re-usable component utilizing a multi-tenant on-demand database service
9792002, Oct 01 2004 Salesforce.com, Inc. Multiple stakeholders for a single business process
9792008, Dec 16 2014 Salesforce.com, Inc.; SALESFORCE COM, INC User interface with analytics overlay
9792356, Nov 02 2011 Salesforce.com, Inc. System and method for supporting natural language queries and requests against a user's personal data cloud
9792456, Jul 03 2012 Salesforce.com, Inc. Methods and systems for regulating user engagement
9794250, Nov 15 2007 SALESFORCE COM, INC On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
9798764, Dec 20 2013 Salesforce.com, Inc. Identifying recurring sequences of user interactions with an application
9798784, Aug 22 2008 SALESFORCE COM, INC System, method and computer program product for defining custom junction objects in an on-demand database service
9798813, Jul 31 2013 Salesforce.com, Inc. Extensible person container
9800586, Oct 01 2004 Salesforce.com, Inc. Secure identity federation for non-federated systems
9805051, Sep 10 2014 Salesforce.com, Inc. Synchronization and strategic storage of multiple versions of a file
9805427, Jan 29 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods of data mining to customize software trial demonstrations
9807187, Sep 23 2010 Salesforce.com, Inc. Business networking information feed alerts
9811444, Aug 04 2015 SALESFORCE, INC Testing software enhancements in database applications
9811597, Apr 04 2012 Salesforce.com, Inc. Computer implemented methods and apparatus for identifying topical influence in an online social network
9813425, Apr 03 2013 Salesforce.com, Inc. System, method and computer program product for managing access to systems, products, and data based on information associated with a physical location of a user
9817637, Jul 01 2010 SALESFORCE COM, INC Methods and systems for providing enhancements to a business networking feed
9819568, Sep 14 2012 Salesforce.com, Inc. Spam flood detection methodologies
9823813, Mar 15 2013 SALESFORCE COM, INC Apparatus and methods for performing an action on a database record
9824082, Oct 08 2010 Salesforce.com, Inc. Structured data in a business networking feed
9824102, Sep 12 2008 SALESFORCE COM, INC System, method and computer program product for providing a team object in association with an object
9825965, Nov 03 2008 Salesforce.com, Inc. System, method and computer program product for publicly providing web content using a multi-tenant system
9830050, Nov 23 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for providing a reminder regarding a feed item of a feed of an online social network
9830054, Mar 12 2010 Salesforce.com, Inc. Service cloud console
9830340, Sep 23 2010 Salesforce.com, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
9830385, Sep 04 2012 Salesforce.com, Inc. Methods and apparatus for partitioning data
9832156, Mar 23 2012 SALESFORCE COM, INC Social networking system communities and associated user privileges implemented using a database system
9832273, Oct 13 2011 Salesforce.com, Inc. Computer implemented methods and apparatus for providing group-related social network information
9842000, Sep 18 2015 Salesforce.com, Inc. Managing processing of long tail task sequences in a stream processing framework
9846635, Mar 18 2016 Salesforce.com, Inc.; SALESFORCE COM, INC Making production data available for testing in a non-production environment
9852229, Mar 12 2010 Salesforce.com, Inc. System, method and computer program product for navigating content on a single page
9854039, Oct 02 2006 Salesforce.com, Inc. Method and system for synchronizing a server and an on-demand database service
9854040, Apr 11 2012 Salesforce.com, Inc. System and method for synchronizing data objects in a cloud based social networking environment
9858252, May 20 2010 SALESFORCE, INC Multiple graphical annotations of documents using overlays
9858274, Jul 20 2007 Salesforce.com, Inc. Application update system, method and computer program product
9864770, Nov 12 2009 SALESFORCE, INC Customizing enterprise level business information networking
9865313, Aug 22 2014 Salesforce.com, Inc. System and method for dynamic caching
9866537, Aug 02 2013 SALESFORCE COM, INC Systems and methods for long universal resource locator compression
9870218, Oct 03 2006 SALESFORCE, INC Methods and systems for upgrading and installing application packages to an application platform
9886360, Nov 05 2010 SALESFORCE, INC Server clustering in a computing-on-demand system
9886695, Jul 27 2012 SALESFORCE COM, INC Sales force automation system and method for real-time traveling salesperson location tracking and account visit selection
9892170, Jan 21 2013 SALESFORCE, INC Computer implemented methods and apparatus for recommending events
9892177, Jul 11 2013 Salesforce.com, Inc. Systems and methods for interacting with external content objects
9893905, Nov 13 2013 SALESFORCE COM, INC Collaborative platform for teams with messaging and learning across groups
9898519, Sep 14 2012 SALESFORCE COM, INC Systems and methods of enriching CRM data with social data
9900237, Sep 14 2012 Salesforce.com, Inc. Spam flood detection methodologies
9900290, Oct 07 2011 SALESFORCE COM, INC Methods and systems for proxying data
9900297, Jan 25 2007 SALESFORCE, INC System, method and apparatus for selecting content from web sources and posting content to web logs
9900339, Sep 12 2014 Salesforce.com, Inc. Cloud-based security profiling, threat analysis and intelligence
9905034, Sep 14 2015 SALESFORCE COM, INC Secure isolation of scripting from native graphic rendering of animated data visualizations
9910911, Jul 23 2012 salesforce.com Computer implemented methods and apparatus for implementing a topical-based highlights filter
9910924, Sep 18 2012 Salesforce.com, Inc. Disambiguation of online social mentions
9916429, Oct 03 2006 Salesforce.com, Inc. System, method and computer program product for evaluating metadata before executing a software application
9916592, May 18 2012 Oracle International Corporation Method and system for implementing implicit follow and automatic unfollow
9921720, Apr 26 2010 Salesforce.com, Inc. Tab navigation and page view personalization
9921724, Aug 15 2013 Salesforce.com, Inc.; SALESFORCE COM, INC Presenting data on a mobile device in communication with an on-demand database system
9930056, Apr 22 2013 Salesforce.com, Inc. Systems and methods of viral enablement of features by peer-to-peer connection
9940411, Apr 17 2015 Salesforce.com, Inc. Systems and methods of bypassing suppression of event bubbling for popup controls
9946593, Sep 18 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Recovery strategy for a stream processing system
9948644, Mar 26 2001 SALESFORCE, INC Routing messages between applications
9948721, Mar 26 2010 Salesforce.com, Inc. Methods and systems for providing time and date specific software user interfaces
9948743, Jul 28 2015 Salesforce.com, Inc. Managing memory usage in server systems
9953273, Jun 28 2011 Salesforce.com, Inc. Systems and methods for creating a rich social media profile
9953301, Apr 03 2013 SALESFORCE, INC Searchable screen sharing sessions
9961519, Aug 01 2017 Salesforce.com, Inc. Facilitating mobile device interaction with an enterprise database system
9965330, Sep 18 2015 Salesforce.com, Inc. Maintaining throughput of a stream processing framework while increasing processing load
9965524, Apr 03 2013 Salesforce.com, Inc. Systems and methods for identifying anomalous data in large structured data sets and querying the data sets
9965541, Feb 24 2015 Salesforce.com, Inc. Interest groups based on network feed items
9965634, Jan 15 2016 SALESFORCE, INC Space-efficient storage of encrypted data
9971482, Mar 12 2010 Salesforce.com, Inc. Service cloud console
9972015, Sep 13 2013 Salesforce.com, Inc. Methods and systems for facilitating customer support using a social post case feed and publisher
9973550, Sep 11 2013 SALESFORCE COM, INC Systems and methods for applying intelligence and prioritization to calendared events
9977788, Sep 14 2012 Salesforce.com, Inc. Methods and systems for managing files in an on-demand system
9979687, Oct 25 2013 Salesforce.com, Inc. Offline prompts of online social network mentions
9979689, Jun 29 2015 SALESFORCE, INC Authoring tool for creating new electronic posts
9980112, Nov 23 2016 Salesforce.com, Inc. System and method for coordinating an emergency response at a facility
9983943, Mar 27 2014 Salesforce.com, Inc. Reversing object manipulations in association with a walkthrough for an application or online service
9984126, Jul 23 2012 SALESFORCE COM, INC Identifying relevant feed items to display in a feed of an enterprise social networking system
9984166, Oct 10 2014 Salesforce.com, Inc. Systems and methods of de-duplicating similar news feed items
9984394, Sep 19 2014 Salesforce.com, Inc. Sensor data gathering
9984425, Oct 08 2010 Salesforce.com, Inc. Following data records in an information feed
9990185, Aug 13 2013 Salesforce.com, Inc. Responsive self-service website template
9990223, Aug 10 2015 Salesforce.com, Inc.; SALESFORCE COM, INC Systems and methods of improving parallel functional processing
9990426, Aug 31 2012 Salesforce.com, Inc. Systems and methods for content management in an on-demand environment
9992144, May 18 2012 Salesforce.com, Inc. Re-routing incoming email for a multi-tenant database system
Patent Priority Assignee Title
5291583, Dec 14 1990 RACAL-DATACOM, INC Automatic storage of persistent ASN.1 objects in a relational schema
5297279, May 30 1990 Texas Instruments Incorporated; TEXAS INSTRUMENTS INCORPORATED, A CORP OF DE System and method for database management supporting object-oriented programming
5426780, Feb 28 1992 Intergraph Software Technologies Company System for dynamic segmentation analysis using conversion of relational data into object-oriented data
5437027, May 30 1990 Texas Instruments Incorporated System and method for database management supporting object-oriented programming
5615367, May 25 1993 Borland Software Corporation System and methods including automatic linking of tables for improved relational database modeling with interface
5729739, Apr 26 1994 International Business Machines Corporation Persistent object mapping system and method with abstract schema mapper
5966707, Dec 02 1997 GOOGLE LLC Method for managing a plurality of data processes residing in heterogeneous data repositories
6061515, Jul 18 1994 International Business Machines Corporation System and method for providing a high level language for mapping and accessing objects in data stores
6101502, Sep 26 1997 DATATERN, INC Object model mapping and runtime engine for employing relational database with object oriented software
6134559, Apr 27 1998 Oracle International Corporation Uniform object model having methods and additional features for integrating objects defined by different foreign object type systems into a single type system
6163776, Mar 23 1998 Software Tree, Inc. System and method for exchanging data and commands between an object oriented system and relational system
6169993, Mar 19 1997 Microsoft Technology Licensing, LLC Method, data structure, and computer program product for object state storage
6269373, Feb 26 1999 International Business Machines Corporation Method and system for persisting beans as container-managed fields
6330006, May 12 1998 Apple Inc Method and apparatus for synchronizing an application's interface and data
6418451, Jun 29 1999 Unisys Corporation Method, apparatus, and computer program product for persisting objects in a relational database
6505211, Jan 26 1999 International Business Machines Corporation Method for providing for persistence of java classes where the persistence semantics may be orthogonal to the class definition
6505228, Jul 22 1998 Cisco Technology, Inc Dynamic determination of execution sequence
6631519, Mar 30 2000 Microsoft Technology Licensing, LLC Automated schema and interface generation
6754670, Dec 17 1999 Oracle America, Inc Mapping relational tables to object oriented classes
6999956, Nov 16 2000 THOUGHT, INC Dynamic object-driven database manipulation and mapping system
7020641, Oct 22 2001 Oracle America, Inc Method, system, and program for maintaining a database of data objects
7058939, Apr 05 2001 International Business Machines Corporation Automatic link maintenance to ensure referential integrity constraints
7080084, Aug 30 2002 Hitachi, Ltd. Method for changing database construction information
7136872, Apr 16 2002 LinkedIn Corporation Method, system, and article of manufacture for transferring structured data between different data stores
7177878, Apr 13 2004 International Business Machines Corporation Simple persistence mechanism for server based web applications
20020120603,
20030030672,
20030055826,
20030163460,
20030208505,
////
Executed onAssignorAssigneeConveyanceFrameReelDoc
Apr 30 2004DILLON, DAVID M Dillon Software Services, LLCASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0152910762 pdf
Oct 21 2013Dillon Software Services, LLCRPX CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0314600468 pdf
Jun 19 2018RPX CorporationJEFFERIES FINANCE LLCSECURITY INTEREST SEE DOCUMENT FOR DETAILS 0464860433 pdf
Oct 23 2020JEFFERIES FINANCE LLCRPX CorporationRELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS 0544860422 pdf
Date Maintenance Fee Events
Feb 02 2012M1551: Payment of Maintenance Fee, 4th Year, Large Entity.
Feb 07 2012ASPN: Payor Number Assigned.
Feb 07 2012RMPN: Payer Number De-assigned.
Feb 07 2012STOL: Pat Hldr no Longer Claims Small Ent Stat
Feb 12 2016M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Mar 30 2020REM: Maintenance Fee Reminder Mailed.
Sep 14 2020EXP: Patent Expired for Failure to Pay Maintenance Fees.


Date Maintenance Schedule
Aug 12 20114 years fee payment window open
Feb 12 20126 months grace period start (w surcharge)
Aug 12 2012patent expiry (for year 4)
Aug 12 20142 years to revive unintentionally abandoned end. (for year 4)
Aug 12 20158 years fee payment window open
Feb 12 20166 months grace period start (w surcharge)
Aug 12 2016patent expiry (for year 8)
Aug 12 20182 years to revive unintentionally abandoned end. (for year 8)
Aug 12 201912 years fee payment window open
Feb 12 20206 months grace period start (w surcharge)
Aug 12 2020patent expiry (for year 12)
Aug 12 20222 years to revive unintentionally abandoned end. (for year 12)