View providers driven applications

View providers driven applications(vpda) is java based application framework for building applications composed from server components - view providers. View providers are server components which define user interface and user control. Client platform is just presentation engine, there is never any concrete application logic there. VPDA is 4 tier apllication framework with all needed infrastructure. This means communication between client and server, server management, deployment.

Presentation tier

VPDA does not require any concrete client. It uses abstract client which can be implemented using concrete client platform. Typically developer does not need modify this tier , it is implemented like common renderer engine driven from server. Client implements View provider user interface for server components. There is never any concrete application related code, only common handling of commands received from servers. From deployment view, this tier consists from view provider ui located on client and view provider components located on server. Now there are 2 client platforms : swing for desktop applications and wingS for web applications.

Controller tier

Application workflow is implemented on server side. Each view provider server component provides controller logic for client. It can send back to client commands which drive client application flow. This way we have controller and bussiness logic very close. Also menu is defined on server side, client just fetches and renderers menu. Controller tier is using abstraction of client , so you develop application using same code regardless whether presentation is on swing or web.

Bussiness logic tier

Bussiness logic tier is provided using bussiness services with transactional support. There are two implementations there : Spring transactions and J2EE. This tier can be very easily called from controller tier.

Persistence tier

Persistence tier is application specific, framework provides very good support for Java Persistence API. There is also small library for mapping java classes to database tables. This way we can create DB model with no dependency to DB venndor and use it in JPA and also for Controller tier.

Current status

Key features of framework are now finished. There are many technical fetaures planned, but the core is really stable. Too summarize all implemented fetures :

  • Swing client
  • Web client using WingS
  • Spring plain server
  • EAR tested on Glassfish
  • Full CRUD support
  • Master detail for list view providers
  • Fetches
  • JMX connector
  • Sample employee application

Planned features

  • Write developer manual
  • Technical features of framework
    • Enhance configuration of both client and server side
    • Test DDL generation from Data modeling module also for DB2,Oracle
    • Add support for Hibernate and OpenJPA (maybe 5 classes at all)
    • Try integrate with Jasper Reports
  • Framework features
    • Complete View providers API
    • Add common searching for each List view provider
    • Use delegation instead of inheritance for server view providers components