Ciro D'Urso, Alberto, Persello, David Visicchio
Software reuse's purpose is to improve software quality and productivity. My colleagues and I in the ICT Department of Italian Senate constantly pursue the strategy of identifying potential domains of development of reusable assets. This has lead to an improved software quality, to a lower development costs (despite considering the additional cost of making a software module reusable), and to force programming teams to adopt a standardized approach when dealing with recurrent services such as creation and provision of documents (reports in various formats, text and xml streams) within a software application despite the business line it belongs to.
JEDI is a J2EE application that provides a centralized service aiming at significantly simplifying the generation of data driven documents in an enterprise environment (See Figure 1, "General description").
The documents (hereafter called JEDI documents) can have different format types: pdf, excel, rtf, plain text data streams and xml streams. JEDI documents are instances of the so called managed documents (see below), configured by a developer into the JEDI configuration database (JEDI_DB). The provision of a JEDI document is based on a synchronous processing performed by the JEDI core engine triggered by an end-user request (through HTTP request or RMI invocation, see Figure 2, "Handling a request").
The content of a JEDI document must be an XML stream regardless of the source. Such data is afterwards processed through one or more XSL transformations in order to provide the user with the document in the required format. The definition of XML stream source and XSL transformation are main parts of the managed documents. This approach guarantees an high decoupling level between the JEDI service itself and the documents to be generated, since each managed document can be added (or modified) at runtime without restarting the JEDI service. Some types of documents (pdf, rtf and excel) are generated by using open source libraries such as Apache FOP and POI.
These architectural pattern is very general and represents a standard way of interaction requiring a minimum effort to be adopted by whatever software application.
Further details about the project are available at: http://sourceforge.net/projects/jedisenatus