Source: https://patents.google.com/patent/US9171034B2/en
Timestamp: 2018-05-26 07:00:39
Document Index: 180018397

Matched Legal Cases: ['Application No. 07838797', 'Application No. 07838797', 'application No. 07', 'Application No. 07838797', 'Application No. 12169103', 'Application No. 2009', 'Application No. 2009', 'Application No. 2009', 'Application No. 07838797']

US9171034B2 - Method and system for allowing access to developed applications via a multi-tenant on-demand database service - Google Patents
US9171034B2
US9171034B2 US12763078 US76307810A US9171034B2 US 9171034 B2 US9171034 B2 US 9171034B2 US 12763078 US12763078 US 12763078 US 76307810 A US76307810 A US 76307810A US 9171034 B2 US9171034 B2 US 9171034B2
US12763078
US20100205595A1 (en )
This application is a continuation of U.S. patent application Ser. No. 11/859,498 entitled “METHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICE,” by Craig Weissman, filed Sep. 21, 2007 now U.S. Pat. No. 7,730,478, which, in turn, claims the benefit of U.S. Provisional Patent Application 60/828,757 entitled “PROGRAMMING LANGUAGE METHOD AND SYSTEM FOR EXTENDING APIS TO EXECUTE IN CONJUNCTION WITH AN ON-DEMAND DATABASE SERVICE,” by Craig Weissman, filed Oct. 9, 2006, the entire contents of which are incorporated herein by reference. U.S. patent application Ser. No. 11/859,498 further claims the benefit of U.S. Provisional Patent Application 60/828,192 entitled “PROGRAMMING LANGUAGE METHOD AND SYSTEM FOR EXTENDING APIS TO EXECUTE IN CONJUNCTION WITH AN ON-DEMAND DATABASE SERVICE,” by Craig Weissman, filed Oct. 4, 2006, the entire contents of which are incorporated herein by reference.
In some embodiments, the programming language instruction may include a format, syntax, etc. that is tailored for use with a database system. In one specific embodiment, a procedural language salesforce object query language (PL/SOQL) programming language instruction may be employed. In the present embodiment, the PL/SOQL is capable of serving as a procedural extension to an on-demand database centric service API that allows flow control and transaction control to execute on a server in conjunction with database APIs [e.g. SOQL, data manipulation language (DML), etc.]. The PL/SOQL can enable the capability to thread together multiple SOQL/DML statements as a single unit of work on the server. The PL/SOQL need not necessarily be considered a general purpose programming language, as it is heavily data focused, in some embodiments. It may, in one optional embodiment, be used by developers to interface with an on-demand database system, in contrast to traditional application developers' conventional tools, such as PL/SQL by Oracle®, Inc. of Redwood Shores, Calif. and others.
FIG. 7 also illustrates environment 610. However, in FIG. 7 elements of system 616 and various interconnections in an embodiment are further illustrated. FIG. 7 shows that user system 612 may include processor system 612A, memory system 612B, input system 6120, and output system 612D. FIG. 7 shows network 614 and system 616. FIG. 7 also shows that system 616 may include tenant data storage 622, tenant data 623, system data storage 624, system data 625, User Interface (UI) 730, Application Program Interface (API) 732, PL/SOQL 734, save routines 736, application setup mechanism 738, applications servers 700 1-700 N, system process space 702, tenant process spaces 704, tenant management process space 710, tenant storage area 712, user storage 714, and application metadata 716. In other embodiments, environment 610 may not have the same elements as those listed above and/or may have other elements instead of, or in addition to, those listed above.
User system 612, network 614, system 616, tenant data storage 622, and system data storage 624 were discussed above in FIG. 6. Regarding user system 612, processor system 612A may be any combination of one or more processors. Memory system 6121 may be any combination of one or more memory devices, short term, and/or long term memory, Input system 612C may be any combination of input devices, such as one or more keyboards, mice, trackballs, scanners, cameras, and/or interfaces to networks. Output system 612D may be any combination of output devices, such as one or more monitors, printers, and/or interfaces to networks. As shown by FIG. 7, system 616 may include a network interface 620 (of FIG. 6) implemented as a set of HTTP application servers 700, an application platform 618, tenant data storage 622, and system data storage 624. Also shown is system process space 702, including individual tenant process spaces 704 and a tenant management process space 710, Each application server 700 may be configured to tenant data storage 622 and the tenant data 623 therein, and system data storage 624 and the system data 625 therein to serve requests of user systems 612, The tenant data 623 might be divided into individual tenant storage areas 712, which can be either a physical arrangement and/or a logical arrangement of data. Within each tenant storage area 712, user storage 714 and application metadata 716 might be similarly allocated for each user. For example, a copy of a user's most recently used (MRU) items might be stored to user storage 714. Similarly, a copy of MRU items for an entire organization that is a tenant might be stored to tenant storage area 712. A UI 730 provides a user interface and an API 732 provides an application programmer interface to system 616 resident processes to users and/or developers at user systems 612. The tenant data and the system data may be stored in various databases, such as one or more Oracle™ databases.
receiving developed applications at a system, wherein at least one of the developed applications is an application developed using another system separate from the system receiving the developed applications;
providing access to the developed applications by the system to users of the system;
limiting by the system a plurality of aspects of the developed applications, the plurality of aspects including:
a number of modification statements to a database made utilizing the developed applications; and
disallowing publication of one or more of the developed applications to the system in response to a determination that the one or more developed applications violate one or more predetermined policies.
2. The method of claim 1, wherein the system limits one or more additional aspects of the developed applications, including at least one of a number of columns of a database, a number of queries to the database, a number of rows returned by queries, a number of database statements, a number of script statements between database statements, a total number of uncommitted rows since a last transaction control statement, and a total number of script statements since a last database call.
3. The method of claim 1, wherein access to the developed applications by the users of the system is controlled.
4. The method of claim 3, wherein a single instance of each developed application is instantiated among a plurality of the users of the system.
5. The method of claim 1, and further comprising compiling the developed applications.
6. The method of claim 5, wherein the compiled applications are capable of being processed by a run-time interpreter of the system.
7. The method of claim 1, wherein the resources include storage.
8. The method of claim 1, wherein the resources include bandwidth.
9. The method of claim 1, wherein the system imposes a requirement of the system that the developed applications be tested.
10. The method of claim 9, wherein the developed applications are automatically tested by the system.
11. The method of claim 9, wherein testing the developed applications includes validating the developed applications.
12. The method of claim 1, wherein the developed applications include program language instructions.
13. The method of claim 1, wherein the system limits web service calls made per request by the developed applications.
14. The method of claim 1, wherein the system applies at least one limit on the developed applications on a per-time-period basis.
15. The method of claim 1, wherein the developed applications include at least one programming language instruction for which a set of instructions are used to perform a set of multi-object manipulations at the system responsive to a single transaction.
16. The method of claim 1, wherein the system limits a duration of processing.
17. A non-transitory machine-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, is configured to cause the one or more processors to carry out the steps of:
one or more stored sequences of instructions which, when executed by the at least one processor, cause the at least one processor to carry out the steps of:
US12763078 2006-10-04 2010-04-19 Method and system for allowing access to developed applications via a multi-tenant on-demand database service Active 2029-07-20 US9171034B2 (en)
US11859498 Continuation US7730478B2 (en) 2006-10-04 2007-09-21 Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US13865896 Continuation US9323804B2 (en) 2006-10-04 2013-04-18 Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US20100205595A1 true US20100205595A1 (en) 2010-08-12
US9171034B2 true US9171034B2 (en) 2015-10-27
US20040088602A1 (en) 2002-11-05 2004-05-06 Cohen Richard M. Automated recording and replaying of software regression tests
US20050132329A1 (en) 2002-03-27 2005-06-16 Hendra Suwanda Method and system for establishing a hierarchically structured web site for e-commerce
US20070130106A1 (en) 2005-12-01 2007-06-07 Solix, Inc. System and method for protecting data in a database
US20130238655A1 (en) 2006-10-04 2013-09-12 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
Advisory Action from U.S. Appl. No. 13/865,896, dated Jan. 29, 2015.
Decision to Refuse from European Patent Application No. 07838797.4, dated Jul. 16, 2013.
European Communication from EP Application No. 07838797.4 mailed May 31, 2010.
European Office Action from application No. 07 838 797.4 dated May 12, 2011.
Examination Report from European Patent Application No. 07838797.4, dated Apr. 3, 2012.
Extended European Search Report from European Patent Application No. 12169103.4, dated Oct. 24, 2012.
Final Office Action from U.S. Appl. No. 12/167,918, dated Aug. 6, 2013.
Final Office Action from U.S. Appl. No. 13/865,896, dated Nov. 12, 2014.
Final Office Action from U.S. Appl. No. 13/865,896, dated Sep. 1, 2015.
Final Rejection from Japanese Patent Application No. 2009-531390, dated Jun. 4, 2013.
International Search Report and Written Opinion from International Application No. PCT/US07/20664, dated Sep. 24, 2008.
Non-Final Office Action from U.S. Appl. No. 12/167,913 dated Apr. 22, 2011.
Non-Final Office Action from U.S. Appl. No. 13/865,896, dated Apr. 25, 2014.
Non-Final Office Action from U.S. Appl. No. 13/865,896, dated Mar. 25, 2015.
Notice of Allowance from U.S. Appl. No. 12/167,918, dated Jun. 11, 2015.
Office Action from Japanese Application No. 2009-531390, dated Oct. 29, 2013.
Office Action from Japanese Patent Application No. 2009-531390, dated Jul. 24, 2012.
Summons to Attend Oral Proceedings from European Patent Application No. 07838797.4, dated Feb. 27, 2013.
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WEISSMAN, CRAIG;REEL/FRAME:024261/0082