IP Library › Granted Patent US 8,510,729
Granted Patent B2
US 8,510,729 · App. 12/784,668 · Granted Aug 13, 2013

System, method and computer program product for versioning and deprecation of components of an application

Inventors: Craig Weissman (San Francisco, CA); Andrew Smith (San Francisco, CA)
Assignee: salesforce.com, inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,510,729
App. No.
12/784,668
Granted
Aug 13, 2013
Kind
B2
Abstract

In accordance with embodiments, there are provided mechanisms and methods for versioning components of an application. These mechanisms and methods for versioning components of an application can ensure that an updated application maintains backwards compatibility, such that the application developer may maintain a single application while supporting multiple prior versions of the application.

Claims (38)

1. A computer program product embodied on a non-transitory computer readable medium, comprising:

computer code for storing a first application having at least one feature, wherein multiple versions of the feature exist in the first application and wherein the versions are each accessed in the first application by a different set of one or more components;

computer code for receiving a request from a second application to access the feature of the first application;

computer code for, in response to the request from the second application, identifying one of the versions of the feature in the first application by:

selecting at least one of a plurality of predetermined rules for use in determining at least one of the sets of components in the first application allowed to be accessed by the second application, wherein the predetermined rules are specific to, and selected based on, at least one of: a type of code of the second application requesting the access to the feature of the first application, a type of the feature of the first application requested to be accessed by the second application, and an accessibility of the first application to one or more users, and

determining at least one of the sets of components in the first application allowed to be accessed by the second application by applying the selected predetermined rules to a version associated with the second application;

computer code for providing, to the second application, access to the determined at least one of the sets of components in the first application.

2. The computer program product of claim 1 , wherein the first application includes computer code that is at least one of developed and maintained utilizing a multi-tenant on-demand database service.

3. The computer program product of claim 1 , wherein the second application includes one of an application program interface of a multi-tenant on-demand database service and user interface of the multi-tenant on-demand database service.

4. The computer program product of claim 1 , wherein the computer program product is operable such that the version associated with the second application is determined from a header of the request.

5. The computer program product of claim 1 , wherein the computer program product is operable such that the version associated with the second application is determined from a default version specified by a setting associated with a developer of the calling code.

6. The computer program product of claim 1 , wherein the type of the code of the second application requesting access to the feature of the first application includes one of an application program interface and a user interface.

7. The computer program product of claim 1 , wherein the type of the feature of the first application requested to be accessed by the second application includes one of standard components managed by a multi-tenant on-demand database service, custom components created by a developer of the application, and components installed as part of the first application.

8. The computer program product of claim 1 , wherein for each of the components of the first application, the component is annotated with a version of the component.

9. The computer program product of claim 8 , wherein the annotation includes a minimum version of the first application and a maximum version of the first application indicating a range of versions of the first application to which the component corresponds.

10. The computer program product of claim 9 , wherein the maximum version is recorded once the component is uploaded as deprecated, the deprecation including an indicator to allow a developer to remove the component.

11. The met computer program product of claim 10 , wherein deprecating the component allows the first application to be evolved without introducing an immediate change for existing users of the first application.

12. The computer program product of claim 1 , wherein the predetermined rules includes a first predetermined rule allowing access only to a set of one or more components annotated with a version exactly matching the version associated with the second application, and wherein the predetermined rules includes a second predetermined rule allowing access to each set of one or more components annotated with a version exactly matching the version associated with the second application and annotated with a later version to the version associated with the second application.

13. A method, comprising:

storing a first application having at least one feature, wherein multiple versions of the feature exist in the first application and wherein the versions are each accessed in the first application by a different set of one or more components;

receiving a request from a second application to access the feature of the first application;

in response to the request from the second application, identifying one of the versions of the feature in the first application by:

selecting at least one of a plurality of predetermined rules for use in determining at least one of the sets of components in the first application allowed to be accessed by the second application, wherein the predetermined rules are specific to, and selected based on, at least one of: a type of code of the second application requesting the access to the feature of the first application, a type of the feature of the first application requested to be accessed by the second application, and an accessibility of the first application to one or more users, and

determining at least one of the sets of components in the first application allowed to be accessed by the second application by applying the selected predetermined rules to a version associated with the second application;

providing, to the second application, access to the determined at least one of the sets of components in the first application.

14. An apparatus, comprising: a processor for:

storing a first application having at least one feature, wherein multiple versions of the feature exist in the first application and wherein the versions are each accessed in the first application by a different set of one or more components;

receiving a request from a second application to access the feature of the first application;

in response to the request from the second application, identifying one of the versions of the feature in the first application by:

selecting at least one of a plurality of predetermined rules for use in determining at least one of the sets of components in the first application allowed to be accessed by the second application, wherein the predetermined rules are specific to, and selected based on, at least one of: a type of code of the second application requesting the access to the feature of the first application, a type of the feature of the first application requested to be accessed by the second application, and an accessibility of the first application to one or more users, and

determining at least one of the sets of components in the first application allowed to be accessed by the second application by applying the selected predetermined rules to a version associated with the second application;

providing, to the second application, access to the determined at least one of the sets of components in the first application.

15. A method for transmitting code for use in a multi-tenant database system on a transmission medium, the method comprising:

transmitting code for storing a first application having at least one feature, wherein multiple versions of the feature exist in the first application and wherein the versions are each accessed in the first application by a different set of one or more components;

transmitting code for receiving a request from a second application to access the feature of the first application;

transmitting code for, in response to the request from the second application, identifying one of the versions of the feature in the first application by;

selecting at least one of a plurality of predetermined rules for use in determining at least one of the sets of components in the first application allowed to be accessed by the second application, wherein the predetermined rules are specific to, and selected based on, at least one of: a type of code of the second application requesting the access to the feature of the first application, a type of the feature of the first application requested to be accessed by the second application, and an accessibility of the first application to one or more users, and

determining at least one of the sets of components in the first application allowed to be accessed by the second application by applying the selected predetermined rules to a version associated with the second application; transmitting code for providing, to the second application, access to the determined at least one of the sets of components in the first application.

Assignments (2)
CHANGE OF NAME Recorded Aug 4, 2026
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 076118/0548 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2010
From: WEISSMAN, CRAIG; SMITH, ANDREW
To: SALESFORCE.COM, INC.
Reel/Frame 025042/0143 →
Continuity (2)
Provisional Application 61180368 · May 21, 2009
Related Publication 20100299663A1 · Nov 25, 2010