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:
- create a user copy of the document in their workspace
- do some work
- 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
- Install Drupal and get acquainted with the structure of Drupal's modules and hooks.
- Study the working of the workspace module. This module provide an example of personal workspaces in Drupal.
- Get aquainted with Drupal's revision system.
- Get aquainted with CCK.
- Design the workflow and the required lifecycle hooks
- Write an implementation of the document management workflow
- Write an implementation of the personal workspace
- If time permits, create RSS and atom feeds for the personal workspaces
- If time permits, create 'group' workspaces based on organic groups

Comments
Do you have any comments on this?
I'm not really sure about the scope of this project. In my opinion it is alright.
Any concerns?
Should I put this in the SoC section on drupal.org?
clarify
thanks
by overview I mean, some
by overview I mean, some form of a list/directory/whatever other view is feasible of the documents. Should I use summary?
The second sentence is to allow a catch-all administrative control - for example, somebody is on holidays, but the needs his work or changes. If not overriding is possible, this can end up locked for a long time.
I updated the paragraph. I
I updated the paragraph. I hope it is clearer now.
Hmm.
How is this different from: http://www.angrydonuts.com/publishing_articles_a_tutorial ?
I mean, there are a lot of interesting things that can be done here, but I'm not sure that workflow module is really ready to have students working on it. It really needs a way to import workflows, for example, or for modules to create suggested workflows that can be modified. Once we have features like that that help workflow be a good API, then it's more plausible to create modules that do this sort of thing.
I actually don't suggest
I actually don't suggest using workflow and actions for this. The workflow and actions module improvements merit their own projects. But as you've said they need more work.
In an 'industrial', sorry, document management system you have the basic editorial workflow - something like with cvs, but usually it involves strict locking, and a variable set of fields associated with the document. A document can be not only text, think CAD files, movies, whatever else - thus the strict locking.
Properties can be implemented using CCK. The basic workflow needs separate code - whether it is in a module of it's own, or using workflows it needs to implement the needed functionality.
I need time to appreciate publishing module there, it might be what the doctor ordered :)
filemanager provides locking
If I'm not mistaken it could be the basis for such a system.
What I'm not sure of is the
What I'm not sure of is the scale of development needed in this case. It might need improvements to the workflow module, which then will become a too big. I might be wrong though.
Merlin, what do you think?
I think workflow is a good
I think workflow is a good choice for the basis, because really all workflow does is keep track of state during the lifetime of a document, which is a nice bottom layer. Workflow transitions can now be initiated programmatically, so really all that's missing from workflow is the ability for a module to define a 'default' workflow in the same way that Views defines 'default' tables. I.e, your module can define a workflow that has X states with Y transitions, and makes it available for an admin to modify.
You need a little bit of extra information for locking, but you can use Workflow to create a 'locked' state, and a publishing table to keep the metadata about it, such as who has it locked, when it was last locked, etc.
My most recent patch to workflow creates a workflow history, which I think is critical to a proper workflow, since one of the things I find important is the ability for editor/reviewer/author to hold a dialogue that gets recorded.
I completely agree
Vlado, if we could move in this direction it would give my heart warm fuzzies.
Me too
I like the workflow module, and probably it is a very good way to go. My concerns are only with the amount of work and/or the learning curve for the student. They will need to get aquainted with drupal, all the basics like hooks, nodes, nodeapi,... Additionally they'll have to go through actions and workflow modules.
Only then they can start going through with actual design and implementation. No problem in changing into that, but is it feasible. I think the proposal is open enough to allow for this option. If not let's make it less perscriptive.
Merlin, your analysis is correct. I've used workflow in very similar circumstances, ok not document locking, but still a lock state, so this is a "very good way to go", and tested.
Should we do a workflow module improvements proposal, basically workflow export/import, workflow tempates (suggested, modifiable workflows), etc... Sorry for borrowing your ideas Merlin =)
Don't be sorry! Getting all
Don't be sorry! Getting all our ideas together is what will make stuff like this be really really good.
Workflow improvements
Yes, we should. One thing I'd love to have is a workflow visualizer, aka Graphviz integration. I will do my best to get to this today; if someone else wants to write a workflow project that's fine too. I'm on the mentor list.
Convinced?
Vlado, if you are convinced of your proposal and if you've made any final edits based on feedback from the colleagues, please publish it on drupal.org.
http://drupal.org/node/59958
Too much
I think this is too much for one project.
I think implementation of full organic groups support and file "sharing" to others' workspaces is one project.
Workflow templates for common workflows and visualization is another project.
Editing the next version of a page while the old one is still visible to the public is another project.
It's unclear what you mean by document. vlado, do you mean like an MS Word document or just a content type instance?
A document is anything which
A document is anything which can serve as a document. A node, with a file attachment is a document. A filestore2 node is a document. A cck node with a a file type is a document. Any node type is essentially a document. This proposal is for a "higher" level revision control, and management based on top of the existing ones in drupal. The rest is nessesary sugar
For this particular project, no improvements to workflow should be done. The workflow stuff should be a different project. Actually more. It just happens that the initial discussion started here.