Short Description:

Create a Drupal module, which implements a Document Management workflow.

Motivation

Drupal has all of the essentials for a document management platform - document revisions, classification, support for storing a variety of document types. It lacks support for the typical document management workflows used in the industry.

Problem description

A typical workflow might look as this:

  1. create a user copy of the document in their workspace
  2. do some work
  3. commit the document back

There are workflow variations stemming from different document locking and merge strategies, but the bird's eye view is along the above outline.

The module will need to implement a personal workspace view, manage the outlined workflow and provide hooks for the implementation of different document locking and merge strategies. A simple workflow should be implemented to showcase the document manager.

The module should be implemented on top of CCK, to allow for flexible document property definitions. This is very important for later document analysis and automatic classification.

Success criteria

The project will be deemed successful, if a user can check-in/reserve a document for "private" use. Work on it. Merge it back to the "public" pool of documents.

The user must be able to see what documents are they working on. An administrator, should be able to see which document is locked/being used by whom and unlock/unreserve documents if needed.

Roadmap

  1. Install Drupal and get acquainted with the structure of Drupal's modules and hooks.
  2. Study the working of the workspace module. This module provide an example of personal workspaces in Drupal.
  3. Get acquainted with Drupal's revision system.
  4. Get acquainted with CCK.
  5. Design the workflow and the required lifecycle hooks
  6. Write an implementation of the document management workflow
  7. Write an implementation of the personal workspace
  8. If time permits, create RSS and atom feeds for the personal workspaces
  9. If time permits, create 'group' workspaces based on organic groups

Postscript

There is a variety of possible ways to implement a solution for this problem. This tutorial demonstrates one approach to solving a similar problem.

Comments on this proposal

Generic check-in/check-out
sun - July 14, 2006 - 08:31

I was wondering if this project shouldn't be altered to allow a generic check-in and check-out for any node type. IMHO it does not matter what kind of "document" has to be managed in a "repository" for multiple users. Preventing a user to edit a node which is currently edited by another user is all that matters.

Although one could argue that files need a special treatment to achieve this goal (moving files between workspace and file storage), I would propose to keep this project one step ahead, checking the logical status of a node in front of allowing a user to edit it.

Daniel F. Kudwien
unleashed mind

Comments

sgarcata’s picture

The "this tutorial" link under the Postscript section fails.

arysom’s picture

found a copy on wayback machine and replaced link