
The objective of this project was to create an enterprise application infrastructure for image-enabling multiple lines of business at a large bank. The bank wanted to enable a reusable suite of imaging applications which could be easily configured to work for each line of business rather than repeatedly building applications from scratch. There are three major components used to implement this strategy: (1) an enterprise-scale document index database design, (2) the suite of reusable document imaging applications (illustrated in the diagram above) and (3) an object-oriented hierarchical class library for developers.
The document index database was designed from the beginning with an attempt to anticipate all future lines of business which would become image-enabled. This forced the team to consider carefully what index values could and should be made generic, and how to accommodate the variety of values required without inflating the database unnecessarily. The index database also implements indices that support a hierarchical document organization structure. It is flexible so that each line of business can organize documents as hierarchically or "flat" as they require.
The reusable suite of applications cover those basic tasks which pop up repeatedly in imaging implementations (see the diagram above), yet have different configuration requirements each time. These different configurations are handled by setting up one database table and one configuration file which contains dozens of parameters. The "look and feel" of these applications remains consistent throughout the enterprise because different lines of business are in fact using the same programs, however the details of application behaviour are specifically tailored by their departmental configuration.
Finally there are of course situations where some applications still have to be built to fulfill specialized requirements. This is were the object class library comes into play. It supplies high-level image services objects to developers which greatly speeds development time. In addition it gives custom applications consistency, and for the development cycle it provides high code reuse and improves maintainability.