Field of the Invention
The present invention relates to the field of component based user applications and more particularly to the assembly of different components to produce a component based user application.
Description of the Related Art
Component based user applications address the rigid nature of unitary, consolidated applications which are programmed to support a particular application need without providing substantial flexibility. In the unitary, consolidated application, little can be done if the particular application needs change. By comparison, in component based computing, different components provide atomic elements of application functionality. Individual components can be combined with other components to dynamically assemble an application which provides a specific type of functionality to flexibly support a particular application need, even as the application needs change. Examples of component based computing implementations include collaborative computing applications and portal computing environments.
Portal frameworks support a component based model for building user facing applications. Portal applications represent assemblies of user-facing components which can be combined in different ways to produce different applications. Portlets are the visibly active, user-facing components included as part of portal pages. Similar to the graphical windows paradigm of windowing operating systems, each portlet in a portal occupies a portion of the portal page through which the portlet can display associated content from a portlet channel. The prototypical portlet can be implemented as a server-side script executed through a portal server.
Portal servers are computer programs which facilitate the distribution of portal based Web sites on the public Internet or a private intranet. Importantly, it will be recognized by one of ordinary skill in the art that the signature characteristic of all conventional portal servers can include the aggregation of content from several portlet applications within a single distributable page in a uniform manner. To that end, each portlet application within the portal page can be represented by a portlet user interface distributed by the portal server to requesting client computing devices.
Cooperative portlets subscribe to a model for declaring, publishing and sharing information with one another using a property broker. Portlets can subscribe to the broker by publishing typed data items or properties that can be shared by the portlet, either as a provider or as a recipient. Generally, a portlet that provides a property is referred to as a source portlet, a portlet that receives a property is referred to as a target portlet, the properties published by the source portlet are referred to as output properties, and the properties that are received by a target portlet are referred to as input properties.
Properties can be exchanged among portlets through a persistent connection referred to as a wire. Using the wire, property transfers can be effectuated between connected portlets. At runtime, a property broker can match the data type of output properties from a source portlet with the data type of input properties from one or more target portlets coupled to the source portlet over separate wires. If a match is determined, the portlets are capable of sharing the property. The actual transfer of the property over the wire can be initiated through the use of a portlet wiring tool, or by establishing a click-to-action event for the source portlet as it is known in the art.
It will be apparent to the skilled artisan, then, that cooperatively interacting component based applications can be assembled through the selective wiring of different, selected components. Determining how components can cooperate with one another in a meaningful way, however, can be challenging. Furthermore, selecting an optimal combination of components for wiring also can be challenging. Finally, selecting an optimal wiring configuration for selected components can be even yet further challenging. Nevertheless, at present, selecting components for wiring is a purely manual exercise, rife with inefficiencies.
Embodiments of the present invention address deficiencies of the art in respect to wiring components in a component based application and provide a novel and non-obvious method, system and computer program product for heuristically assembling components in a component based application. In one embodiment, a data processing system configured to assemble component based applications can include a component aggregation application including an application builder configured to assemble components into a component based application. The system further can include a property broker coupled to the component aggregation application and configured to apply a wiring scheme to selected components in a component based application. Finally, a collaborative heuristic integration matching engine (CHIME) can be coupled to the property broker and a data store of behaviorally derived data, the CHIME including program enabled to suggest components for assembly in a component based application based upon behaviorally derived data in the data store.
In one aspect of the embodiment, the behaviorally derived data can include a record of different components sharing mutual interactions in a component based application. In another aspect of the embodiment, the behaviorally derived data can include prior sets of assembled components. In yet another aspect of the embodiment, the behaviorally derived data can include prior wires created between a selected component and at least one other component. In even yet another aspect of the embodiment, the behaviorally derived data can include prior wiring schemes applied to prior sets of assembled components. Finally, in the behaviorally derived data further can include a lifespan for the prior sets of assembled components.
In another embodiment of the invention, a method for assembling components in a component based application can be provided. The method can include selecting a component for inclusion in a component based application, heuristically identifying at least one other component based upon the selected component, and recommending an assembly of the selected component and the at least one other component in the component based application. Heuristically identifying at least one other component based upon the selected component can include identifying at least one other component configured to process data for the selected component, or identifying a frequently assembled set of components associated with the selected component.
In another aspect of the embodiment, heuristically identifying at least one other component based upon the selected component further can include identifying a wiring pattern for components known to have previously experienced cooperative manual interaction. Likewise, in yet another aspect of the embodiment, heuristically identifying at least one other component based upon the selected component further can include identifying a frequently established wiring scheme for the selected component and other components in the component based application.
Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein:
Embodiments of the present invention provide a method, system and computer program product for heuristically assembling components in a component based application. In accordance with an embodiment of the present invention, behavioral data in respect to the selection and wiring of components in previously assembled component based applications can be collected and leveraged thereafter to guide the selection and wiring of components in a contemporaneously assembled component based application. The use of the behavioral data can range from merely identifying compatible components for a selected component, to proposing optimal wiring arrangements among selected components. In this way, the assembly of a component based application can enjoy the benefit of prior assembly knowledge.
In further illustration,
Notably, a wiring scheme 160 can be established for the components 130 of the aggregation 140 through a property broker 150 as it is well-known in the art. The wiring scheme 160 can permit the sharing of properties between source and target components wired together by the property broker 150. To facilitate in the selection and wiring of components 130 in the collaborative environment, a CHIME 200 can be coupled to the property broker 150. The CHIME 200 can include program code enabled to access behavioral data 170 for previously assembled components in order to proactively suggest the selection and wiring of components 130 to produce a component based application.
The behavioral data 170 can include usage data reflecting the manual interaction between two different ones of the components 130, the configuration of different ones of the components 130 to process the data input and output of other ones of the components 130, prior selection patterns of different ones of the components 130 and prior wiring patterns of different ones of the components 130. Several distinct levels of assistance can be provided by the CHIME 200 utilizing the behavioral data 170. In this regard, at the most basic level, the CHIME 200 can suggest the selection of a component among the components 130 based upon the suggested component's ability to handle the data input or output of an already selected one of the component 130. At the most advanced level, an entire pre-wired assembly of selected ones of the components 130 can be suggested based upon the most frequently selected ones of the components 130 for a selected one of the components 130, and the most frequently selected wiring arrangements for the assembly.
More specifically, in a first level of assistance, the CHIME 200 can match a selected one of the components 130 with other components 130 able to provide data processable in the selected one of the components 130. In a second level of assistance, the CHIME 200 can monitor manual interactions with the components 130 to detect the repeated selection of certain interactions with different ones of the components 130 indicating the desirability of the creation of a wire between the different ones of the components 130. In a third level of assistance, the most often sets of established wires can be suggested during component assembly.
The CHIME 200 can provide yet a fourth level of assistance. In the fourth level of assistance, component selection patterns can be determined for an entire set of the components 130 based upon historical selection patterns. Over time, changes in the selection of components 130 can result in changes in a recommended set of components 130. Finally, in even yet a fifth level of assistance, a complete pre-wired set of components 130 in an assembly can be suggested based upon recognized often wired sets of components 130. In this way, the CHIME 200 can be viewed as adaptable and self-learning.
Notably, the recommendations of the CHIME 200 can be driven by heuristically derived data. The heuristically derived data can include the length of life cycles for applications utilizing particular wiring patterns. Applications built from certain component sets having the particular wiring patterns, if viable, demonstrate longer useful lifespans while less viable patterns are found wanting and are discarded. User ratings or assessments provided through structured annotation by end users further can be helpful in determining desirable component sets and wiring patterns.
The recommendations of the CHIME 200 can be provided through an application builder (not shown) in which a set of components 130 can be selected for assembly and a wiring pattern can be applied to the components 130 in the set. The application builder can provide a user interface through which an administrator can manually assemble a component based application. In the course of assembling the component based application, the CHIME 200 can drive component selection and wiring recommendations through the application builder. In further illustration,
Beginning in block 210, a selection interface can be provided through which a component can be located based upon provided criteria. The selection interface can range from a simple list to an advanced search form. In block 220, a component can be selected for inclusion in a component based application. Based upon the selection of the component, in block 230 additional components can be located which relate to the selected component. The additional components can be determined to relate to the selected component based upon a number of criteria which can range from mere compatibility for component data to heuristically derived data.
In decision block 240, if an additional component can be located, in block 250 the additional component can be suggested for inclusion in the component based application. It will further be recognized by the skilled artisan the location and suggestion of an additional component for a selected component represents only the tip of the iceberg. In fact, a wiring pattern also can be recognized, a complete set of components can be recognized, or an entire wired assembly of components can be recognized based upon the behaviorally derived data and the selected component.
In any event, in decision block 260, if the suggested component is selected for inclusion in the component based application, in block 270 the components can be selected for inclusion in the component based application and the process can repeat through block 230. In decision block 240, when no further components can be located for the selected component, in block 280 the completed component based application can be loaded for use.
Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
Number | Name | Date | Kind |
---|---|---|---|
6029141 | Bezos et al. | Feb 2000 | A |
6058373 | Blinn et al. | May 2000 | A |
6167383 | Henson | Dec 2000 | A |
6529910 | Fleskes | Mar 2003 | B1 |
6631512 | Onyeabor | Oct 2003 | B1 |
6704797 | Fields et al. | Mar 2004 | B1 |
6957417 | Turner et al. | Oct 2005 | B2 |
7168035 | Bell | Jan 2007 | B1 |
7194473 | Hichwa et al. | Mar 2007 | B1 |
7281217 | Choudhary et al. | Oct 2007 | B2 |
7287227 | Ries et al. | Oct 2007 | B2 |
7526437 | Cue et al. | Apr 2009 | B1 |
9454734 | Facemire et al. | Sep 2016 | B2 |
20020087945 | Marshall et al. | Jul 2002 | A1 |
20030105974 | Griffin et al. | Jun 2003 | A1 |
20030163513 | Schaeck et al. | Aug 2003 | A1 |
20040010776 | Shah | Jan 2004 | A1 |
20040015822 | Linton et al. | Jan 2004 | A1 |
20040017395 | Cook | Jan 2004 | A1 |
20040090969 | Jerrard-Dunne | May 2004 | A1 |
20040104933 | Friedrich et al. | Jun 2004 | A1 |
20040139104 | Kuntz-Mayr et al. | Jul 2004 | A1 |
20040158829 | Beresin et al. | Aug 2004 | A1 |
20040168123 | Lomelin-Stoupignan et al. | Aug 2004 | A1 |
20040183831 | Ritchy et al. | Sep 2004 | A1 |
20040199369 | Freidman et al. | Oct 2004 | A1 |
20050015293 | Henn et al. | Jan 2005 | A1 |
20050015742 | Wood et al. | Jan 2005 | A1 |
20050050021 | Timmons | Mar 2005 | A1 |
20050108258 | Olander et al. | May 2005 | A1 |
20060010390 | Guido et al. | Mar 2006 | A1 |
20060064422 | Arthurs et al. | Mar 2006 | A1 |
20060165123 | Jerrard-Dunne et al. | Jul 2006 | A1 |
20060174195 | White | Aug 2006 | A1 |
20060206856 | Breeden et al. | Sep 2006 | A1 |
20060242582 | Swanson et al. | Oct 2006 | A1 |
20070006083 | Daniels et al. | Jan 2007 | A1 |
20070067712 | Baker et al. | Mar 2007 | A1 |
20070112913 | Bales | May 2007 | A1 |
20070124688 | Nauerz et al. | May 2007 | A1 |
20070198969 | Facemire et al. | Aug 2007 | A1 |
20080183720 | Brown et al. | Jul 2008 | A1 |
Entry |
---|
U.S. Appl. No. 11/359,315, Non-Final Office Action, dated Jun. 23, 2009, 23 pg. |
U.S. Appl. No. 11/359,315, Non-Final Office Action, dated Mar. 5, 2010, 19 pg. |
U.S. Appl. No. 11/359,315, Final Office Action, dated Aug. 11, 2010, 17 pg. |
U.S. Appl. No. 11/359,315, Examiner's Answer to Appeal Brief, dated Jan. 28, 2011, 20 pg. |
U.S. Appl. No. 11/359,315, Non-Final Office Action, dated Sep. 11, 2012, 21 pg. |
U.S. Appl. No. 11/359,315, Final Office Action, dated Jan. 22, 2013, 19 pg. |
U.S. Appl. No. 11/359,315, Examiner's Answer to Appeal Brief, dated Jul. 2, 2013, 27 pg. |
U.S. Appl. No. 11/359,315, Decision on Appeal, dated Nov. 16, 2015, 8 pg. |
U.S. Appl. No. 11/359,315, Notice of Allowance, dated Jun. 8, 2016, 13 pg. |
Number | Date | Country | |
---|---|---|---|
20170010871 A1 | Jan 2017 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11359315 | Feb 2006 | US |
Child | 15270616 | US |