18 Chapter 4. WAF Component: Services
4.10. Workflow Service
Workflows allow specialized members of a group to collaborate using a standard process. Developers
can define new workflows using the workflow service.
A workflow contains a set of tasks, each of which may depend on one or more other tasks. A task is a
single unit of work. It can be enabled, disabled, orfinished. A task may beassigned to a useror group.
Section 11.4.1 Simple Workflow describes the components of the simple workflow and how to create
workflows and assign them to users and groups.
4.11. Versioning Service
The goal of thethe versioning system is toprovide facilities for versioning data objects. This involves
recording information about changes made to the data in order to be able to:
1. Roll back to an earlier point in a data object’s history.
2. Undelete a data object (corollary of ability to perform rollback).
3. Compute the difference between any two versions of the data object.
To illustrate the last point, suppose you want to know the difference between the Jan 12 and Apr 19
versions of an article. The versioning service can tell you that the article’s title changed from Ravioli
is better than spaghetti to Macaroni is better than spaghetti, and its by-line changed from Guy Lewis
Steel to Guy Lewis Steele, Jr.
The service does not provide redundant storage. If you delete the versioned article in a context where
the versioning service is not available (either because it isturned off, orbecause you aremanipulating
the database directly through JDBC or command-line client), there is no way for the versioning
service to restore it. It is not a substitute for regular database backups.
The service is provided transparently. There is very little that a developer has to do in order to make
their data versioned. To gainconceptual understanding of the versioning service, one mustbe familiar
with the key concepts of persistence: data objects and PDL (see Section 2.4 Persistence and Domain
APIs (DataObject, DataAssociation, DataCollection, DomainObjects), Section 2.3 Persistence Defi-
nition Language (PDL)). For a more detailed explanation of versioning, please refer to Section 11.5
Versioning Tutorial.