This document is an outline of the future releases that the JLense project hopes to accomplish. This list of releases will culminate in the release of a production quality 1.0 release of the JLense Application Framework.
The 1.0 release of the JLense framework will include a full-featured sample application named JLedger. JLedger is a simple business accounting application whose design is based on the book 'Teach Yourself Accounting in 24 Hours' by Carol Costa and C. Wesley Addison, Alpha Publishing.
It is important for the JLense project to develop a full-featured application as part of it's development process in order to insure that the JLense framework design is capable of being used for the development of sophisticated, real-world applications, not just application prototypes or demos. The JLedger application gives the JLense community a good opportunity to demonstrate just that. The JLedger application is also a good example of the kind of application to which JLense framework is targeted.
JLedger actually consists of two applications:
As you look over the list of releases below keep in mind that JLense is not about
reinventing the wheel. The JLense project is not about building an update facility,
or building an object persistence framework, or building a reporting framework, etc..
JLense is about
integrating and reusing existing functionality in a
way that provides a development environment that is very productive yet flexible
enough to accomodate a wide variety of applications.
The list of releases below is only an outline. It can't account for any suggestions, ideas, and contributions that will be made to the JLense project by new members of the JLense community. Any such contributed ideas, suggestions and contributions have the potential to significantly alter this plan.
Briefly, the plan is this...
Object Integration Framework
The Object Integration Framework plugin defines an abstract, interface-based API which plugins can use to select data objects that have been published by other plugins and to get notifications of data changes occurring in other service.
In the near future the Object Integration Framework will be rewritten as a web service in order to better fit JLense's new focus on web services.
Object Integration Framework's scope will be scaled back to include only query
capabilities and notifications (Previously the Object Integration Framework
included the ability to store changes to objects and to delete objects).
The ability to query the data in other systems
and to receive notification of changes made to data in other other systems is
still an important aspect of integrating enterprise applications. Therefore there
is still a need for the Object Integration Framework in JLense. Also, having a
generic query and notification facility eliminated the need to reproduce these system
aspects in other services.
The ability to call remote procedures is obviously a redundant capability in the Object Integration Framework since JLense is now concentrating on supporting web services. Remote services are now expected to be available as SOAP-based web services and thier interfaces will be available for use by JLense client applications through standard Java APIs.
The ability to store and delete objects in other systems is better done through well defined service interfaces that provide well defined points in a system for making changes to a system, not through a generic interface like the Object Integration Framework. Therefore, the ability to store and delete objects through the Object Integration Framework is best removed.
Web Service Support
Web Service support will be added to JLense by creating plugins that wrap the Jakarta Apache Tomcat servlet engine and the Apache Axis Web Service Toolkit.
An extension point will be defined for deploying web services contained in plugins. This extension point will allow a plugin to supply Axis with a WSDD (Web Service Deployment Descriptor) that Axis will use to start all web services when the JLense platform is started.
An extension point will also be defined for defining connections to web services. A WebServices singleton will be created for getting a web service interface by its extension id.
The JLedger application will be refactored to use the new Web Service General Ledger instead of making calls to the General Ledger through the Object Integration Framework. The Object Integration Framework will still be used to query data and get notification of data changing within the GL.
Authentication and Authorization
A new plugin, org.jlense.security, will be created to encapsulate authentication and authorization functionality.
This new plugin will...
The JLense sample application, JLedger, will use this functionality
to include a logon screen. Users that are 'administrators' will have
an additional tab added to thier shortcut bar 'Administration'.
The JLedger application will have only a few basic priviledges that grant permission for entering transactions and viewing reports.
Integrate support for BTP - Business Transaction Protocol, a standard XML/SOAP based mechanism for managing distributed transactions.
The instance of JBOSS embedded in JLense will be changed to use the JOTM Transaction manager. JOTM already supports BTP (Business Transaction Protocol).
JAX-RPC Handlers will be created for adding BPT assertions to the Axis message handling stack on both client-side and server-side message stacks. Server-side handlers will use the JBOSS J2EE JCA interface to setup transaction context.
A new plugin, org.jlense.transactions, will be created to encapsulate distributed transaction functionality.
This new plugin will...
A rudimentary Forms API has already been developed for JLedger. This forms facility will be redesigned and reimplemented from scratch and made available to JLense developers by creating a new plugin to encapsulate this Forms facility.
The Forms plugin will provide and easy-to-use Java API for defining forms and binding forms to data. The Forms API will isolate forms developers from the the details of creating GUI widgets for a form, binding data from an underlying data source to the form, and of saving data from the form back to it's data source.
The Forms plugin will also define extension points for registering forms and for adding fields to registered forms.
The Forms plugin is another example of a plugin that will not be a wrapper around any existing tool since there doesn't seem to be many, if any, such tools currently available.
Business applications typically do a lot of reporting.
This new plugin will...
This plugin will wrap the JasperReports report engine and will be used by the JLedger application for create Balance Sheet, Profit and Loss, and Trial Balance reports.
JLense Help System
The JLense help plug-in already exists but has not been tested. Also, I don't think that field-level or window-level help is working.
Integrate Eclipse Update Facility
Refer to the JLense Vision document for an overview of the deployment of the typical JLense application. An update facility is central to the JLense vision of creating zero-administration applications.
JLense intends to integrate the Eclipse Update Facility into it's set of core plugins. JLense will not provide a UI interface for adding arbitrary third-party plugins into a JLense applications. Rather, it is assumed that JLense applications will be updated solely from a central update server under the application developer's control.