Entry workflow is undoubtedly one of the most desired features for Database module users. An enhancement is currently developed by Wiktor Wandachowicz and some discussion about it can be found down the Workflow support thread. More recent discussion was lost after the cluster crash in Nov, but it suggested that the enhancement should be completed fairly soon.
Workflow functionality is also developed for the Dataform module. Here is an illustration of current functionality. Comments and suggestions are welcome.
Entry workflow can be applied to a Dataform by adding an Entry States field and some Entry Access Rules as needed.
The States field allows for defining a list of states and a list of transitions with permissions and notifications. Undefined transitions are allowed by default to users with manageentries capability. There is no limit on the number of states.
Entry access rules allows for setting access control for entries with a certain content, e.g. entry state. So for instance if we want to prevent students from updating or deleting submitted entries in this workflow, we can add a rule such as the following:
In the definition of the rule, the subset of applicable entries can be determined by selecting an existing filter and/or by adding search criteria. In this illustration the rule uses a filter that is set to find all entries in state Submitted or higher.
Access is set in the rule's context permissions:
Then in entries list the entry states can be displayed and set according to permissions. In this illustration the current state is green, permitted transitions are orange and other states are grey.
Tea Cher who is the teacher and has manageentries capability can set all states for all entries:
Joh Doh has 2 entries, one submitted and John can no longer update or delete it and the other is still a draft and John can update, delete or submit it.
Jane Duh has 1 entry that has been submitted and reviewed and so she can no longer update or delete it.
Hope all this makes sense. Comments and suggestions are welcome.