示例#1
0
     }
 } else {
     $result = array();
     $result['status_code'] = 1;
     $result['message'] = "you don't send the process uid";
     $result['timestamp'] = date('Y-m-d H:i:s');
     echo G::json_encode($result);
     die;
 }
 $aTasks = G::json_decode($_POST['tasks']);
 $aRoutes = G::json_decode($_POST['routes']);
 $aEvents = G::json_decode($_POST['events']);
 $aGateways = G::json_decode($_POST['gateways']);
 $aAnnotations = G::json_decode($_POST['annotations']);
 $aSubprocess = G::json_decode($_POST['subprocess']);
 $fields = $oProcess->serializeProcess($idProcess);
 $oData = unserialize($fields);
 $aRoutes = $oProcess->super_unique($aRoutes);
 $sOutput = '';
 $subProcesses = array();
 foreach ($aTasks as $endBase => $valueEnd) {
     $tasks['ID_TASK'] = $valueEnd['0'];
     $tasks['START'] = '';
     foreach ($aEvents as $id => $value) {
         if ($value['1'] == 'bpmnEventEmptyStart' or $value['1'] == 'bpmnEventMessageStart' or $value['1'] == 'bpmnEventTimerStart') {
             foreach ($aRoutes as $endR => $valueR) {
                 if ($tasks['ID_TASK'] == $valueR['2'] and $valueR['1'] == $value['0']) {
                     $tasks['START'] = 'TRUE';
                     unset($aEvents[$id]);
                     unset($aRoutes[$endR]);
                 }
示例#2
0
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
 * Coral Gables, FL, 33134, USA, or email info@colosa.com.
 *
 */
G::LoadClass('xpdl');
$processUID = $_REQUEST['PRO_UID'];
$oProcess = new Xpdl();
$fields = $oProcess->serializeProcess($processUID);
$oData = unserialize($fields);
$arrayTasks = array();
$countTasks = 0;
$countSubProcess = 0;
$arrayEvents = array();
$arraySubProcess = array();
$count = 0;
$countRoutes = 0;
$arrayRoutes = array();
$process = array();
$process = $oProcess->createProcessPM($oData->process);
foreach ($oData->tasks as $id => $value) {
    if ($value['TAS_TYPE'] == 'SUBPROCESS') {
        $arraySubProcess[$countSubProcess]['0'] = $value['TAS_UID'];
        $arraySubProcess[$countSubProcess]['1'] = $value['TAS_TITLE'];
示例#3
0
 function openProcess($httpData)
 {
     G::LoadClass('xpdl');
     $processUID = $httpData->PRO_UID;
     $oProcess = new Xpdl();
     $fields = $oProcess->serializeProcess($processUID);
     $oData = unserialize($fields);
     $arrayTasks = array();
     $countTasks = 0;
     $countSubProcess = 0;
     $arrayEvents = array();
     $arraySubProcess = array();
     $count = 0;
     $countRoutes = 0;
     $arrayRoutes = array();
     $process = array();
     $process = $oProcess->createProcessPM($oData->process);
     foreach ($oData->tasks as $id => $value) {
         if ($value['TAS_TYPE'] == 'SUBPROCESS') {
             $arraySubProcess[$countSubProcess]['0'] = $value['TAS_UID'];
             $arraySubProcess[$countSubProcess]['1'] = $value['TAS_TITLE'];
             $arraySubProcess[$countSubProcess]['2'] = $value['TAS_POSX'];
             $arraySubProcess[$countSubProcess]['3'] = $value['TAS_POSY'];
             $countSubProcess = $countSubProcess + 1;
         } else {
             $arrayTasks[$countTasks]['0'] = $value['TAS_UID'];
             $arrayTasks[$countTasks]['1'] = $value['TAS_TITLE'];
             $arrayTasks[$countTasks]['2'] = $value['TAS_POSX'];
             $arrayTasks[$countTasks]['3'] = $value['TAS_POSY'];
             $arrayTasks[$countTasks]['4'] = $value['TAS_WIDTH'];
             $arrayTasks[$countTasks]['5'] = $value['TAS_HEIGHT'];
             $arrayTasks[$countTasks]['6'] = $value['TAS_BOUNDARY'];
             if ($value['TAS_START'] == 'TRUE') {
                 $arrayEvents[$count]['0'] = G::generateUniqueID();
                 if ($value['TAS_EVN_UID'] == '') {
                     $arrayEvents[$count]['1'] = 'bpmnEventEmptyStart';
                 } else {
                     foreach ($oData->event as $eventid => $val) {
                         if ($val['EVN_UID'] == $value['TAS_EVN_UID']) {
                             $arrayEvents[$count]['0'] = $val['EVN_UID'];
                             $arrayEvents[$count]['1'] = $val['EVN_TYPE'];
                             break;
                         }
                     }
                 }
                 $arrayEvents[$count]['2'] = $value['TAS_POSX'] + 68;
                 $arrayEvents[$count]['3'] = $value['TAS_POSY'] - 50;
                 $arrayEvents[$count]['4'] = $value['TAS_UID'];
                 $arrayRoutes[$countRoutes]['0'] = G::generateUniqueID();
                 $arrayRoutes[$countRoutes]['1'] = $arrayEvents[$count]['0'];
                 $arrayRoutes[$countRoutes]['2'] = $value['TAS_UID'];
                 $arrayRoutes[$countRoutes]['3'] = '1';
                 $arrayRoutes[$countRoutes]['4'] = '2';
                 $count = $count + 1;
                 $countRoutes = $countRoutes + 1;
             }
             $countTasks = $countTasks + 1;
         }
     }
     $lanes = $oProcess->createLanesNewPM($oData->lanes);
     $fields = $oProcess->createTransitionsPM($oData->tasks, $oData->routes, $arrayEvents, $count, $arrayRoutes, $countRoutes);
     //Get Standalone Events and routes
     $countEvent = count($fields['EVENTS']);
     $countRoutes = count($fields['TRANSITION']);
     foreach ($oData->event as $id => $value) {
         if ($value['TAS_UID'] == '' && $value['EVN_TAS_UID_FROM'] != '' && $value['EVN_TAS_UID_TO'] != '') {
             //Check for Intermediate Events
             $evn_uid = $value['EVN_UID'];
             $idTaskFrom = $value['EVN_TAS_UID_FROM'];
             $idTaskTo = $value['EVN_TAS_UID_TO'];
             $fields['EVENTS'][$countEvent]['0'] = $value['EVN_UID'];
             $fields['EVENTS'][$countEvent]['1'] = $value['EVN_TYPE'];
             $fields['EVENTS'][$countEvent]['2'] = $value['EVN_POSX'];
             $fields['EVENTS'][$countEvent]['3'] = $value['EVN_POSY'];
             $fields['EVENTS'][$countEvent]['4'] = $value['TAS_UID'];
             $countEvent = $countEvent + 1;
             $fields['TRANSITION'][$countRoutes]['0'] = G::generateUniqueID();
             $fields['TRANSITION'][$countRoutes]['1'] = $idTaskFrom;
             $fields['TRANSITION'][$countRoutes]['2'] = $evn_uid;
             $fields['TRANSITION'][$countRoutes]['3'] = '1';
             $fields['TRANSITION'][$countRoutes]['4'] = '2';
             $countRoutes = $countRoutes + 1;
             $fields['TRANSITION'][$countRoutes]['0'] = G::generateUniqueID();
             $fields['TRANSITION'][$countRoutes]['1'] = $evn_uid;
             $fields['TRANSITION'][$countRoutes]['2'] = $idTaskTo;
             $fields['TRANSITION'][$countRoutes]['3'] = '2';
             $fields['TRANSITION'][$countRoutes]['4'] = '1';
             $countRoutes = $countRoutes + 1;
         } else {
             if ($value['TAS_UID'] == '' && $value['EVN_TAS_UID_TO'] != '' && !preg_match("/Start/", $value['EVN_TYPE'])) {
                 $evn_uid = $value['EVN_UID'];
                 $idTask = $value['EVN_TAS_UID_TO'];
                 $fields['EVENTS'][$countEvent]['0'] = $value['EVN_UID'];
                 $fields['EVENTS'][$countEvent]['1'] = $value['EVN_TYPE'];
                 $fields['EVENTS'][$countEvent]['2'] = $value['EVN_POSX'];
                 $fields['EVENTS'][$countEvent]['3'] = $value['EVN_POSY'];
                 $fields['EVENTS'][$countEvent]['4'] = $value['TAS_UID'];
                 $countEvent = $countEvent + 1;
                 $fields['TRANSITION'][$countRoutes]['0'] = G::generateUniqueID();
                 $fields['TRANSITION'][$countRoutes]['1'] = $evn_uid;
                 $fields['TRANSITION'][$countRoutes]['2'] = $idTask;
                 $fields['TRANSITION'][$countRoutes]['3'] = '2';
                 $fields['TRANSITION'][$countRoutes]['4'] = '1';
                 $countRoutes = $countRoutes + 1;
             } else {
                 if ($value['TAS_UID'] == '' && $value['EVN_TAS_UID_FROM'] != '' && !preg_match("/End/", $value['EVN_TYPE'])) {
                     //Check for Intermediate Events
                     $evn_uid = $value['EVN_UID'];
                     $idTask = $value['EVN_TAS_UID_FROM'];
                     $fields['EVENTS'][$countEvent]['0'] = $value['EVN_UID'];
                     $fields['EVENTS'][$countEvent]['1'] = $value['EVN_TYPE'];
                     $fields['EVENTS'][$countEvent]['2'] = $value['EVN_POSX'];
                     $fields['EVENTS'][$countEvent]['3'] = $value['EVN_POSY'];
                     $fields['EVENTS'][$countEvent]['4'] = $value['TAS_UID'];
                     $countEvent = $countEvent + 1;
                     $fields['TRANSITION'][$countRoutes]['0'] = G::generateUniqueID();
                     $fields['TRANSITION'][$countRoutes]['1'] = $idTask;
                     $fields['TRANSITION'][$countRoutes]['2'] = $evn_uid;
                     $fields['TRANSITION'][$countRoutes]['3'] = '1';
                     $fields['TRANSITION'][$countRoutes]['4'] = '2';
                     $countRoutes = $countRoutes + 1;
                 } else {
                     if ($value['TAS_UID'] == '' && $value['EVN_TAS_UID_FROM'] == '' && $value['EVN_TAS_UID_TO'] == '') {
                         $fields['EVENTS'][$countEvent]['0'] = $value['EVN_UID'];
                         $fields['EVENTS'][$countEvent]['1'] = $value['EVN_TYPE'];
                         $fields['EVENTS'][$countEvent]['2'] = $value['EVN_POSX'];
                         $fields['EVENTS'][$countEvent]['3'] = $value['EVN_POSY'];
                         $fields['EVENTS'][$countEvent]['4'] = $value['TAS_UID'];
                         $countEvent = $countEvent + 1;
                     }
                 }
             }
         }
     }
     //Get all the standalone Gateway
     $countGateway = count($fields['GATEWAYS']);
     $countTransitions = count($fields['TRANSITION']);
     foreach ($oData->gateways as $id => $value) {
         if ($value['GAT_NEXT_TASK'] != '' && $value['TAS_UID'] != '' && $value['GAT_TYPE'] != '') {
             $fields['GATEWAYS'][$countGateway]['0'] = $value['GAT_UID'];
             $fields['GATEWAYS'][$countGateway]['1'] = $value['GAT_TYPE'];
             $fields['GATEWAYS'][$countGateway]['2'] = $value['GAT_X'];
             $fields['GATEWAYS'][$countGateway]['3'] = $value['GAT_Y'];
             $fields['GATEWAYS'][$countGateway]['4'] = $value['TAS_UID'];
             $fields['GATEWAYS'][$countGateway]['5'] = $value['TAS_UID'];
             $countGateway += 1;
             $fields['TRANSITION'][$countTransitions]['0'] = G::generateUniqueID();
             $fields['TRANSITION'][$countTransitions]['1'] = $value['TAS_UID'];
             $fields['TRANSITION'][$countTransitions]['2'] = $value['GAT_UID'];
             $fields['TRANSITION'][$countTransitions]['3'] = '1';
             $fields['TRANSITION'][$countTransitions]['4'] = '2';
             $countTransitions += 1;
             $fields['TRANSITION'][$countTransitions]['0'] = G::generateUniqueID();
             $fields['TRANSITION'][$countTransitions]['1'] = $value['GAT_UID'];
             $fields['TRANSITION'][$countTransitions]['2'] = $value['GAT_NEXT_TASK'];
             $fields['TRANSITION'][$countTransitions]['3'] = '2';
             $fields['TRANSITION'][$countTransitions]['4'] = '1';
             $countTransitions += 1;
         } else {
             if ($value['GAT_NEXT_TASK'] != '' && $value['TAS_UID'] == '') {
                 $fields['GATEWAYS'][$countGateway]['0'] = $value['GAT_UID'];
                 $fields['GATEWAYS'][$countGateway]['1'] = $value['GAT_TYPE'];
                 $fields['GATEWAYS'][$countGateway]['2'] = $value['GAT_X'];
                 $fields['GATEWAYS'][$countGateway]['3'] = $value['GAT_Y'];
                 $fields['GATEWAYS'][$countGateway]['4'] = $value['TAS_UID'];
                 $fields['GATEWAYS'][$countGateway]['5'] = $value['GAT_NEXT_TASK'];
                 $fields['TRANSITION'][$countTransitions]['0'] = G::generateUniqueID();
                 $fields['TRANSITION'][$countTransitions]['1'] = $value['GAT_UID'];
                 $fields['TRANSITION'][$countTransitions]['2'] = $value['GAT_NEXT_TASK'];
                 $fields['TRANSITION'][$countTransitions]['3'] = '2';
                 $fields['TRANSITION'][$countTransitions]['4'] = '1';
                 $countGateway += 1;
                 $countTransitions += 1;
             } else {
                 if ($value['GAT_NEXT_TASK'] == '' && $value['TAS_UID'] != '') {
                     $fields['GATEWAYS'][$countGateway]['0'] = $value['GAT_UID'];
                     $fields['GATEWAYS'][$countGateway]['1'] = $value['GAT_TYPE'];
                     $fields['GATEWAYS'][$countGateway]['2'] = $value['GAT_X'];
                     $fields['GATEWAYS'][$countGateway]['3'] = $value['GAT_Y'];
                     $fields['GATEWAYS'][$countGateway]['4'] = $value['TAS_UID'];
                     $fields['GATEWAYS'][$countGateway]['5'] = $value['GAT_NEXT_TASK'];
                     $fields['TRANSITION'][$countTransitions]['0'] = G::generateUniqueID();
                     $fields['TRANSITION'][$countTransitions]['1'] = $value['TAS_UID'];
                     $fields['TRANSITION'][$countTransitions]['2'] = $value['GAT_UID'];
                     $fields['TRANSITION'][$countTransitions]['3'] = '1';
                     $fields['TRANSITION'][$countTransitions]['4'] = '2';
                     $countGateway += 1;
                     $countTransitions += 1;
                 } else {
                     if ($value['GAT_NEXT_TASK'] == '' && $value['TAS_UID'] == '') {
                         $fields['GATEWAYS'][$countGateway]['0'] = $value['GAT_UID'];
                         $fields['GATEWAYS'][$countGateway]['1'] = $value['GAT_TYPE'];
                         $fields['GATEWAYS'][$countGateway]['2'] = $value['GAT_X'];
                         $fields['GATEWAYS'][$countGateway]['3'] = $value['GAT_Y'];
                         $countGateway += 1;
                     }
                 }
             }
         }
     }
     //Create Annotation route
     foreach ($oData->lanes as $id => $value) {
         if ($value['SWI_NEXT_UID'] != '') {
             $fields['TRANSITION'][$countTransitions]['0'] = G::generateUniqueID();
             $fields['TRANSITION'][$countTransitions]['1'] = $value['SWI_NEXT_UID'];
             $fields['TRANSITION'][$countTransitions]['2'] = $value['SWI_UID'];
             $fields['TRANSITION'][$countTransitions]['3'] = '1';
             $fields['TRANSITION'][$countTransitions]['4'] = '2';
             $countTransitions += 1;
         }
     }
     //$subProcess         = $oProcess->createSubProcessesPM($oData->subProcess);
     $arrayEvents = $fields['EVENTS'];
     $arrayGateways = $fields['GATEWAYS'];
     $arrayRoutes = $fields['TRANSITION'];
     $data['tasks'] = $arrayTasks;
     $data['subprocess'] = $arraySubProcess;
     $data['routes'] = $arrayRoutes;
     $data['events'] = $arrayEvents;
     $data['gateways'] = $arrayGateways;
     $data['process'] = $process;
     $data['annotations'] = $lanes;
     return $data;
 }