private function collectTransitions()
{
$nlEdges = $this->_xp->query('//ns:edge');
if ($nlEdges->length == 0) {
throw new WorkflowException("no edge could be found in this workflow");
}
$result = [];
for ($i = 0; $i < $nlEdges->length; $i++) {
$currentNode = $nlEdges->item($i);
$source = trim($this->_xp->query("@source", $currentNode)->item(0)->value);
$target = trim($this->_xp->query("@target", $currentNode)->item(0)->value);
if (!isset($result[$source]) || !isset($result[$source][$target])) {
$result[$source][$target] = [];
}
}
return $result;
}