Enterprise applications are integral parts of many businesses and provide valuable services to its 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.
CRM is a widely implemented strategy for managing a company'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.
CRM services can be accessed through mobile devices (e.g., smart phones or tablet computers) in data communication with 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.
An application defined to allow polymorphic serialization. In one embodiment, the application comprises a plurality of page definitions or views. At least one page definition is configured to be serialized into content in a first serialization format and content in a second serialization format that is different from the first serialization.
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.
The use of the same reference symbols in different drawings indicates similar or identical items.
Today'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 enables users to more efficiently use CRM services such accessing, reviewing, and/or updating sales opportunities, contacts, leads, calendar entries, etc., through user interfaces (UIs) or pages displayed on their mobile devices.
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.
As will be more fully described below, the CRM of
The CRM sends each reply in a serialization format that is optimized for the target mobile device. Replies are sent to mobile device 102 with page content serialized in one format (e.g., JavaScript Object Notation (JSON)), and replies are sent to mobile device 104 with page content serialized in another, different format (e.g., property list (plist)). While the present invention will be described with reference to mobile devices 102 and 104 receiving replies in JSON and plist format, the present invention should not be limited thereto.
With continuing reference to
Example page definitions are visually represented in
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.
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. The page request should directly or indirectly identify the serialization format (e.g., JSON or plist) that is needed for the corresponding reply. In response to receiving a page request from mobile device 102 or 104 via interface 208, control logic 206 may access the application definition in memory 202 to identify and retrieve the page definition, or relevant components thereof, which is needed to form the proper reply. The page definition retrieved from memory 202 may contain metadata that identifies data of the logical data model 204. Control logic 206 can make calls on business objects of logical data model 204 to retrieve the data identified by the metadata. 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 in a reply.
Serialization system 210 has the ability to serialize a reply in a format configured to optimize performance of mobile devices 102 and 104. For example, serialization system 210 may be able to generate a reply that has one serialization format (e.g., plist), which is optimal for mobile device 104, and serialization system 210 may be able to generate a reply that has another, different serialization format (e.g., JSON), which is optimal for mobile device 102. Ultimately, the requesting mobile device receives the reply, deserializers its content, and displays a corresponding page.
With continuing reference to
With continuing reference to
In contrast, mobile device 104 of
With continuing reference to
The peripherals interface 502 is coupled to an I/O subsystem 514 that contains various controllers that interact with other components of mobile device 102. I/O subsystem 514 includes a keyboard controller coupled to receive input from the physical keyboard 320. The trackball controller is coupled to receive input from the trackball 318. And dedicated buttons controllers receive respective inputs from dedicated buttons 310-316.
Memory controller 502 is coupled to memory 518, which may take form in one or more types of computer readable medium. Memory 518 stores several software components or modules including a communication module that provides communication procedures, which enable communication between mobile device 102 and server 106 via a wireless communication link 110A shown in
With continuing reference to
The peripherals interface 602 is coupled to an I/O subsystem 614 that contains various controllers that interact with other components of mobile device 104. I/O subsystem 614 includes a touch screen controller that is coupled to the touch sensitive display screen 404 shown in
Memory controller 602 is coupled to memory 618, which may take form in one or more types of computer readable medium. Memory 618 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 110B shown in
CRM client 626 of mobile device 104 is substantially different than the CRM client 526 of mobile device 102. The differences between clients 526 and 626 enable the same page from the CRM to be displayed with a look and feel that is native to mobile devices 102 and 104, respectively, and similar to the look and feel of pages displayed by other applications in memory 518 and 618, respectively. 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”). JSON deserializer 522 operates in conjunction with CRM client 526, controller 508, processor 504, etc. to render pages for display. Likewise, plist deserializer 622 operates in conjunction with operating system 625, CRM client 626, etc., to render pages for display.
With continuing reference to
With continuing references to
The mobile device 102 shown in
Pages are rendered for display on mobile devices 102 and 106 in response to user request. The time between requesting a page and a subsequent display thereof is referred to as the response time. Short response times are favored by users. The system shown in the Figures should be designed to minimize the response time for each mobile device 102 or 104. There are many factors that affect response time such as the time it takes for serialization system 210 to serialize a reply before it is transmitted to mobile device 102 or 104, the time it takes to transmit the reply via a wireless communication link, the time it takes for deserializer 522 or 622 to deserialize content of the reply, etc. The time needed to serialize a reply into one format may be less than the time it takes to serialize the same reply into another format. However, the size of a reply after serialization into the first format may be greater when compared to the size of the same reply after serialization into the second format, which in turn affects the time needed to transmit the reply to the requesting mobile device. Further, deserialization of a reply in the first format may require more time than deserialization of the same reply in the second format. Moreover, the time needed for deserialization by different deserializers (e.g., JSON deserializer 522 and plist deserializer 622) may depend upon the hardware and/or software components that cooperate with the deserializers.
Clearly, many factors are considered when selecting a serialization format that optimizes performance for mobile devices. The system shown in
As noted above, a single application definition is provided in memory 202, which can operate without regard to mobile device. The same page definitions can be used to create pages on mobile device 102 or 104 even though, for example, mobile devices 102 and 104 employ different deserializers 522 and 622. To accommodate differences within the mobile devices 102 and 104, the application definition is configured to be serialization independent; the same page definitions can be serialized into different formats by serialization system 210. To accommodate serialization into different formats without losing data during the process, the page definitions are developed with an adherence to core object structures. In one embodiment, these core object structures are map, array, and property. The page definitions should be limited to these three structures. A map can be seen as an unordered list of entries, each of which has a unique identification or name within the list. An array can be seen as an ordered list of entries, each of which can be accessed by an index, but entries in an array can identified with common names. A property can be seen as a construct consisting of a name/value pair. This can be a simple name/value or a complex name/value. The property construct can be used to fill out the shape of an object. A ‘cat’ object, for example, could have a ‘color’ property, a ‘paws’ property, a ‘nose’ property, etc. The ‘color’ property could have a simple value ‘brown’, ‘paws’ could have a complex value of 4 paws, and ‘nose’ could have a complex value of 1 nose. Complex property values can also have properties. For example a paw value from the ‘paws’ property could have a ‘color’ property, a ‘claws’ property, a ‘size’ property, etc. An example of a simple name/value is <list title=“Contacts”/> where ‘title’ is the name and ‘Contacts’ is the value. Another example of a simple name/value is <inputNumber maximum=“10”/> where ‘maximum’ is the name and ‘10’ is the value. An example of a complex property is <property name=“query”><simpleQuery . . . /></property> where ‘query’ is the name and ‘<simpleQuery . . . />’ is the value. Another example of a complex property is <propertyArray name=“commands”><command id=“create” . . . /><command id=“edit” . . . /></propertyArray> where “commands” is name and both <command id=“create” . . . /><command id=“edit” . . . /> are the value.
In one embodiment, each tag in a page definition is designated as a map, array, or property. If a tag is not a property or array, then it is a map. Without the designations, errors may be introduced into the resulting serializations. Below is a portion of an example page definition that can be employed to create the Contacts page shown within
As seen, each tag of the example is designated as either a Map, Array, or Property. These designations are used by the serialization system 210 during serialization to produce different results depending on the mode of serialization. To illustrate, below is a portion of another example page definition that may be included in the application definition of memory 202 and which relates to an Opportunity page that can be displayed on mobile device 102 or 104.
The foregoing can be merged with model data and serialized into JSON or plist formatted replies by serialization system 206. Serialization into the plist format and JSON formats of the foregoing results in the following:
The resulting plist and JSON serializations are substantially different. Because of the map, array, and property designations, one application definition can be developed to provide pages to mobile devices of different design and/or operation.
With continuing reference to
If the reply is sent by serialization selection logic 704 to JSON response writer 706, steps 804-818 are implemented by response writer 706. Alternatively, if the reply is sent to plist response writer 708, steps 820-834 are implemented by response writer 708.
When the reply is sent to JSON response writer 706, the first tag of the reply is selected as shown in step 804. In step 806, the JSON response writer 706 determines whether the selected tag is designated as “array.” If it is, JSON response writer 706 serializes the selected tag according to the procedure for serializing tags designated as array as shown in step 808. During serialization, the JSON response writer designates an array by including a ‘[’ at the beginning of the array and a ‘]’ at the end of the array. Items within the open and close bracket are considered items in the array. If the tag is not designated array, the process proceeds to step 810 where the JSON response writer 706 determines whether the selected tag is designated as “property.” If it is, the selected tag is serialized according the response writer's procedure for serializing property tags as shown in step 812. During serialization, the JSON response writer designates a property by including its name and value separated by ‘=’. The end of the value is signified by a ‘;’. Values can be simple for example color=‘red’; or complex for example size={width=5; height=10}. If the selected tag is not designated array or property, the response writer 706 presumes the selected tag is designated as “map,” and accordingly response writer 706 serializes the selected tag in accordance with the procedure for serializing map tags as shown in step 814. During serialization, the JSON response writer designates a map by including a ‘{’ at the beginning of the map and a ‘}’ at the end of the map. Items within the open and close bracket are considered entries in the map. In step 816, the JSON response writer 706 determines whether the selected tag is the last tag of the reply. If not, steps 806-814 are repeated with the next tag. Otherwise, the process ends.
When the reply is sent to plist response writer 708, the first tag of the reply is selected as shown in step 820. In step 822, the plist response writer 708 determines whether the selected tag is designated as “array.” If it is, plist response writer 708 serializes the selected tag according to the procedure for serializing tags designated as array as shown in step 824. During serialization, the plist response writer designates an array by including an ‘<array>’ node at the beginning of the array and a ‘</array>’ at the end of the array. Items within the open and close bracket are considered items in the array. If the tag is not designated array, the process proceeds to step 826 where the plist response writer 708 determines whether the selected tag is designated as “property.” If it is, the selected tag is serialized according the response writer's procedure for serializing property tags as shown in step 828. During serialization, the plist response writer designates a property by including its name and value as a pair of nodes. The name is included as a value of a ‘key’ node for example <key>commands</key> and the value in appropriate value node. Values can be simple, e.g., <key>color</key><string>red</string> or complex, e.g., <key>size</key><dict><key>width</key><real>5</real><key>height</key><real>10</real>. If the selected tag is not designated array or property, the response writer 708 presumes the selected tag is designated as “map,” and accordingly response writer 708 serializes the selected tag in accordance with the procedure for serializing map tags as shown in step 830. During serialization, the plist response writer plist designates a map by including a including an ‘<dict>’ node at the beginning of the array and a ‘</dict>’ at the end of the map. Items within the open and close bracket are considered entries in the map. In step 832, the plist response writer 708 determines whether the selected tag is the last tag of the reply. If not, steps 822-832 are repeated with the next tag. Otherwise, the process ends.
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.
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.
The operation of a computer system such as that 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-in-part of U.S. patent application Ser. No. 13/235,729, filed on Sep. 19, 2011, entitled “Method and Apparatus for Polymorphic Serialization”; which claims the benefit under 35 U.S.C. §119 (e) of Provisional patent Application No. 61/384,150 filed on Sep. 17, 2010, entitled “Mobile CRM” and naming Saurabh Shrivastava, Wayne Carter, Sridhar Tadepalli, and Rahim Yaseen as inventors. The above-referenced applications are hereby incorporated by reference herein, in their entirety, and for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5572643 | Judson | Nov 1996 | A |
6268856 | Bruck et al. | Jul 2001 | B1 |
6327628 | Anuff et al. | Dec 2001 | B1 |
6501956 | Weeren et al. | Dec 2002 | B1 |
6684370 | Sikorsky et al. | Jan 2004 | B1 |
6748569 | Brooke et al. | Jun 2004 | B1 |
6763343 | Brooke et al. | Jul 2004 | B1 |
6859820 | Hauduc et al. | Feb 2005 | B1 |
6871346 | Kumbalimutt et al. | Mar 2005 | B1 |
6925646 | Korenshtein | Aug 2005 | B1 |
6964014 | Parish | Nov 2005 | B1 |
6987987 | Vacanti et al. | Jan 2006 | B1 |
7007275 | Hanson et al. | Feb 2006 | B1 |
7120639 | de Jong et al. | Oct 2006 | B1 |
7139370 | Tse | Nov 2006 | B1 |
7546602 | Hejlsberg et al. | Jun 2009 | B2 |
7574486 | Cheng et al. | Aug 2009 | B1 |
7747782 | Hunt et al. | Jun 2010 | B2 |
7907966 | Mammen | Mar 2011 | B1 |
8131875 | Chen et al. | Mar 2012 | B1 |
8191040 | Hejlsberg et al. | May 2012 | B2 |
8386955 | Weber et al. | Feb 2013 | B1 |
20020029296 | Anuff et al. | Mar 2002 | A1 |
20020046240 | Graham et al. | Apr 2002 | A1 |
20020069236 | Jahnke | Jun 2002 | A1 |
20020078165 | Genty et al. | Jun 2002 | A1 |
20020140731 | Subramaniam et al. | Oct 2002 | A1 |
20020194267 | Flesner et al. | Dec 2002 | A1 |
20030187984 | Banavar et al. | Oct 2003 | A1 |
20030191685 | Reese | Oct 2003 | A1 |
20040015408 | Rauen et al. | Jan 2004 | A1 |
20040110490 | Steele et al. | Jun 2004 | A1 |
20040181467 | Raiyani et al. | Sep 2004 | A1 |
20040204116 | Ben-Efraim et al. | Oct 2004 | A1 |
20040220946 | Krishnaprasad et al. | Nov 2004 | A1 |
20040267824 | Pizzo et al. | Dec 2004 | A1 |
20050003810 | Chu et al. | Jan 2005 | A1 |
20050015375 | Harjanto | Jan 2005 | A1 |
20050015513 | Tran | Jan 2005 | A1 |
20050044197 | Lai | Feb 2005 | A1 |
20050060277 | Zlatanov et al. | Mar 2005 | A1 |
20050091272 | Smith et al. | Apr 2005 | A1 |
20050097526 | Hauduc et al. | May 2005 | A1 |
20050102281 | Takahashi | May 2005 | A1 |
20050188353 | Hasson et al. | Aug 2005 | A1 |
20050216501 | Cengiz et al. | Sep 2005 | A1 |
20060059225 | Stonehocker et al. | Mar 2006 | A1 |
20060143193 | Thakkar et al. | Jun 2006 | A1 |
20060173873 | Prompt et al. | Aug 2006 | A1 |
20060200415 | Lu | Sep 2006 | A1 |
20060277271 | Morse et al. | Dec 2006 | A1 |
20060288280 | Makela | Dec 2006 | A1 |
20070061779 | Dowedeit et al. | Mar 2007 | A1 |
20070078784 | Donovan et al. | Apr 2007 | A1 |
20070100967 | Smith et al. | May 2007 | A1 |
20070150610 | Vassilev et al. | Jun 2007 | A1 |
20070174330 | Fox et al. | Jul 2007 | A1 |
20070208704 | Ives | Sep 2007 | A1 |
20070214170 | Lin | Sep 2007 | A1 |
20070220158 | Tolgu et al. | Sep 2007 | A1 |
20070287413 | Kleitsch et al. | Dec 2007 | A1 |
20070300237 | Neil et al. | Dec 2007 | A1 |
20080028335 | Rohrabaugh et al. | Jan 2008 | A1 |
20080040389 | Seth et al. | Feb 2008 | A1 |
20080072139 | Salinas et al. | Mar 2008 | A1 |
20080098018 | King et al. | Apr 2008 | A1 |
20080120393 | Chen et al. | May 2008 | A1 |
20080172608 | Patrawala et al. | Jul 2008 | A1 |
20080183758 | Kennedy | Jul 2008 | A1 |
20080198156 | Jou et al. | Aug 2008 | A1 |
20080222242 | Weiss et al. | Sep 2008 | A1 |
20080222269 | Major et al. | Sep 2008 | A1 |
20080228758 | Aaltonen et al. | Sep 2008 | A1 |
20080281866 | Claussen et al. | Nov 2008 | A1 |
20080288881 | Aaltonen et al. | Nov 2008 | A1 |
20090003603 | Wessel et al. | Jan 2009 | A1 |
20090005087 | Lunati et al. | Jan 2009 | A1 |
20090005122 | Goldfarb | Jan 2009 | A1 |
20090006338 | Ives et al. | Jan 2009 | A1 |
20090070667 | Zlatanov et al. | Mar 2009 | A1 |
20090083232 | Ives et al. | Mar 2009 | A1 |
20090094417 | Carlson et al. | Apr 2009 | A1 |
20090100096 | Erlichson et al. | Apr 2009 | A1 |
20090172101 | Arthursson | Jul 2009 | A1 |
20090177685 | Ellis et al. | Jul 2009 | A1 |
20090193141 | Suresh | Jul 2009 | A1 |
20090254611 | Pena et al. | Oct 2009 | A1 |
20090271762 | Taylor et al. | Oct 2009 | A1 |
20100010671 | Miyamoto | Jan 2010 | A1 |
20100049984 | Masushio et al. | Feb 2010 | A1 |
20100083277 | Malladi et al. | Apr 2010 | A1 |
20100174602 | Zweben et al. | Jul 2010 | A1 |
20100174717 | Fambon et al. | Jul 2010 | A1 |
20100191777 | Ylonen | Jul 2010 | A1 |
20100228880 | Hunt et al. | Sep 2010 | A1 |
20100235473 | Koren et al. | Sep 2010 | A1 |
20100262780 | Mahan et al. | Oct 2010 | A1 |
20100299438 | Zimmerman et al. | Nov 2010 | A1 |
20100299588 | Dattilo et al. | Nov 2010 | A1 |
20100332586 | Jogand | Dec 2010 | A1 |
20100333153 | Sahota et al. | Dec 2010 | A1 |
20120047445 | Rajagopal | Feb 2012 | A1 |
20120071146 | Shrivastava et al. | Mar 2012 | A1 |
20120071155 | Carter et al. | Mar 2012 | A1 |
20120072477 | Carter et al. | Mar 2012 | A1 |
20120072498 | Carter et al. | Mar 2012 | A1 |
20120079009 | Carter et al. | Mar 2012 | A1 |
20120089695 | Fainberg et al. | Apr 2012 | A1 |
20120124163 | Carter et al. | May 2012 | A1 |
20120151000 | Snodgrass et al. | Jun 2012 | A1 |
20130007016 | Saxena | Jan 2013 | A1 |
20130275854 | Lim et al. | Oct 2013 | A1 |
20130282986 | Allen et al. | Oct 2013 | A1 |
Number | Date | Country |
---|---|---|
1 347 397 | Sep 2003 | EP |
1 956 481 | Aug 2008 | EP |
WO 2008101236 | Aug 2008 | WO |
Entry |
---|
Genest, Aaron et al., Looking Ahead: Comparison of Page Preview Techniques for Goal-Directed Web Navigation, International Federation for Information Processing, 2009, pp. 378-391, (14 pages). |
Jones, Robert, “Creating Web Content for Mobile Phone Browsers, Part 1,” Feb. 6, 2004; pp. 1-7, (7 pages). |
Cioroianu, Andrei, Senior Java Developer and Consultant, Devsphere; “Auto-Save JSF Forms with Ajax, Parts 1, 2, and 3;” Aug. 7, 2007, 40 pages. |
Cooperman, Gene et al., “Marshalgen: Marshaling Objects in the Presence of Polymorphism”, College of Computer and Information Science, 161 CN; Northeastern University, Boston, MA; MA IPPS/SPDP;1999; pp. 616-622 (7 pages). |
Number | Date | Country | |
---|---|---|---|
20120079367 A1 | Mar 2012 | US |
Number | Date | Country | |
---|---|---|---|
61384150 | Sep 2010 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13235729 | Sep 2011 | US |
Child | 13249313 | US |