<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Graphical Framework for Supporting Mass Customization</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Dario Campagna Dept. of Mathematics and Computer Science University of Perugia</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Many companies deploying mass customization strategies adopt product configuration systems to support their activities. While such systems focus mainly on configuration process support, mass customization needs to cover the management of the whole customizable product cycle. In this paper, we describe a graphical modeling framework that allows one to model both a product and its production process. We first introduce our framework. Then, we outline a possible implementation based on Constraint Logic Programming of such product/process configuration system. A comparison with some existing product configuration systems and process modeling tools concludes the paper.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Product configuration systems are software of interest for
companies deploying mass customization strategies, since
they can support them in the management of configuration
processes. In the past years many research studies have been
conducted on this topic
        <xref ref-type="bibr" rid="ref17 ref7">(see, e.g., [Sabin and Weigel, 1998])</xref>
        ,
and different software product configurators have been
proposed
        <xref ref-type="bibr" rid="ref10 ref13 ref14 ref5 ref7">(see, e.g., [Fleischanderl et al., 1998; Junker, 2003;
Configit A/S, 2009; Mylla¨rniemi et al., 2005])</xref>
        .
      </p>
      <p>
        Process modeling tools, instead, allows one to effectively
deal with (business) process management. In general, they
allow the user to define a description of a process, and
guide she/he through the process execution. Also within
this field it is possible to find tools and scientific works
        <xref ref-type="bibr" rid="ref1 ref15 ref18 ref21 ref4">(see, e.g, [White and Miers, 2008; ter Hofstede et al., 2010;
Pesic et al., 2007])</xref>
        .
      </p>
      <p>Mass customization needs to cover the management of the
whole customizable product cycle, from product
configuration to product production. Current product configuration
systems and researches on product configuration, focus only
on product modeling and on techniques for configuration
process support. They do not cover product production process
problematics, despite the advantages that coupling of product
with process modeling and configuration could give.</p>
      <p>This work is partially supported by GNCS and MIUR projects.</p>
      <p>
        Inspired by the works of Aldanondo et al.
        <xref ref-type="bibr" rid="ref1 ref21">(see, e.g.,
[Aldanondo and Vareilles, 2008])</xref>
        , we devised a graphical
framework for modeling configurable products, whose producible
variants can be represented as trees, and their production
processes. The intent of our framework is to allow the
propagation of consequences of product configuration decision
toward the planning of its production process, and the
propagation of consequences of process planning decision toward the
product configuration.
      </p>
      <p>The paper is organized as follows. First, we introduce our
framework in Sect. 2. Then, in Sect. 3 we show how a
configuration system based on Constraint Logic Programming can
be implemented on top of it. A comparison with some of the
existing product configuration systems and process modeling
tools is outlined in Sect. 4. An assessment of the work done
and of future research directions is given in Sect. 5.
2</p>
    </sec>
    <sec id="sec-2">
      <title>A Graphical Framework for</title>
    </sec>
    <sec id="sec-3">
      <title>Product/Process Modeling</title>
      <p>In this section, we present the PRODPROC graphical
framework (cf. Sections 2.1 and 2.2). Moreover, we provide a
brief description of PRODPROC semantics in terms of model
instances (Sect. 2.3).</p>
      <p>A PRODPROC model consists of a product description, a
process description, and a set of constraints coupling the two.
To better present the different modeling features offered by
our framework, we will exploit a working example. In
particular, we will consider a bicycle with its production process.
2.1</p>
      <sec id="sec-3-1">
        <title>Product Modeling Features</title>
        <p>We are interested in modeling configurable products whose
corresponding (producible) variants can be represented as
trees. Nodes of these trees correspond to physical
components, whose characteristics are all determined. The tree
structure describes how the single components taken together
define a configured product.</p>
        <p>Hence, we model a configurable product as a multi-graph,
called product model graph, and a set of constraints. Nodes of
the multi-graph represent well-defined components of a
product (e.g., the frame of a bicycle). While edges model
haspart/is-part-of relations between product components. We
require the presence of a node without entering edges in the
product model graph. We call this node root node. A
product model represents a configurable product. Its
configuration can lead to the definition of different (producible)
product variants.</p>
        <p>Each node/component consists of a name, a set of variables
modeling configurable characteristics of the component, and
a set of constraints (called node constraints) involving
variables of the node and variables of its ancestors in the graph.
Each variable is endowed with a finite domain (typically, a
finite set of integers or strings), i.e., the set of its possible
values. Constraints define compatibility relations between
configurable characteristics of a node and of its ancestors. The
graphical representation of a node (cf. Fig. 1) consists of a
box with three sections, each containing one of the elements
constituting a node.</p>
        <p>Node name
Node
variables
Node
constraints</p>
        <p>Edge label
Cardinality
constraints</p>
        <p>Node name</p>
        <p>Node
Card variables</p>
        <p>Node
constraints</p>
        <p>In the description of a configured product, physical
components are represented as instances of nodes in the product
model graph. An instance of a node N odeN ame consists
of the name N odeN ame, a unique id, and a set of variables
equals to the one of N odeN ame. Each variable has a value
assigned. The root node will have only one instance, such
instance will be the root of the configured product tree.</p>
        <p>Let us consider, for example, the node Frame of the
(fragment of) product model graph for a bicycle, depicted in
Fig. 2.1 The section Frame variables may contain the
following couples of variables and domains:
hF rameT ype; fRacing bike; Citybikegi;
hF rameM aterial; fSteel; Aluminum; Carbongi:
While in Frame constraints we may have the constraint</p>
        <p>F rameT ype = Racing ) F rameM aterial 6= Steel:
This constraint states that a frame of type racing can not be
made of steel. An example of instance of F rame is the triple
hF rame; 1; fF rameT ype = Racing; F rameM aterial =
Carbongi. Note that values assigned to node instance
variables have to satisfy all the node constraints. For the node
Wheel (that also appears in Fig. 2) we may have the variables
hW heelT ype; fRacing bike; City bikegi;
hSpokeN umber; [18; 28]i;
and the constraints</p>
        <p>W heelT ype = hF rameT ype; F rame; [ ]i;
(1)
hF rameT ype; F rame; [rear wheel]i = Racing bike )
) SpokeN umber &gt; 20:
(2)
These constraints involve features belonging to an ancestor of
the node Wheel, i.e., the node Frame. We refer to variables
1The depicted product model graph is one of the possible graphs
we can define with our framework. We chose this one for
presentation purposes only.</p>
        <p>Frame
Frame
variables
Frame
constraints
rear wheel
rear gears
constraints</p>
        <p>Gears
Gear
variables
Gear
constraints
in ancestors of a node using meta-variables, i.e., triples of
the form hV arN ame; AncestorN ame; M etaP athi. This
writing denotes a variable V arN ame in an ancestor node
AncestorN ame (e.g., F rameT ype in F rame). The third
component of a meta-variable, M etaP ath, is a list of edge
labels (see below) describing a path connecting the two nodes
in the graph (wildcards ‘ ’ and ‘?’ can be used to represent
arbitrary labels and a sequence of arbitrary labels respectively).
M etaP aths are used to define constraints that will have
effect only on particular instances of a node. For example, the
constraint (2) for the node W heel has to hold only for those
instances of node W heel which are connected to an instance
of node F rame through an edge labeled rear wheel.
Intuitively, a node constraint for the node N has to hold for
each instance of N , such that it has ancestors connected with
it through paths matching with the M etaP aths occurring in
the constraint.</p>
        <p>An edge e = hlabel; N; M; Card; CCi of the product
model graph is characterized by: a name (label), two node
names denoting the parent (N ) and the child node (M ) in the
has-part relation, the cardinality (Card) of such relation
(expressed as either an integer number or an integer variable),
and a set (CC) of constraints (called cardinality constraints).
Such constraints may involve the cardinality variables (if any)
as well as variables of the parent node and of its ancestors
(referred to by means of meta-variables). An edge is graphically
represented by an arrow connecting the parent node to the
child node (cf. Fig. 1). Such an arrow is labeled with the
edge name and cardinality, and may have attached an ellipse
containing cardinality constraints.</p>
        <p>An instance of an edge labeled label connecting a node N
with a node M , is an edge connecting an instance of N and
an instance of M . It is labeled label too.</p>
        <p>Let us consider the edges front wheel and rear gear
depicted in Fig. 2. The former is the edge relating the frame
with the front wheel, its cardinality is imposed to be 1, and
there is no cardinality constraint. Hence, there must be (only)
one instance of the node Wheel connected to an instance of
the node Frame through an edge labeled front wheel. The
latter edge, rear gears, represents the has-part relation over
the frame and the rear gears of a bicycle. Its cardinality is
a variable named Card, taking values in the domain f0; 1g.
Hence, we may have an instance of the node Gears connected
to an instance of the node Frame through an edge labeled rear
gears. Among the cardinality constraints of the edge rear
gears we may have the following one:</p>
        <p>F rameT ype = Racing ) Card = 1:
Intuitively, a cardinality constraint for and edge e has to hold
for each instance of the parent node N in e, such that N
has ancestors connected with it through paths matching with
M etaP aths occurring in the constraint.</p>
        <p>As mentioned, we model a product as a graph and a set
of constraints. Such constraints, called model constraints,
involve variables of nodes not necessary related by
haspart relations (node model constraints), as well as
cardinalities of different edges exiting from a node
(cardinality model constraints). Moreover, global constraints like
alldifferent [van Hoeve, 2001] can be used to define
node model constraints. In node model constraints, variables
are referred to by means meta-variables. A M etaP ath in a
node model constraint represents a path connecting a node to
one of its ancestors in the graph. M etaP aths are used to
limit the effect of a node model constraint to particular tuples
of node instances. An example of node model constraint for
the bicycle is the following one:
hGearT ype; Gears; [rear gears]i = Special )
) hSpokeN umber; W heel; [rear wheel]i = 26:
(3)
This constraint states that if the type of rear gears chosen is
“Special”, then the rear wheel must have 26 spokes.
Intuitively, a node model constraint has to hold for all the tuples
of node variables of node instances reached by paths
matching with the M etaP aths occurring in the constraint.
2.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Process Modeling Features</title>
        <p>Processes can be modeled in PRODPROC in terms of
activities and temporal relations between them. More precisely, a
process is characterized by: a set of activities, a set of
variables (as before, endowed with a finite domain of strings or of
integers) representing process characteristics and involved
resources; a set of temporal constraints between activities; a set
of resource constraints; a set of constraints involving product
elements; a set of constraints on activity durations. A process
model does not represent a single production process.
Instead, it represents a configurable production process, whose
configuration can lead to the definition of different executable
processes.</p>
        <p>PRODPROC defines three kinds of activities: atomic
activities, composite activities, and multiple instance activities. An
atomic activity A is an event occurring in a time interval. It
has associated a name and the following parameters.</p>
        <p>Two integer decision variables, tstart and tend, denoting
the start and end time of the activity. They define the
tine interval [tstart; tend], and are subject to the implicit
condition tend tstart 0.
tstart denoting the
duA decision variables d = tend
ration of the activity.</p>
        <p>A flag exec 2 f0; 1g.</p>
        <p>We say that A is an instantaneous activity if d = 0. A is
executed if exec = 1 holds, otherwise (i.e., if exec = 0) A
is not executed. A composite activity is an event described
in terms of a process. It has associated the same parameters
of an atomic activity, and a model of the process it
represents. A multiple instance (atomic or composite) activity is
an event that may occur multiple times. Together with the
Activity name
Activity
duration
constraints
(a)</p>
        <p>Activity name
Activity
duration
constraints
(b)</p>
        <p>Activity name
Activity
duration
constraints</p>
        <p>inst
(c)
usual parameters (and possibly the process model), a
multiple instance activity has associated an integer decision
variable (named inst) representing the number of times the
activity can be executed. Note that the execution/non-execution
of activities determines different instances of a configurable
process. Figures 3a, 3b, and 3c, show the graphical
representation of atomic activities, composite activities, and multiple
instance activities, respectively.</p>
        <p>Temporal constraints between activities are inductively
defined starting from atomic temporal constraints. We consider
as atomic temporal constraints all the thirteen mutually
exclusive relations on time intervals introduced by Allen in [Allen,
1983] (they capture all the possible ways in which two
intervals might overlap or not), and some other constraints
inspired by constraint templates of the language ConDec [Pesic
et al., 2007]. Some examples of atomic temporal constraints
are listed as follows (for lack of space we avoid listing all
of them), where A and B are two activities. Fig. 4 shows
their graphical representations (we used a slightly different
graphical notation for activities, i.e., we omitted the activity
duration constraint sections).</p>
        <p>1. A bef ore B to express that A is executed before B (cf.</p>
        <p>Fig. 4a);
2. A during B to express that A is executed during the
execution of B (cf. Fig. 4b);
3. A is absent to express that A can never be executed
(cf. Fig. 4c);
4. A must be executed to express that A must be
executed (cf. Fig. 4d);
5. A not co existent with B to express that it is not
possible to executed both A and B (cf. Fig. 4e);
6. A succeeded by B to express that when A is executed
then B has to be executed after A (cf. Fig. 4f).</p>
        <p>The constraints 1 and 2 are two of the relations presented
in [Allen, 1983]. The constraints 3-6 have been inspired by
the templates used in ConDec [Pesic et al., 2007]. A temporal
constraint is inductively defined as follows.</p>
        <p>An atomic temporal constraint is a constraint.</p>
        <p>If ' and # are temporal constraint, then ' and # and
' or # are temporal constraints.</p>
        <p>If ' is a temporal constraint and c is a constraint on
process variables, then c ! ' is an if-conditional temporal
constraint, stating that ' has to hold whenever c holds.
Also, c $ ' is an iff-conditional temporal constraint,
stating that ' has to hold if and only if c holds.
before
during</p>
        <p>c
A conjunction of atomic constraints between two activities
can be depicted by representing each constraint of the
conjunction. Fig. 4g shows the graphical representation for a
disjunction of atomic temporal constraints between two
activities (i.e., for the constraint A bef ore B or A during B).
An if-conditional and an iff-conditional temporal constraint
with condition c are depicted in Fig. 4b and 4c, respectively.
Finally, a non-atomic temporal constraint can be depicted as
an hyper-edge connecting the activities involved in it, and
labeled with the constraint itself.</p>
        <p>The truth of atomic temporal constraints is related with
the execution of the activities they involve. For instance,
whenever for two activities A and B it holds that execA =
1 ^ execB = 1, then the atomic formulas of the forms 1 and
2 must hold. A temporal constraint network CN is a pair
hA; Ci, where A is a set of activities and C is a set of
temporal constraints on A. Fig. 5 shows the temporal constraint
network of the bicycle production process.</p>
        <p>Resource constraints [Laborie, 2003] are quadruple
hA; R; q; T Ei, where A is an activity; R is a variable
endowed with a finite integer domain; q is an integer or
a variable endowed with a finite integer domain, defining
the quantity of resource R consumed (if q &lt; 0) or
produced (if q &gt; 0) by executing A; T E is a time
extent that defines the time interval where the availability
of resource R is affected by A. The possible values for
T E are: F romStartT oEnd, Af terStart, Af terEnd,
Bef oreStart, Bef oreEnd, Always, with the obvious
meaning. Another form of resource constraint defines initial
level constraints, i.e., expressions determining the quantity of
a resource available at the time origin of a process. The
basic form is initialLevel(R; iv), where R is a resource and
iv 2 N. Examples of resource constraints for the bicycle
production process are:
hWheel construction; Aluminum; 4; Af terStarti;
hFrame construction; W orkers;</p>
        <p>qW 2 [ 1; 2]; F romStartT oEndi:
The first constraint states that activity “Wheel construction”
consumes 4 unit of aluminum once its execution starts. The
second constraints states that activity “Frame construction”
needs 1 or 2 workers during its execution. As for
temporal constraint, we can define if-conditional (i.e., c !
hA; R; q; T Ei) and iff-conditional (i.e., c $ hA; R; q; T Ei)
resource constraints. Their meaning are similar to the ones
defined above for temporal constraints.</p>
        <p>An activity duration constraint for an activity A, is a
constraint involving the duration of A, process variables, and
quantity variables for resources related to A. The following
is an example of an activity duration constraint for the
activity “Frame construction” in the bicycle production process
(where F rameM ult is a process variable)
d = 2 F rameMult</p>
        <p>jqW j</p>
        <p>PRODPROC also allows one to mix elements for
modeling a process with elements for modeling a product, through
constraints involving process variables and product variables.
This is an example for the bicycle model</p>
        <p>hF rameT ype; F rame; []i = Racing ) F rameM ult = 4:
It relates the variable F rameT ype of the node F rame with
the process variable F rameM ult. Another example is the
following:</p>
        <p>hrear gears; F rame; Gears; Cardi = Gears:
This constraint relates the process variable Gears with the
cardinality of the edge rear gears of the bicycle product
model graph. The cardinality is represented by the
quadruple hrear gears; F rame; Gears; Cardi, where the first
element is an edge label, the second one is the name of the parent
node of the edge, the third one is the name of the child node
of the edge, and the last one is the name of the cardinality.</p>
        <p>Product related constraints are another type of constraints
coupling product elements with process elements. They make
it possible to define resource constraints where resources are
product components. More precisely, a product related
constraint is a constraint on activities and product nodes that
implicitly defines resource constraints, and constrains on
process and product variables. A product related constraint has
the form A produces n N f or B, where A and B are
activities, n 2 N+, and N is the name of a node in the
product model graph, having (at least) one incoming edge having
associated a cardinality variable. Such a product related
constraint corresponds to the following PRODPROC constraints:
hA; RN ; qA 2 DRN ; Af terEndi; hB; RN ; n; Af terStarti;
initialLevel(RN ; 0); aggConstraint(sum; CEN ; =; RN );
where RN is a resource variable whose domain DRN is
defined as DRN = 0; PC2CEN max(DC ) (DC
denotes the domain of C, and CEN is the list of
cardinality variables of edges entering in N ). The constraint
aggConstraint(sum; CEN ; =; RN ) is a global constraint
stating that P = RN has to hold. An example of
product relatedCc2oCnsEtNraint for the bicycle is</p>
        <p>Wheel construction produces</p>
        <p>2 W heel f or Bicycle assembly:</p>
        <p>In general, constraints involving both product and process
variables may allow one to detect/avoid planning
impossibilities due to product configuration, and configuration
impossibilities due to production planning, during the configuration
of a product and its production process.
2.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>PRODPROC Instances</title>
        <p>A PRODPROC model represents the collection of single
(producible) variants of a configurable product and the processes
to produce them. A PRODPROC instance represents one of
such variants and its production process. To precisely define
this notion we need to introduce first the notion of candidate
instance. A PRODPROC candidate instance consists of the
following components:</p>
        <p>A set N I of node instances, i.e., tuples of the form
N I = hN; i; VNiI i where N is a node in the product
i
model graph, i 2 N is an index (different for each
instance of a node), VNiI = VN (VN is the set of variables
of node N ).
a set ANodes of assignments for all the node instance
variables, i.e., expressions of the form V = value where
V is a variable of a node instance and value belongs to
the set of values for V .</p>
        <p>A tree, called instance tree, that specifies the pairs of
node instances in the relation has-part. Such a tree is
defined as IT = hN I ; E I i, where E I is a set of tuples
eI = hlabel; NiI ; MjI i such that there is an edge e =
hlabel; N; M; Card; CCi in the product model graph,
and N I , MjI are instances of N and M , respectively.</p>
        <p>i
A set ACards of assignments for all the instance
cardinality variables, i.e., expressions of the form ICNeI = n
i
where NiI is an instance of a node N , e is an edge
hlabel; N; M; Card; CCi, ICNeI = Card, and n is the
i
number of the edges hlabel; NiI ; CjI i in the instance tree,
such that MjI is an instance of M .</p>
        <p>A set AI of activity instances, i.e., pairs AiI = hA; ii
where A is the name of an activity with execA = 1, and
i 2 N is a unique index for instances of A.</p>
        <p>A set E = fexecA j A is an activity ^ execA 6= 1g.
A set AProc of assignments for all model variables and
activity parameters (i.e., time instant variables, duration
variables, execution flags, quantity resource variables,
instance number variables), that is, expressions of the
form P = value where P is a model variable or an
activity parameter, and value 2 Z or value belongs to
the set of values for P .</p>
        <p>Fig. 6 depicts a fragment of the instance tree for a bicycle.
The tree consists of an instance of node F rame, an instance
of the node Gears, and two instances of node W heel.</p>
        <p>A PRODPROC instance is a candidate instance such that the
assignments in ANodes [ ACards [ AP roc satisfy all the
constraints in the PRODPROC model (node constraints, temporal
constraints, etc.), instantiated with variables of node instances
and activity instances in the candidate instance.</p>
        <p>The constraint instantiation mechanism, given a (partial)
candidate instance (a candidate instance is partial when there
are variables with no value assigned to), produces a set of
constraints on candidate instance variables from each
constraint in the corresponding PRODPROC model. A candidate
instance has to satisfy all these constraints to qualify as an
instance. We give here an intuitive description of how the
instantiation mechanism works on different constraint types.
Let us begin with node and cardinality constraints. Let c be a
constraint belonging to the node N , or a constraint for an edge
e between nodes N and M . Let us suppose that N1; : : : ; Nk
are ancestors of N whose variables are involved in c, and let
p1; : : : ; pk be M etaP aths such that, for i = 1; : : : ; k, pi is
a M etaP ath from Ni to N . We define Ln as the set of
ktuple of node instances hNjI ; (N1)jI1 ; : : : ; (Nk)jk i where: N I
I
j
is an instance of N ; for i = 1; : : : ; k (Ni)jIi is an instance of
Ni, connected with NjI through a path piI in the instance tree
that matches with pi. For each k-tuple t 2 Ln, we obtain
a constraint on instance variables appropriately substituting
variables in c with variables of node instances in t. For
example, the constraints (1) and (2) for the node W heel, lead
to the following constraints on variables of node instances in
Fig. 6 (hV; N I</p>
        <p>IDi denotes the variable V of the instance with
id ID of node N ).</p>
        <p>hW heelT ype;W heel1Ii=hF rameT ype;F rameI1i;
hW heelT ype;W heel2Ii=hF rameT ype;F rameI1i;
hF rameT ype;F rameI1i=Racing bike)
)hSpokeNumber;W heel2Ii&gt;20:
(4)
(5)
(6)
The instantiation of (1) leads to the constraints (4) and
(5), since it can be instantiated on both the couples of
node instances appearing in Fig. 6 hW heel1I; F rameI1i and
hW heel2I; F rameI1i. Instead, the instantiation of (2) leads to
only one constraint, i.e. (6), because it can be instantiated
only on the couple hW heel2I; F rameI1i.</p>
        <p>Node model constraints are instantiated in a slightly
different way. Let c be a node model constraint. Let us suppose that
N1; : : : ; Nk are the nodes whose variables are involved in c,
let p1; : : : ; pk be M etaP aths such that, for i = 1; : : : ; k, pi
is a M etaP ath that ends in Ni. We define Lnmc as the set
of ordered k-tuples of node instances h(N1)jI1 ; : : : ; (Nk)jk i
I ,
where for i = 1; : : : ; k (Ni)jIi is an instance of Ni connected
by a path piI with one of its ancestors in the instance tree,
such that piI matches with pi. For each k-tuple t 2 Lnmc, we
obtain a constraint on instance variables appropriately
substituting variables in c with variables of node instances in t. If c
is an alldifferent constraint, then we define an
equivalent constraint on the list consisting of all the node instances
of N1; : : : ; Nk, connected with one of their ancestors by a
path matching with the corresponding M etaP ath. As an
example, let us consider the constraint (3) for the bicycle, it can
be instantiated on the couple hW heel2I; GearsI1i and leads to
hGearT ype; GearsI1i = Special )</p>
        <p>) hSpokeN umber; W heel2Ii = 26:</p>
        <p>The instantiation of cardinality model constraints is very
simple. Let c be a cardinality model constraint for the
cardinalities of the edges with labels e1; : : : ; ek exiting from
a node N . Let N1I ; : : : ; NhI be instances of N . For all
i 2 f1; : : : ; hg, we instantiate c appropriately substituting the
cardinality variables occurring in it, with the instance
cardinality variables ICNe1I ; : : : ; ICNekI .</p>
        <p>i i</p>
        <p>Let us now consider process constraints. Let A be an
activity, let AI1; : : : ; AIk be instances of A. Let r be the resource
constraint hA; R; q; T Ei, we instantiate it on each instance
of A, i.e., we obtain a constraint hAI ; R; qi; T Ei for each
i
i = 1; : : : ; k, where qi = q is a fresh variable or an
integer. Let c be an activity duration constraint for A, for each
i = 1; : : : ; k we obtain a constraint substituting in c dA with
dAI , and each quantity variable q with the corresponding
varii
able qi. Finally, let B an activity, let B1I ; : : : ; BhI be instances
of B. If c is a temporal constraint involving A and B, we
obtain a constraint on activity instances for each ordered
couple hi; ji, with i 2 f1; : : : ; kg, j 2 f1; : : : ; hg, substituting
in c each occurrence of A with AI , and of B with BI . This
i j
mechanism can be easily extended to non-binary constraints.
3</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>CLP-based Product/Process Configuration</title>
      <p>Constraint Logic Programming (CLP) [Jaffar and Maher,
1994] can be exploited to implement a configuration system
that, given a PRODPROC model (cf. Sect. 2), guide a user
through the configuration process to obtain a PRODPROC
instance (cf. Sect. 2.3). In this section, we first present a
possible structure for such a system. Then, we briefly explain how
a configuration problem can be encoded in a CLP program.</p>
      <p>A CLP-based system can support a configuration process
as follows. First, the user initializes the system (1)
selecting the model to be configured. After such an initialization
phase, the user starts to make her/his choices by using the
system interface (2). The interface communicates to the system
engine (i.e., the piece of software that maintains a
representation of the product/process under configuration, and checks
the validity and consistency of user’s choices) each data
variation specified by the user (3). The system engine updates the
current partial configuration accordingly. Whenever an
update of the partial configuration takes place, the user, through
the system interface, can activate the engine inference
process (4). The engine instantiates PRODPROC constraints (cf.
Sect. 2.3) on the current (partial) candidate instance defined
by user choices, and encodes the product/process
configuration problem in a CLP program (encoding a Constraint
Satisfaction Problem, abbreviated to CSP). Then, the engine uses a
finite domain solver to propagate the logical effects of user’s
choices (5). Once the inference process ends (6), the engine
returns to the interface the results of its computation (7). In its
turns, the system interface communicates to the user the
consequences of her/his choices on the (partial) configuration (8).</p>
      <p>From a PRODPROC model and a user defined (partial)
candidate instance corresponding to it, it is possible to obtain a
CSP hV; D; Ci where: V is the set of all the variables
appearing in the (partial) candidate instance; D is the set of domains
for variables in V; C is the set of constraints in the PRODPROC
model instantiated on variables of the (partial) candidate
instance. Such a CSP can be easily encoded in a CLP program
like the following one.
csp_prodProc(Vars) :- DOMS, CONSTRS.</p>
      <p>In it, Vars is the list of variables in V, DOMS is the
conjunction of domain constraints for domains in D, and CONSTRS is
the conjunction of constraints in C. Given a program with the
above-described characteristics, a finite domain solver can be
used to reduce the domains associated with variables,
preserving satisfiability, or to detect the inconsistency of the
encoded CSP (due to user’s assignments that violate the set
of constraints or to inconsistencies of the original product
model). Moreover, it can be used to determine that further
node instances are needed, or that there are too many nodes
in the instance tree.
4</p>
    </sec>
    <sec id="sec-5">
      <title>Comparison with Related Work</title>
      <p>In order to point out strengths and limitations of the
PRODPROC framework, we present in this section a brief
comparison with some of the most important product configuration
systems and process modeling tools.</p>
      <p>Answer Set Programming (ASP) [Gelfond and Lifschitz,
1988] has been used to implement product configuration
systems that are specifically tailored to the modeling of software
product families, e.g., Kumbang Configurator [Mylla¨rniemi
et al., 2005]. Even if these systems result to be appealing for
a relevant range of application domains, they lack of
generality. In particular, they do not support global constraints, and
the so called grounding stage may cause problems in the
management of arithmetic constraints [Mylla¨rniemi et al., 2005].</p>
      <p>
        Product configuration systems based on binary decision
diagrams (BDDs), e.g., Configit Product Modeler [Configit
A/S, 2009], trade the complexity of the construction of the
BDD, for the simplicity and efficiency of the configuration
process. Despite their various attracting features,
BDDbased systems suffer from some significant limitations. First,
they basically support flat models only, even though some
work has been done on the introduction of modules
        <xref ref-type="bibr" rid="ref19">(see,
e.g., [van der Meer and Andersen, 2004])</xref>
        . Second, they
find it difficult to cope with global constraints. In [Nørgaard
et al., 2009] the authors combine BDD and CSP to tackle
alldifferent constraints. However, they consider flat
models only. We are not aware of any BDD system that deals
with global constraints in a general and satisfactory way.
      </p>
      <p>Unlike ASP-based and BDD-based systems, CSP-based
product configuration systems are (usually) capable of
dealing with non-flat models and global constraints.
Unfortunately, the modeling expressiveness of CSP-based
systems has a cost, i.e., backtrack-free configuration
algorithms for CSP-based systems are often inefficient, while
non backtrack-free ones need to explicitly deal with dead
ends. Moreover, most CSP-based systems do not offer
high-level modeling languages (product models must be
specified at the CSP level). Some well-known CSP-based
configuration systems, such as ILOG Configurator [Junker,
2003], which features various interesting modeling
facilities, and Lava [Fleischanderl et al., 1998], which is based
on Generative-CSP, seem to be no longer supported. A
recent CSP-based configuration system is Morphos
Configuration Engine (MCE) [Campagna et al., 2010]. As other
CSPbased systems, it makes it possible to define non-flat models.
Its configuration algorithm is not backtrack-free, but it
exploits back-jumping capabilities, to cope with dead ends, and
branch-and-prune capabilities, to improve domain reduction.
From the point of view of process modeling, PRODPROC can
be viewed as an extension of MCE modeling language. In
particular, it extends MCE modeling language with the
following features: (1) cardinality variables, i.e.,
has-part/ispart-of relations can have non-fixed cardinalities; (2) product
model graph, i.e., nodes and relations can define a graph, not
only a tree; (3) cardinality constraints and cardinality model
constraints, i.e., constraints can involve cardinalities of
relations; (4) M etaP aths, i.e., a mechanism to refer to particular
node instance variables in constraints.</p>
      <p>PRODPROC can be viewed as the source code
representation of a configuration system with respect to the MDA
abstraction levels presented in [Felfernig, 2007]. PRODPROC
product modeling elements can be mapped to UML/OCL in
order to obtain platform specific (PSM) and platform
independent (PIM) models. The mapping to OCL of M etaP aths
containing ‘?’ wildcards and of model constraints requires
some attention. For example, the latter do not have explicit
contexts as OCL constraints must have. Since PRODPROC
does not support the definition of taxonomies of product
components, there will not be generalization hierarchies in PMSs
and PIMs corresponding to PRODPROC models.</p>
      <p>In the past years, different formalism have been proposed
for process modeling. Among them we have: the
Business Process Modeling Notation (BPMN) [White and Miers,
2008]; Yet Another Workflow Language (YAWL) [ter
Hofstede et al., 2010]; DECLARE [Pesic et al., 2007].</p>
      <p>Languages like BPMN and YAWL model a process as a
detailed specification of step-by-step procedures that should
be followed during the execution. BPMN and YAWL adopt
an imperative approach in process modeling, i.e., all
possibilities have to be entered into their models by specifying their
control-flows. BPMN has been developed under the
coordination of the Object Management Group. PRODPROC has
in common with BPMN the notion of atomic activity,
subprocess, and multiple instance activity. The effect of BPMN
joins and splits on the process flow can be obtained using
temporal constraints. In PRODPROC there are no notions such as
BPMN events, exception flows, and message flows.
However, events can be modeled as instantaneous activities and
data flowing between activities can be modeled with model
variables. YAWL is a process modeling language whose
intent is to directly supported all control flow patterns.
PRODPROC has in common with YAWL the notion of task,
multiple instance task, and composite task. YAWL join and split
constructs are not present in PRODPROC, but using temporal
constraints it is possible to obtain the same expressivity. The
notion of cancellation region is not present in PRODPROC,
but our framework could be extended to implement it.</p>
      <p>As opposed to traditional imperative approaches to process
modeling, DECLARE uses a constraint-based declarative
approach. Its models rely on constraints to implicitly determine
the possible ordering of activities (any order that does not
violate constraints is allowed). With respect to DECLARE,
PRODPROC has in common the notion of activity and the use
of temporal constraints to define the control flow of a
process. The set of atomic temporal constraints is not as big as
the set of template constraints available in DECLARE,
however it is possible to easily the available ones so as to define all
complex constraints of practical interest. Moreover, in
PRODPROC it is possible to define multiple instance and composite
activities, features that are not available in DECLARE.</p>
      <p>From the point of view of process modeling, PRODPROC
combines modeling features of languages like BPMN and
YAWL, with a declarative approach for control flow
definition. Moreover, it presents features that, to the best of our
knowledge, are not presents in other existing process
modeling languages. These are: resource variables and resource
constraints, activity duration constraints, and product related
constraints. Thanks to these features, PRODPROC is
suitable for modeling production processes and, in particular,
to model mixed scheduling and planning problems related
to production processes. Furthermore, a PRODPROC model
does not only represent a process ready to be executed as
a YAWL (or DECLARE) model does, it also allows one to
describe a configurable process. Existing works on process
configuration, e.g., [Rosa, 2009], define process models with
variation points, and aim at deriving different process model
variants from a given model. Instead, we are interested in
obtaining process instances, i.e., solutions to the
scheduling/planning problem described by a PRODPROC model.</p>
      <p>
        With respect to the works of Mayer et al. on service
process composition
        <xref ref-type="bibr" rid="ref12 ref14 ref3">(e.g. [Mayer et al., 2009])</xref>
        , PRODPROC is
more geared toward production process modeling and
configuration. However, certain aspects of service composition
problems can be modeled using PRODPROC too.
      </p>
      <p>
        The PRODPROC framework allows one to model products,
their production processes, and to couple products with
processes using constraints. The only works on the coupling of
product and process modeling and configuration we are aware
of are the ones by Aldanondo et al.
        <xref ref-type="bibr" rid="ref1 ref21">(see, e.g., [Aldanondo
and Vareilles, 2008])</xref>
        . They propose to consider
simultaneously product configuration and process planning problems
as two constraint satisfaction problems. In order to
propagate decision consequences between the two problems, they
suggest to link the two constraint based models using
coupling constraints. The development of PRODPROC has been
inspired by the papers of Aldanondo et al., in fact, we also
have separated models for products and processes and,
constraints for coupling them. However, our modeling languages
are far more complex and expressive than the one presented
in [Aldanondo and Vareilles, 2008].
5
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions</title>
      <p>In this paper, we considered the problem of product and
process modeling and configuration, and pointed out the the lack
of a tool covering both physical and production aspects of
configurable products. To cope with this absence, we
presented a graphical framework called PRODPROC.
Furthermore, we shown how it is possible to build a CLP-based
configuration systems on top of it, and presented a comparison
with some of the existing product configuration systems and
process modeling tools.</p>
      <p>We already implemented a first prototype of a CLP-based
configuration system that uses PRODPROC. It covers only
product modeling and configuration, but we are working to
add to it process modeling and configuration capabilities. We
also plan to experiment our configuration system on
different real-world application domains, and to compare it with
commercial products, e.g., [Blumo¨hr et al., 2009].</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <source>[Aldanondo and Vareilles</source>
          , 2008]
          <string-name>
            <given-names>M.</given-names>
            <surname>Aldanondo</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Vareilles</surname>
          </string-name>
          .
          <article-title>Configuration for mass customization: how to extend product configuration towards requirements and process configuration</article-title>
          .
          <source>J. of Intelligent Manufacturing</source>
          ,
          <volume>19</volume>
          (
          <issue>5</issue>
          ):
          <fpage>521</fpage>
          -
          <lpage>535</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <source>[Allen</source>
          ,
          <year>1983</year>
          ]
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Allen</surname>
          </string-name>
          .
          <article-title>Maintaining knowledge about temporal intervals</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>26</volume>
          :
          <fpage>832</fpage>
          -
          <lpage>843</lpage>
          ,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [Blumo¨hr et al.,
          <year>2009</year>
          ] U. Blumo¨hr, M. Mu¨nch, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Ukalovic</surname>
          </string-name>
          .
          <article-title>Variant Configuration with SAP</article-title>
          . SAP Press,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [Campagna et al.,
          <year>2010</year>
          ]
          <string-name>
            <given-names>D.</given-names>
            <surname>Campagna</surname>
          </string-name>
          ,
          <string-name>
            <surname>C. De Rosa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Dovier</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Montanari</surname>
            , and
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Piazza</surname>
          </string-name>
          .
          <article-title>Morphos Configuration Engine: the Core of a Commercial Configuration System in CLP(FD)</article-title>
          .
          <source>Fundam. Inform.</source>
          ,
          <volume>105</volume>
          (
          <issue>1-2</issue>
          ):
          <fpage>105</fpage>
          -
          <lpage>133</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>[Configit</surname>
            <given-names>A</given-names>
          </string-name>
          /S, 2009]
          <article-title>Configit A/S. Configit Product Modeler</article-title>
          . http://www.configit.com,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <source>[Felfernig</source>
          ,
          <year>2007</year>
          ]
          <string-name>
            <given-names>A.</given-names>
            <surname>Felfernig</surname>
          </string-name>
          .
          <article-title>Standardized Configuration Knowledge Representations as Technological Foundation for Mass Customization</article-title>
          .
          <source>IEEE Trans. on Engineering Management</source>
          ,
          <volume>54</volume>
          (
          <issue>1</issue>
          ):
          <fpage>41</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [Fleischanderl et al.,
          <year>1998</year>
          ]
          <string-name>
            <given-names>G.</given-names>
            <surname>Fleischanderl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Friedrich</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Haselbo¨ck, H. Schreiner, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Stumptner</surname>
          </string-name>
          .
          <article-title>Configuring Large Systems Using Generative Constraint Satisfaction</article-title>
          .
          <source>IEEE Intelligent Systems</source>
          ,
          <volume>13</volume>
          (
          <issue>4</issue>
          ):
          <fpage>59</fpage>
          -
          <lpage>68</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <source>[Gelfond and Lifschitz</source>
          , 1988]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>The stable model semantics for logic programming</article-title>
          .
          <source>In ICLP/SLP</source>
          , pages
          <fpage>1070</fpage>
          -
          <lpage>1080</lpage>
          ,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <source>[Jaffar and Maher</source>
          , 1994]
          <string-name>
            <given-names>J.</given-names>
            <surname>Jaffar</surname>
          </string-name>
          and
          <string-name>
            <surname>M. J. Maher.</surname>
          </string-name>
          <article-title>Constraint logic programming: A survey</article-title>
          .
          <source>J. Log. Program.</source>
          ,
          <volume>19</volume>
          /20:
          <fpage>503</fpage>
          -
          <lpage>581</lpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <source>[Junker</source>
          , 2003]
          <string-name>
            <given-names>U.</given-names>
            <surname>Junker</surname>
          </string-name>
          .
          <article-title>The Logic of ILOG (J)Configurator: Combining Constraint Programming with a Description Logic</article-title>
          .
          <source>In Proc. of the IJCAI'03 Workshop on Configuration</source>
          , pages
          <fpage>13</fpage>
          -
          <lpage>20</lpage>
          .
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <source>[Laborie</source>
          , 2003]
          <string-name>
            <given-names>P.</given-names>
            <surname>Laborie</surname>
          </string-name>
          .
          <article-title>Algorithms for propagating resource constraints in AI planning and scheduling: existing approaches and new results</article-title>
          . Artif. Intell.,
          <volume>143</volume>
          :
          <fpage>151</fpage>
          -
          <lpage>188</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [Mayer et al.,
          <year>2009</year>
          ]
          <string-name>
            <given-names>W.</given-names>
            <surname>Mayer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Thiagarajan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Stumptner</surname>
          </string-name>
          .
          <article-title>Service composition as generative constraint satisfaction</article-title>
          .
          <source>In Proc. of the 2009 IEEE Int. Conf. on Web Services</source>
          , pages
          <fpage>888</fpage>
          -
          <lpage>895</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [Mylla¨rniemi et al.,
          <year>2005</year>
          ]
          <string-name>
            <given-names>V.</given-names>
            <surname>Mylla</surname>
          </string-name>
          ¨rniemi, T. Asikainen, T. Ma¨nnisto¨, and
          <string-name>
            <given-names>T.</given-names>
            <surname>Soininen</surname>
          </string-name>
          .
          <article-title>Kumbang configurator - a configurator tool for software product families</article-title>
          .
          <source>In Proc. of the IJCAI'05 Workshop on Configuration</source>
          , pages
          <fpage>51</fpage>
          -
          <lpage>56</lpage>
          .
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [Nørgaard et al.,
          <year>2009</year>
          ]
          <string-name>
            <given-names>A. H.</given-names>
            <surname>Nørgaard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Boysen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. M.</given-names>
            <surname>Jensen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Tiedemann</surname>
          </string-name>
          .
          <article-title>Combining Binary Decision Diagrams and Backtracking Search for Scalable Backtrack-Free Interactive Product Configuration</article-title>
          .
          <source>In Porc. of the IJCAI'09 Workshop on Configuration</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [Pesic et al.,
          <year>2007</year>
          ]
          <string-name>
            <given-names>M.</given-names>
            <surname>Pesic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Schonenberg</surname>
          </string-name>
          , and
          <string-name>
            <surname>W.M.P. van der Aalst. DECLARE</surname>
          </string-name>
          :
          <article-title>Full support for looselystructured processes</article-title>
          .
          <source>In Proc. of EDOC'07</source>
          , pages
          <fpage>287</fpage>
          -
          <lpage>287</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <source>[Rosa</source>
          , 2009]
          <string-name>
            <given-names>M. La</given-names>
            <surname>Rosa</surname>
          </string-name>
          .
          <article-title>Managing Variability in ProcessAware Information Systems</article-title>
          .
          <source>PhD thesis</source>
          , Queensland University of Technology, Brisbane, Australia,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <source>[Sabin and Weigel</source>
          , 1998]
          <string-name>
            <given-names>D.</given-names>
            <surname>Sabin</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Weigel</surname>
          </string-name>
          .
          <article-title>Product configuration frameworks-a survey</article-title>
          .
          <source>IEEE Intelligent Systems</source>
          ,
          <volume>13</volume>
          :
          <fpage>42</fpage>
          -
          <lpage>49</lpage>
          ,
          <year>July 1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <surname>[ter Hofstede</surname>
          </string-name>
          et al.,
          <year>2010</year>
          ]
          <string-name>
            <given-names>A.</given-names>
            <surname>H. M. ter Hofstede</surname>
          </string-name>
          ,
          <string-name>
            <surname>W.M.P. van der Aalst</surname>
            , M. Adams, and
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Russell</surname>
          </string-name>
          .
          <source>Modern Business Process Automation - YAWL and its Support Environment</source>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <source>[van der Meer and Andersen</source>
          , 2004]
          <string-name>
            <given-names>E. R. van der Meer and H. R.</given-names>
            <surname>Andersen</surname>
          </string-name>
          .
          <article-title>BDD-based Recursive and Conditional Modular Interactive Product Configuration</article-title>
          .
          <source>In Proc. of Workshop on CSP Techniques with Immediate Application (CP'04)</source>
          , pages
          <fpage>112</fpage>
          -
          <lpage>126</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <string-name>
            <surname>[van Hoeve</surname>
          </string-name>
          ,
          <year>2001</year>
          ]
          <string-name>
            <surname>W. J. van Hoeve</surname>
          </string-name>
          .
          <source>The alldifferent Constraint: A Survey</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <source>[White and Miers</source>
          , 2008]
          <string-name>
            <given-names>S. A.</given-names>
            <surname>White</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Miers</surname>
          </string-name>
          .
          <article-title>BPMN modeling and reference guide: understanding and using BPMN</article-title>
          .
          <source>Lighthouse Point</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>