1. Version 0.0.2 uses Log4j for logging, hence the necessity to configure

  2. JavaMail is used to send e-mail notifications to the users whose e-mail is known to Saeed about new documents and finished documents (signed by all recipients).

  3. UserManager now uses User beans more actively, instead of trying to get the info right from the database.

  1. Version 0.0.3 is a bugfix release. It fixes the bug with the insertion of new elements and the some productivity problems.

1. General Information

Saeed is (will be) a document management system. It is written in Java and uses a number of Java-related technologies, like JDBC, servlets, JSP, EJB, etc.

During the development the following tools are used:

  • Sun JDK 1.3
  • Sun J2EE SDK 1.2.1,
  • JBoss 2.4.1+Tomcat 3.2.3,
  • InterbaseCS LI-V6.0.1.

Presumably, it should work with any other RDBMS (in the future it will require BLOB support) and with any EJB/servlet containers. Though, if your EJB and servlet containers run under separate JVMs, some tuning may be necessary.

IMPORTANT: If you use other EJB/servlet containers, make sure that you have log4j and JavaMail installed and configured. They are included in the JBoss package.

Also Saeed uses a taglib called Ejbtags shipped for free by Orion.

The project was named after my old brave black permanently-wounded tomcat. `Saeed' means `Lucky' in Arab and this is also the name of a character in a great western-like movie (or, rather, eastern) `The White Sun of the Desert'.

If you don't like the name, you may call it `The System for Automatic Emission of Electronic Documents' :)

The project's download page is

The package named `saeed' is the Russian version and `esaeed' is the English one.

The CVS repository for Saeed is

2. History

This version is the first preliminary pre-release of the draft alpha-version :) The Saeed project was started on on Dec.4,2001.

3. Concepts

  1. Every DOCUMENT is a container that includes any number of elements (see below). A document has some attributes: name, author's ID, creation date, task (see below), recipient's ID, route (see below), due date (see below). A document may be in one of the following states: draft, sent, signed by all recipients.

    A draft document is a document in the work, being composed.

    A sent document is a document which was signed by it's author, but not by the recipient.

    A document signed by all recipients is finished, it may be moved to the archive.

  2. ELEMENTS are homogeneous pieces of information -- text, html, images, rtf and other files. (Currently only text/plain and text/html are supported). Elements also have attributes: creation date, author's ID, MIME type, etc.

  3. TASK is a group of documents which relate to one business procedure. For example, all documents concerning a preparation of a certain contract with `ACME Corp', might go to the task `ACME: Cont.#33'. Tasks may be created by any user who is allowed to. (Currently tasks are not implemented.)

  4. ROUTE is a sequence of recipients who should receive the document after it was signed by the previous users. Route can include not only user IDs, but also group IDs.

  5. DUE DATE is the date by which the document must be signed by all recipients.

  6. RECIPIENT is a user or a group, who has to sign the document. Recipient can add elements to the document, should he consider it necessary.

  7. DOCUMENT CREATION contains two steps: first, you have to create the document itself, supply the necessary attributes and save it. Second, you add elements (if necessary) and sign the document.

  8. The documents appear in one of folders: `Incoming', `Drafts', `Watched' and `Signed'. Incoming documents are those addressed to you. You are responsible for signing them in time. Drafts are, obviously, your unfinished documents. Watched documents are those that were composed by you and sent (signed). They may be of one of three kinds: finished (signed by all recipients), which are marked with red, outdated (not signed though the time is coming) which are marked in red, and just pending. Finished documents (green ones) may be moved to archive (in this version -- deleted).

  9. When a new document is created, a notification may be sent to it's recipients, if their e-mail is shown in the users' database.


  1. Download saeed or retrieve the sources from CVS. There are two binary packages and two CVS branches: Russian, called saeed, and English, called esaeed. Choose one of them and unpack. Packages include precompiled ear-files (Enterprise application archives) called saeed.ear
  2. First, set up a DBMS. Preferably, Interbase. PostgreSQL should work for you, too. Create a database and tables within. In the directory $SAEEDROOT/db you will find some SQL scripts which you can use to create tables. When you create the users' database, remember that at least one of them should be included into the group `admin' (see db/users.sql

  3. Install a JDBC driver for your DBMS.

  4. Install JBoss+Tomcat. On you will find packages which include JBoss and Tomcat preconfigured to run in one JVM.

  5. Go to $JBOSS/conf/tomcat and edit the file jboss.jcml. You should set up a DataSource for you database and bind it to the connection pool named `DocDB'.

    Then find the section titled 'Mail Connection Factory'. Set the JNDIName to SaeedMail and set appropriate values for User ans Password fields. Edit file.

    See directory $SAEED/contrib for an example of jboss.jcml. It is customized for the use of Interbase

    Don't forget to change The line with ConversionPattern should start with %d{yyyy-MM-dd HH:mm:ss}, otherwise JBoss logs will not include timestamps.

  6. Try running JBoss+Tomcat. (See docs)

  7. OPTIONAL: Edit web.xml file ($SAEEDROOT/war/WEB-INF/web.xml in the source tree and saeed.ear/saeed.war/WEB-INF/web.xml in the saeed.ear file). The parameter `encoding' specifies your default encoding. Remember that if you change it, you should also change the encoding in all JSP's.

  8. OPTIONAL: Change paths in the Makefile and compile Saeed by running `make'

  9. Deploy saeed.ear by running `make install' or by just copying saeed.ear to $JBOSS/deploy and point your browser to http://yourhost:8080/saeed which is the welcome screen. Or, you can go directly to the logon page: http://yourhost:8080/saeed/control or to the administration page: http://yourhost:8080/saeed/admin

  10. OPTIONAL: If you experience problems with productivity, try to comment out all log.debug() calls and re-compile Saeed.

Planned changes

There are just too much :) Here are the most important ones:

  • Archiving

  • A better "design" :)

  • Security: JAAS, check all pages for unauthorized access, close some beans' methods, etc.

  • Non-text elements (files): shift to BLOBs. Upload, download, show files.

  • Document routing

  • "Multiple recipients" -- ability to send a document to a number of users who do not belong to a single group.

  • Document templates

  • Task templates

  • Copy & paste elements

  • Introduce Scheme (Kawa?) as the scripting language.

  • Printing: convert elements into printable form (pdf for text elements) using templates.

SourceForge Logo
Dmitri Minaev
Last modified: Sat Jan 5 00:41:36 SAMT 2002