Enterprise applications provide valuable services to businesses including customer relationship management (CRM), resource planning, human resource management, etc. The present invention will be described with reference to an example CRM that provides sales and marketing services, it being understood that the present invention should not be limited thereto.
CRM is a widely implemented strategy for managing a company's interaction with customers. CRM services can be accessed through mobile devices (e.g., smart phones or tablet computers). The present invention will be described with reference to providing CRM services to users via their mobile devices, it being understood the present invention should not be limited thereto.
A method and system for defining an offlinable model graph. In one embodiment of the method, a request is generated by a mobile device. The mobile device receives a response to the request. The mobile device updates a plurality of tables stored in memory of the mobile device, wherein the updating comprises adding a component of the response to a first table of the plurality of tables.
The use of the same reference symbols in different drawings indicates similar or identical items.
Today's sales workforce is more mobile than ever. To better aid the mobile sales workforce, many companies employ mobile CRM, which enables users to more efficiently use CRM services such as creating, reviewing, and/or updating sales opportunities, sales accounts, contacts, calendar events, etc., through user interfaces or “views” displayed on mobile devices.
In one embodiment, the CRM implements a model-view-controller architecture. The CRM includes a state driven application that contains multiple page definitions, which form the basis of views that can be displayed by mobile device 104. In response to receiving a view request from mobile device 104, the CRM merges or binds components (e.g., account names, contact names, etc.) from a logical data model with a selected page definition, the result of which is sent to the mobile device 104 as a view definition in a reply after additional processing (e.g., universal resource indicator (URI) insertion, archiving, rendering and/or serialization). Mobile device 104 receives and renders the view definition for display. For purposes of explanation, this disclosure presumes that any view definition received by a mobile device contains merged components (e.g., account names, contact names, etc.) in condition for rendering and subsequent display. Mobile device may perform preprocessing (e.g., deserialization, data reconciliation, local storage update, etc.) before the view definition is rendered for subsequent display.
With continuing reference to
The application definition in memory 202 can be implemented as a state driven application that is built using Java Server Faces (JSF) technology, it being understood the present invention should not be limited thereto. JSF provides standard, reusable components for creating pages for views. JSF provides useful, special tags to enhance view definitions. As will be more fully described below, the present invention can extend JSF (or a similar technology for building a state driven application) with a new feature that enables insertion of a new type of tag (e.g. URIs) into view definitions before the view definitions are sent to mobile devices. These new tags, as will be more fully described below, enable multiple features. For example, the tags allow mobile devices to extract model data from view, and the tags enable mobile devices to display views when the mobile devices are “offline” or lack data communication with the CRM.
Control logic 206, which may take form in instructions executing on a processor, is in data communication with the application definition. Control logic 206 can receive a view request from mobile device 104 via interface 208. In response to receiving the view request, control logic 206 may access the application definition in memory 202 or a view navigation stack (not shown) to select an appropriate page definition for creating the reply. The page definition can be selected based on information contained in the view request in addition to other information.
The page definition contains metadata that can be used to select components (e.g., account names, contact names, etc.) from logical data model 204 that are needed to create the reply. Control logic 206 can make calls to logical data model 204 to retrieve the needed view components. Control logic 206 can then bind or merge the selected page definition with the retrieved components, the result of which is transmitted to the requesting mobile device as a view definition in a reply after some additional processing. The reply may also contain an archive that is more fully described below.
With continuing reference to
When springboard view 302 is displayed by mobile device 104, the user can request additional views for display on mobile device 104 via activation of springboard view components 306-310. To illustrate, the user can activate “Contacts” in order to retrieve a list of the contacts for review. In response to activation of Contacts, mobile device 104 generates and sends a request for the contacts list view to the CRM. View requests may include a session identification or other information that uniquely identifies the session between the CRM and mobile device 104. The CRM and/or control logic 206 can use session identifications to manage view navigation stacks for respective mobile devices, which in turn can be used to select the proper page definition and components needed to form the reply.
Continuing with the illustrated example, control logic 206 receives the contacts list view request from mobile device 104, and in response selects the contacts list page definition from memory 202. Control logic 206 selects and merges components (e.g., contact names) from model 204 that are needed for the reply. The component selection may be based on information in the selected page definition and/or other information. In the current example, control logic 206 selects contact names that are identified directly or indirectly by the contacts page definition. Components selected and retrieved are merged by control logic 206 with the contacts page definition to create a view definition. In creating the view control logic 206 may also selectively and logically inserts URIs based on the page definition, the components selected for merger with the page definition, etc., before the view definition is sent to the mobile device in a reply. Control logic 206 sends mobile device 104 a reply that contains the contacts view definition after some additional processing. The additional processing may include adding an archive to the reply. An archive may contain one or more additional preexisting view definitions or view definitions created by the control logic 206.
The relevant portion of an example contacts list view definition sent to mobile device 104 in a reply, which includes inserted URIs, is provided below.
Contacts List View Definition
In addition to containing the contacts view definition, the reply sent by control logic 206 may also include an archive containing a contacts dynamic client view (DCV). As will be more fully described below, a DCV includes executable instructions or statements (e.g., EL statements) that when executed on a mobile device, enables the mobile device to create and display dynamic views while the mobile device is offline or lacks data communication with the CRM. DCVs can enable mobile devices to: sort (e.g., alphabetically) and display components such as contacts, accounts, opportunities, etc., that are locally stored; search locally stored components and display the results thereof; etc., while the mobile devices are in the offline mode. A relevant portion of an example contacts DCV included in an archive of the illustrated reply to the contacts view request is provided below.
Contacts DCV
The contents of an archive are not rendered for display, at least initially. Rather, they can be stored in memory on the mobile device as will be more fully described below. Although DCVs can be identified as a view definition, DCVs are not rendered and displayed on a mobile device. Rather, DCVs can be executed to generate views for subsequent rendering and display while the mobile device is in the offline state.
Labron James Contact View Definition
101#detail”>
With continuing reference to
Like the contacts view definition example and the contacts DCV example above, the Labron James contact view definition example includes URIs such as view URIs, target view URIs, and model URIs. As will be more fully described, mobile devices, like mobile device 104, can store view definitions and DCVs from the CRM, like the contacts DCV, contacts list view definition, and the LaBron James contact view definition examples above, in local memory to enable offline rendering and display of views.
The view and target view URIs can provide a view graph that defines a relationship between views that enables a user to navigate between views on his mobile device while the user's mobile device is offline. Target view URIs are linked to actionable components within view definitions. For example, the “Acme Bike Corp” component above is linked to the “view:/accounts/201#detail” target view URI. When a user clicks a displayed view component while the mobile device is offline, a view definition linked to a target view URI can be retrieved from local memory and subsequently rendered for display.
The model URIs enable a model graph in memory of mobile device 104. In one embodiment, the model graph may take form in database tables that are accessible by SQL statements. The model graph enables mobile device to create composite view definitions, search for components and display of results, sort components and display results, reconciliation of components, etc., while mobile device 104 is offline.
Most of the time, mobile devices such as mobile device 104 shown in
Mobile CRM client 606 generates requests for views, such as the request for the contacts list view mentioned above, in response to user activation of displayed, actionable view components. Request handler 604 receives the requests and is configured to forward the requests to the CRM if the mobile device 104 is online or in data communication with the server 106. Otherwise, request handler 604 forwards the view requests to view controller 602 as will be more fully described below.
Request handler 604 can determine if mobile device 104 operates in the online or the offline mode when the view request is received. If the mobile device 104 operates in the online mode, the process proceeds to step 806 where the request handler 604 sends the view request to server 106, and eventually, the view controller 602 will receive a reply, which includes a view definition for the requested view. Additionally, the reply may contain an archive that contains additional view definitions, including a DCV such as the example contacts DCV noted above. Initially, view definitions contained within the archive are not displayed. However, they are used to update the data store 614 and/or file system 612 when received.
In step 810, view controller 602 updates file system 612 and data store 614 with the contents of the reply view definition. An example procedure for updating file system 612 and data store 614 with the contents of a view definition will be more fully described with reference to
When the process handler 604 receives the view request from mobile CRM client 606 while in the offline mode, the request handler 604 forwards the request to view controller 602, which in turn accesses the views table 702 to read a URL mapped to the view URI of the view request. Using this URL, the view definition contained in the file identified by the URL is read from file system 612 and provided to the view controller 602. View controller 602 determines whether the view definition is a DCV as shown in step 822. If not, then view controller 602 forwards the view definition to the mobile CRM client for rendering and display. In one embodiment, before the view controller forwards the view definition, view controller 602 can reconcile components in the view definition with components in the data store 614 using a reconciliation process such as the example reconciliation the process shown in
If the file does contain a DCV, the process shown in
As noted above,
The process shown in
However, if it is determined in step 1106 that the views table 702 does contain the view URI for the view definition, the process proceeds to step 1120 where view controller 602 accesses the views table to see if a URL is mapped to the URI for the view definition. If there is a URL mapped to this URI, the process proceeds to 1126 where the contents identified by the URL, are overwritten with the view definition. It is noted that in this step, a DCV such as the example contacts DCV above, may overwrite a view definition such as the contacts list view definition example above when both definitions are contained in the same reply from server 106.
If the views table lacks a URL mapped to the view URI of the view definition, view controller 604 stores the view definition in a file identified by a URL, and view controller 604 maps the URL to the view URI in the views table. After step 1124 or in response to overwriting a prior version of the view definition in step 1226, view controller 602 processes the model URIs of the view definition in accordance with the process shown in
In step 1204, view controller 602 selects the first model URI of the selected component. This can be a field URI, a field name URI, a source URI, an entity URI, or a collections URI. Other model URIs are contemplated. View controller 602 can determine the selected model URI type. If the selected model URI is a field URI, the process proceeds to step 1210 where view controller 602 adds the selected model URI as a field URI to the fields table 706, unless the table already contains an entry with the selected model URI. In step 1212, the view controller determines whether the selected entry contains a source field URI in step 1212. If not, view controller 602 adds and maps the component value and the field name URI of the selected view definition entry to the field URI.
If view controller 602 determines the selected view definition entry does have a source field URI in step 1212, then steps 1214-1220 are implemented. These steps configure the fields table to reconcile values in accordance with the process shown in
If it is determined in step 1206 that the selected model URI is not a field URI, the process proceeds to step 1224 where the view controller 602 determines whether the selected model URI is a collection URI. If it is, then the view controller implements steps 1228-1232. If not, then the process proceeds to step 1234 where the view controller 602 determines whether the selected URI is an entity URI. Presuming that this condition is met, steps 1236-1242 are implemented. If not, or in response to implementing step 1242, the view controller 602 determines in step 1244 whether additional model URIs are contained within the selected view definition entry. If there is another model URI, it is selected in step 1250, and steps 1206-1244 are repeated with the newly selected model URI. If there is no more model URIs in the selected view definition entry, the view controller 602 determines whether the view definition contains additional entries. If so, the next entry is selected in step 1252 and steps 1204-1246 are repeated with the newly selected view definition entry.
Although not indicated in
In response to a user activating an actionable component such as the LaBron James component displayed in
A DCV can be executed by view controller 602 to generate a view definition for subsequent rendering and display while mobile device operates in the offline mode. The view definition may depend on input provided by a user via mobile device 104; different inputs to a DCV executing on view controller 602 may result in different view definitions. When executing a DCV, view controller 602 can select components from the value column of the fields table 710 according to some selection criteria (select all contacts or all contacts beginning with “L”), optionally sort the selected components according to another criteria (e.g., sort alphabetically), and create a results view definition with entries that contain the selected components, respectively. Once created, the results view definition can be rendered for display on mobile device 104.
In some offline views, such as the view shown
For each value collected in step 1306, the view controller creates an entry in a results view definition and adds a respective component collected in step 1306. In step 1312, view controller 602 accesses the fields table 710 and collects the entity URIs mapped to the components, respectively, collected in step 1306. Thereafter, view controller 602 accesses the entity_views table 720 and collects the view URIs mapped to the entity URIs, respectively, collected in step 1312. The views table 702 is accessed to collect the URLs if any, mapped to the view URIs, respectively, collected in step 1314, and these URLs are added to the appropriate entries of the results of view definition as action items. Eventually, primacy components and command components are also added to the entries of the results view definition. The results view definition is provided by view controller 602 to the mobile CRM client for rendering and display.
As noted above, mobile device 104 is capable of reconciling view components to ensure that the user is presented with the latest or most up to date components in data store 614, even when not processing DCV views.
Acme Corp View Definition
201#detail”>
The Acme Corp view definition is processed by the view controller 602 in accordance with the processes shown in
Suppose mobile device 104 then goes offline, the user activates the “Contacts” component of the springboard view, and then activates the “Labron James” component of the contacts list view that is displayed in response to activating Contacts. Mobile device 104 can implement the process shown in
Mobile device 104 may have a feature, called “export data” that allows a user to download and locally store several related view definitions. For example, a user may seek to download most or all view definitions for views (contacts, opportunities, calendar events, etc.) associated with a particular account. These view definitions, or components thereof, can be rendered and displayed by mobile device 104 while in the offline mode. Thus, when the user activates this feature, the mobile device can generate a view request for, e.g., an account, and all associated view definitions. Server 102 will send a reply to the mobile device that contains the account view definition, and an archive that contains view definitions for respective contacts, opportunities, etc., associated with the account. View controller 602 can update file system 612 and data store 614 with the contents of the view definitions of the archive in accordance with the processes shown in
Although the invention has been described in connection with several embodiments, the invention is not intended to be limited to the specific forms set forth herein. On the contrary, it is intended to cover such alternatives, modifications, and equivalents as can be reasonably included within the scope of the invention as defined by the appended claims.
The present patent application is a continuation of U.S. patent application Ser. No. 14/068,790, filed on Oct. 31, 2013, entitled “Method and System for Defining an Offlinable Model Graph”; which claims the domestic benefit under Title 35 of the United States Code § 119(e) of U.S. Provisional Patent Application Ser. No. 61/880,901, entitled “Method and System for Defining an Offlinable Model Graph,” filed Sep. 21, 2013. Both are incorporated by reference in their entirety and for all purposes as if completely and fully set forth herein.
Number | Name | Date | Kind |
---|---|---|---|
5319766 | Thaller et al. | Jun 1994 | A |
5815811 | Pinard et al. | Sep 1998 | A |
6108769 | Chinnakonda et al. | Aug 2000 | A |
6263347 | Kobayashi | Jul 2001 | B1 |
7143241 | Hull | Nov 2006 | B2 |
8024327 | Tunkelang | Sep 2011 | B2 |
8224951 | Neil et al. | Jul 2012 | B2 |
8935249 | Traub | Jan 2015 | B2 |
20020124011 | Baxter et al. | Sep 2002 | A1 |
20030109270 | Shorty | Jun 2003 | A1 |
20040006743 | Oikawa | Jan 2004 | A1 |
20040143470 | Myrick | Jul 2004 | A1 |
20060005263 | Hardt | Jan 2006 | A1 |
20060112398 | Mukkamala et al. | May 2006 | A1 |
20060195449 | Hunter | Aug 2006 | A1 |
20070011130 | Yamabuchi | Jan 2007 | A1 |
20100257230 | Kroeger et al. | Oct 2010 | A1 |
20120278321 | Traub | Nov 2012 | A1 |
20140310260 | Wu | Oct 2014 | A1 |
20140310302 | Wu | Oct 2014 | A1 |
20150160988 | Scomparim | Jun 2015 | A1 |
Number | Date | Country |
---|---|---|
2012101581 | Nov 2012 | AU |
1249646 | Apr 2000 | CN |
1513242 | Jul 2004 | CN |
101106779 | Jan 2008 | CN |
102449628 | May 2012 | CN |
H11312178 | Nov 1999 | JP |
H11345240 | Dec 1999 | JP |
2000267971 | Sep 2000 | JP |
2003345717 | Dec 2003 | JP |
2004280203 | Oct 2004 | JP |
2006244485 | Sep 2006 | JP |
2006526837 | Nov 2006 | JP |
2010102453 | May 2010 | JP |
2010244249 | Oct 2010 | JP |
2011164749 | Aug 2011 | JP |
2012059133 | Mar 2012 | JP |
Entry |
---|
International Application No. PCT/US2014/056740, International Search Report and Written Opinion, dated Mar. 11, 2015. |
International Application No. PCT/US2014/056740, International Preliminary Report on Patentability, dated Jan. 26, 2016. |
Chinese Patent Application No. 201480058964.x, Notification to Grant the Patent Right dated Jun. 12, 2020, 4 pages. |
Number | Date | Country | |
---|---|---|---|
20170055102 A1 | Feb 2017 | US |
Number | Date | Country | |
---|---|---|---|
61880901 | Sep 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14068790 | Oct 2013 | US |
Child | 15246410 | US |