Aspects of the disclosure relate to web applications running on a server accessible from the Internet. More specifically, aspects of the disclosure relate to the dynamic update of web applications running on third-party websites using an AJAX framework.
Java Management Extensions (JMX) is a known library extension to Sun Microsystem's JAVA programming language. Wikipedia explains that JMX is “a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e.g. printers) and service oriented networks. Those resources are represented by objects called MBeans™ (for Managed Bean). In the API, classes can be dynamically loaded and instantiated.”
Nicolas Frankel, a self-proclaimed “Java geek,” blogged in June 2009 about various JMX use cases, including using JMX to manage an application's configuration. Frankel explains that “[e]ven though each application has different needs regarding configuration (one needing a initial thread number attribute, the other an URL), every application needs to be more or less parameterized. In order to do this, countless generations of Java developers . . . have created two components: [1] the first one is a property file where one puts the name value pairs, [2] the other one is a Java class whose responsibilities are to load the properties in itself and to provide access to the values . . . . This is good and fine for initialization, but what about runtime changes of those parameters? This is where JMX comes in. With JMX, you can now expose those parameters with read/write authorizations. JDK 6 provides you with the JConsole application, which can connect on JMX-enabled applications.”
Meanwhile, Oracle is a well-known database vendor. Oracle provides a feature called Oracle Change Notification (OCN) in numerous versions of its database software system. Oracle's documentation explains that “Database Change Notification is a feature that enables client applications to register queries with the database and receive notifications in response to DML or DDL changes on the objects associated with the queries. The notifications are published by the database when the DML or DDL transaction commits.”
AJAX is shorthand for asynchronous Javascript™ and XML. Wikipedia explains that “AJAX . . . is a group of interrelated web development techniques used on the client-side to create interactive web applications. With AJAX, web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page. The use of AJAX techniques has led to an increase in interactive or dynamic interfaces on web pages . . . . Despite the name, the use of Javascript™ or XML is not actually required, nor do the request need to be asynchronous.” Moreover, Wikipedia explains that some drawbacks of AJAX are that “[t]he same origin policy prevents some AJAX techniques from being used across domains, although the W3C has a draft of the XMLHttpRequest object that would enable this functionality.”
The following presents a simplified summary of the disclosure in order to provide a basic understanding of some aspects. It is not intended to identify key or critical elements of the invention or to delineate the scope of the invention. The following summary merely presents some concepts of the disclosure in a simplified form as a prelude to the more detailed description provided below.
In one embodiment in accordance with aspects of the disclosure, a method for outputting a widget in response to receiving a widget identifier is disclosed. The widget may be configured to communicate with a secure database of a financial institution. The method may include the steps of: determining that the widget identifier is in the mapping table, retrieving appropriate data from the properties file and secure database; and generating/transmitting presentation code corresponding to the desired widget.
In another embodiment in accordance with aspects of the disclosure, an apparatus is disclosed comprising a computer processor, memory, and/or an interface. In an alternate embodiment the computer memory may be wholly or partially located in a data storage system.
One skilled in the art will appreciate that one or more of the aforementioned methods and features may be embodied as computer-executable instructions stored on a tangible computer-readable medium and executed by a processor.
The present disclosure is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
In accordance with various aspects of the disclosure, systems and methods are illustrated involving web applications running on a server accessible from the Internet. The server (or plurality of servers) may provide a third-party website with access to functionality accessible only accessible through a secure system of record. Aspects of the disclosure relate to dynamic updates of web applications/pages on third-party websites using an AJAX framework. The system may use properties files, business logic, and mapping table to facilitate, inter alia, cross-domain communication involving the widget and the web application.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
Aspects of the invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Aspects of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Communications module 109 may include a microphone, keypad, touch screen, and/or stylus through which a user of computing device 101 may provide input, and may also include one or more of a speaker for providing audio output and a video display device 111 for providing textual, audiovisual and/or graphical output. Software may be stored within memory 115 and/or storage to provide instructions to processor 103 for enabling computing device 101 to perform various functions. For example, memory 115 may store software used by the computing device 101, such as an operating system 117, application programs 119, and a data store 121. Alternatively, some or all of the computer executable instructions for computing device 101 may be embodied in hardware or firmware (not shown). As described in detail below, the data store 121 (e.g., a secure database) may provide centralized storage of account information and account holder information for the entire business, allowing interoperability between different elements of the business residing at different physical locations. In some embodiments, the data store 121 may be physically located external to memory 115. For example, the data store 121 may be an enterprise database located at computing device 151.
Computing device 101 may operate in a networked environment supporting connections to one or more remote computing devices, such as computing devices 141 and 151. The computing devices 141 and 151 may be personal computing devices or web/application servers that include many or all of the elements described above relative to the computing device 101. The network connections depicted in
Additionally, an application program 119 used by the computing device 101 according to an illustrative embodiment of the invention may include computer executable instructions for invoking user functionality related to communication, such as email, short message service (SMS), and voice input and speech recognition applications.
The application server 101 may access data (e.g., application properties, presentation rules, business rules, etc.) stored on a data storage system 202 (e.g., a secure database system). One skilled in the art will appreciate that although various components in
The system of
The data store 202 (e.g., secure database system) may further include a change notification mechanism 210. The change notification mechanism may provide notifications of modification of data (e.g., application properties 202A, presentation rules 202B, business rules 202C, etc.) The notification may take the form of, for example in one embodiment, an alert over an IRQ (interrupt request) line. In another embodiment, the notification may be software-implemented using the well-documented “observer” design pattern where a “subject” and an “observer” are loosely coupled, and the subject provides notification to an observer when the subject changes state. One skilled in the art will appreciate that other configurations or design patterns are known in the art and may be used to provide notifications of modifications (e.g., state changes) of data, such as polling techniques, push techniques, and subject-observer implementations. In addition, the application server 101 may contain an interface to the change notification mechanism 210 so as to enable the receipt of notifications. For example, the application server 101 may include an instantiation of an “observer” configured to obtain notifications of business rule modifications from a “subject” in the data storage system 202.
In accordance with various aspects of the disclosure, an application server 101 might not rely on a virtual machine to execute computer-executable instructions. In other embodiments, the application server 101 may include a virtual machine 206 (e.g., a Java™ virtual machine or provide a JRE™) configured to use a processor (e.g., Intel® microprocessor, AMD® microprocessor, multi-core processor, special-purpose processor, etc.) to execute computer-executable instructions. These instructions may include bytecode configured to be executed by the virtual machine to cause the system of
In accordance with various aspects of the disclosure, the virtual machine 206 may also include a rules control mechanism configured to permit an application running on the virtual machine to access a first set of business rules, while concurrently restricting the application from accessing a second set of business rules. Meanwhile, the rules control mechanism may permit a second application also running on the virtual machine 206 to access the second set of business rules, but restrict that application's access to the first set of business rules. One of skill in the art will recognize that at least one benefit of a system with a virtual machine 206 with the rules control mechanism is the ability to restrict visibility of properties (e.g., business rules, presentation rules, environment properties 204, etc.) at the level of the application. For example, different applications may then have the same names for properties without conflict. Therefore, interchangeability of underlying vendor products and future porting are greatly enhanced and simplified. In one embodiment in accordance with the disclosure, the rules control mechanism may be implemented using mBeans™ (see Ref. 206 in
In addition, the system of
In optional step 304, the electronic apparatus may receive user information. The user information may be transmitted to the electronic apparatus from a webpage remotely located on the user computing device 141. The webpage may have been downloaded from a third-party webserver (e.g., server 151). The user information may provide information such as the user's name, login, preferences, status, etc. For example, a webpage may include, inter alia, a widget identifier for a mortgage calculator from a particular financial institution. The webpage may also securely include information about the webpage user, such as the user's login with the financial institution. Such user information may be used to further customize the widget presented to the user on the webpage. One skilled in the art, after review of the entirety disclosed herein, will appreciate that not every embodiment of the disclosure will include optional step 304 because, among other things, a user and/or financial institution may not wish to put a customer's user information at risk. Nevertheless, in such cases where security is not an overriding concern, information about a user may be shared with the electronic apparatus in generating a widget for the webpage (or web application).
In step 306, the electronic apparatus 101 may determine whether the mapping table (e.g., stored in data storage 202) includes the widget identifier. The widget mapping table may serve as a mapping between a widget identifier and the resources associated with the widget. For example, a mortgage calculator widget may be identified with a widget identifier of “mcalc”, however, the properties files, business logic, and/or other data stored on the electronic apparatus may not be named using an obscure widget identifier. Rather, the widget mapping table may be used to associate the appropriate resources with the possibly arbitrary widget identifier. In some instances the mapping table may be implemented in a database table (e.g., SQL table with an entry for each widget identifier). Alternatively, the mapping table may be implemented as an electronic file. In step 306, the appropriate resources are identified once the widget identifier is found in the mapping table. If the identifier is not found, an error message may be displayed to the user or thrown, but suppressed. In addition, one of skill in the art, after review of the entirety disclosed herein and incorporated herein by reference, will appreciate that the entries in the mapping table may be dynamically updated using one or more of the features of system in
In step 308, the electronic apparatus 101 may retrieve data from a properties file associated with the widget identifier. The data retrieved from the properties file may include, but is not limited to, background color, foreground color, logging level, and content retrieval server identification. Background color and foreground color are examples of information about the graphical composition of the widget.
In optional step 310, the electronic apparatus 101 may retrieve data from a secure database 121. As explained in connection with step 304, in some embodiments, it may be undesirable to access user data in a secure database (e.g., a system of record) when, for example, security is a critical issue. In embodiments where retrieving user data from the secure database is permissible, user information received in step 304 may be used to obtain a more comprehensive assessment of the user. For example, the user's basic user information may be used to obtain greater information stored about the user in the secure database. In some embodiments, the user information may be as generic as the type of web browser the user is using.
In step 312, the electronic apparatus 101 may retrieve business logic corresponding to the widget identifier. The widget's business logic may be stored in data storage 202. The business logic of a widget may include programming code (e.g., javascript) that controls how the widget functions and operates. For example, a mortgage calculator widget may access memory to determine the current loan interest rate and perform mathematical calculations on that interest rate. The business logic underlying the calculations may enable a user to enter information and receive results.
In step 314, the electronic apparatus 101 may generate presentation code (e.g., text formatted in HTML, javascript, etc.) corresponding to the widget by, inter alia, executing the business logic corresponding to the widget identifier. In some examples, the retrieved data from step 308 and retrieved data from step 310 may also be used in generating the presentation code. For example, the business logic may read the background color value from a properties file to determine what color to render the background of the widget. Likewise, a contentRetrieval value may be read from a properties file, in one example, to determine what text to display for the widget. In Japan the text may be displayed in kanji script, while in Germany the text may be displayed in the German language. In another example, user information, such as the user's first name, may be incorporated into the widget display to customize the greeting for a user.
Finally in step 316, the presentation code generated in step 314 may be transmitted to the user computing device 141 remotely located from the application server 101. An communications module 109 (e.g., interface) may assist in sending the generated presentation code to remote electronic device 141. When the presentation code is received at computing system 141, the presentation code (e.g., HTML snippet) may be dynamically inserted into a webpage (or web application) at a predetermined marker. In the case of HTML webpages, the predetermined marker may be a “<div>” tag with the widget identifier as the value of the tag name. Using the document object model of the HTML webpage, the computing system 141 may insert on-the-fly the widget's presentation code at the position of the predetermined marker. Although the display widget is from the application server 101, the webpage may be from a computer server 151 on a completely different Internet domain. As such, the application server 101 may universally provide its widget to others on the Internet to embed (or configure to behave as a “pop-up”) in their existing webpages.
Referring to
Furthermore, the values in the illustrative properties file 400 of
Although not required, one of ordinary skill in the art will appreciate that various aspects described herein may be embodied as a method, a data processing system, or as a computer-readable medium storing computer-executable instructions. Aspects of the invention have been described in terms of illustrative embodiments thereof. Numerous other embodiments, modifications and variations within the scope and spirit of the appended claims will occur to persons of ordinary skill in the art from a review of this disclosure. For example, the disclosure contemplates an application server 101 that executes compiled computer-readable instructions and does not rely on a virtual machine 206 as depicted in
This application claim priority from U.S. provisional application Ser. No. 61/236,135, filed Aug. 23, 2009, the contents of which are herein incorporated by reference in their entirety. This application is related to U.S. provisional application Ser. No. ______, entitled “Dynamic Configuration System,” which was concurrently filed with this application with an attorney docket number of 007131.00565.
Number | Date | Country | |
---|---|---|---|
61236135 | Aug 2009 | US |