Web Application Framework

The present disclosure extends to organizing content and logic for business processes and information technology infrastructure and facilitating collaborative content creation. Embodiments comprise an extensible web application framework having a presentation tier configurable during runtime and dynamically configurable external services for implementation of business rules. Implementations of the present disclosure may integrate with virtually any external content management system. Embodiments of the present disclosure may be deployed as a model-view-controller (“MVC”) framework pattern.

BACKGROUND

Commonly, enterprise framework architecture may be used for organizing logic for business processes and information technology infrastructure, facilitating collaborative content creation, and operating as a framework upon which logic for business processes may be executed. Frameworks may allow many users to publish content from a central interface. Other frameworks manage and execute business logic processes and other technology infrastructure of an organization.

However, there presently does not exist a unified architecture having a common framework that can execute business logic as a service on a website while offering flexibility for numerous web-based applications.

DETAILED DESCRIPTION

Embodiments of the present disclosure are directed to managing and executing a web application framework in one or more computing systems. According to embodiments disclosed herein, a web application framework may be implemented with a model-view-controller (“MVC”) pattern having interfaces for a presentation tier and business tier used by the framework to integrate with an external content management system via a tree of components comprising container and content nodes, as will be described in further detail.

Referring now toFIG. 1, embodiments of web application framework system100of the present disclosure comprises context analyzer layer110, configuration collector layer120, data collector layer130, model builder layer140, view resolver layer150, and presentation tier160. Web application framework system100, context analyzer layer110, configuration collector layer120, data collector layer130, model builder layer140, view resolver layer150, and/or presentation tier160may be embodied in one or more computing devices that operate in an individual or distributed manner as will be described in detail below. In embodiments of the present disclosure, network200may include, but is not limited to, a wireless network, a cellular network, an intranet, the Internet, or combinations thereof

Referring toFIG. 2, in embodiments, context analyzer layer110comprises request module112and context parser module114. Request module112is adapted to receive context to a request from user computing device210via network200. In embodiments, the request is a hypertext transfer protocol (HTTP) request generated at a user's computing device210. Request context may include request parameters, cookies, request attributes, and the like. Request context module112can receive the request context and transmit the request context to context parser module114. Context parser module114is adapted to parse the request context. The parsed request context may be transmitted to the data collector layer130.

Referring toFIG. 3, in embodiments, configuration collector layer120comprises CMS interface module122and page configuration parser module124. CMS interface module122comprises an interface that may integrate with an external content management system220. In embodiments, CMS interface module122may selectively interface with any number and/or type of CMS framework220. According to embodiments, CMS interface module122can interface with a CMS framework220using JavaScript Object Notation (“JSON”) over HTTP. In other embodiments, other languages and/or communication protocols may be employed.

CMS220may receive a request from a user computing device210via network200. In response to such a request, CMS220can transmit a selected web page configuration to CMS interface module122. The web page configuration may include a tree of components where a root component represents the web page template. In such a tree, leaf components may denote a module on the web page. Non-leaf components may represent a container used to group together one or more leaf components. Page configuration parser module124may parse the page components and pass the component configurations to data collector layer130.

Referring now toFIG. 4, an example embodiment of a component configuration is depicted. According to embodiments of the present disclosure, each component may comprise certain attributes. For example, each component may have a “properties” attribute that may be used to pass configurable text, title, image URL, or other presentation-related configurable data from the CMS220and provide the flexibility to change such presentation-related data in a live environment without re-deploying the web application. As an additional example, each component may have a “data source” attribute to specify a service and/or source to invoke for fetching any data called for by the component. As an additional example, each component may have a “data analyzer” attribute to specify a decision point for the component, where a decision regarding an additional child component selection or other further processing may be called for.

Referring now toFIGS. 5A and 5B, an example embodiment of a component's optional data source parameters is depicted. In embodiments, a data source includes an endpoint and a method such as GET or POST. In some embodiments, a data source comprises input parameters. In other embodiments, a data source comprises no parameters. In embodiments, the endpoint itself does not include a query string if such is needed; for example similar to in a GET request. In such embodiments, input parameters may be inserted in a data source for the query string.

Referring now toFIG. 6, data collector layer130comprises data analyzer module133and a data collector module135. Data analyzer module133can receive request contexts from context analyzer layer110, as called for at a data source call. Data analyzer module133can additionally receive components for the page from configuration collector layer120. As additional decisions are called for by the data analyzer attribute of a component, data analyzer module133can process the requested decision, transmit a data request to data collector module135, and return a selected child component resulting from that decision to configuration collection layer120. In embodiments, data collector module135comprises a multi-threaded module. Data collector module135can optimize data call patterns by executing threads in parallel or sequential after analyzing inputs from configuration collector layer120and/or data analyzer module133. Each thread may call an external service and retrieve data back for further processing Configuration collector layer120may then pass the configuration(s) for newly selected components back to data collector layer130.

In operation, the data collector layer130may parse the full component tree for the page and extract data sources from each component for which data sources are defined. Embodiments of data analyzer module133can make data source calls for those components concurrently and may put the responses back against each component. If a component calls for a decision about a child selection in the current web page then that component may have a data analyzer attribute defined. If a data analyzer attribute is defined for a component, then data analyzer module133may withhold parsing that child component and may invoke the data sources of its children and wait until a final decision has been made for selection of child components. Data analyzer module133may then parse those selected children components and follow an iterative model of invoking concurrently the data sources of the sub-tree until a data analyzer is again identified on a component.

In alternative embodiments, data analyzer module133may also identify cases where one or more data sources were separately requested by different modules and then invoke any such data sources a single time (rather than multiple times) to provide results to the multiple components.

Referring now toFIG. 7, a method700of parsing a web page definition containing a tree structure of modules according to embodiments of the present disclosure is illustrated. At operation710, data analyzer module133parses a web page definition containing a tree structure of modules. At operation720, data analyzer module133extracts data sources or references from those modules. At operation730, data analyzer module133skips parsing of any sub-trees having a data analyzer (which data analyzer represents a decision function). In other words, as the data analyzer module133traverses the tree, it ignores any branches below a decision function. At operation740, data analyzer module133invokes a call to the data sources or references for the data analyzer. At operation750, data analyzer module133executes the data analyzer of a module after receiving data from data source or reference. At operation760, a decision is made for one of the module's sub trees on the web page. At operation770, the process is repeated on the selected sub tree of that module. At operation780, data analyzer module133maintains a record of all data source requests and their status (i.e., whether the response is pending or received) and identifies any duplicate requests. Data analyzer may use such a record to reduce duplicate requests.

Referring now toFIG. 1, in embodiments, model builder layer140is adapted to prepare the model from the data for components by mapping the data to components in the component hierarchy for the web page. Model builder layer140can receive from data collector layer130page template and layout, including components passed to system100from CMS220.

In embodiments, view resolver layer150is adapted to map the rendered names of the components to the views in presentation tier160. In embodiments, presentation tier160is adapted to render the components by using the data and configuration provided by framework from the CMS and data source(s). Typically, rendered components may be constructed in an HTML file, cascading style sheets (“CSS”) file, and/or other markup or style sheet files corresponding to the rendered page. Any such files may then be transmitted via network200back to user computing device210for display to the user.

Another embodiment of the present disclosure comprises extracting context from a request in a web application framework and dynamically transforming the request. In embodiments, the request may be made to an external data source or service. According to embodiments of the present disclosure, a data source definition can have a coded expression for the value of an input parameter. Context analyzer layer110can use the following types of expressions for endpoints as well as the value of an input parameter in a data source.

Context analyzer layer110can first try to find a property name matching the expression and will replace the expression with the value of the property, if found. The expression will not be altered yet if a property is not found. After property name, the following types will attempt be matched:

Request parameter. If the expression string starts with “request.param” then the context analyzer layer110can replace the expression with the value of the request parameter with “paramname”, if found. It may be replaced with “ ” if not found.

Request cookie. If the expression string starts with “request.cookie” then the context analyzer layer110can attempt to identify a cookie in the request with the cookie name and use the value of the name to replace the expression. It may be replaced with “ ” if not found.

Request attribute. If the expression string starts with “request.attr” then the context analyzer layer110can replace the expression with the value of “attrName” attribute, if found. It may be replaced with “ ” if not found.

Request header. If the expression string starts with “request.header” then the context analyzer layer110can replace the expression with the value of “headerName” attribute, if found. It may be replaced with “ ” if not found.

Context Analyzer. If the expression string starts with “context” then the context analyzer layer110can try to find a contextAnalyzerName class and use the value of contextKey in the class to replace the above expression. Accordingly, it may be important that a context analyzer by that name is available. If the Context analyzer is not found or if contextKey is not specified, an invalid configuration exception can be thrown.

The aforementioned types of expressions may be used in combination inside a single endpoint or value of the input parameter of a data source. The aforementioned types of expressions may also be used repetitively for a single string value. In embodiments, if the value of an input parameter is null or blank after expression match and replacement (or for any other reason) and that input parameter is not marked as directed by the data source configuration, that input parameter may not be sent to the data source and may be ignored. However, if it is marked as “required” for the data source configuration, and is null or blank, a warning may be generated in the log and the data source may not be invoked. As a result, the data source may only be invoked when a request has all the expected input parameter values.

Although the present disclosure is described in terms of certain preferred embodiments, other embodiments will be apparent to those of ordinary skill in the art, given the benefit of this disclosure, including embodiments that do not provide all of the benefits and features set forth herein, which are also within the scope of this disclosure. It is to be understood that other embodiments may be utilized, without departing from the spirit and scope of the present disclosure.