Object relation mapping is mainly handled in the persistence layer. Hibernate as an Open Source framework was chosen to implement the persistence tier. Hibernate is powerful, ultra-high performance object/relational persistence and query service for Java. Hibernate allows to develop persistent classes following common Java idiom - including association, inheritance, polymorphism, composition, and the Java collections framework. Hibernate allows to express queries in its own portable SQL extension (HQL), as well as in native SQL, or with Java-based Criteria and Example objects, thus giving the chance of being completely independent of the DBMS.The Business Layer was implemented upon the spring framework. Spring is the leading full-stack Java/J2EE application framework; Spring delivers significant benefits thus reducing development effort and costs while improving test coverage and quality. The two basic modules used were the core and the ORM spring packages. The Core package is the most fundamental part of the framework and provides the Dependency Injection features allowing managing bean container functionality. The basic concept here is the Bean Factory, which provides a factory pattern removing the need for programmatic singletons and allowing decoupling the configuration and specification of dependencies from your actual program logic. The ORM package is used to integrate with the object-relational mapping APIs, Hibernate, thus giving the chance to use Hibernate in combination with all the other features Spring offers, like simple declarative transaction management.There are literally several web development frameworks available, Struts was chosen since it's the most stable and provides some key benefits; it's based on a Model 2 MVC implementation, support for internationalization (I18N) a critical point since we develop multi language applications, includes a rich set of JSP tag libraries and contains many extension points for customization.Because data are heavily distributed and transferred between the different modules of the SPS system the MVC model is a key design issue in the developed system. The need for a highly interactive system managing heavy data transfers is managed through a set of AJAX library system developed in the company. The AJAX scripts running on the client side offers a lot of quality added features to the SPS system. Both XML and JSON (JavaScript Object Notation) are used to interchange data between the client and the server tiers, JSON is a lightweight data-interchange format.Reports are developed using crystal reports, while an add-hoc reporting tool is presented to provide users with the ability of constructing new reports in a fast and easy way.One of our application strong features is our graphic module; we use the latest technology to visualize some tasks on the web for the first time like berth planning and yard planning. A different user interface library was also implemented using macromedia flash technology. These proprietary modules were designed to achieve more graphical features and better performance for special users with higher cost. The abstract architecture of one of the modules, viz. the Berth planning module, which is heavily based on a rich graphics interface, is shown in the second figure. |