Road Map

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:

  • A server that provides a General Ledger web service. This General Ledger service provides a standard SOAP-based, interoperable web service based on a WSDL description of the service.
  • A client application that provides a Swing-based GUI to the JLedger web service.

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.
Most of the plugins that JLense has developed or plans to develop are merely wrappers around some other tool or a facade that is implemented by a collection of third party tools The only plugin that JLense has developed to date that is not such a wrapper is the UIWorks plugin that implements the JLense workbench. The only reason we developed this plugin was because an existing framework that met our requirements was not already available.

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...

ReleaseDescriptionStatusEstimated Completion Date
alpha 1UIWorks GUI frameworkCompleted
alpha 2Object Integration FrameworkCompleted
alpha 3Web Service SupportIn ProgressApril 1, 2003
alpha 4Authentication and Authorization SupportTo DoMay 1, 2003
alpha 5Distributed Transaction SupportTo DoJune 1, 2003
alpha 6FormsPartially CompletedJuly 1, 2003
alpha 7ReportingTo DoAugust, 1, 2003
alpha 8JLense Help SystemPartially CompletedSeptember 1, 2003
alpha 9Integrate Eclipse Update FacilityTo DoOctober 1, 2003
release 1.0JLense 1.0 is feature complete!Partially CompletedNovember 1, 2003

alpha 2

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.

The 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.
However, the other capabilities made available by the Object Integration Framework, the ability to call remote procedures and the ability to store and delete objects provided by other systems, are better left to well defined service interfaces.

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.

alpha 3

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.

alpha 4

Authentication and Authorization

A new plugin, org.jlense.security, will be created to encapsulate authentication and authorization functionality.

This new plugin will...

  • ...add a standard facility to the JLense workbench for presenting an authentication dialog to a user.
  • ...register workbench session attribute factories that can be used by client-side code to obtain authorization information. See the documentation for the org.jlense.uiworks.attribute.factories for more information about session attribute factories.
  • ...define workbench views for adding users, defining groups, and assigning permissions. These views can be used in JLense management applications.
  • ...provide a default JAAS implementation that will work with Axis. Will also provide appropriate JAX-RPC 'Handlers' to integrate JAAS with Axis.

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 administration section of the shortcut bar will have shortcuts to perspectives for defining users, groups, and priviledges.

The JLedger application will have only a few basic priviledges that grant permission for entering transactions and viewing reports.

alpha 5

Distributed Transactions

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...

  • Define a Singleton that other plugins can use to get an instance of java.transaction.TransactionManager(?) for managing transactions.
  • Include ...add a standard facility to the JLense workbench for presenting an authentication dialog to a user.

alpha 6

Forms

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.

alpha 7

Reporting

Business applications typically do a lot of reporting.
The JLense sample application, JLedger, is no exception.
JLedger requires reporting functionality to create and display Balance Statements, Profit and Loss reports, and Trial Balance reports.

org.jlense.reporting

This new plugin will...

  • ...add a standard dialog to the JLedger workbench for presenting a list of all available reports and for configuring the reports. This is similar in concept to the Preferences dialog in the JLense workbench.
  • ...will define a standard interface to be implemented by reports that will define a common interface that can be used to display, navigate, and print reports. This is similar in concept to the way that the IWizard interface is used to define of common interface for displaying and navigating multi-page wizards.
    This API does not supply any reporting capability, just the ability to display arbitrary reports in the workbench. Plugins are still responsible for generating thier own reports.
  • ...will define extension points for registering new reports.

org.jlense.jasperreports

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.

alpha 8

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.

alpha 9

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.