<!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>PRODPROC - Product and Production Process ⋆ Modeling and Configuration</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dario Campagna</string-name>
          <email>dario.campagna@dmi.unipg.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andrea Formisano</string-name>
          <email>formis@dmi.unipg.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dipartimento di Matematica e Informatica, Università di Perugia</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <abstract>
        <p>Software product configurators are an emerging technology that supports companies in deploying mass customization strategies. Such strategies need to cover the management of the whole customizable product cycle. Adding process modeling and configuration features to a product configurator may improve its ability to assist mass customization development. In this paper, we describe a modeling framework that allows one to model both a product and its production process. We first introduce our framework focusing on its process modeling capabilities. Then, we outline a possible implementation based on Constraint Logic Programming of such product/process configuration system. A comparison with some of the existing systems for product configuration and process modeling concludes the paper.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>In the past years many companies started to operate according to mass customization
strategies. Such strategies aim at selling products that satisfy customer’s needs,
preserving as much as possible the advantages of mass production in terms of efficiency
and productivity. The products offered by such companies, usually called configurable
products, have a predefined basic structure that can be customized by combining a
series of available components and options (modules, accessories, etc.) or by specifying
suitable parameters (lengths, tensions, etc.). Actually, a configurable product does not
correspond to a specific physical object, but identify sets of (physical) objects that a
company can realize. A configured product is a single variant of a configurable product,
obtained by specifying each of its customizable attributes, which corresponds to a
fullyspecified physical object. The configuration process consists of a series of activities and
operations ranging from the acquisition of information about the variant of the product
requested by the customer, to the generation of data for its realization.</p>
      <p>
        The mass customization operating mode involves a series of difficulties that
companies struggle to resolve by using traditional software tools, designed for repetitive
productions. As more companies started offering configurable products, different systems
designed for supporting them in deploying mass customization strategies appeared.
These systems are called software product configurators and allow one to effectively
and efficiently deal with the configuration process [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. They offer functionality for the
representation of configurable products through product models, and for organizing and
managing the acquisition of information about the product variants to be realized.
      </p>
      <p>
        Mass customization strategies need to cover the management of the whole
customization product cycle, from customer order to final manufacturing. Current
software product configurators focus only on the support to product configuration, and do
not cover aspects related to the production process planning. Extending the use of
configuration techniques from products to processes, may avoid or reduce planning
impossibilities due to constraints introduced in the product configuration phase, as well
as configuration impossibilities due to production planning requirements. Existing
languages/tools for process modeling, such as BPMN [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] and YAWL [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], do not offer
suitable features for specifying production processes and process configuration.
Moreover, they lack the capability of modeling, in a single uniform setting, product models
and their corresponding process models. The framework we propose, called
PRODPROC, intends to overcome these limitations and act as a core for a full-fledged
configuration system, covering the whole customization product cycle.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>A Framework for Product/Production Modeling</title>
      <p>
        In this section we present the PRODPROC framework by exploiting a working example
that will be used throughout the paper (cf., Sections 2.1 and 2.2). We also provide a
brief description of PRODPROC semantics in term of model instances (Sect. 2.3). See
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for a description of PRODPROC graphical modeling language.
      </p>
      <p>A PRODPROC model consists of a description of a product, a description of a
process, and a set of constraints coupling the two. In order to introduce the PRODPROC
features let us consider a rectangular base prefabricated component multi-story
building, together with its construction process. More specifically, a building is composed
by the followings parts: story, roof, heating service, ventilation service, sanitary
service, electrical/lighting service, suspended ceiling, floor, partition wall system. For the
purposes of this paper, we consider two types of building:
Warehouse: it is a single story building, it has no mandatory service except for the
electrical/lighting service, it has no partition wall system and no suspended ceiling,
it may have a basement.</p>
      <p>Office building: it may have a basement and up to three stories, all services except
ventilation are mandatory, suspended ceiling and floor are mandatory for each story,
each story may have a partition wall system.</p>
      <p>
        The building construction process can be split in four main phases: preparation and
development of the building site; building shell and building envelope works; building
services equipment; finishing works. (For a detailed description of such phases see [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].)
2.1
      </p>
      <sec id="sec-2-1">
        <title>Product Description</title>
        <p>A product is modeled as a multi-graph, called product model graph, and a set of
constraints. The nodes of the graph represent the components of the product. The edges
represent the has-part/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
Building</p>
        <p>1
Story</p>
        <p>walls
{0,1}
Partition wall
system
heating</p>
        <p>Heating service
{0,1}
{0,1}
roof
{0,1}
floor
{0,1}</p>
        <p>Roof</p>
        <p>Floor
ventilation
{0,1}
1
node root node. Such a product description will represent a configurable product whose
configuration can lead to the definition of different (producible) variants that 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. Fig. 1 shows the product model graph
for our example. Edges are labeled with names describing the has-part relations and
numbers indicating the admitted values for the cardinalities.</p>
        <p>Each node/component of a product model graph is characterized by a name, a set of
variables representing configurable features of the component, and a set of constraints
that may involve variables of the node as well as 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. In the description of a configured product,
physical components will be 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 will have a
value assigned. The instance of the root node will be the root of the configured product
tree. For example, the node Building in Fig. 1, which is the root node of the product
model graph, is defined as the triple hBuilding, VBuilding, CBuildingi, where the
involved variables and the set of constraint are as follows:</p>
        <p>VBuilding = {hBuildingT ype, {Warehouse, Office building}i,</p>
        <p>
          hStoryN um, [
          <xref ref-type="bibr" rid="ref1 ref3">1, 3</xref>
          ]i, hW idth, [
          <xref ref-type="bibr" rid="ref7">7, 90</xref>
          ]i, hLength, [
          <xref ref-type="bibr" rid="ref7">7, 90</xref>
          ]i},
        </p>
        <p>CBuilding = {BuildingT ype = Warehouse ⇒ StoryN um = 1}.</p>
        <p>Hence, a building is described by four features/variables, each one with a set of
possible values. Note that the single constraint associated with the node imposes that if the
building is a warehouse, then it must have exactly one story. The node representing a
story of the building is defined as hStory, VStory, CStoryi, where:</p>
        <p>
          VStory = {hF loorN um, [
          <xref ref-type="bibr" rid="ref1 ref3">1, 3</xref>
          ]i, hHeight, [
          <xref ref-type="bibr" rid="ref15 ref3">3, 15</xref>
          ]i},
CStory = {F loorN um = hF loorN um, Story, [upper story]i + 1,
        </p>
        <p>F loorN um ≤ hStoryN um, Building, [f irst story, ⋆]i,
hBuildingT ype, Building, [f irst story, ⋆]i = Office building ⇒</p>
        <p>⇒ Height ≥ 4 ∧ Height ≤ 5}.</p>
        <p>In this case we have two variables associated with the node Story, whose values are
controlled by three constraints. Note that these constraints involve features/variables
associated with ancestors of the node Story. To refer to specific variables in the
ancestors of a node, we introduce the notion of meta-variable, i.e., a triple of the form
hV arN ame, AncestorN ame, M etaP athi. This triple denotes a variable V arN ame
in an ancestor node AncestorN ame (e.g., BuildingT ype in the node Building). The
third component of a meta-variable, M etaP ath, is a list of edge labels (see below)
and describes 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 first constraint in CStory will have to hold only for
those instances of node Story which are connected to another instance of node Story
through an edge labeled upper story. Intuitively, a node constraint for the node N will
have 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 is defined by: a name, two node names indicating the parent and the child
nodes in the has-part relation, the cardinality of such relation (expressed as either an
integer number or a variable), and a set of constraints. Such constraints may involve
the cardinality variable (if any) as well as the variables of the parent node and of
any of its ancestors (referred to by using meta-variables). An instance of an edge
labeled label connecting a node N with a node M , will be an edge labeled label,
connecting an instance of N and an instance of M . Let us consider the edges first story
and upper story of our sample model. The former is the edge that relates the
building and its first story. It is defined as hf irst story, Building, Story, 1, ∅i. Note that
the cardinality is imposed to be 1 and there is no constraint. The edge upper story
represents the has-part relation over two adjacent stories of the building. It is
defined as hupper story, Story, Story, Card, CCi, where the variable Card is defined
as hCard, [
          <xref ref-type="bibr" rid="ref1">0, 1</xref>
          ]i, while the set of constraints is defined as follows:
        </p>
        <p>CC = {F loorN um = hStoryN um, Building, [f irst story, ⋆]i ⇒ Card = 0,</p>
        <p>F loorN um &lt; hStoryN um, Building, [f irst story, ⋆]i ⇒ Card = 1}.
The two constraints in CC control the number of instances of the node Story. An
instance of the node Story will have as child another instance of node Story, if and only
if its floor number is not equal to the number of stories of the building. Intuitively, a
cardinality constraint for and edge e will have to hold for each instance of the parent
node P in e, such that P has ancestors connected with it through paths matching with
M etaP aths occurring in the constraint.</p>
        <p>
          As mentioned, a product description consists of a product model together with a
set of global constraints. Such constraints, called model constraints, involve variables
of nodes not necessary related by has-part relations (node model constraints) as well
as cardinalities of different edges exiting from a node (cardinality model constraints).
Also, global constraints like alldifferent [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ] and aggregation constraints can be
used to define node model constraints. Intuitively, a node model constraint will have to
hold for all the tuples of node instances reached by paths matching with M etaP aths
occurring in the constraint. The following is an example of cardinality model constraint:
hupper story, Story, Story, Cardi 6= hroof, Story, Roof, Cardi.
        </p>
        <p>This constraint states that, given an instance of the node Story the cardinality of the
edge upper story and roof exiting from it must be different, i.e., an instance of the
node Story can not have both an upper story and a roof.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Process Description</title>
        <p>PRODPROC allows one to model a process in terms of activities and temporal relations
between them. Moreover, PRODPROC makes it possible to model process resource
production and consumption, and to intermix the product and the process modeling phases.</p>
        <p>In general, a process consists of: 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 on activity durations.</p>
        <p>There are three kinds of activity: atomic activities, composite activities, and multiple
instance activities. An atomic activity A is an event that happens in a time interval. It
has associated a name and the following parameters:
• two integer decision variables, tstart and tend, denoting the start time and end time
of the activity. They define the time interval [tstart, tend], subject to the implicit
requirement that tend ≥ tstart ≥ 0.
• a decision variable d = tend − tstart denoting the duration of the activity.
• a flag exec ∈ {0, 1}.</p>
        <p>When d = 0 we say that A is an instantaneous activity. If exec = 1 holds, A is
executed, otherwise (namely, if exec = 0) A is not executed. A composite activity
is an event described in terms of a process. Hence, it has associated four variables
analogously to an atomic activity, as explained earlier. Moreover, it is associated with 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 four variables (and possibly
the sub-process model), a multiple instance activity has associated a decision variables
(named inst) representing the number of times the activity can be executed.</p>
        <p>
          Temporal constraints between activities are inductively defined starting from atomic
temporal constraints. Let A and B be to activities. We consider as atomic temporal
constraints all the thirteen mutually exclusive binary relations which capture all the
possible ways in which two intervals might overlap or not (as introduced by Allen
in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]), and some further constraints inspired by the constraint templates of the language
ConDec [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. The following are some examples of atomic temporal constraints (for lack
of space we avoid listing all the possibilities):
1. A bef ore B to express that A is executed before B.
        </p>
        <p>Preparation and
development of the
building site</p>
        <p>Building shell and
building envelope
works</p>
        <p>Building services
equipment
2. A meets B to express that the execution of A ends at time point in which the
execution of B starts.
3. A must−be−executed to express that A must be executed.
4. A is−absent to express that A can never be executed.
5. A not−co−existent−with B to express that either A or B can be executed (i.e.,
it is not possible to execute both A and B).
6. A succeeded−by B to express that when A is executed than B has to be executed
after A.</p>
        <p>
          The constraints 1 and 2 are two of the binary relations of [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. The constraints 3–6 have
been inspired by the templates used in the language ConDec [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. A temporal constraint
is inductively defined as follows.
• An atomic temporal constraint is a constraint.
• If ϕ and ϑ are temporal constraint then ϕ and ϑ and ϕ or ϑ are temporal constraints.
• 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.
        </p>
        <p>Plainly, the truth of the 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 activities in A. Fig. 2 shows the temporal constraint
network for the building construction process. Fig. 3 shows the temporal constraint
network for the sub-process represented by the composite activity called “Building
services equipment”. In the figures, atomic activities are depicted as rectangles, composite
activities as nested rectangles, multiple instance activities as overlapped rectangles.
Binary temporal constraints are represented as edges whose labels describe the temporal
relations. If an activity is involved in a must be executed or in a is absent constraint,
it is depicted as a dashed line rectangle or a dotted line rectangle, respectively. A
conditional temporal constraints is depicted together with its activation condition.</p>
        <p>
          PRODPROC allows one to specify constraints on resource amounts [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and activity
durations. A resource constraint is a quadruple hA, R, q, T Ei, where A is an activity;
R is an 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 the execution of
activity A. The possibilities for T E are: F romStartT oEnd, Af terStart, Af terEnd,
Bef oreStart, Bef oreEnd, Always, with the obvious meaning. The following is an
example of resource constraints for the third phase of the building construction process.
        </p>
        <p>hRoof insulation, GeneralW orkers, hqGW , [−10, −4]i, F romStartT oEndi.
This constraint specifies that the number of GeneralW orkers available is reduced of
an amount between 4 and 10 during the execution of the activity Roof insulation. All the
workers will return available as soon as the activity ends. Note that resource constraints
may (implicitly) imply constraints on the number of instances of multiple instance
activities. Another form of resource constraints establishes initial level constraints, i.e.,
expressions defining 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 ∈ N.</p>
        <p>An activity duration constraint has the form hA, Constrainti, where A is the name
of an activity, and Constraint may involve the duration of A, process variables, and
quantity variables for resource related to A. This is an example of activity duration
constraint for the third phase of the building construction process (where BuildingArea
is a process variable, and qT , qC are quantity variables):</p>
        <p>BuildingArea
Roof insulation, d =
2 · |qGW | + 2 · |qT | + 3 · |qC |</p>
        <p>PRODPROC also allows one to couple elements for modeling a process and elements
for modeling a product through constraints involving process variables and product
variables. The following are examples in our sample model:
hBuilding, sanitary, Cardi = San ,
hStoryN um, Building, []i = instF inishing works.</p>
        <p>For instance, the last one states that the number of stories of a building has to be equal to
the value of instF inishing works (i.e., number of times the event F inishing works is
executed). In general, constraints involving both product and process variables may help
to detect/avoid planning impossibilities due to product configuration, and configuration
impossibilities due to product configuration, during the configuration of a product.
A PRODPROC model represents the collection of single (producible) variants of a
configurable product and the processes to produce them. A PRODPROC instance represent
one of such variant 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:
• A set N of node instances, i.e., tuples of the form n = hN, i, VN i where N is a
node in the product model graph, i ∈ N is an index (different for each instance of a
node), 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 node instance n and value belongs to
the set of values for V .
• 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 , E i, where E is a set of tuples f =
hlabel, n, mi such that there exists an edge e = hlabel, N, M, Card, CCi in the
product model graph, n is an instance of N and m is an instance of M .
• A set ACards of assignments for all the instance cardinality variables, i.e.,
expressions of the form ICne = k where n is an instance of a node N , e is a
quintuple hlabel, N, M, Card, CCi, ICne ≡ Card, and k is the number of the edges
hlabel, n, mi, such that m is an instance of M , in the instance tree.
• A set A of activity instances, i.e., pairs a = hA, ii where A is the name of an activity
such that execA = 1 and i ∈ N is a unique id for instances of A.
• A set E of flags execA, one for each activity A such that execA 6= 1.
• 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 ∈ Z or value belongs to the
set of values for P .</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,
edges constraints, temporal constraints, resource constraints, etc.), appropriately
instantiated with variables of node instances and activity instances in the candidate instance.</p>
        <p>The (constraint) instantiation mechanism produces a set of constraints on candidate
instance variables from each constraint in the PRODPROC model. A candidate instance
must satisfy all these constraints to qualify as an instance. We give here an intuitive
explanation 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
Lnode as the set of k-tuple of node instances hn, n1, . . . , nki where: n is an instance of
N ; for i = 1, . . . , k ni is an instance of Ni, connected with n through a path qi in the
instance tree such that match(qi, pi) = true holds. match is defined as follows.1
1 Given two lists l1 and l2, l1 ◦ l2 denotes their concatenation. We denote with [x|l] the list
obtained by prepending the element x to the list l.</p>
        <p> true if q = p
 match(ps, mps) if q = [label|ps] ∧ (p = [label|mps] ∨ p = [_|mps])

match(q, p) =  true if p = [⋆, label|ps]∧
 ∧ ∃s.(q = s ◦ [label|ps] ∧ match(ps, mps))
 f alse otherwise
For each k-tuple t ∈ Lnode, we obtain a constraint on instance variables appropriately
substituting variables in c with variables of node instances in t. If c is a constraint for e,
given a k-tuple hn, n1, . . . , nki on which to instantiate it, the cardinality occurring in it
is substituted with the cardinality variable ICne .</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
hn1, . . . , nki, where for i = 1, . . . , k ni is an instance of Ni connected by a path qi
with one of its ancestors in the instance tree, such that match(qi, pi) = true holds.
For each k-tuple t ∈ Lnmc, we obtain a constraint on instance variables appropriately
substituting variables in c with variables of node instances in t. If c is an aggregation
or an alldifferent constraint, then we define an equivalent constraint on the list
consisting of all the node instances of N1, . . . , Nk reached by a path matching with the
corresponding M etaP ath.</p>
        <p>The instantiation of cardinality model constraint 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 n1, . . . , nh be instances of N . For all i ∈ {1, . . . , h}, we instantiate
c appropriately substituting the cardinality variables occurring in it, with the instance
cardinality variables ICne11 , . . . , ICnekk .</p>
        <p>Let us now consider process constraints. Let A be an activity, let a1, . . . , ak 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 = 1, . . . , k, where
qi = q is a fresh variable. 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 variable qi. Finally, let B an activity, let b1, . . . , bh 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 ∈ {1, . . . , k}, j ∈ {1, . . . , h},
substituting in c each occurrence of A with ai, and of B with bj . This mechanism can
be easily extended to temporal constraints involving more than two activities.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Product and Process Configuration</title>
      <p>
        On top of the framework we described in Sect. 2 it is possible to implement a
configuration system based on Constraint Logic Programming (CLP) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In this section, we
first explain how such a system can support a user through the configuration of a
product and its production process. Then, we show how we can generate a CLP program
from a model and a (partial) candidate instance.
      </p>
      <p>User
(2) Choice
information
(8) Choice
consequences</p>
      <p>System
interface</p>
      <p>CLP-based configuration system</p>
      <p>(1) Initialization
(3) Change information
(4) Start inference</p>
      <p>process
(7) Inference process results</p>
      <p>System
engine
(5) CLP
program
(6) Results</p>
      <p>Finite
domain
solver</p>
      <p>A possible general structure of a configuration process supported by a CLP-based
system is pictorially described in Fig. 4. First, the user initializes the system (1)
selecting the model of the product/process 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 on
the current (partial) candidate instance, and encodes the product/process configuration
problem in a CLP program (encoding a Constraint Satisfaction Problem, abbreviated
to CSP). Then, it 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>In the following, we briefly explain how it is possible to obtain a CLP program from
a PRODPROC model and a (partial) candidate instance (a candidate instance is partial
when there are variables with no value assigned to) corresponding to it. We do this
considering only the process side of a model, the operations necessary to obtain CLP
variables and constraints for the product side are similar.</p>
      <p>Given a PRODPROC model and a corresponding (partial) candidate instance defined
by a user, we can easily obtain a CSP hV AR, DOM, CON S T Ri, where V AR is a set
of variables, DOM is a set of finite domain for variables in V AR, and CON S T R is a
set of constraints on variables in V AR. V AR will contain a variable for each node
instance variable, cardinality variable, activity parameter, process characteristic, resource,
and quantity resource variable. DOM will contain a domain, obtained form the
PRODPROC model, for each variable in V . CON S T R will contain all the constraints that
the (partial) candidate instance should satisfy. As we explained in Sect. 2.3, such
constraints are determined by an instantiation mechanism. We give here a formalization of
such mechanism for the process side of a model. We define a function μ that, given the
set of activity instances A, the set RDC = R ∪ D ∪ C, where R is the set of resource
constraints, D is the set of activity duration constraints, C is the set of temporal
constraints, generates a set of constraints instantiated on activity instances. To define μ we
preliminary need to introduce some basic notions. If c is a temporal constraint acts(c)
is the list of activities involved in c. In the following we will denote with a an instance
of an activity, and with pInsts(a) the set of instances of the process associated to a
composite activity instance a. We say that a ↔Act A if and only if a is an instance of
A. The function μ is defined as follows:</p>
      <p>μ(A, RCP , I) = Sa∈A α(a) ∪ Sc∈RCP γ(c, A).</p>
      <p>The function α generates the set of default constraints on duration, start time, and
finishing time for an activity instance a:
α(a) =
tComp(a) if a is a composite activity instance
t(a)
otherwise
,
tComp(a) = {tsatart = minb∈pInsts(a) tbstart, teand = maxb∈pInsts(a) tbend,
ta end − tsatart, execA = 1},
end ≥ tsatart, da = ta
t(a) = {tsatart ≥ 0, teand ≥ tsatart, da = ta
end − tsatart, execA = 1}.</p>
      <p>The function γ instantiate a constraint c on activity instances in A.</p>
      <p> {ha, R, qa, T Ei|a ∈ A∧
 ∧ a ↔Act A ∧ qa = qA}


 c


γ(c, A)= 
 {c[dA/da, qA/qa] | a ∈ A ∧ a ↔Act A}
 {c[A1/a1, . . . , Ak/ak] |
 [A1, . . . , Ak] = acts(c)∧
 ∧ [a1, . . . , ak] ∈ Lact(c, [A1, . . . , Ak], A)}
if c ∈ R∧
∧ c ≡ hA, R, qA, T Ei
if c ∈ R∧
∧ c ≡ initialLevel(R, iv)
if c ∈ D
if c ∈ C
The function Lact(c, [A1, . . . , Ak], A) generates all the k-tuple of activity instances that
are instances of activities involved in a constraint c:
k</p>
      <p>
        Lact(c, [A1, . . . , Ak], A) = {[a1, . . . , ak] | Vj=1(aj ∈ A ∧ aj ↔Act Aj )}
From instantiated resource constraints and CSP variables for resources it is
possible to generate a cumulative constraint [
        <xref ref-type="bibr" rid="ref1 ref4">1,4</xref>
        ]. To obtain CSP constraints from all other
constraints it is sufficient to substitute the instance variables with the corresponding
CSP variables. Temporal constraints are defined on activities, but it is possible to
compile them into propositional formulas on activity durations, starting times, and finishing
times. Table 1 shows the translation for some of the atomic temporal constraints.
      </p>
      <p>Let ϕ and ϑ be temporal constraints, let ϕP and ϑP the corresponding propositional
formulas. Then ϕ and ϑ, ϕ or ϑ, c → ϕ and c ↔ ϕ correspond to ϕP ∧ ϑP , ϕP ∨ ϑP ,
c ⇒ ϕP and c ⇔ ϕP , respectively.</p>
      <p>Given the constraint satisfaction problem CS P it is straightforward to obtain a CLP
program encoding it, once a specific CLP system has been chosen, e.g., SICStus Prolog,
SWI Prolog, or ECLiPse.
4</p>
    </sec>
    <sec id="sec-4">
      <title>A Comparison with Existing Product/Process Modeling Tools</title>
      <p>In this section, we briefly compare the PRODPROC framework with some of the most
important product configuration systems and process modeling tools to put in evidence
its strength and limitations.</p>
      <p>
        Product configuration systems based on Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], e.g.,
Kumbang Configurator [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], provide a number of features that are specifically tailored
to the modeling of software product families. On the one hand, this makes these systems
appealing for a relevant range of application domains. On the other hand, it results in
a lack of generality, which is probably the major drawback of this class of systems. In
particular, they do not support global constraints, and they encounter some problems in
the management of arithmetic constraints related to the so called grounding stage [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        Systems based on binary decision diagrams (BDDs) for product configuration, e.g.,
Configit Product Modeler [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], trade the complexity of the construction of the BDD, that
basically provides an encoding of all possible configurations [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], for the simplicity and
efficiency of the configuration process. Despite their various appealing features,
BDDbased systems suffer from some significant limitations. First, even though some work
has been done on the introduction of modules [
        <xref ref-type="bibr" rid="ref25 ref26">25,26</xref>
        ], they basically support flat models
only. Moreover, they find it difficult to cope with global constraints. Some attempts at
combining BDD with CSP to tackle alldifferent constraints have been recently
done [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]; however, they are confined to the case of flat models. 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 product configuration systems, CSP-based
systems allow the user to define non-flat models and to deal with global constraints.
Unfortunately, the modeling expressiveness of CSP-based systems has a cost, i.e.,
backtrackfree configuration algorithms for CSP-based systems are often inefficient, while non
backtrack-free ones need to explicitly deal with dead ends. Some well-known
CSPbased configuration systems, such as ILOG Configurator [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and Lava [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], seem to
be no longer supported. A recent CSP-based configuration system is Morphos
Configuration Engine (MCE) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. From the point of view of process modeling, PRODPROC
can be viewed as an extension of the MCE modeling language. In particular, it extends
MCE modeling language with the following features: (1) cardinality variables, i.e.,
has-part/is-part-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 node instance variables in constraints.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] the authors present an ontology representing a synthesis of resource-based,
connection-based, function-based and structure-based product configuration approches.
The PRODPROC framework covers only a subset of these concepts. However, it is not
limited to product modeling and it defines a rich (numeric) constraint language, while
it remains unclear to what extent the language used in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] supports the formulation of
configuration-domain specific 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 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. 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 an explicit context as OCL constraint must have.
      </p>
      <p>
        In the past years, different formalisms have been proposed for process modeling.
Among them we have: the Business Process Modeling Notation (BPMN) [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], Yet
Another Workflow Language (YAWL) [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], DECLARE [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Languages like BPMN
and YAWL model a process as a detailed specification of step-by-step procedures that
should be followed during the execution. They 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,
sub-process, and multiple instance activity. The effect of BPMN joins and splits on the
process flow can be obtained by 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. As opposed to traditional imperative approaches to
process modeling, DECLARE uses a constraint-based declarative approach. DECLARE
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 combine 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., [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], 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>
        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="ref2">2</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 have separated
models for products and processes and, constraints for coupling them too. However, our
modeling language is far more complex and expressive than the one presented in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>In this paper we focused on the problem of product and process modeling and
configuration. In particular, we pointed out the lack of a tool covering both physical and
production aspects of configurable products. To overcome this absence, we proposed
a framework called PRODPROC, that allows one to model a configurable products and
its production process. Moreover, we showed how it is possible to build a CLP-based
configuration systems on top of this framework, and compared it to existing product
configuration systems and process modeling tools.</p>
      <p>
        We have 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. PROPROC and
SysML [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] have various commonalities in terms of modeling features, despite the fact
that their purposes are different. We plan to further investigate the relations that exists
between the two modeling languages. We also plan to experiment our configuration
system on different real-world application domains, and to compare it with commercial
products, e.g., [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
    </sec>
    <sec id="sec-6">
      <title>Model Instantiation and CSP creation</title>
      <p>In this section, exploiting the building model introduced in Sect. 2, we show an
example of PRODPROC partial candidate instance, and describe the CSP we obtain from
it. The purpose of the example is twofold: first, to show how multiple instances of a
node affect the constraint instantiation and the CSP corresponding to a model instance;
second, to better describe the encoding of the process description into a CSP, in
particular the generation of a cumulative constraint from resources and instantiated resource
constraints.</p>
      <p>In the following we will denote as hV ar, N ode-ii the variable V ar of the instance
with id i of the node N ode. Since we are considering a partial candidate instance, some
of the node instance variables and process variables may have a value assigned to. For
example, we may have hStoryN um, Building-1i = 2 and San = 0.</p>
      <p>As mentioned in Sect. 2.3, a candidate instance is an instance if it satisfies all the
constraints defined in the model, appropriately instantiated on instance variables. The
instantiation of the node constraints for the nodes Building and Story listed in Sect. 2.1
leads to the following constraints on the variables of node instances in Fig.5.</p>
      <p>Preparation and
development of the
building site, ID = 1</p>
      <p>Building shell and
building envelope
works, ID = 1
hBuildingT ype, Building-1i = Warehouse ⇒ hStoryN um, Building-1i = 1,
hF loorN um, Story-1i ≤ hStoryN um, Building-1i,
hBuildingT ype, Building-1i = Office building ⇒</p>
      <p>⇒ hHeight, Story-1i ≥ 4 ∧ hHeight, Story-1i ≤ 5,
hF loorN um, Story-2i = hF loorN um, Story-1i + 1,
hF loorN um, Story-2i ≤ hStoryN um, Building-1i,
hBuildingT ype, Building-1i = Office building ⇒</p>
      <p>⇒ hHeight, Story-2i ≥ 4 ∧ hHeight, Story-2i ≤ 5.</p>
      <p>Instantiating the cardinality constraints for the edge upper story, introduced in Sect 2.1,
we obtain:
upper story = 0,
hF loorN um, Story-1i = hStoryN um, Building-1i ⇒ ICSutpopreyr-s1tory = 1,
hF loorN um, Story-1i &lt; hStoryN um, Building-1i ⇒ ICStory-1
upper story = 0,
hF loorN um, Story-2i = hStoryN um, Building-1i ⇒ ICSutpopreyr-s2tory = 1.
hF loorN um, Story-2i &lt; hStoryN um, Building-1i ⇒ ICStory-2
Finally, the instantiation of the cardinality model constraint showed in Sect. 2.1 leads
to the constraint:</p>
      <p>ICSutpopreyr-s2tory 6= ICSrotoorfy-2.</p>
      <p>For each activity instance we have constraints on duration, starting and finishing time.
For example, for the composite activity instance “Finishing works” with id 1 we have:
tsFtianristhing works-1 = minb∈pInsts(Finishing works-1) tbstart,
teFnindishing works-1 = maxb∈pInsts(Finishing works-1) tbend,
teFnindishing works-1 ≥ tsFtianristhing works-1,
dFinishing works-1 = teFnindishing works-1 − tsFtianristhing works-1.</p>
      <p>While for the activity instance “Roof insulation” with id 1 we have:
tsRtoaorft insulation-1 ≥ 0, tend</p>
      <p>Roof insulation-1 ≥ 0,
teRnodof insulation-1 ≥ tsRtoaorft insulation-1,
dRoof insulation-1 = tend</p>
      <p>Roof insulation-1 − tsRtoaorft insulation-1.</p>
      <p>Instantiating the resource and duration constraints for the activity Roof insulation
introduced in Sect. 2.2 we obtain:
hRoof insulation-1, GeneralW orkers, hqGW , [−10, −4]i, F romStartT oEndi,
BuildingArea
.</p>
      <p>Roof insulation-1, d =</p>
      <p>2 · |qGW | + 2 · |qT | + 3 · |qC |
The instantiation of the constraint involving both product and process variables showed
in Sect. 2.2 leads to the following constraints:</p>
      <p>ICBsauniildtainryg-1 = San ,
hStoryN um, Building-1i = instF inishing works.</p>
      <p>From the PRODPROC partial candidate instance we just described and its
instantiated constraints, we can construct a CSP with the following characteristics (we use the
SWI-Prolog notation for variables, domains and constraints).</p>
      <p>– A finite domain (FD) variable for each node instance variable, e.g., for the variable
hStoryN um, Building-1i the FD variable StoryNum_Building_1;
– A FD variable for each instance cardinality variable, e.g, for ICSrotoorfy-2 the FD
variable IC_roof_Story_2;
– FD variables for starting time, ending time, duration of each activity instance,
e.g., T_start_Roof_insulation_1, T_end_Roof_insulation_1, and
D_Roof_insulation_1 for the activity instance “Roof insulation” with id 1;
– FD variables for execution flags of activities with no instance;
– FD variables for process and resource variables, e.g., BuildingArea for the
process variable BuildingArea, GeneralWorkers for the resource variable
GeneralW orkers;
– A domain constraint for each FD variable, e.g., IC_roof_Story_2 in 0..1;
– A constraint on an FD variable for each assignments, obtained by substituting each
instance variable with the corresponding FD variable;
– A constraint on FD variables for each instantiated constraint, obtained by
substituting each instance variable with the corresponding FD variable;
– For each composite activity instance, a minimum and a maximum constraint on
start and end times, e.g., for the instance with id 1 of the activity “Finishing works”
the constraint minimum(T_start_Finishing_works_1,Ts) and the
constraint maximum(T_end_Finishing_works_1,Te), where Ts, Te are
respectively the list of start and end times of the activity in the process related to the
instance with id 1 of “Finishing works”;
– A constraint on FD variables for each instantiated temporal constraint, obtained by
substituting start times, end times, and execution flags with the corresponding FD
variables in the propositional formula equivalent to the temporal constraint;
– A constraint on FD variables for each instantiated duration constraint, obtained by
substituting duration, process and resource variables with the corresponding FD
variables;
– A constraint of the form cumulatives(Tasks,Machines) where Tasks
is a list of task predicates, one for each instantiated resource constraint, and
Machines is a list of machine predicates, one for each resource. For example,
for the resource constraint showed in Sect. 2.2 and the resource GeneralW orkers
we define the predicates</p>
    </sec>
    <sec id="sec-7">
      <title>CLP-based Configuration System</title>
      <p>We are using SWI-Prolog to develop a CLP-based configuration system that exploits
the close relation that exists between configuration problems and CSPs.2 In particular,
we are using the SWI-Prolog pce library to implement the system graphical user
interface, and the clpfd library for constraint propagation and labeling purposes. The
current version of the system is limited to product modeling. Fig. 7 shows the graphical
user interface that allows a user to define a product description using PRODPROC. The
interface presents (on the left, from top to bottom) controls for graphical element
selection, creation of nodes, creation of edges, and creation of sets of model constraints.
Moreover, there is a menu named “Check” with controls for checking model syntactic
correctness, and for automatically generate product instances to check model validity.
2 We chose CLP instead of Constraint Programming for the advantages the former gives in terms
of rapid software prototyping.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>A.</given-names>
            <surname>Aggoun</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Beldiceanu</surname>
          </string-name>
          .
          <article-title>Extending chip in order to solve complex scheduling and placement problems</article-title>
          .
          <source>Mathematical and Computer Modelling</source>
          ,
          <volume>17</volume>
          \ (7\ ):
          <fpage>57</fpage>
          -
          <lpage>73</lpage>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <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>
          \ (5\ ):
          <fpage>521</fpage>
          -
          <lpage>535</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <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="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>N.</given-names>
            <surname>Beldiceanu</surname>
          </string-name>
          and
          <string-name>
            <surname>M. Carlsson.</surname>
          </string-name>
          <article-title>A New Multi-resource cumulatives Constraint with Negative Heights</article-title>
          . In P. Van Hentenryck, editor,
          <source>CP 2002</source>
          , volume
          <volume>2470</volume>
          <source>of LNCS</source>
          , pages
          <fpage>63</fpage>
          -
          <lpage>79</lpage>
          . Springer Berlin / Heidelberg,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>U.</given-names>
            <surname>Blumöhr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Münch</surname>
          </string-name>
          , 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="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>D.</given-names>
            <surname>Campagna</surname>
          </string-name>
          .
          <article-title>A Graphical Framework for Supporting Mass Customization</article-title>
          .
          <source>In Proc. of the IJCAI'11 Workshop on Configuration</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>D.</given-names>
            <surname>Campagna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. D.</given-names>
            <surname>Rosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Montanari</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <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="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Configit</surname>
            <given-names>A</given-names>
          </string-name>
          /S. Configit Product Modeler. http://www.configit.com.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <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>
          \ (1\ ):
          <fpage>41</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. G. Fleischanderl,
          <string-name>
            <given-names>G.</given-names>
            <surname>Friedrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Haselböck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Schreiner</surname>
          </string-name>
          , 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>
          \ (4\ ):
          <fpage>59</fpage>
          -
          <lpage>68</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <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="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>T.</given-names>
            <surname>Hadzic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Subbarayan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. M.</given-names>
            <surname>Jensen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. R.</given-names>
            <surname>Andersen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Moller</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Hulgaard</surname>
          </string-name>
          .
          <article-title>Fast backtrack-free product configuration using a precompiled solution space representation</article-title>
          .
          <source>In Proc. of the International Conference on Economic, Technical and Organizational Aspects of Product Configuration Systems</source>
          , pages
          <fpage>131</fpage>
          -
          <lpage>138</lpage>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <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="ref14">
        <mixed-citation>
          14. U. Junker.
          <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="ref15">
        <mixed-citation>
          15.
          <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>February 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>V.</given-names>
            <surname>Myllärniemi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Asikainen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Männistö</surname>
          </string-name>
          , 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="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>A. H. Nørgaard</surname>
            ,
            <given-names>M. R.</given-names>
          </string-name>
          <string-name>
            <surname>Boysen</surname>
            ,
            <given-names>R. M.</given-names>
          </string-name>
          <string-name>
            <surname>Jensen</surname>
            , and
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <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 Proc. of the IJCAI'09 Workshop on Configuration</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. OMG.
          <article-title>OMG Systems Modeling Language</article-title>
          . http://www.omgsysml.org.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>M. Pesic</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Schonenberg</surname>
            , and
            <given-names>W. van der Aalst. DECLARE</given-names>
          </string-name>
          :
          <article-title>Full support for looselystructured processes</article-title>
          .
          <source>In EDOC'07</source>
          , pages
          <fpage>287</fpage>
          -
          <lpage>287</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>M. L. Rosa</surname>
          </string-name>
          .
          <article-title>Managing Variability in Process-Aware Information Systems</article-title>
          .
          <source>PhD thesis</source>
          , Queensland University of Technology, Brisbane, Australia,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <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>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>T.</given-names>
            <surname>Soininen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Tiihonen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Männistö</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Sulonen</surname>
          </string-name>
          .
          <article-title>Towards a general ontology of configuration</article-title>
          .
          <source>Artif. Intell. Eng. Des. Anal. Manuf</source>
          .,
          <volume>12</volume>
          :
          <fpage>357</fpage>
          -
          <lpage>372</lpage>
          ,
          <year>September 1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <given-names>H.</given-names>
            <surname>Sommer</surname>
          </string-name>
          .
          <source>Project Management for Building Construction</source>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>A. H. M. ter Hofstede</surname>
            , W. van der Aalst, 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="ref25">
        <mixed-citation>
          25.
          <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="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>E. R. van der Meer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Wasowski</surname>
            , and
            <given-names>H. R.</given-names>
          </string-name>
          <string-name>
            <surname>Andersen</surname>
          </string-name>
          .
          <article-title>Efficient interactive configuration of unbounded modular systems</article-title>
          .
          <source>In Proc. of the 2006 ACM symposium on Applied computing, SAC '06</source>
          , pages
          <fpage>409</fpage>
          -
          <lpage>414</lpage>
          . ACM,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27. W. J. van Hoeve.
          <source>The alldifferent Constraint: A Survey</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <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 id="ref29">
        <mixed-citation>
          <string-name>
            <surname>task</surname>
            (T_start_Roof_insulation_1,
            <given-names>D</given-names>
          </string-name>
          <string-name>
            <surname>_</surname>
            Roof_insulation_1, T_end_Roof_insulation_1,
            <given-names>Q_GW</given-names>
          </string-name>
          ,GeneralWorkers, FromStartToEnd)
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>