Source: http://www.google.com/patents/US7756905?dq=7,177,838
Timestamp: 2015-07-29 03:24:56
Document Index: 220515187

Matched Legal Cases: ['Application No. 05714522', 'Application No. 05714522', 'Application No. 2557111', 'Application No. 200580006069', 'Application No. 4745', 'Application No. 05714522']

Patent US7756905 - System and method for building mixed mode execution environment for ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA device runtime environment is provided for execution on a computing device. The device runtime environment provides an intelligent container for an application at runtime and comprises a plurality of services in communication with each other. The plurality of services a data manager, a screen manager,...http://www.google.com/patents/US7756905?utm_source=gb-gplus-sharePatent US7756905 - System and method for building mixed mode execution environment for component applicationsAdvanced Patent SearchPublication numberUS7756905 B2Publication typeGrantApplication numberUS 11/066,239Publication dateJul 13, 2010Filing dateFeb 25, 2005Priority dateFeb 27, 2004Fee statusPaidAlso published asCA2557111A1, CA2557111C, CN1922572A, CN100435094C, EP1723516A1, EP1723516A4, US20050192984, US20110010613, WO2005083562A1Publication number066239, 11066239, US 7756905 B2, US 7756905B2, US-B2-7756905, US7756905 B2, US7756905B2InventorsMichael Shenfield, Brindusa Fritsch, Kamen VitanovOriginal AssigneeResearch In Motion LimitedExport CitationBiBTeX, EndNote, RefManPatent Citations (17), Non-Patent Citations (19), Referenced by (7), Classifications (11), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetSystem and method for building mixed mode execution environment for component applications
US 7756905 B2Abstract
A device runtime environment is provided for execution on a computing device. The device runtime environment provides an intelligent container for an application at runtime and comprises a plurality of services in communication with each other. The plurality of services a data manager, a screen manager, a communication service and a script interpreter. The data manager manages data components of the application including manipulation and persistence in a database of the data components. The screen manager managing screen components of the application and renders an output for display on a screen of the computing device. The communication service sends messages to external resources and receives and manages messages sent from external resources in accordance with corresponding message components. The script interpreter dynamically interprets script embedded in at least one of the data components, screen components, and message components and relays the interpreted output to the corresponding component manager for implementation. A method for implementing an application on the device in accordance with the above and a computer readable memory for storing instruction to implement the method are also provided.
Due to the proliferation of wireless networks, there are a continually increasing number of wireless devices in use today. These devices include mobile telephones, personal digital assistance (PDAs) with wireless communication capabilities, two-way pagers and the like. Concurrently with the increased availability of wireless devices, software applications running on such devices have increased their utility. For example, the wireless device may include an application that retrieves a weather report for a list of desired cities or allows a user to shop for groceries. These software applications take advantage of the ability to transmit data to a wireless network in order to provide timely and useful services to users, often in addition to voice communication. However, due to the number of different types of devices, the limited available resources of some devices, and the complexity of delivering large amounts of data to the devices, developing software applications remains a difficult and time-consuming task.
On the other hand, native applications are developed for a specific wireless device platform, thereby providing a relatively optimized application program for a runtime environment running on that platform. However, a platform dependent application introduces several drawbacks, including having to develop multiple versions of the same application and being relatively large in size, thereby taxing memory resources of the wireless device. Further, application developers need experience with programming languages such as JAVA (Java™) and C++ to construct such native applications.
In accordance with an aspect of the present invention there is provided a device runtime environment for execution on a computing device, the device runtime environment for providing an intelligent container for an application at runtime, the device runtime environment comprising a plurality of services in communication with each other, the plurality of services including: a data manager for managing data components of the application including manipulation and persistence in a database of the data components; a screen manager for managing screen components of the application and rendering an output for display on a screen of the computing device; a communication service for sending messages to external resources and receiving and managing messages sent from external resources in accordance with corresponding message components; and a script interpreter for dynamically interpreting script embedded in at least one of the data components, screen components, and message components and relaying the interpreted output to the corresponding component manager for implementation.
For convenience, like numerals in the description refer to like structures in the drawings. Referring to FIG. 1, a communication infrastructure is illustrated generally by numeral 100. The communication infrastructure 100 comprises a plurality of communication devices 102, a communication network 104, a gateway 106, and a plurality of backend services 108.
The communication devices 102 include any wired or wireless device such as a desktop computer, a laptop or mobile computer, a smart phone, a personal digital assistant, such as a BLACKBERRY (Blackberry™) by Research in Motion for example, and the like. The communication devices 102 are in communication with the gateway 106 via the communication network 104. Accordingly, the communication network 104 may include several components such as a wireless network 110, a relay 112, a corporate server 114 and/or a mobile data server (MDS) 116 for relaying messages between the devices 102 and the gateway 106. The gateway 106 is further in communication with a plurality of the backend servers 108. The types of backend servers 108 and their corresponding links will be apparent to a person of ordinary skill in the art.
It is recognized that in the above described client component application program 302 definitions hosting model, the presentation components 402 may vary depending on the client platform and environment of the device 100. For example, in some cases Web Service consumers do not require a visual presentation. The application definition of the components 400, 402, 404, 406 of the component application program 302 can be hosted in a Web Service registry in a metadata repository 700 as a bundle of platform-neutral data 400, message 404, workflow 406 component descriptors with a set of platform-specific presentation component 402 descriptors for various predefined client runtimes (i.e. specific component frameworks 206—see FIG. 2). When the discovery or installation request message is issued the client type should be specified as a part of this request message. In order not to duplicate data, message, and workflow metadata while packaging component application programs 302 for different client platforms of the devices 102, application definitions can be hosted on the application server 108, for example, as a bundle of platform-neutral component definitions linked with different sets of presentation components 403 a, 403 b, 403 c, representing the different supported user interfaces 202 of the devices 102. It is also recognized that a standard presentation component 402 can be used in the event the specific device 102 is not explicitly supported, thereby providing at least a reduced set of presentation features. When a user makes a discovery or download request message, the client runtime type of the devices 102 is validated and the proper bundle is constructed for delivery by the web server 106 to the device 102 over the network 104. For those Web Service consumers, the client application programs 302 could contain selected presentation components 403 a,b,c linked with the data 400 and message 404 components through the workflow components 406, thereby providing a customized component application 302.
The operation of the device runtime is described generally as follows. The device runtime is presented with the Application Definition when the application is uploaded onto the device. The device runtime could either construct the Application Internal Representation at that time or delay this operation until receiving a request to execute the application. Accordingly, the device runtime can host an application in “raw” format, that is Application Definition, or in “executable” format, that is Application Internal Representation.
Referring to FIG. 6, a sample XML portion of a data definition of the Application Definition is illustrated generally by numeral 600. The data definition describes the data components that the application uses, including their persistence mechanism. Data components may contain primitive fields or may refer to other data components, which are also defined therein. In the example illustrated in FIG. 6, the data component shown is named “Race” and requires persistence. The data component includes several fields of varying types and complexity. For example, the field name “description” is a string, whereas the field name “horses” acts as a reference to another component named “Horse”.
Referring to FIG. 7, a sample XML portion of a screen definition of the Application Definition is illustrated generally by numeral 700. The screen definitions describe all application screens, their associated layouts, menu items, controls and screen rendering metadata. In this particular example, the name of the screen component is “scrLogin” and the title is “Login”. The screen component has a data component “Player” as a parameter and does not represent a dialog box. The screen component includes two labels and two edit boxes.
The first label is named “ebPlayerNamelbl” and has a text value “Player Name:”. The first label is associated with the first edit box, which is named “ebPlayerName” and has a value associated with the “name” attribute of the parameter “Player”. This edit box allows the user to input a player name.
Similarly, the second label is named “ebPlayerCodeNamelbl” and has a text value “Player Code:” The second label is associated with the second edit box, which is named “ebPlayerCode” and has a value associated with the “code” attribute of the parameter “Player”. This edit box allows the user to input a code, or password, associated with the player name. Both of the edit boxes have a readOnly value set to false, which allows the user to input data.
The screen component further includes three menu items. The first menu item is named “regPlayer” and has a corresponding label “Register New Player”. This menu item allows the user to navigate to a screen component named “scrRegisterNewPlayer” for registering a new player.
The second menu item is named “loginPlayer” and has a corresponding label “Login”. This menu item allows the user to login to the application by accessing a pblock “2”. In the present embodiments, a pblock is a reusable piece of “workflow” code tat is described either declaratively by metadata, or by script. Pblock “2” describes the workflow associated with a user login.
The second menu item is named “logout” and has a corresponding label “Logout”. This menu item allows the user to logout of the application by accessing a pblock “3”. In the present example, pblock “3” describes the workflow associated with a user logout.
Referring to FIG. 8, a sample XML portion of a message definition of the Application Definition is illustrated generally by numeral 800. Messages are either inbound or outbound and comprise a list of primitive or complex fields. The present example illustrates the definition of an incoming message named “inViewingReq”. Each message field describes the type of data expected as part of the message and maps the data to local application components, where applicable. For example, the message will have a field name “requestor”. The data associated with that field name is mapped to the field “name” in the component “Agent”.
Referring to FIG. 9 a, an example of mapping data to intelligent UI controls is shown generally by numeral 900. UI controls are bound through declarative statements to the data components that they are displaying or are associated with. When a UI control's value changes the underlying data may change or vice versa. In this example, the user is presented with radio button that is named “chClients”. This particular radio button is mapped to a component named Client. Therefore, when the user changes the input, the data mapped to the input changes.
Referring to FIG. 9 b, an example of passing data as parameters to screens or script sequences is shown generally by numeral 930. As previous described with reference to FIG. 7, the data component “Player” is passed to the screen as a parameter. Generally, passing data as parameters to screens, to script sequences or to data components that are automatically mapped to messages are all contenders for declarative action.
Referring to FIG. 9 c, an example of mapping messages to data is shown generally by numeral 960. In the present example, when an incoming message has the name “in PropertyInfo”, it is mapped to a data component named “PropertyInfo”. When a message definition maps directly to data, the device runtime has a predefined instruction that upon receipt of such a message it updates or creates data automatically, without requiring additional processing.
Referring to FIG. 10 an example of declarative screen rendering for a dynamic screen is shown generally by numeral 1000. Conditional controls, those are controls whose value and appearance can change dynamically, are specified declaratively. In the present example, “Canada” and “USA” are possible choices for a user. Depending on the user's selection, the screen is dynamically rendered to display either Canada's provinces or the United States of America's states as a subsequent choice for the user. Using conditional controls defined by metadata, the appearance and behavior of the screen is deferred to runtime criteria managed by the device runtime.
Referring to FIG. 11 an example of declarative UI event processing is shown generally by numeral 1100. In the present example screen navigation as a result of a user event is specified declaratively. As a result of menu item “Client Details” being selected, the screen manager of the device runtime is instructed to render the next screen, “scrClientInfo”. Similarly, if menu item “Client Workbook” is selected, the screen manager of the device runtime is instructed to render the next screen, “scrClientWrbk” and if menu item “New Client” is selected, the screen manager of the device runtime is instructed to render the next screen, “scrNewClient”.
Referring to FIG. 12 a, an example of a declarative data update is illustrated generally by numeral 1200. Fields in an incoming message are mapped directly to corresponding data. When the device receives such a message, the device runtime automatically updates the data without requiring additional instruction. In the present example, if a message titled “inMyListing” is received, a message field titled “forClient” is automatically mapped to attribute “name” of data component “Client”.
Referring to FIG. 12 b, a declarative screen refresh is illustrated generally by numeral 1250. In the present example, the screen is refreshed upon receipt of a message. Therefore, data changes affected by the messages can be indicated to the user. In the present embodiment, the screen is refreshed upon receipt of messages “in PropertyInfo” and “inPropertyStatusChange”.
Referring to FIG. 13, an example of script for data manipulation is illustrated generally by numeral 1300. The script in the present example amends data in accordance with passed parameter “propertyinfo”. The attributes “propID”, “status”, and “price” of component “outPropertyStatusChange” are updated with the corresponding attributes of the passed parameter “propertyinfo”.
Referring to FIG. 14, an example of script for screen rendering is illustrated generally by numeral 1400. The script in the present example renders different elements on the screen in accordance with passed parameters “race”, “horse”, and “bet”. If the “bet” parameter is not null then appropriate properties on the screen are rendered using the corresponding properties of the “bet” parameter. If the “bet” parameter is null, then appropriate properties on the screen are rendered using corresponding attributes of the “race” and “horse” parameters.
Referring to FIG. 15, an example of screen navigation effected by script is illustrated generally by numeral 1500. In the present example, the screen rendering includes a button named “btnDone”. If the user clicks on this button the script named “ahStatusChange” illustrated in FIG. 13 is implemented. In addition to data rendering, as previously described, the script in FIG. 13 renders screen component “scrPropDetails” using the data of parameter “propertyInfo”.
Additionally, FIGS. 15 and 13 illustrate an example of message sending effected by script. Prior to rendering the screen component “scrPropDetails” as described above, a message related to component “outPropertyStatusChange” is sent.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS6477439 *Jul 9, 1998Nov 5, 2002Johnson Controls Technology CorporationMethod of programming and executing object-oriented state machine logic in a controllerUS6571285 *Dec 23, 1999May 27, 2003Accenture LlpProviding an integrated service assurance environment for a networkUS6763226 *Jul 31, 2002Jul 13, 2004Computer Science Central, Inc.Multifunctional world wide walkie talkie, a tri-frequency cellular-satellite wireless instant messenger computer and network for establishing global wireless volp quality of service (qos) communications, unified messaging, and video conferencing via the internetUS6985901 *Dec 23, 1999Jan 10, 2006Accenture LlpControlling data collection, manipulation and storage on a network with service assurance capabilitiesUS7409674 *Dec 23, 2003Aug 5, 2008Research In Motion LimitedSystem and method of creating and communicating with component based wireless applicationsUS20020129129Feb 20, 2002Sep 12, 2002Jargon SoftwareSystem and method for deploying and implementing software applications over a distributed networkUS20030200349Apr 17, 2002Oct 23, 2003Hansen James R.XML scripting of soap commandsUS20040015564 *Mar 7, 2002Jan 22, 2004Williams Scott LaneMethod of developing a web service and marketing products or services used in developing a web serviceUS20040117804 *Apr 2, 2002Jun 17, 2004Scahill Francis JMulti modal interfaceUS20040199614 *Dec 23, 2003Oct 7, 2004Michael ShenfieldSystem and method of creating and communicating with component based wireless applicationsUS20040215700 *Dec 23, 2003Oct 28, 2004Michael ShenfieldSystem and method for building and execution of platform-neutral generic services' client applicationsUS20040220998 *Dec 23, 2003Nov 4, 2004Michael ShenfieldSystem and method of building wireless component applicationsUS20050108682 *Feb 24, 2004May 19, 2005Bea Systems, Inc.Systems for type-independent source code editingUS20050187895 *Feb 23, 2004Aug 25, 2005Microsoft CorporationDynamically customizing a user interface for the aggregation of contentUS20060095331 *Dec 10, 2003May 4, 2006O'malley MattContent creation, distribution, interaction, and monitoring systemWO2001009715A2Jul 25, 2000Feb 8, 2001Sun Microsystems IncA single-compiler architectureWO2002046916A2Oct 22, 2001Jun 13, 2002David Edward AlmilliExtensible information system (xis)* Cited by examinerNon-Patent CitationsReference1Examination Report issued by the European Patent Office dated Apr. 22, 2008 for corresponding European Patent Application No. 05714522.9.2Examination Report issued by the European Patent Office dated Dec. 5, 2009 for corresponding European Patent Application No. 05714522.9.3 *Handspring, "Treo 270 Communicator User's Guide GPRS 1.1, Windows Edition", Dec 31, 2002(copyright), p. 1-255.4 *Handspring, "Treo 270 Communicator User's Guide GPRS 1.1, Windows Edition", Dec. 31, 2002 (c), p. 1, 7, 14-15, 35, 39, 41, 44-45, 51, 59, 85, 102, 136, 190-191, 193.5 *Handspring, "Treo 270 Communicator User's Guide GPRS 1.1, Windows Edition", Modified Mar. 18, 2003, p. 1-255.6Kastner, W. et al, "A new approach for Java in embedded networks", Sep. 6, 2000, the whole document.7 *M. Brown, "Better Vision with The Treo 270 ; Were you intrigued by the Treo 180, Handspring's first PDA/phone combo, but didn't buy one because you wanted more usability?", Sep. 2002, PC Magazine, ProQuest, p. 1-2, .8 *M. Brown, "Better Vision with The Treo 270 ; Were you intrigued by the Treo 180, Handspring's first PDA/phone combo, but didn't buy one because you wanted more usability?", Sep. 2002, PC Magazine, ProQuest, p. 1-2, <Retrieved from ProQuest Mar. 22, 2009>.9Notification of Transmittal of the International Search Report and The Written Opinion of the International Searching Authority, or the Declaration for International Patent Application No. PCT/CA2005/000280, May 13, 2005, 11 pages, International Searching Authority.10Office Action issued by the Canadian Intellectual Property Office dated Feb. 26, 2008 for corresponding Canadian Patent Application No. 2557111.11Office Action issued by the Chinese Patent Office dated Jul. 6, 2007 for corresponding Chinese Patent Application No. 200580006069.4 (English translation).12Office Action issued by the Intellectual Property Office of India dated Apr. 24, 2009 for corresponding Indian Patent Application No. 4745/DELNP/2006.13 *Rhodes et al, Palm OS Programming: The Developer's Guide, Jan. 2002, O'Reilly Press, 2nd Ed, 2nd printing, pp. FrontCover, [M], 120-128, 459-461, 670, back cover, .14 *Rhodes et al, Palm OS Programming: The Developer's Guide, Jan. 2002, O'Reilly Press, 2nd Ed, 2nd printing, pp. FrontCover, [M], 120-128, 459-461, 670, back cover, <Retrieved from EIC 2100 on Mar. 22, 2009>.15Supplementary European Search Report issued by the European Patent Office dated Feb. 20, 2008 for corresponding European Patent Application No. 05714522.9.16 *Turei, "Computer-cellphone pushes all the right buttons; Treo 270", Sep. 19, 2002, The Press, 2nd Ed., Christchurch, New Zealand, p. C7, .17 *Turei, "Computer-cellphone pushes all the right buttons; Treo 270", Sep. 19, 2002, The Press, 2nd Ed., Christchurch, New Zealand, p. C7, <Retrieved from Proquest Mar. 20, 2009>.18 *Vuorimaa et al, "A Java Based XML Browser for Consumer Devices", Mar. 2002, ACM SAC 2002, Madrid, Spain, p. 1094-1099, .19 *Vuorimaa et al, "A Java Based XML Browser for Consumer Devices", Mar. 2002, ACM SAC 2002, Madrid, Spain, p. 1094-1099, <Retrieved from ACM Portal Mar. 22, 2009>.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS8290988 *Nov 20, 2009Oct 16, 2012Xslent, LlcGlobal information network architectureUS8402432 *Jul 31, 2008Mar 19, 2013Research In Motion LimitedSystem and method of creating and communicating with component based wireless applicationsUS8616978 *Sep 1, 2010Dec 31, 2013Wms Gaming, IncManaging wagering game applications and eventsUS8706774Oct 15, 2012Apr 22, 2014Xslent Technologies, LlcGINA WorldSpaceUS9069567 *Oct 11, 2013Jun 30, 2015Google Inc.High performance execution environmentUS20090031284 *Jul 31, 2008Jan 29, 2009Michael ShenfieldSystem and Method of Creating and Communicating with Component Based Wireless ApplicationsUS20110053672 *Mar 3, 2011Wms Gaming, Inc.Managing wagering game applications and events* Cited by examinerClassifications U.S. Classification707/803, 717/140, 717/120International ClassificationG06F17/30, G06F9/45, G06F17/00, G06F9/44Cooperative ClassificationG06F8/36, G06F9/45508European ClassificationG06F8/36, G06F9/455B2Legal EventsDateCodeEventDescriptionNov 22, 2005ASAssignmentDec 18, 2013FPAYFee paymentYear of fee payment: 4Nov 3, 2014ASAssignmentOwner name: BLACKBERRY LIMITED, ONTARIOFree format text: CHANGE OF NAME;ASSIGNOR:RESEARCH IN MOTION LIMITED;REEL/FRAME:034143/0567Effective date: 20130709RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services