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 "
"; /*foreach($aRoute as $k => $v) echo $k."-->".$v."
"; */ if ($value['TAS_TYPE'] == 'NORMAL') { $ini = ($value['TAS_START'] == 'TRUE') ? 'true' : 'false'; $nodo_task = addNodox( $doc, $nodo_tasks, 'Task', '', array ('Title' => $value['TAS_TITLE'],'Description' => $value['TAS_DESCRIPTION'],'Id' => 'ID' . $value['TAS_UID'],'StartingTask' => $ini ) ); $nodo_coordinates = addNodox( $doc, $nodo_task, 'Coordinates', '', array ('XCoordinate' => $value['TAS_POSX'],'YCoordinate' => $value['TAS_POSY'] ) ); $nodo_derivationrule = addNodox( $doc, $nodo_task, 'DerivationRule', '', '' ); derivationRules( $aRoute, $doc, $nodo_derivationrule ); $nodo_assignmentrules = addNodox( $doc, $nodo_task, 'AssignmentRules', '', '' ); $nodo_cyclicalassignment = addNodox( $doc, $nodo_assignmentrules, 'CyclicalAssignment', '', '' ); $nodo_timingcontrol = addNodox( $doc, $nodo_task, 'TimingControl', '', array ('TaskDuration' => $value['TAS_DURATION'] ) ); $nodo_permissions = addNodox( $doc, $nodo_task, 'Permissions', '', '' ); $nodo_caselabels = addNodox( $doc, $nodo_task, 'CaseLabels', '', '' ); $nodo_notifications = addNodox( $doc, $nodo_task, 'Notifications', '', '' ); } else { require_once ("classes/model/SubProcess.php"); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( SubProcessPeer::PRO_PARENT, $value['PRO_UID'] ); $oCriteria->add( SubProcessPeer::TAS_PARENT, $value['TAS_UID'] ); $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRow = $oDataset->getRow(); $nodo_task = addNodox( $doc, $nodo_tasks, 'SubProcess', '', array ('Title' => $value['TAS_TITLE'],'Description' => $value['TAS_DESCRIPTION'],'Id' => 'ID' . $value['TAS_UID'],'ProcessRef' => $aRow['PRO_UID'] ) ); $nodo_coordinates = addNodox( $doc, $nodo_task, 'Coordinates', '', array ('XCoordinate' => $value['TAS_POSX'],'YCoordinate' => $value['TAS_POSY'] ) ); $nodo_derivationrule = addNodox( $doc, $nodo_task, 'DerivationRule', '', '' ); derivationRules( $aRoute, $doc, $nodo_derivationrule ); } } $oDataset->next(); } //die; $doc->preserveWhiteSpace = false; $doc->formatOutput = true; $doc->save( PATH_METHODS . 'services/test_xpdl.xml' ); echo "xml for xpdl creado!!!
";