IP Library Granted Patent US 10,021,193
Granted Patent B2
US 10,021,193 · App. 15/271,110 · Granted Jul 10, 2018

Session table framework

Inventors: John Duff (Rocklin, CA); Manu Gurudatha (San Francisco, CA); Ashik Uzzaman (Fremont, CA)
Assignee: salesforce.com, inc.
H04L67/141G06F17/30292G06F17/30303H04L67/14H04L67/32H04L67/42
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 10,021,193
App. No.
15/271,110
Granted
Jul 10, 2018
Kind
B2
Abstract

In accordance with embodiments disclosed herein, there are provided methods, systems, and apparatuses for implementing a session table framework including, for example, receiving a request at a host organization from a client device, in which such a request specifies an application available via the host organization; generating a user session unique to the client device in a memory of the host organization; creating a user session data table within the user session; processing the request via the application specified by the request on behalf of the client device; updating the user session data table based on the processing of the request; and transmitting a response to the client device responsive to the request.

Claims (73)

1. A method in a host organization, the method comprising:

receiving a request at the host organization from a client device, the request specifying an application available via the host organization;

generating, via an application extender, a user session unique to the client device in a memory of the host organization;

creating, via the application extender, a user session data table within the user session of the memory;

processing the request via the application specified by the request on behalf of the client device;

populating data into the user session data table based on metadata associated with the application specified by the request, wherein the metadata specifies a generic set of columns or data fields for use with the application specified by the request and further wherein the metadata specifies a subset of the generic set of columns or data fields to be used for handling the request;

updating the user session data table based on the processing of the request;

transmitting a response to the client device responsive to the request; and

wherein populating the data into the user session data table based on the metadata associated with the application comprises one of: (i) retrieving the metadata from a repository separate from the application specified by the request, the repository having previously stored the metadata for later retrieval, (ii) soliciting the metadata from the application by referencing an Application Programming Interface (API) of the application to request the metadata, (iii) deriving the metadata from the received request by systematically parsing one or more of a plurality of quantifiable data elements, data fields, columns, and name=value pairs from the received request, and (iv) probing the application specified by the request to yield application information to parse for one or more of the quantifiable data elements, the data fields, the columns, and the name=value pairs from output from the application responsive to the probe.

2. The method of claim 1 , wherein transmitting the response to the client device responsive to the request comprises:

generating a renderable User Interface (UI) based on the updated user session data table; and

transmitting the renderable UI to the client device for display, responsive to receiving the request.

3. The method of claim 1 , wherein the application specified by the request comprises a legacy application executing within the host organization, the legacy application having source code which is unavailable for modification or unsupported for modification.

4. The method of claim 1 , wherein the application specified by the request comprises a third party application for which source code is proprietary and unavailable for modification or for which the source code is restricted from modification due to licensing terms for the application.

5. The method of claim 1 , wherein the application specified by the request comprises a stateless application which maintains no state specific information regarding the client device between a plurality of interactions between the application and the client device; and

wherein the user session data table within the user session of the memory stores data uniquely associated with the client device between the plurality of interactions with the client device on behalf of the stateless application.

6. The method of claim 1 :

wherein the application supports a first data set on behalf of the client device, and wherein the application extender implements support for a second data set on behalf of the client device, different than and complementary to the first data set; and

wherein the application lacks support for the second data set.

7. The method of claim 1 :

wherein the application comprises a proprietary black box application supporting an enumerated set of inputs and yielding an enumerated set of outputs responsive to the enumerated set of inputs;

wherein the implementing logic of the proprietary black box application to yield the enumerated set of outputs is not available for modification; and

wherein the method further comprises the application extender applying further processing to the enumerated set of outputs yielded from the proprietary black box application.

8. The method of claim 1 :

wherein creating the user session data table comprises creating the user session data table based on metadata associated with the application specified by the request; and

wherein the metadata defines a structure for the user session data table based upon which the user session data table is created.

9. The method of claim 1 , further comprising:

generating an intermediate request based on the received request, wherein generating the intermediate request includes transforming input presented to the application into a state or format which is compatible with the application, wherein the originally received request fails to format the request appropriately;

capturing output from the application responsive to the intermediate request submitted to the application; and

wherein transmitting the response to the client device responsive to the request comprises transmitting the response based on the captured output.

10. The method of claim 1 , further comprising:

receiving a second request from the client device specifying the application;

wherein the second request is incomplete and incapable of processing by the application specified;

supplementing the second request via the application extender based on previously captured data stored in the user session data table; and

submitting the supplemented second request to the application for processing.

11. The method of claim 1 , further comprising:

generating an intermediate request based on the received request, wherein generating the intermediate request includes transforming input presented to the application into a state or format which is compatible with the application, wherein the originally received request fails to format the request appropriately;

wherein processing the request further comprises submitting the intermediate request to the application specified.

12. A non-transitory computer readable storage medium having instructions stored thereon that, when executed by a system in a host organization having a processor and memory therein, the instructions cause the system to perform operations comprising:

receiving a request at the host organization from a client device, the request specifying an application available via the host organization;

generating, via an application extender, a user session unique to the client device in a memory of the host organization;

creating, via the application extender, a user session data table within the user session of the memory;

processing the request via the application specified by the request on behalf of the client device;

populating data into the user session data table based on metadata associated with the application specified by the request, wherein the metadata specifies a generic set of columns or data fields for use with the application specified by the request and further wherein the metadata specifies a subset of the generic set of columns or data fields to be used for handling the request;

updating the user session data table based on the processing of the request;

transmitting a response to the client device responsive to the request; and

wherein populating the data into the user session data table based on the metadata associated with the application comprises one of: (i) retrieving the metadata from a repository separate from the application specified by the request, the repository having previously stored the metadata for later retrieval, (ii) soliciting the metadata from the application by referencing an Application Programming Interface (API) of the application to request the metadata, (iii) deriving the metadata from the received request by systematically parsing one or more of a plurality of quantifiable data elements, data fields, columns, and name=value pairs from the received request, and (iv) probing the application specified by the request to yield application information to parse for one or more of the quantifiable data elements, the data fields, the columns, and the name=value pairs from output from the application responsive to the probe.

13. The non-transitory computer readable storage medium of claim 12 , wherein transmitting the response to the client device responsive to the request comprises:

generating a renderable User Interface (UI) based on the updated user session data table; and

transmitting the renderable UI to the client device for display, responsive to receiving the request.

14. The non-transitory computer readable storage medium of claim 12 , wherein the application specified by the request comprises a legacy application executing within the host organization, the legacy application having source code which is unavailable for modification or unsupported for modification.

15. The non-transitory computer readable storage medium of claim 12 , wherein the application specified by the request comprises a third party application for which source code is proprietary and unavailable for modification or for which the source code is restricted from modification due to licensing terms for the application; or alternatively

wherein the application comprises a proprietary black box application supporting an enumerated set of inputs and yielding an enumerated set of outputs responsive to the enumerated set of inputs;

wherein the implementing logic of the proprietary black box application to yield the enumerated set of outputs is not available for modification; and

wherein the method further comprises the application extender applying further processing to the enumerated set of outputs yielded from the proprietary black box application.

16. The non-transitory computer readable storage medium of claim 12 , wherein the application specified by the request comprises a stateless application which maintains no state specific information regarding the client device between a plurality of interactions between the application and the client device; and

wherein the user session data table within the user session of the memory stores data uniquely associated with the client device between the plurality of interactions with the client device on behalf of the stateless application.

17. The non-transitory computer readable storage medium of claim 12 , wherein processing the request via the application further comprises:

generating an intermediate request based on the received request, wherein generating the intermediate request includes transforming input presented to the application into a state or format which is compatible with the application, wherein the originally received request fails to format the request appropriately; and

submitting the intermediate request to the application specified.

18. A system comprising:

a processor to execute instructions;

a request interface to receive a request at the host organization from a client device, the request specifying an application available via the host organization;

an application extender to generate a user session unique to the client device in a memory of the host organization;

the application extender to further create a user session data table within the user session of the memory;

the application extender to further process the request via the application specified by the request on behalf of the client device;

the application extender to further populate data into the user session data table based on metadata associated with the application specified by the request, wherein the metadata specifies a generic set of columns or data fields for use with the application specified by the request and further wherein the metadata specifies a subset of the generic set of columns or data fields to be used for handling the request;

wherein the application extender to populate the data into the user session data table based on the metadata associated with the application comprises one of: (i) the application extender retrieving the metadata from a repository separate from the application specified by the request, the repository having previously stored the metadata for later retrieval, (ii) the application extender soliciting the metadata from the application by referencing an Application Programming Interface (API) of the application to request the metadata, (iii) the application extender deriving the metadata from the received request by systematically parsing one or more of a plurality of quantifiable data elements, data fields, columns, and name=value pairs from the received request, and (iv) the application extender probing the application specified by the request to yield application information to parse for one or more of the quantifiable data elements, the data fields, the columns, and the name=value pairs from output from the application responsive to the probe;

the application extender to further update the user session data table based on the processing of the request; and

wherein the system is to further transmit a response to the client device responsive to the request.

19. The system of claim 18 , wherein the application specified by the request comprises a legacy application executing within the host organization, the legacy application having source code which is unavailable for modification or unsupported for modification.

20. The system of claim 18 , wherein the application specified by the request comprises a stateless application which maintains no state specific information regarding the client device between a plurality of interactions between the application and the client device; and

wherein the user session data table within the user session of the memory stores data uniquely associated with the client device between the plurality of interactions with the client device on behalf of the stateless application.

Assignments (2)
CHANGE OF NAME Recorded Nov 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069431/0156 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2016
From: UZZAMAN, ASHIK; DUFF, JOHN; GURUDATHA, MANU
To: SALESFORCE.COM, INC.
Reel/Frame 040062/0438 →
Continuity (4)
Continuation 14171561 · Feb 3, 2014
Division 13208206 · Aug 11, 2011
Provisional Application 61435667 · Jan 24, 2011
Related Publication 20170013067A1 · Jan 12, 2017