## 2 Related Work
### Configurable Process Tree  
Representing configurable process models as process trees has been addressed by [9; 10]. We have slightly redefined the definition of configurable process trees described by them in our proposed framework, in order to allow greater flexibility and expressiveness in the configurable nodes. A configurable process tree (CPT) represents a family of process models [25]. All processes of a family share the same tree topology, while differences are handled using configurable nodes. Applying a particular configuration to these configurable nodes produces a variant of the configurable process model, a derived process model. A configurable node can be set to enable (or allow), hide or block. Enable (allow) means the node is able to be visited; hide means the node is to be skipped over; and block means the node cannot be reached. The foundation of configurable process trees is described in [10] and also applied in [9].  
**Definition 4** (Process tree configurators).: \(\ominus=\{H,B,E\}\) _is the set of process tree configurators, and \(\ominus_{\times}=\{\{H\},\{B\},\{E\},\{H,B\},\{H,E\},\{B,E\},\{H,B,E\}\}\) is the set of all subsets of the process tree configurators, where:_  
* _H: hide a node. It makes a node unobservable, replacing it by a_ \(\tau\) _node._
* _B: block a node. It makes the leading path to this node unreachable. When blocking a node, several cases might occur; details can be found in_ _[_20_]__._
* _E: enable a node. It essentially allows a node to perform either as an operator or an activity, so that it behaves normally._  
**Definition 5** (Configurable process tree).: _A configurable process tree \(Q^{\pi}=(Q,\alpha)\) is comprised of a process tree \(Q\) with \(N(Q)\) nodes and a partial configuration function \(\alpha:N(Q)\
rightarrow\ominus_{\times}\) defining a configuration set  
Figure 3: Example of a process tree model.  
_for some nodes. \(N^{\alpha}(Q^{\alpha})\subseteq N(Q)\) is the set of configurable nodes, i.e., \(N^{\alpha}(Q^{\alpha})=\text{domain}(\alpha)\). For the sake of clarity, let us assume an ordering among the configurable nodes, i.e., \(n_{1},n_{2},\ldots,n_{|N^{\alpha}(Q^{\alpha})|}\). \(C(Q^{\alpha})\) is the set of all possible configurations of \(Q^{\alpha}\), i.e., \(C(Q^{\alpha})=\{\langle c_{1},c_{2},\ldots,c_{|N^{\alpha}(Q^{\alpha})|}\rangle |c_{i}\in\alpha(n_{i})\}\)._  
Figure 4 is an example of a configurable process tree \(Q^{\alpha}_{1}\) that contains four configurable nodes, listed from 1-4. Configurable Nodes 1, 3 and 4 can be either hidden or enabled, whereas configurable Code 2 can be either blocked or enabled.  
It is possible to apply a configuration to a configurable process tree in order to obtain a process tree, known as a derived process tree, as follows:  
Definition 6 (Derived process tree): Let \(Q^{\alpha}\) be a configurable process tree, and let \(c\in C(Q^{\alpha})\) be a possible configuration. \(\text{derive}(Q^{\alpha},c)=Q_{c}\) is the function that generates a derived process tree \(Q_{c}\) from \(Q^{\alpha}\) by applying the configuration \(c\), using the rules applied in [20].  
Figure 5 presents a running example of the execution of the derivation framework shown in Figure 2. A configurable process tree and an event log are the inputs, depicted in (a) and (b), respectively. The implemented derivation strategies use a common data structure to represent all the feasible configurations for all configurable nodes, shown in (c). Each derivation strategy allows obtaining a configuration, shown in (d), which is then used to derive a process tree, shown in (e). Figure 5 also depicts the notation for the process tree configurators and the model activities in (f) and (g), respectively.  
Figure 4: Example of a configurable process tree containing four configurable nodes.