1 / 39

Presentation

Presentation. Recap. A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer injection and loose coupled approach of having an MVC architecture. Rich UI achieved using ExtJS 4.0 Framework at UI layer.

heinz
Télécharger la présentation

Presentation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Presentation

  2. Recap • A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. • Taken advantage of Spring’s multi layer injection and loose coupled approach of having an MVC architecture. • Rich UI achieved using ExtJS 4.0 Framework at UI layer. • Communication achieved using AJAX calls (XMLHttpRequest) from Client to Server using JSON objects.

  3. Recap Architectural view of ECMS

  4. Design Use Case #1 (UI Layer)Maintain Air Freight Job Records

  5. Design Use Case #1 (Service Layer)Maintain Air Freight Job Records (ADD)

  6. Design Use Case #1 (Service Layer) Maintain Air Freight Job Records (Update)

  7. Design Use Case #1 (Service Layer) Maintain Air Freight Job Records (Remove)

  8. Design Use Case #1 (Service Layer) Maintain Air Freight Job Records (List)

  9. Development

  10. Development Approach • A reference model developed for an important use case (Air Job) including UIwidgets, controllers, services and DAOs. • After full requirement analysis Entities and DAO layer interfaces are finalized, and implemented. • Individual was assigned use cases to construct both UI components and Service components.

  11. Flow of Development Activities Requirement Gathering and Analysis Entity and DAO Implementation Continuous Integration and Test Design and Development Of Use Cases Reference application development Improvement And updates in Reference App

  12. Development Activities

  13. Important Features

  14. Hibernate (DAO Layer)

  15. Grid View Search (Filter Approach) • All use cases has their entry point at Grid Panels, all Form panels are reached by selecting grid data record and by pressing “Show Details” Button on the grid. • Grid Panels are build much powerful to provide functionalities such as • Filter/Search Records ( Including advanced search) • Refresh the Grid without navigating away from the page. • Pagination. • Add, Remove and Update records, all in one request to server (which enhance usability and makes less server calls)

  16. Filter/Search Records

  17. Transaction Management and Concurrency Control • Optimistic Concurrency control mechanism is used. • This is achieved by version checking against session and retrieved objects, upon any update and delete.

  18. Versioning to control Concurrent updates RequestContextHolder Request Session Version ECMS DB DAO Version

  19. Spring Security • Plug and play way of apply security to the web application. • More configuration less of coding to maintain the security aspects of the application. • Aspect Oriented Programming model (AOP) • Spring Security 3.0 release is experimented and successfully plugged into Spring Framework 3.x. • Secure and extremely secure folders are created to secure static and dynamic contents of server. • Access level of such folders are described in security configuration xml. • Cryptography is used to protect password from exposure.

  20. Security Context Security Context Authentication Object Authority WebAuthenticationDetails Object User

  21. Security Schema

  22. Event Based UI programming model • Following important events are used to make server calls upon events trigger when User interacts with the system. • beforeShow (to assemble different forms and their data before it shown to the user.) • afterRequest (to fetch the records to sync UI store with database asynchronously and avoid any race conditions) • beforeRequest (to set parameters to the request) • beforeDestroy (to avoid destroying the pop-up windows and forms to enhance the performance of the system) • expand (upon expanding the accordion layout’s panels) • Collapse( upon colapsing the accordion layout’s panels)

  23. Race Conditions • During the coding, many race conditions are discovered, because of asynchronous nature of the requests. • Among such scenarios the most encountered one is, when a code segment is in under UPDATE or CREATE operation, during this time sending a SELECT request for the same record within the same session is found to be a race condition. • Above race condition identified, and resolved by using afterRequest event handle the SELECT request to update the UI Store.

  24. Race Conditions-Problem Result with no updates Race condition here

  25. Race Conditions-Solution After request event fired

  26. Example of the code

  27. Technical Challenges • Novelty of technology at UI layer. • ExtJS documentation studied and referenced. • Wiki pages were used to share the knowledge within the team. • www.code.google.com/p/iss2011s7/w/list • JSON Parser couldn't able to parse if object properties contains null. • Work around • Null values are replaced with empty string before it transmitted from server to UI layer. • Long term fix strategy • JSON Parser to be fixed.

  28. Technical Challenges • Handling complex objects at UI Layer (ExtJS) • mapping between objects • Lazy Fetching • Lazy fetching was not able to achieve because of JSON Parser limitation of unable to handle null values.

  29. Future aspects and improvements • Refreshing the stale records by estimating user’s operation Rest Time. • UI layer can be enhanced to have capability to refresh the data grids by estimating user’s rest time, and if it reaches a particular threshold value, the system would refresh the data grid by using beforeActivate event of the RowEditor. • Above would avoid user to get into a situation of updating a stale record on grid.

  30. Future aspects and improvements • UI Update for Mobility in work • Proposing client for an update of UI version for Tablets and Smart Phones. • ExtTouch( A mobile javascript framework) shall be used to built tablet and smart phone applications. • HTML 5 standards. • Only User Interface shall required to update and service shall remain as it is. • This is to have an advantage of mobility and instant access to the application with greater performance.

  31. Future aspects and improvements • Integration Requirement • Understand from client that operations are not integrated to the Accounts system. • Proposal for an integration between both of the systems can be consider.

  32. Future aspects and improvements • Concurrent updates acknowledgement- • Grid Panel records can be highlighted in red color of text to notify users that the local copy of the record is stale or no more fresh, and any updates to the stale data will not be persist in database. • The above can be achieve by Observer Design Pattern and Push model of communication from server.

  33. Doing It Again • After getting full understanding of the domain (cargo management), we would like to go for more generalized and multi-tenancy approach of building this application. • Metadata entity model can be used instead of rigid domain model, by which we can achieve customization requirements of data grids, forms and any other view panels for different customer. • Spring’s web service framework can be used to expose server side operation as web services, if necessary. • Releasing it as a software as a service (SaaS).

More Related