Subject matter disclosed herein may relate to enabling offline operations for online applications.
The success of World Wide Web (Web) based applications, such as, for example, Web 2.0 applications, continues to change the way the Internet in general, and the Web in particular, is utilized. Rather than being merely a convenient way to publish information, web pages may be transformed into Web-based computing platforms. Compared with desktop applications, online systems may bring benefits such as, for example, universal accessibility and the ability to readily share and cooperate with others. However, web-based applications may have problems such as possible Internet connectivity issues related to outages, reduced bandwidth, and/or temporary loss of connection, such as in an airplane, for example, that may reduce the usability of the web-based applications.
Claimed subject matter is particularly pointed out and distinctly claimed in the concluding portion of the specification. However, both as to organization and/or method of operation, together with objects, features, and/or advantages thereof, it may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
Reference is made in the following detailed description to the accompanying drawings, which form a part hereof, wherein like numerals may designate like parts throughout to indicate corresponding or analogous elements. It will be appreciated that for simplicity and/or clarity of illustration, elements illustrated in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, it is to be understood that other embodiments may be utilized and structural and/or logical changes may be made without departing from the scope of claimed subject matter. It should also be noted that directions and references, for example, up, down, top, bottom, and so on, may be used to facilitate the discussion of the drawings and are not intended to restrict the application of claimed subject matter. Therefore, the following detailed description is not to be taken in a limiting sense and the scope of claimed subject matter defined by the appended claims and their equivalents.
In the following detailed description, numerous specific details are set forth to provide a thorough understanding of claimed subject matter. However, it will be understood by those skilled in the art that claimed subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components and/or circuits have not been described in detail.
Embodiments claimed may include one or more apparatuses for performing the operations herein. These apparatuses may be specially constructed for the desired purposes, or they may comprise a general purpose computing platform selectively activated and/or reconfigured by a program stored in the device. The processes and/or displays presented herein are not inherently related to any particular computing platform and/or other apparatus. Various general purpose computing platforms may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized computing platform to perform the desired method. The desired structure for a variety of these computing platforms will appear from the description below.
Embodiments claimed may include algorithms, programs and/or symbolic representations of operations on data bits or binary digital signals within a computer memory capable of performing one or more of the operations described herein. Although the scope of claimed subject matter is not limited in this respect, one embodiment may be in hardware, such as implemented to operate on a device or combination of devices, whereas another embodiment may be in software. Likewise, an embodiment may be implemented in firmware, or as any combination of hardware, software, and/or firmware, for example. These algorithmic descriptions and/or representations may include techniques used in the data processing arts to transfer the arrangement of a computing platform, such as a computer, a computing system, an electronic computing device, and/or other information handling system, to operate according to such programs, algorithms, and/or symbolic representations of operations. A program and/or process generally may be considered to be a self-consistent sequence of acts and/or operations leading to a desired result. These include physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical and/or magnetic signals capable of being stored, transferred, combined, compared, and/or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers and/or the like. It should be understood, however, that all of these and/or similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. In addition, embodiments are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings described herein.
Likewise, although the scope of claimed subject matter is not limited in this respect, one embodiment may comprise one or more articles, such as a storage medium or storage media. This storage media may have stored thereon instructions that when executed by a computing platform, such as a computer, a computing system, an electronic computing device, and/or other information handling system, for example, may result in an embodiment of a method in accordance with claimed subject matter being executed, for example. The terms “storage medium” and/or “storage media” as referred to herein relate to media capable of maintaining expressions which are perceivable by one or more machines. For example, a storage medium may comprise one or more storage devices for storing machine-readable instructions and/or information. Such storage devices may comprise any one of several media types including, but not limited to, any type of magnetic storage media, optical storage media, semiconductor storage media, disks, floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), electrically programmable read-only memories (EPROMs), electrically erasable and/or programmable read-only memories (EEPROMs), flash memory, magnetic and/or optical cards, and/or any other type of media suitable for storing electronic instructions, and/or capable of being coupled to a system bus for a computing platform. However, these are merely examples of a storage medium, and the scope of claimed subject matter is not limited in this respect.
The term “instructions” as referred to herein relates to expressions which represent one or more logical operations. For example, instructions may be machine-readable by being interpretable by a machine for executing one or more operations on one or more data objects. However, this is merely an example of instructions, and the scope of claimed subject matter is not limited in this respect. In another example, instructions as referred to herein may relate to encoded commands which are executable by a processor having a command set that includes the encoded commands. Such an instruction may be encoded in the form of a machine language understood by the processor. For an embodiment, instructions may comprise run-time objects, such as, for example, Java and/or Javascript objects. However, these are merely examples of an instruction, and the scope of claimed subject matter is not limited in this respect.
Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout this specification discussions utilizing terms such as processing, computing, calculating, selecting, forming, enabling, inhibiting, identifying, initiating, receiving, transmitting, determining, estimating, incorporating, adjusting, modeling, displaying, sorting, applying, varying, delivering, appending, making, presenting, distorting and/or the like refer to the actions and/or processes that may be performed by a computing platform, such as a computer, a computing system, an electronic computing device, and/or other information handling system, that manipulates and/or transforms data represented as physical electronic and/or magnetic quantities and/or other physical quantities within the computing platform's processors, memories, registers, and/or other information storage, transmission, reception and/or display devices. Further, unless specifically stated otherwise, processes described herein, with reference to flow diagrams or otherwise, may also be executed and/or controlled, in whole or in part, by such a computing platform.
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of claimed subject matter. Thus, the appearance of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
The term “and/or” as referred to herein may mean “and”, it may mean “or”, it may mean “exclusive-or”, it may mean “one”, it may mean “some, but not all”, it may mean “neither”, and/or it may mean “both”, although the scope of claimed subject matter is not limited in this respect.
As discussed above, web applications may experience problems associated with temporary loss of connectivity. Therefore, offline support for online applications such as web-based applications may be desirable.
As used herein, the terms “web application” and “web-based application” are used interchangeably, and are meant to denote any application that takes advantage of at least one of the Web's possible features, such as, for example, web-based communities and/or hosted services. Also, as used herein, the term “online application” is meant to include web applications, but may also include applications that utilize one or more resources accessible via a network other than the Web.
One way to provide offline support for online applications is for application programmers to develop executable code for both client and server systems. Logic for supporting the offline operations may be replicated in the client system. Such replication and specialized application development may result in extra work and expense during application development and may require substantial expertise to implement, and may also make system maintenance difficult. Further, many web applications provide pages that may be dynamically generated based on changing business data. Users of the application may be granted permission to update some of the pages based on the application logic. Offline support for such applications may mean allowing users to view pages and perform updates as if the users were online. The system may cache the data for the pages and may perform logic for the updates and may present updated pages to the users. As a result of offline updates, with limited cached data on the client system, the application may not be able to produce meaningfully updated pages. Further, because multiple users may perform offline updates, conflicting actions from various users may result in difficulties while merging the offline updates into the system.
For an embodiment, an online application may be expressed in what may be referred to as an intermediate modeling language (IML). IML may be platform independent, and may utilize run-time interpreters to allow application developers to define the application logic once and have the defined functionalities executed on either a client or a server, or both the client and the server. If the client system is online, the functionalities may be partitioned between the client and the server. How the functionalities are split may depend, at least is part, on security and/or performance criteria. For an embodiment, the system may automatically partition functionality across client and server to improve performance based on any of a range of possible performance criteria e.g., users response time, system throughput, etc. Developers of web applications may also enforce certain constraints on allowable partitions by marking some functionalities as “confidential” that are not allowed to be performed at the client side. If the client is in an offline state, as much functionality as possible, which satisfies security constraints if any, may be maintained on the client using cached data. In response to a reconnection of the client to the server, local data that may have been updated during offline operations may be synchronized with the server, and possible conflicts may be detected and resolved during synchronization. For one or more embodiments, the switch between online and offline modes of operation may be transparent to users. These are merely examples of some of the functionality that may be defined using IML, and the scope of claimed subject matter is not limited in these respects.
Although the embodiments described herein utilize IML, other embodiments are possible using other programming and/or modeling languages. Also, the embodiments for IML described herein are merely example embodiments, and the scope of claimed subject matter is not limited in these respects.
Application model interpreter 120 may also generate instructions for managing data in a database 140. For an embodiment, application data may be stored in a backend database management system (DBMS), and the application model interpreter 120 may generate code such as a structured query language (SQL) statement for the DBMS to initialize and manage the application data. Also for an embodiment, if the client system is online during operation, data may be retrieved from and/or transmitted to database 140. Application model interpreter 130 may generate instructions for providing a data layer 150 that may include, for example, a local data cache structure. If the client is in an offline state during operation, as much functionality as possible may be maintained on the client using data from the local data cache. Application model interpreters 120 and 130 may also generate instructions for providing a synchronization solution divided between the server and client, labeled synchronization solutions 160 and 170, respectively. In response to a reconnection of the client to the server, local data that may have been updated during offline operations may be synchronized with the server, and possible conflicts may be detected and resolved during synchronization. For one or more example embodiments, the functionalities of switching between online and offline modes of operation may be implemented as part of one or more application model interpreters. These functionalities may be hardcoded into the system, rather than being generated at runtime by the application model interpreter. Further, the functionalities of switching between online and offline modes of operation may be transparent to users, and the system may automatically detect network connection conditions and work under the appropriate mode of operation accordingly.
As previously mentioned, for example embodiments described herein, online application specifications may be defined in IML. For an embodiment, IML may include definitions for roles, pages, containers, etc. During runtime, the IML definitions may be automatically interpreted and runtime objects may be created at both the front end (client) and back end (server) as Java and Javascript objects, although the scope of claimed subject matter is not limited in this respect. In the discussion below, an example is given of possible grammar for IML. Of course, other embodiments may utilize grammar that varies from the examples given.
IML may be used to specify any of a wide range of aspects of an online application. IML may specify a database schema definition (DSD) to provide for the storing of data, graphical user interface (GUI) components specification (GUIS) to allow users to interact with the application, and a page view specification (PVS) that may include logic to display data as dynamically generated pages. For an embodiment, a graphical development platform may be provided to allow application developers to create online applications in a WYS/WYG style. For such an embodiment, the graphical development platform may generate an IML definition for the application.
For an embodiment, the DSD may define a database schema that may include Entities and Relationships between Entities. Entity and relationship data may be stored in a database schema that includes one or more “containers”, as described more fully below. The PVS may include a specification for displaying data as tables in one or more web pages. The displayed results may be referred to as templates. The definition of templates may include nested relational algebra expressions which may specify the structure of the nested table and the query to generate the data in the table. The template definitions may also specify additional properties for columns of the table, such as, for example, “updateable”. The GUIS may include a specification for interactive components of the application.
For an embodiment, “role_def” may provide a list of web pages for each role in the application. Also for this embodiment, “page_def” may contain the definitions of forms and templates for each page, and “container_def” may define a data schema. The following are further examples of possible IML grammar for this embodiment:
The nested_relational_algebra expressions above may comprise nested relational algebra expressions that may define a nested structure of a template and the query to compute the data shown in the template. The column_spec expression defines which columns of which nested table are updateable and also defines which captions are displayed while the template is shown.
As an example of an online application, consider an application where users may post items that they want to give away and/or place requests for items that others have posted. A user may also, for this example, view a list of items posted by that user and also a list of users that have posted requests for those items. For this application, there is a single role, “everyone” (all users assigned to this role), and the role can view two pages, one page “Posting” for posting items to give away and for showing a list of already-posted items by a user and another page “Listing” for viewing all the items in the system and for placing requests for items if desired. Below is an example online application definition for this example in IML:
A possible benefit of the high-level, platform independent IML specification provided above is that manual replication of the application logic across the client and server computing platforms may be avoided. The same application specified in IML may be used to generate executable code (instructions) at both the front end (client) and back end (server). The infrastructure for supporting offline operations may also be automatically generated based on the IML definitions. Application developers therefore are able to focus on the core logic of the application without extra effort to make the application available and functional offline.
For an embodiment, data layer 150 as illustrated in
For an embodiment, for security reasons, only data that are contained in the visible templates are delivered from the server to the client. Data layer 504 may automatically store the data in the template data cache associated with the particular visible template. Data layer 504 may also extract out the data for entities and relationships underlying the template definitions. Because templates may share entity/relationship data, such data may be aggregated at the entity/relationship level, for example at entity/relationship data caches 570 and 580.
If any entity/relationship data is updated by a user while the system is online (an online update), a request may be sent to the server, and an updated page view may be generated. During an offline state, the application may log user updates and may attempt to generate updated page views locally on the client using cached data. From the underlying structure of the data layer, the application can determine which templates may be updated. For an embodiment, a “best efforts” based process may be utilized to update the template or templates. One such possible process is discussed below in connection with
For one or more embodiments, any of several possible strategies may be employed to maintain and/or manage data at the client, depending at least in part on available storage and computing resources. For an embodiment, all application data sent from the server to the client may be cached for an application and the data may be managed at both the template level and the entity/relationship level. For another embodiment, the amount and/or size of the cached data may be limited based at least in part on the system configuration. For yet another possible embodiment, data may be cached at the template level and the data may be constructed in a relationship/entity format from the template data while the client is in the offline state, thereby saving a measure of computing cost while the client is in the online state. Of course, these are merely examples of strategies for maintaining and/or managing application data, and the scope of claimed subject matter is not limited in this respect.
The various possible strategies for maintaining and/or managing data at the client may, for one or more embodiments, either be determined by a system configuration provided by a user and/or may be determined automatically by detecting the client type (e.g., personal digital assistant, desktop computer, cellular phone, etc.). For one embodiment, the user may provide the system configuration for an embodiment at least in part by setting a browser cookies cache size.
In response to the connection to the server being re-established, all updates performed while the client was offline may be sent to the server. During the offline period, data on the server may be readily updated by other clients for applications providing for multiple users of the system. In this case, a user's offline updates may not be based on the most recent, up-to-date data. For an embodiment, values updated on the client during an offline period may be checked upon reconnection with the client. If the value has not been changed on the server during the offline period, the application may update the server with the updated value. If the value was changed on the server during the offline period, the application may notify the user of the latest value and may also ask the user for confirmation regarding whether the user desires to continue the update or otherwise.
Referring to
Computing platform 700, as shown in
Communication with processor 704 may be implemented via a bus (not shown) for transferring information among the components of computing platform 700. A bus may include a data channel for facilitating information transfer between storage and other peripheral components of computing platform 700. A bus further may provide a set of signals utilized for communication with processor 704, including, for example, a data bus, an address bus, and/or a control bus. A bus may comprise any bus architecture according to promulgated standards, for example, industry standard architecture (ISA), extended industry standard architecture (EISA), micro channel architecture (MCA), Video Electronics Standards Association local bus (VLB), peripheral component interconnect (PCI) local bus, PCI express (PCIe), hyper transport (HT), standards promulgated by the Institute of Electrical and Electronics Engineers (IEEE) including IEEE 488 general-purpose interface bus (GPIB), IEEE 696/S-100, and so on, although the scope of claimed subject matter is not limited in this respect.
Other components of computing platform 700 may include, for example, memory 706, including one or more auxiliary memories (not shown). Memory 706 may provide storage of instructions and data for one or more programs 708 to be executed by processor 704, such as all or a portion of the procedures of
Computing platform 700 further may include a display 710. Display 710 may comprise a video display adapter having components, including, for example, video memory, a buffer, and/or a graphics engine. Such video memory may be, for example, video random access memory (VRAM), synchronous graphics random access memory (SGRAM), windows random access memory (WRAM), and/or the like. Display 710 may comprise a cathode ray-tube (CRT) type display such as a monitor and/or television, and/or may comprise an alternative type of display technology such as a projection type CRT type display, a liquid-crystal display (LCD) projector type display, an LCD type display, a light-emitting diode (LED) type display, a gas and/or plasma type display, an electroluminescent type display, a vacuum fluorescent type display, a cathodoluminescent and/or field emission type display, a plasma addressed liquid crystal (PALC) type display, a high gain emissive display (HGED) type display, and so forth.
Computing platform 700 further may include one or more I/O devices 712. I/O device 712 may comprise one or more I/O devices 712 such as a keyboard, mouse, trackball, touchpad, joystick, track stick, infrared transducers, printer, modem, RF modem, bar code reader, charge-coupled device (CCD) reader, scanner, compact disc (CD), compact disc read-only memory (CD-ROM), digital versatile disc (DVD), video capture device, TV tuner card, touch screen, stylus, electroacoustic transducer, microphone, speaker, audio amplifier, and/or the like.
Computing platform 700 further may include an external interface 714. External interface 714 may comprise one or more controllers and/or adapters to prove interface functions between multiple I/O devices 712. For example, external interface 714 may comprise a serial port, parallel port, universal serial bus (USB) port, and IEEE 1394 serial bus port, infrared port, network adapter, printer adapter, radio-frequency (RF) communications adapter, universal asynchronous receiver-transmitter (UART) port, and/or the like, to interface between corresponding I/O devices 712.
In the preceding description, various aspects of claimed subject matter have been described. For purposes of explanation, specific numbers, systems and/or configurations were set forth to provide a thorough understanding of claimed subject matter. However, it should be apparent to one skilled in the art having the benefit of this disclosure that claimed subject matter may be practiced without the specific details. In other instances, well-known features were omitted and/or simplified so as not to obscure claimed subject matter. While certain features have been illustrated and/or described herein, many modifications, substitutions, changes and/or equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and/or changes as fall within the true spirit of claimed subject matter.