Abstract:
A method for pre-rendering a system response. In one embodiment, the method includes a mobile device sending a first page request to a secondary system via a wireless communication link. The secondary system sends a first reply to the mobile device in response to the secondary system receiving the first page request, wherein the first reply comprises first page information and second page information. The mobile device stores the second page information in memory. The mobile device also displays a first page comprising a visual representation of the first page information.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority to Provisional Application No. 61/384,150 filed on Sep. 17, 2010, and is incorporated herein in its entirety by reference. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    Enterprise applications are integral parts of many businesses and provide valuable services to users. For example, enterprise applications provide 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 to its users, it being understood that the present invention should not be limited thereto. 
         [0003]    CRM is a widely implemented strategy for managing a company&#39;s interaction with customers, clients, and sales prospects. CRM involves technology to organize, automate, and synchronize business processes-principally sales activities, but also those for marketing, customer service, and technical support. The overall goals of CRM are to find, attract, and win new clients, nurture and retain those the company already has, etc. 
         [0004]    Users can access CRM services through mobile devices (e.g., smart phones or tablet computers) that are coupled to a data processing system the implements the CRM. The present invention will be described with reference to providing CRM services to users via their mobile devices, it being understood that the present invention should not be limited thereto. 
       SUMMARY 
       [0005]    A method for pre-rendering a system response. In one embodiment, the method includes a mobile device sending a first page request to a secondary system via a wireless communication link. The secondary system sends a first reply to the mobile device in response to the secondary system receiving the first page request, wherein the first reply comprises first page information and second page information. The mobile device stores the second page information in memory. The mobile device also displays a first page comprising a visual representation of the first page information. Thereafter, the mobile device sends a second page request to the secondary system in response to user interaction with the displayed first page. The secondary system sends a second reply to the mobile device in response to the secondary system receiving the second page request. However, before the mobile device receives the second reply, the mobile device displays a partial second page using the second page information stored in memory. After the mobile device displays the partial second page, the mobile device displays the second page using information contained in the second reply. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]    The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings. 
           [0007]      FIG. 1  graphically illustrates relevant components of an example system that employs mobile CRM. 
           [0008]      FIG. 2  graphically illustrates relevant components of an example server employed in  FIG. 1 . 
           [0009]      FIG. 3  graphically illustrates external components of an example mobile device employed in  FIG. 1 . 
           [0010]      FIGS. 4A and 4B  graphically illustrate external components of an example mobile device employed in  FIG. 1 . 
           [0011]      FIGS. 5A and 5B  graphically illustrate external components of an example mobile device employed in  FIG. 1 . 
           [0012]      FIGS. 6A and 5B  graphically illustrate external components of an example mobile device employed in  FIG. 1 . 
           [0013]      FIG. 7  graphically illustrates internal components of an example mobile device employed in  FIG. 1 . 
           [0014]      FIG. 8  illustrates relevant aspects a process implemented by the example mobile device shown in  FIGS. 1-7 . 
           [0015]      FIG. 9  is a block diagram of an example computer system that may be employed in the system of  FIG. 1  or  2 . 
       
    
    
       [0016]    The use of the same reference symbols in different drawings indicates similar or identical items. 
       DETAILED DESCRIPTION 
       [0017]    Today&#39;s sales and marketing workforce is more mobile than ever. To reduce sales downtime, increase customer face time, and win more deals, many companies now employ mobile CRM to move their business forward while employees are on the road. Mobile CRM enable users to more efficiently use CRM services such accessing, reviewing, and/or updating sales opportunities, contacts, leads, calendar entries, etc., through user interfaces (Uls) or pages displayed on their mobile devices. 
         [0018]      FIG. 1  illustrates in block diagram form, relevant components of a system  100  that provides mobile CRM in accordance with one embodiment of the present invention. System  100  includes mobile devices (e.g., smart phones)  102  and  104  in wireless communication with a CRM executing on server  106 . The CRM is in data communication with a storage system  112  that includes one or more relational databases  114  that store data of a logical data model. For purposes of explanation only, storage system  112  is presumed to include a single relational database  114 . 
         [0019]    Relational database  114  stores data of a logical data model, which in turn consists of business objects. A business object may represent a logical entity that stores a set of instance variables or properties, also known as attributes, and associations with other business objects, thereby weaving a map of objects representing business relationships. A business object may represent a data entity that may contain related data held in many tables of the relational database  114 . A business object may be made of business components that map to these tables. A business object is an object type that glues related business components together. A business component is said to provide a layer of wrapping over the tables. Opportunities, accounts, and contacts are examples of business objects. 
         [0020]    The CRM of  FIG. 1  operates with mobile devices  102  and  104 , which are substantially different in design and operation. In other words, the CRM is designed to be mobile device independent. The CRM includes a single, metadata driven application that contains multiple views or page definitions. As will be more fully described, in response to receiving a page request from mobile device  102  or  104 , the CRM replies by merging or binding a selected page definition with data of a logical data model, the result of which is serialized and sent to the mobile device  102  or  104 . Mobile device  102  or  104  receives the reply, deserializes content contained therein, and subsequently displays a page that includes visual representations of the merged data and other components. Serialization is the process of converting a data structure or object state into a format that can transmitted across a network communication link and “resurrected” later in another device such as mobile device  102  or  104 . 
         [0021]    With continuing reference to  FIG. 1 ,  FIG. 2  illustrates relevant components of an example server  106  in block diagram form. The CRM implements a model-view-controller architecture. Memory  202  stores an application definition for the CRM. The application definition includes page definitions, some of which are visually represented along with navigation flow relationships therebetween. Page definitions (also known as “views”) form the basis of pages that are displayed by mobile devices  102  or  104 . The application definition can be 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 that can be displayed on mobile devices. JSF provides useful, special tags to enhance page definitions. Each tag gives rise to an associated component. JSF can also be used to define page navigation within the application definition, map page components to a data model, etc. While page definitions run on server  106 , they are displayed on mobile devices  102  or  104 . Example page definitions are visually represented in memory  202 . The “springboard” page definition can be used to render a page with icons arranged in a two-dimensional pattern. Each icon may represent a mini-application or high level business object within the logical data model. The “accounts,” “opportunities,” and “contacts” page definitions can be used to render pages with names or other information of accounts, opportunities, and contacts, respectively, in a list pattern. The “account,” “opportunity,” and “contact” page definitions can be used to render pages with data from an account, opportunity, and contact, respectively, in a form pattern. The “account form,” “opportunity form,” and “contact form” page definitions can be used to render pages with data from an account, opportunity, and contact, respectively, in a user editable form pattern. Other page definitions in memory  202  are contemplated. 
         [0022]    Page definitions can be used to render logical data model  204  into a form suitable for interaction by a user of mobile device  102  or  104 . Logical data model  204  manages the data of the application definition, responds to requests for information about its state (usually from a page definition), and responds to instructions to change state from control logic  206 . In one sense, logical data model  204  provides access to business objects such as contacts, opportunities, analytics, etc. The logical data model  204  is both the data and the business/domain logic needed to manipulate the data of the application definition. 
         [0023]    Control logic  206 , which may take form in instructions executing on a processor, is in data communication with the application definition contained within memory  202  in addition to being in data communication with interface  208  and serialization system  210 . Control logic  206  can receive a page request from mobile device  102  or  104  via interface  208 . Based on data of the request, control logic  206  may access the application definition in memory  202  to identify and retrieve a page definition, or relevant components thereof, which is needed to form the appropriate reply. The retrieved page definition may contain metadata that can be used to retrieve relevant data of the logical data model  204 . Control logic  206  can make calls on business objects of logical data model  204  to retrieve the needed data. The page definition can be merged or bound with data from model  204 , the result of which is serialized and subsequently transmitted to the requesting mobile device as a reply. Ultimately, the requesting mobile device receives the reply, deserializers its content, and displays a corresponding page. 
         [0024]      FIG. 3  illustrates an example page that is displayed by mobile device  104  in response to a user&#39;s invocation of a session with the CRM. With continuing reference to  FIG. 2 , mobile device  104  of  FIG. 3  includes a touch sensitive display screen  300  that displays a page  302  with actionable icons  304 - 314 . Mobile device  104  also includes a physical button  316  and a soft button  318  that, when activated, ends the user&#39;s session with the CRM. A user can activate a soft button or icon by simply by touching it. Although not shown, a soft keyboard can be displayed on screen  300 . 
         [0025]    Many pages transmitted to and subsequently displayed by mobile device  104  in real time present data and other visual components in patterns that are familiar to the user. Page  302  represents intent to display objects (icons  304 - 314 ) in a two dimensional array pattern. Icons  304 - 314  correspond to high level business objects or mini applications of the CRM. Icons  304 - 314  are actionable. 
         [0026]    With continuing reference to  FIGS. 1-3 , in response to user activation of the Contacts icon  310 , mobile device  104  generates and sends a request to the CRM for a corresponding Contacts page. In response, CRM sends a reply that contains a serialization of a contacts page definition merged with selected data from data model  204 . There can be a delay between the time the page request is sent to the CRM and the time the corresponding reply is received at mobile device  104 . To ameliorate user dissatisfaction with the delay, mobile device  104  pre-renders a portion of the expected page using pre-rendering information contained in memory of mobile device  104 . To illustrate,  FIG. 4A  shows an example of a Contacts page  400  that is pre-rendered by mobile device  104  before mobile device  104  receives the reply from the CRM. Pre-rendered page  400  includes features that are expected. The features include the “Contacts” title, the “Back” and “Create” buttons, and a search field that is designated “Search.” Additional expected features include page shading, color, shapes, sizes, the pattern in which model data will be presented etc. 
         [0027]    When mobile device  104  receives the requested reply, mobile device  104  can overwrite the pre-rendered page. Continuing with the illustrated example, when mobile device  104  receives the Contacts reply from the CRM, mobile device  104  overwrites pre-rendered page  400  with page  402  shown in  FIG. 4B . Page  402  is similar to pre-rendered page  400 , but includes data from logical data model  204  (e.g., contacts David Brown, John Coleman, etc.) in a list pattern. Contacts page  402  contains the same “Back” and “Create” buttons of pre-rendered page  400 . In contrast to the Back and Create buttons of  FIG. 4A , however, the Back and Create buttons of page  402  are active. Page  402  also includes an active Search field into which a user can enter a search term (e.g., a specific contact name). The page shading, color, size of buttons, position of buttons, etc., in page  400  and  402  should be similar if not identical. Further, mobile CRM pages, such as pages  400  and  402 , displayed by mobile device  104  should have a look and feel that is native to mobile device  104 . Look and feel is a term used to describe aspects of page design, including elements such as colors, shapes, layout, and typefaces (the “look”), as well as the behavior of dynamic elements such as buttons, boxes, and menus (the “feel”). 
         [0028]    As noted, mobile device  104  includes a memory that contains pre-rendering information that is accessed upon user activation of an active button or link. This memory may contain more than one set of pre-rendering information with each set relating to a different user action.  FIG. 4A  illustrates a pre-rendered page that is displayed in response to user activation of the Contacts icon  310 . Instead of activating the Contacts icon  310 , the user could have activated the Opportunities icon  306 . With continuing reference to  FIGS. 1-3 , in response to user activation of the Opportunities icon  306 , mobile device  104  generates and sends a request to the CRM for the Opportunities page. In response, CRM sends a reply that contains a serialization of an opportunities page definition merged with selected data from model  204 . Before the reply is received, however, mobile device pre-renders a portion of the Opportunities page using pre-rendering information contained in memory of mobile device  104 .  FIG. 5A  illustrates an example of pre-rendered Opportunities page  500 . Pre-rendered page  500  includes features that are expected in the Opportunities page requested from the CRM. The expected features include the “Opportunities” title, the “Back” and “Create” buttons, and a search field that is designated “Search.” Additional features may include page shading, color, button shapes and sizes, the pattern in which model data will be presented etc. 
         [0029]    When mobile device receives the Opportunities reply from the CRM, mobile device  104  overwrites page  500  with page  502  shown in  FIG. 5B . Page  502  is similar to pre-rendered page  500 , but includes opportunities in a list pattern. Opportunities page  502  contains the “Back” and “Create” buttons of pre-rendered page. In contrast to the Back and Create buttons of  FIG. 5A , however, the Back and Create buttons of page  502  are active. Page  502  also includes an active Search field into which a user can enter a search term (e.g., a specific opportunities name). The page shading, button sizes, button positions, etc., in page  500  and  502  should be similar. The Opportunities pages  500  and  502  should have a look and feel that is similar to the look and feel of Contacts pages  402 . 
         [0030]      FIGS. 4A and 5A  illustrate alternative examples of pages that can be pre-rendered by mobile device  104  using distinct sets of information concurrently stored in memory. Pre-rendering information in this memory may be static. In an alternative embodiment, the pre-rendering information stored in mobile device  104  may be updated with each reply received from the CRM. To illustrate, the Contacts or Opportunities reply from the CRM may contain new pre-rendering information that can be used to pre-render subsequent pages. When mobile device  104  receives the Contacts reply or the Opportunities reply from the CRM, mobile device may replace existing pre-rendering information in the memory with one or more new sets of pre-rendering information contained in Contacts or Opportunities reply. To illustrate this aspect, presume mobile device receives and stores new pre-rendering information that is included in the Opportunities reply. The new pre-rendering information can be used to pre-render a subsequent page. To illustrate, when the user activates the active “Pinnacle Server” opportunity element of page  502 , mobile device  104  generates and sends a request to the CRM for the Pinnacles Server opportunity page. In response, CRM sends a reply that contains a serialization of an opportunity page definition merged with the appropriate Pinnacles Server data from data model  204 . Before the reply is received from the CRM, however, mobile device pre-renders a portion of the Pinnacles Server opportunity page using pre-rendering information contained in the prior reply.  FIG. 6A  illustrates an example of an “Opportunity” page  600  that is pre-rendered by mobile device  104  in response to user activation of the “Pinnacle Server” active element of page  502 . Pre-rendered page  600 , like other most other pages pre-rendered in accordance with one embodiment of the present invention, includes features that are expected in the Pinnacle Server page requested from the CRM. These features include the page title “Opportunity,” field titles (e.g., Opportunity Name, Sales Account, etc.), the “Back” button, and an edit button  601 . Additional features may include page shading, color, button shapes, button sizes, the pattern in which model data will be presented, etc. 
         [0031]    When mobile device  104  receives the actual Pinnacle Server reply from the CRM, mobile device  104  overwrites page  600  with page  602  shown in  FIG. 6B . Page  602  is similar to pre-rendered page  600 , but includes Pinnacle Server opportunity information in a form pattern. In general, a form pattern can be used to expose details of a business object such as the Pinnacle Server opportunity. Pinnacle Server opportunity page  602  contains an active “Back” button and an active edit button  601 . The Pinnacle Server opportunity pages  600  and  602  have a look and feel that is similar to the look and feel of Opportunities pages  502 . 
         [0032]    Mobile devices that rely on secondary systems (e.g., the CRM executing on server  106 ) to produce pages for display experience a delay between the time a new page is requested and the time the new page is displayed. The time delay is referred to as the response time. There are many factors that add to total response time such as the time it takes for the mobile device to generate and send a page request, the time needed for serialization system  210  to serialize a reply before it is transmitted to mobile device  104 , the time it takes a wireless communication link to transmit the reply, the time it takes for mobile device  104  to deserialize content of the reply, etc. Short response times are favored by users of mobile devices including mobile device  104 . 
         [0033]    As noted above, mobile device  104  is capable of pre-rendering portions of a requested page before the contents of the requested page is received from the CRM. The pre-rendering can provide an illusion the response time is shorter than it actually is. In other words, the perceived response time of mobile devices such as mobile device  104  may be reduced by pre-rendering the expected page. 
         [0034]    As noted above, the CRM replies to page requests from mobile devices. The replies may include one or more sets of pre-rendering information (e.g., transition, page type, page title, etc.). Each set of pre-rendering information can be used by mobile device  104  to pre-render a subsequent page such as pages  500  and  600  described above. The pre-rendering information included in a reply may vary based on several factors, some of which include: the type of page request that lead to the reply sent by the CRM; the context of the user&#39;s session with the CRM when the request is sent to the server, etc. Ultimately, when the mobile device transmits a subsequent request to the CRM, the mobile device may pre-render the new page that is expected using some or all of the pre-rendering information that was provided in the immediately preceding reply from the CRM. The pre-rendering information when rendered by the mobile device should result in the display of a page having the right shading, color, shapes, sizes, title, pattern, etc. However, the pre-rendered page will lack visual representations of data from the logical data model  204 . Importantly, the pre-rending of the new page is typically performed before the CRM replies with the requested new page. When the requested new page is received by mobile device  104 , mobile device paints over the pre-rendered page with the page provided in the reply. Further, the reply containing the new page will also include pre-rendering information that can be employed in subsequent pages for display on mobile device  104 . 
         [0035]      FIG. 7  shows in block diagram form relevant internal components of mobile device  104 . As will be more fully described, mobile device  104  includes a memory that stores pre-rendering information received in a reply from the CRM. With continuing reference to  FIGS. 2 and 3 , mobile device  104  of  FIG. 7  includes a memory controller  702  coupled to a processor  704  and a peripherals interface  706 . The various components of mobile device  104  may be coupled by one or more communication buses or signal lines  708 . The peripherals interface  706  is coupled to RF circuit  710 , audio circuit  712 , and global positioning system (GPS) circuit  713 , which supports location determining capabilities. 
         [0036]    The peripherals interface  702  is coupled to an I/O subsystem  714  that contains various controllers that interact with other components of mobile device  104 . I/O subsystem  714  includes a touch screen controller that is coupled to the touch sensitive display screen shown in  FIG. 3 . The touch screen controller may detect contact and any movement or break thereof. 
         [0037]    Memory controller  702  is coupled to memory  718 , which may take form in one or more types of computer readable medium. Memory  718  includes storage  730  for pre-rendering information. Memory  718  also stores several software components or modules including a communication module that provides communication procedures, which enable communication between mobile device  104  and server  106  via wireless communication link  110 B shown in  FIG. 1 . Memory  718  may also include a plist deserializer  722 , an operating system  724 , and a set of applications including CRM client  726  as shown. Other components in memory  718  may support email service, texting, etc. The CRM client  726 , as will be more fully described below, operates in conjunction with modules shown within  FIG. 7  to pre-render a page using information stored in memory structure  730 . CRM client  726  is also configured to create a request for a subsequent page, issue instructions to initiate functions such as email, cell phone, mapping, etc. 
         [0038]      FIG. 8  illustrates relevant aspects of a process implemented by mobile device  104  when pre-rendering a page. With continued reference to  FIG. 7 , the process is implemented by the mobile device  104  in response to a user activation of an element of a displayed page. More particularly, the process shown in  FIG. 8  begins with step  800  when the user activates an element on a page displayed on a mobile device.  FIG. 5B  illustrates the opportunities page  502  displayed on mobile device  104 . A user of mobile device  104  can activate element “Pinnacle Server.” In step  802 , CRM client  726 , while executing on processor  704  and in cooperation with other functional modules in mobile device  104 , generates and sends a request to the CRM. Thereafter, the CRM client  726  accesses pre-rendering information in memory structure  730  to determine whether it contains pre-rendering information that is associated with the request generated in step  802 . If memory  730  includes associated pre-rendering information, the pre-render information is read and subsequently rendered for display on mobile device  104 . The pre-rendering information stored within memory  730  may include a title for the page to be pre-rendered, pattern information that identifies the display layout (e.g., list pattern, form pattern, etc.) for the page to be pre-rendered, model data transition information such as pop, push, close, or open, etc. Other pre-rendering information is contemplated. In one embodiment, the push or pop information identifies how the page currently displayed on mobile device  104  is to be replaced with the pre-rendered page. In one embodiment, a push transition may involve mobile device  104  sliding the currently displayed page on mobile device  104  to the right as the pre-rendered page slides in from the left. 
         [0039]    If memory  730  includes pre-rendering information associated with the request generated in step  802 , then a pre-render screen is displayed on mobile device  102 . If, however, memory  730  lacks pre-rendering information associated with the request, the process proceeds to step  808  where mobile device  104  waits for the reply from the CRM. Eventually, mobile device  104  will receive the reply, and in step  810 , the CRM client  726  inspects the reply to see whether it contains pre-rendering information for a subsequent page or pages. If it does, this information is written to pre-rendering memory  730 , thereby replacing, overriding or augmenting the existing pre-rendering information contained therein as shown in step  812 . Otherwise, the mobile device  102  will render the page defined in the reply for display as shown in step  814 . 
         [0040]      FIG. 9  depicts a block diagram of a computer system  910  suitable for implementing the present disclosure. Computer system  910  may be illustrative of various computer systems (e.g., servers or clients) shown in  FIGS. 1 and 2 . Computer system  910  includes a bus  912  which interconnects major subsystems of computer system  910 , such as a central processor  914 , a system memory  917  (typically RAM, but which may also include ROM, flash RAM, or the like), an input/output controller  918 , an external audio device, such as a speaker system  920  via an audio output interface  922 , an external device, such as a display screen  924  via display adapter  926 , serial ports  928  and  930 , a keyboard  932  (interfaced with a keyboard controller  933 ), a storage interface  934 , a floppy disk drive  937  operative to receive a floppy disk  938 , a host bus adapter (HBA) interface card  935 A operative to connect with a Fibre Channel network  990 , a host bus adapter (HBA) interface card  935 B operative to connect to a SCSI bus  939 , and an optical disk drive  940  operative to receive an optical disk  942 . Also included are a mouse  946  (or other point-and-click device, coupled to bus  912  via serial port  928 ), a modem  947  (coupled to bus  912  via serial port  930 ), and a network interface  948  (coupled directly to bus  912 ). 
         [0041]    Bus  912  allows data communication between central processor  914  and system memory  917 , which may include read-only memory (ROM) or flash memory (neither shown), and random access memory (RAM) (not shown), as previously noted. The RAM is generally the main memory into which the operating system and application programs are loaded. The ROM or flash memory can contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components. Applications resident with computer system  910  are generally stored on and accessed via a computer readable medium, such as a hard disk drive (e.g., fixed disk  944 ), an optical drive (e.g., optical drive  940 ), a floppy disk unit  937 , or other storage medium. Additionally, applications can be in the form of electronic signals modulated in accordance with the application and data communication technology when accessed via network modem  947  or interface  948 . 
         [0042]    Storage interface  934 , as with the other storage interfaces of computer system  910 , can connect to a standard computer readable medium for storage and/or retrieval of information, such as a fixed disk drive  944 . Fixed disk drive  944  may be a part of computer system  910  or may be separate and accessed through other interface systems. Modem  947  may provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP). Network interface  948  may provide a direct connection to a remote server via a direct network link to the Internet via a POP (point of presence). Network interface  948  may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like. 
         [0043]    The operation of a computer system such as that shown in  FIG. 9  is readily known in the art and is not discussed in detail in this application. Code for implementing a CRM can be stored in computer-readable storage media such as one or more of system memory  917 , fixed disk  944 , optical disk  942 , or floppy disk  938 . Memory  920  is also used for storing temporary variables or other intermediate information during the execution of instructions by the processor  910 . The operating system provided on computer system  910  may be MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux®, or another known operating system. 
         [0044]    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.