seeddms-code/README.Workflow
2014-01-08 06:32:00 +01:00

90 lines
4.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Workflows in SeedDMS
====================
SeedDMS supports approval and review of documents for a long time.
In many cases this is sufficient for a simple workflow management.
Nevertheless there was growing demand for a more powerful document
workflow. Since version 4.0.0 SeedDMS allows to define arbitrary
workflows for each document content. In order to understand how
workflows in SeedDMS work, one has to understand how a workflow is modelled.
Let's start with a definition of some terms.
workflow: a list of document states and transitions. A workflow starts
in a preset initial state and traverses along the transitions into other
states until no more transitions are possible.
state: the current status of a document (actually a document content)
A state can be for example 'rejected', 'approved', 'waiting for qm'.
Document jump from state to state when transitions are fired.
States are the nodes of a graph.
transition: a transition is the change from one state to a new state
Transitions are the edges of a graph. A transition can only be
triggered by a given list of users and groupѕ, when a defined action
is run. Such an action can be 'approve', 'revise', 'reject', etc.
transitions may need more than one trigger to fire, e.g. if several
users have to approve a document.
trigger a transition: a user runs an action on the document which possibly
changes the state. Internally this is identical to triggering a transition.
Such a trigger may or may not change the state of the document,
because there could
be other users which also have to trigger the transition.
After each trigger of an transition it will
be checked whether all conditions are met to change the state.
Triggers are currently only implemented for user interaction, but
other triggers could be added.
action: the actual operation run on the document. Each transition has
an action which when run, triggers the transition. Actions have just a name.
sub workflow: The modelling of a workflow is identical to a regular
workflow. Any workflow can be used as a sub workflow. Branching into
a sub workflow is only possible if the current state is equal to the
initial state of the sub workflow and the user is allowed to trigger
the next transition in the current workflow.
A workflow and a sub workflow are just a list
of transitions and an initial state. There is no principal difference
between the two and they are equally modelled. Starting from an initial state
there are a number of possible transitions ending in a new state. Each
transition can only be triggered if the user has the right to do so.
A workflow can be assigned to a document just like any other attribute
if the user has sufficient rights. Once a workflow is assigned, the document
will be in the initial state of the workflow. As long as the workflow
has not left its initial state, it can be removed from the document by
any users with write permission on the document. Once it has left the
initial state it cannot be removed without rewinding the workflow to
its initial state. Rewinding the workflow will remove the log of triggered
transitions and set the document status on the initial state of the
workflow. Rewinding can only be done by administrators.
The purpose of sub workflows is to replace a transition with more
states in between. Such a case can happen, if approval or rejection
of a document is put in charge of a group of persons, e.g. a department.
If the department head decides to set up its own workflow within his
department, he can run a sub workflow. During the lifetime of the sub
workflow, the former workflow (parent workflow) will be paused. Sub workflows
can only be started if the current document state is equal to the initial
state of the sub workflow.
In order to return to the parent workflow two conditions must be met:
1. the state of the document must be a valid state in the parent workflow
2. the person initiating the return to the parent workflow must be allowed
to trigger the transition which was replaced by the sub workflow
The second condition requires all end states in the sub workflow, also
being a state in the parent workflow. Currently this is not checked before
entering the sub workflow.
A workflow that was accidently added to a document can be removed
as long as it is still in the initial state of the workflow. Once
a transition into a consecutive state has happemed the workflow cannot
be removed anymore. In such a case the administrator has to rewind
the workflow, which removes all triggers including the users comments
and resets the initial state. The same procedure is true for sub workflows
as well. Once a sub workflow has started it can only be left as long
as it is in its initial state or has reached a state in the parent
workflow. Leaving a workflow inbetween will required to rewind it to
the begining and dismiss all transitions done so far.