## 2 WFT-Net Model
### The Firing Rule of WFT-Nets  
In a workflow net \((P,T,F)\), for any node \(x\in P\cup T\), its pre-set and post-set are defined as \({}^{\bullet}x=\{y\in P\cup T|(y,x)\in F\}\) and \(x^{\bullet}=\{y\in P\cup T|(x,y)\in F\}\). Let \(m\): \(P\)\(\rightarrow\)\(\mathbb{N}\) be a marking function; if \(\mathbb{N}\) is the non-negative integer set, let \(m_{0}\) be the initial marking, and each marking can be represented as a multi-set. For instance, a marking \(m_{1}=[2p_{2}+4p_{5}]\) is equivalent to \(m_{1}(p_{2})=2\) and \(m_{1}(p_{5})=4\). A transition \(t\) is enabled at a marking \(m\) when \(m\)\(\geq\)\({}^{\bullet}t\). This is denoted by \(m[t)\). A new marking \(m^{\prime}=m\ -\ ^{\bullet}t+\)\({}^{\bullet}\) is generated by firing an enabled transition \(t\) at \(m\). This is denoted by \(m[t)\)\(m^{\prime}\). For a WFT-net, let \(m\) denote the marking of its underlying Petri net. In addition, three assignment functions are introduced to represent the states of the data elements, data tables, and guards in the WFT-net. Figure 2: An example of WFT-nets. (**a**) Basic business logic and process/persistent data operations; (**b**) database in terms of two data tables \(R_{1}\) and \(R_{2}\). \(\theta\): \(\mathcal{D}{\rightarrow}\{\top,\bot\}\) represents the state of each data element \(d\). \(d\) becomes _defined_ if there is a transition attached with a writing operation of \(d\) fired, i.e., \(\theta(d)=\top\). \(d\) becomes _undefined_ if there is a transition attached with a deleting operation of \(d\) fired, i.e., \(\theta(d)=\bot\). Note that a transition cannot simultaneously have a writing label and a deleting one that are both related to the same data elements, i.e., \(\forall t\in T\), \(\mathcal{D}^{wt}_{t}\cap\mathcal{D}^{dt}_{t}=\emptyset\). In addition, if a transition simultaneously has a writing label and a reading one that are both related to the same data elements, i.e., \(\exists t\in T\), \(\mathcal{D}^{wt}_{t}\cap\mathcal{D}^{dt}_{t}\
eq\emptyset\), as a default, each of the same data element is read first and then written. \(\omega\): \(\mathcal{R}{\rightarrow}\{\top,\bot\}\) represents the state of each data table \(R\). \(R\) is _defined_ if its attributes and their domains are given, i.e., \(\omega(R)=\top\); otherwise, \(R\) is _undefined_, i.e., \(\omega(R)=\bot\). For the sake of analyzing a WFT-net, each of its data tables has already been defined and initialized by giving several tuples. \(\delta\): \(\Pi{\rightarrow}\{true,false,\bot\}\) represents the state of each predicate \(\pi\). If \(\exists d\in\mathcal{D}^{\pi}{:}\theta(d)=\bot\), \(\forall\)\(\exists R\in\mathcal{R}^{\pi}{:}\omega(R)=\bot\), then \(\delta(\pi)=\bot\); otherwise, \(\delta(\pi)=\textit{true}\) or \(false\). Similarly, \(\eta\): \(\mathcal{G}_{\Pi}{\rightarrow}\)\(\{true,false,\bot\}\) represents the value of each guard. A state of WFT-nets presents the status of the distribution of tokens, data elements, data tables, and predicates, which is generally called a _configuration_ and denoted by \(c=(m\), \(\theta\), \(\omega\), \(\delta)\). The initial configuration of a WFT-net can be denoted as \(c_{0}=(m_{0}\), \(\{d_{1}{\mapsto}\bot\), \(\cdots\), \(d_{m_{1}}{\mapsto}\bot\), \(\{R_{1}{\mapsto}\top\), \(\cdots\), \(R_{m_{2}}{\mapsto}\top\}\), \(\{\pi_{1}{\mapsto}\bot\), \(\cdots\), \(\pi_{m_{3}}{\mapsto}\bot\}\)). For example, the initial configuration of Figure 2 can be \(c_{0}=([\textit{start}]\), \(\{\textit{aid}{\rightarrow}\bot\), \(\textit{ac}{\rightarrow}\bot\), \(\textit{bid}{\rightarrow}\bot\)}, \(\{R_{1}=\{(\textit{aid}_{1},\textit{ac}_{1})\}\), \(R_{2}=\{(\textit{bid}_{1},\textit{aid}_{1},\textit{ac}_{1})\}\}\), \(\{\pi_{1}{\mapsto}\bot\), \(\pi_{2}{\mapsto}\bot\}\)).