Workflow Scheduling Algorithms 91
and forcing each d
in
ij
to be either 0 or d
i
. This can be done by introducing an
additional variable b
ij
∈ Z for each service s
ij
that defines whether service s
ij
has been activated or not:
b
ij
=
0 if d
in
ij
= 0
1 if d
in
ij
= d
i
.
(4.8)
Since only one service s
ij
per task t
i
can be selected, the following needs to
hold true:
∀
i
X
j
b
ij
= 1. (4.9)
Then, large enough constants U
ij
can be introduced such that:
d
in
ij
≤ b
ij
U
ij
. (4.10)
If b
ij
= 0, then corresponding d
in
ij
= 0. For the given i and exactly one k
b
ik
= 1 which, along with equation 4.7, will force d
in
ik
= d
i
.
The same strategy can be applied for output data with the same b
ij
s
variables.
d
out
i
=
X
j
d
out
ij
(4.11)
Consequently, the execution time of service s
ij
can be modeled as:
t
exec
ij
= f
exec
ij