Page 261 -
P. 261
9 The Runtime Environment 255
Fig. 9.6 Relational schema for Engine log (main relations shown)
TaskInstance tables are supplied by the Engine, which produces an identifier
(referred to generally as a “caseID”) that is unique across all instantiations of all nets
and tasks. It is formulated by first assigning the next available case number to a new
case instance, then using a dotted number formation to refer to its child instances.
So, for example, the root net of a new case instance might receive a caseID of “123”;
its first child task instance (i.e., a work item) will receive a caseID of “123.1,” its sec-
ond “123.2,” and so on. For a composite task, the subnet instance might be assigned
“123.3,” and its first work item “123.3.1”. This convention ensures that all instance
identifiers are unique.
The process log consists of nine tables:
Specification: A YAWL specification is uniquely identifiable through its internal
specification identifier (Identifier) and version number (Version) – all versions of
a specification share the same identifier. It also has a non-unique name assigned
to it at design time, which is perhaps more meaningful to a human reader than
the identifier. In addition, this table stores, for convenience, a reference to its root
net via a foreign key to the Net table
Net: Each specification contains one or more nets; this table stores data of each
net of each specification, from which net instances may be created
NetInstance: Each execution of a net is recorded in this table. This may represent
the start of a new case instance (i.e., if it is a root net) or the decomposition of
a composite task (i.e., a subnet). This table has fields to record the foreign keys
for the net from which the net instance has been created and, if the net has been
created from a composite task, the key of that task instance. It also stores a unique
identifier (NetInstanceID), and the “case ID” assigned to the net by the Engine
(EngineInstanceID)
Task: This table stores a reference to each task started by a net instance, and
contains a unique identifier, the name of the task and a foreign key reference
to its parent net. For composite tasks, the key of the net (decomposition) of the
task is also stored. The entries in this table refer to task definitions from which
task instances are created (and stored in the TaskInstance table), in the same way
as the Net table refers to process definitions from which process instances are
created (and stored in the NetInstance table)