The Kuali Nervous System supports two different document types: transactional documents, which have a great deal of power and flexibility and are written to cause some system action to occur, and maintenance documents, which use XML configuration to "pre-build" the document, used to maintain data elements - our business objects.

Maintenance Documents

Maintenance documents create, retrieve, update, copy, and inactivate either a single business object or homogeneous collections of business objects. The ability to quickly specify forms to perform these actions make maintenance documents wildly useful; they make the care and feeding of business objects so easy. The chart module, for instance, has no transactional documents at all, because all of the work the module needs to do can be expressed in the form of creating and updating business objects - charts, accounts, object codes, and so on.

Transactional Documents

A transactional document represents not data that is being maintained, but an "action" that will occur in the system. Take the Internal Billing document. This is a financial document which charges one account for a service or goods and credits another account. Here, we're not really changing the core data of the chart, the accounts, or any of that. We're creating accounting lines with the sole purpose of an action: having them change the general ledger (adding money to one account and removing it from another). This is the essential difference between transactional documents and maintenance documents: while the maintenance documents do standard maintenance on data, here we want to perform an action.

That doesn't mean we're free of business objects, of course. A transactional document is itself a very special kind of business object; oftentimes, it includes heterogeneous collections of other kinds of business objects within it (though there is no requirement for it to do so).