Page 100 -
P. 100

2  The Language: Rationale and Fundamentals                      87
                           2.7 Syntax


                           This section presents a complete abstract syntax for YAWL. A YAWL specification
                           is a set of YAWL nets that form a rooted graph structure. Each YAWL net is composed
                           of a series of tasks. All of these notions are now formalized, starting with the YAWL
                           specification.

                           Definition 12. (YAWL Specification) A YAWL specification is a tuple = (NetID,
                           ProcessID, TaskID, MITaskID, VarID, ParamID, TNmap, NYmap, VarName, Data-
                           Type, VName, DType, VarType, VNmap, VTmap, VMmap) such that:
                              (* global objects *)
                             NetID is the set of net identifiers (i.e., the top-level process together with all
                              subprocesses);
                             ProcessID 2 NetID is the process identifier (i.e., the top-level net);
                             TaskID is the set of task identifiers in nets;
                             MITaskID   TaskID is the set of identifiers of multiple instance tasks;
                             VarID is the set of variable identifiers used in nets;
                             ParamID is the set of parameter identifiers used in nets;

                              (* decomposition *)
                             TNmapW TaskID   NetID defines the mapping between composite tasks and
                              their corresponding subprocess decompositions, which are specified in the form
                              of a YAWL net, such that for all t, TNmap.t/ yields the NetID of the correspond-
                              ing YAWL-net, if it exists;
                             NYmapW NetID ! YAWLnet, that is, each net has a complete description of its
                              contents such that for all n 2 NetID, NYmap(n) is governed by Definition 13,
                              where the notation T n denotes the set of tasks that appear in a net n. Tasks are
                              not shared between nets, hence 8 m;n2NetID ŒT m \ T n ¤ ∅ ) m D n . TaskID is
                                                                            S
                                                                                    T n ;
                              the set of tasks used in all nets and is defined as TaskID D  n2NetID
                             In the directed graph defined by G D .NetID; f.x; y/ 2 NetID NetID j9 t2T x  Œt 2
                              dom.TNmap/ ^ TNmap.t/ D y g/, there is a path from ProcessID to any node
                              n 2 NetID;

                              (* variables *)
                             VarName is the set of variable names used in all nets;
                             DataType is the set of data types;
                             VNameW VarID ! VarName identifies the name for a given variable;
                             DTypeW VarID ! DataType identifies the underlying data type for a variable;
                             VarTypeW VarID !fNet; Task; MIg describes the various variable scopings that
                                                         x
                              are supported. The notation VarID Dfv 2 VarID j VarType.v/ D xg identifies
                              variables of a given type;
                             VNmapW VarID Net  ! NetID identifies the specific net to which each net variable
                              corresponds, such that dom.VNmap/ D VarID Net I
   95   96   97   98   99   100   101   102   103   104   105