createElement($indice);
} else {
$nodo = $obj->createElement($indice, $contenido);
}
$padre->appendChild($nodo);
} else {
if ($contenido=='') {
$nodo = $obj->createElement($indice);
} else {
$nodo = $obj->createElement($indice, $contenido);
}
$obj->appendChild($nodo);
}
if (is_array($atributos)) {
foreach ($atributos as $key => $value) {
$atributo = $obj->createAttribute($key);
$nodo->appendChild($atributo);
$texto = $obj->createTextNode($value);
$atributo->appendChild($texto);
}
}
return $nodo;
}
function derivationRules($aRoute, $doc, $nodo_derivationrule)
{
$tam = count($aRoute);
$c=0;
switch ($aRoute[$c]['ROU_TYPE'])
{
case 'SEQUENTIAL':
$nodo_routeType = addNodox($doc, $nodo_derivationrule, 'Sequential', '', '');
$nodo_nexttask = addNodox($doc, $nodo_routeType, 'NextTask', '', '');
if ($aRoute[$c]['ROU_NEXT_TASK'] != -1) {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'TaskRef', '',
array('TaskId'=> 'ID'.$aRoute[$c]['ROU_NEXT_TASK']));
} else {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'End', '', '');
}
break;
case 'EVALUATE':
$nodo_routeType = addNodox($doc, $nodo_derivationrule, 'Evaluations', '', '');
while ($c < $tam) {
$nodo_evaluation= addNodox($doc, $nodo_routeType, 'Evaluation', '', array('Condition'=> $aRoute[$c]['ROU_CONDITION']));
$nodo_nexttask = addNodox($doc, $nodo_evaluation, 'NextTask', '', '');
if ($aRoute[$c]['ROU_NEXT_TASK'] != -1) {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'TaskRef', '', array('TaskId'=> 'ID'.$aRoute[$c]['ROU_NEXT_TASK']));
} else {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'End', '', '');
}
$c++;
}
break;
case 'SELECT':
$nodo_routeType = addNodox($doc, $nodo_derivationrule, 'Selections', '', '');
while ($c < $tam) {
$nodo_selection= addNodox($doc, $nodo_routeType, 'Selection', '', array('Description'=> $aRoute[$c]['ROU_CONDITION']));
$nodo_nexttask = addNodox($doc, $nodo_selection, 'NextTask', '', '');
if ($aRoute[$c]['ROU_NEXT_TASK'] != -1) {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'TaskRef', '', array('TaskId'=> 'ID'.$aRoute[$c]['ROU_NEXT_TASK']));
} else {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'End', '', '');
}
$c++;
}
break;
case 'PARALLEL':
$nodo_routeType = addNodox($doc, $nodo_derivationrule, 'ParallelForks', '', '');
while ($c < $tam) {
$nodo_parallelfork= addNodox($doc, $nodo_routeType, 'ParallelFork', '', '');
$nodo_nexttask = addNodox($doc, $nodo_parallelfork, 'NextTask', '', '');
if ($aRoute[$c]['ROU_NEXT_TASK'] != -1) {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'TaskRef', '', array('TaskId'=> 'ID'.$aRoute[$c]['ROU_NEXT_TASK']));
} else {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'End', '', '');
}
$c++;
}
break;
case 'PARALLEL-BY-EVALUATION':
$nodo_routeType = addNodox($doc, $nodo_derivationrule, 'ParallelForksByEvaluation', '', '');
while ($c < $tam) {
$nodo_evaluation= addNodox($doc, $nodo_routeType, 'Evaluation', '', array('Condition'=> $aRoute[$c]['ROU_CONDITION']));
$nodo_nexttask = addNodox($doc, $nodo_evaluation, 'NextTask', '', '');
if ($aRoute[$c]['ROU_NEXT_TASK'] != -1) {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'TaskRef', '', array('TaskId'=> 'ID'.$aRoute[$c]['ROU_NEXT_TASK']));
} else {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'End', '', '');
}
$c++;
}
break;
case 'SEC-JOIN':
$nodo_routeType = addNodox($doc, $nodo_derivationrule, 'ParallelJoin', '', '');
$nodo_nexttask = addNodox($doc, $nodo_routeType, 'NextTask', '', '');
if ($aRoute[$c]['ROU_NEXT_TASK'] != -1) {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'TaskRef', '', array('TaskId'=> 'ID'.$aRoute[$c]['ROU_NEXT_TASK']));
} else {
$nodo_taskref = addNodox($doc, $nodo_nexttask, 'End', '', '');
}
break;
}
}
/****-_--__---___----___---__--_-****/
G::LoadClass('tasks');
require_once 'classes/model/Process.php';
$doc = new DOMDocument('1.0', 'UTF-8');
$nodo_padre = addNodox($doc, '', 'Processes', '', array('xmlns:xsi'=>'http://www.w3.org/2001/XMLSchema-instance','xsi:noNamespaceSchemaLocation'=>'ColosaSchema.xsd'));
$aProcesses = array();
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(ProcessPeer::PRO_UID);
//$oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL);
//$oCriteria->add(ProcessPeer::PRO_UID, '946679494980c3d0ba0814088444708');
$oDataset = ProcessPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$oProcess = new Process();
while ($aRow = $oDataset->getRow()) {
$aProcess = $oProcess->load($aRow['PRO_UID']);
$nodo_process = addNodox($doc, $nodo_padre, 'Process', '', array('Title'=> $aProcess['PRO_TITLE'],'Description'=> $aProcess['PRO_DESCRIPTION']));
$nodo_tasks = addNodox($doc, $nodo_process, 'Tasks', '', '');
$oTask = new Tasks();
$aTasks= $oTask->getAllTasks($aProcess['PRO_UID']);
foreach ($aTasks as $key => $value) {
//print_r($value); echo "
";
$aRoute = $oTask->getRoute($aProcess['PRO_UID'], $value['TAS_UID']);
//print_r($aRoute[0]['ROU_UID']); echo "