Mindoo Blog - Cutting edge technologies - About Java, Lotus Notes and iPhone

  • Developing a Composite Application from scratch (1)

    Karsten Lehmann  27 May 2009 14:38:39
    With this posting I would like to start a new series in this blog. It's about the development of a new application from scratch that is based on Composite Application technology.

    The idea is to build a flexible and extensible document management system step by step and documented it in this blog.

    I know there are already a lot of document management systems for Lotus Notes. However, by using Composite Application technology, a lot of development challenges can be solved in a better way than with classic Lotus Notes development.
    Here are some of those challenges:

    Problem 1: Distribution of filing information all over the documents

    The main problem of classic Lotus Notes applications is that developers tend to store too much information in the content documents. That's something that is caused by the design of Notes views: classic Notes views can only show data that is actually stored within the displayed documents. So if you want to have several views, e.g. categorized by company name, company address, contact person, filing structure or document type, all these information has to be stored in the documents. They are inherited from somewhere in the system. From keyword lists, a filing tree or an address database.
    That's ok, when those values do not change. But often there are changes, like someone moving or renaming a filing tree element. That results in many document updates. In fact for all documents below the filing tree element and all the child elements. And document updates are bad. Document updates require view refreshes and those refreshes slow down replication and application performance.

    To put it another way: Avoid child updates.

    Problem 2: All documents in one database

    The reason is the same as for problem 1. Classic Notes views can only display data in their own database, they cannot merge data from several data sources. If you want to see a complete filing tree with all the documents (e.g. address data, mail conversation, support requests etc.), all the data needs to be stored in one database. That blows up your database, and it blows up the view indices inside the database.

    Data should stay separated in its own database.

    Problem 3: Hard coded UI and application logic

    Of course all the customers have the same taste! They want the application exactly the way we designed it. ;-)
    No, not really. Many customers have change requests. The system should be flexible enough to be modified without much effort and impact on other parts. That's difficult in classic Notes development. You leave some empty subforms in your code that can be filled with customer fields. You offer a configuration database to activate/deactivate/customize parts of your application. Other changes require the modification of design elements and it's hard to maintain and update the database later on. There is no standard way for adding customer functionality and clean interfaces in classic Notes development. Every company defines its own extension "standard".

    The application that we design and develop in this series, will present and discuss some of the new things an application developer gets with the Lotus Notes R8.x Standard Client.
    It will not contain many features, but I hope you get the idea behind all those technical improvements and how you can benefit from them.
    We're quite heavy in project work at the moment, so I cannot promise to publish progress reports in short intervals. Please be patient and subscribe to this blog.

    Ok, let's get started.
    There have been enough small samples. Let's test all this stuff in real-life.