================================================================ IDEA System Architecture ================================================================ IDEA IDEA Page Result (submit) Page | ^ | | cgi cgi | | ==============================|============|======== | I D E A | V | +--------------------------------------------------+ | | | +-----------------+ +----------------+ | | | IDEAController |------->| IDEAGUI | | | | |<------ | Component | | | +-----------------+ +----------------+ | +--------------------------------------------------+ | ^ . . . . .|. . . . . .|. . . . . . . . . . . . . . . . . . . . . . . . . . V | +-----------------------+ +----------------+ | | | | | IDEAFeatureEngine |--------->| IDEADBMS | | Component | | Component | | |<---------| | +-----------------------+ +----------------+ ================================================================ Brief Explanation: Web pages served out by IDEA are called IDEA Pages (which may be simple html or html with forms, buttons and other stuff). Whenever an IDEA page is activated, the request is send to IDEA system for processing (via CGI). The IDEA system should "process" the web request, computing whatever it needs (using the IDEAFeatureEngine) and return a new IDEA Page that will display the "outcome" (or "result") of the web request. The IDEA Result Page may also contain forms, buttons or menus for other actions. In order to reduce the inter-dependence of the various sub-systems, there are four components: IDEAController: This component is the most important component. It receives the web request from the IDEAGUI, figures out what is needed, then calls the appropriate "function" in the IDEAFeatureEngine to compute the result. It also receives the computed results from IDEAFeatureEngine, and calls the appropriate "function" in the IDEAGUI component to generate the correct IDEA Result Page to be returned. IDEAGUI: This component is responsible for generating the IDEA Pages (GUI) for the IDEA system. Note that the IDEA Pages for any given web request may be different depending on the outcome of the computation from the IDEAFeatureEngine. IDEAGUI directly receives the web request, and calls the IDEAController to service the request. IDEAFeatureEngine: This component is responsible for processing each of the web requests. It may call the database stored in IDEADBMS to get the information it needs to compute the answer. (Note: The "functions" in IDEAFeatureEngine can be written in any language (C/C++, Java, perl, sh, csh) provided that an executable file is provided and the program reads in the appropriate input parameters and returns the correct output parameters.) IDEADBMS: This component implements the underlying database that stores all the requisite information that is needed by the IDEA system. It also includes suitable interfaces where necessary to facilitate online/offline updating of the database.