blob: b0fbd8874bcc38a6f7db23a209206e3980d693a6 [file] [log] [blame]
context Flowchart {
constraint MustHaveOneStart {
check {
var numberOfStartNodes = self.nodes.select(n|n.isStart()).size();
return numberOfStartNodes == 1;
}
message : "There must be precisely 1 starting node, but there are " + numberOfStartNodes
}
constraint MustHaveAtLeastOneFinal {
check {
var numberOfFinalNodes = self.nodes.select(n|n.isFinal()).size();
return numberOfFinalNodes >= 1;
}
message : "There must be at least 1 final node, but there are " + numberOfFinalNodes
}
}
operation Flowchart!Node isStart() : Boolean {
return self.incoming.isEmpty();
}
operation Flowchart!Node isFinal() : Boolean {
return self.outgoing.isEmpty();
}