Ejemplo n.º 1
0
 /**
  * Get the project Diagram data with a determined Project Id
  * @param string $prjID
  * @return array
  */
 public function getProjectDiagram($prjID)
 {
     $diagramBean = BeanFactory::getBean('pmse_BpmnDiagram');
     //new BpmnDiagram();
     $diagramData = array();
     $activityBean = BeanFactory::getBean('pmse_BpmnActivity');
     //new BpmnActivity();
     $activityData = array();
     $artifactBean = BeanFactory::getBean('pmse_BpmnArtifact');
     //new BpmnArtifact();
     $artifactData = array();
     $gatewayBean = BeanFactory::getBean('pmse_BpmnGateway');
     //new BpmnGateway();
     $gatewayData = array();
     $eventBean = BeanFactory::getBean('pmse_BpmnEvent');
     //new BpmnEvent();
     $eventData = array();
     $flowBean = BeanFactory::getBean('pmse_BpmnFlow');
     //new BpmnFlow();
     $flowData = array();
     $rulesetBean = BeanFactory::getBean('pmse_Business_Rules');
     //new BpmRuleSet();
     $rulesetData = array();
     $lanesetBean = BeanFactory::getBean('pmse_BpmnLaneset');
     //new BpmnLaneset();
     $lanesetData = array();
     $laneBean = BeanFactory::getBean('pmse_BpmnLane');
     //new BpmnLane();
     $laneData = array();
     //        $participantBean = BeanFactory::getBean('pmse_BpmnParticipant'); //new BpmnParticipant();
     //        $participantData = array();
     $processBean = BeanFactory::getBean('pmse_BpmnProcess');
     //new BpmnProcess();
     $processData = array();
     $retrievedDataBean = BeanFactory::getBean('pmse_BpmnData');
     //new BpmnData();
     $retrievedData = array();
     $documentationBean = BeanFactory::getBean('pmse_BpmnDocumentation');
     //new BpmnDocumentation();
     $documentationData = array();
     $extensionBean = BeanFactory::getBean('pmse_BpmnExtension');
     //new BpmnExtension();
     $extensionData = array();
     $conditions = array("prj_id" => $prjID);
     if ($diagramBean->retrieve_by_string_fields($conditions)) {
         $diagramBean->fetched_row = PMSEEngineUtils::unsetCommonFields($diagramBean->fetched_row);
         // list of activities based in the project id
         //$data = $activityBean->getSelectRows("", "bpmn_activity.prj_id=" . $prjID . " AND bpmn_bound.bou_element_type='bpmnActivity'", 0, -1, -1, array(), array(array('INNER', 'bpmn_bound', 'bpmn_activity.act_id=bpmn_bound.bou_element'), array('LEFT', 'bpm_activity_definition', 'bpmn_activity.act_id=bpm_activity_definition.act_id')));
         $q = new SugarQuery();
         $q->from($activityBean, array('alias' => 'a'));
         $q->joinRaw("INNER JOIN pmse_bpmn_bound b ON (a.id=b.bou_element)", array('alias' => 'b'));
         $q->joinRaw("LEFT JOIN pmse_bpm_activity_definition c ON (a.id=c.id)", array('alias' => 'c'));
         $fields = $this->getFields('pmse_BpmnActivity', array('name'), 'a');
         $q->select($fields);
         $q->where()->queryAnd()->addRaw("a.prj_id='" . $prjID . "' AND b.bou_element_type='bpmnActivity'");
         $fields_bound = $this->getFields('pmse_BpmnBound', array(), 'b');
         foreach ($fields_bound as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $fields_ad = $this->getFields('pmse_BpmActivityDefinition', array(), 'c');
         foreach ($fields_ad as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $rows = $q->execute();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row['bou_element'] = $row['bou_uid'];
                 $tmpObject = $flowBean->retrieve_by_string_fields(array("id" => $row['act_default_flow']));
                 $row['act_default_flow'] = isset($tmpObject->flo_uid) ? $tmpObject->flo_uid : '';
                 if ($row['act_task_type'] == "SCRIPTTASK" && $row['act_script_type'] == "BUSINESS_RULE") {
                     $row['act_fields'] = isset($row['act_fields']) ? $row['act_fields'] : '';
                     $ruleset = $rulesetBean->retrieve_by_string_fields(array('id' => $row['act_fields']));
                     if ($ruleset) {
                         $row['act_fields'] = $ruleset->rst_uid;
                         $this->rulesetList[] = $ruleset->fetched_row;
                     }
                 }
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeFields($row);
                 $activityData[] = $row;
             }
         }
         $diagramBean->fetched_row['activities'] = $activityData;
         // list of events based in the project id
         //$data = $eventBean->getSelectRows("", "bpmn_event.prj_id=" . $prjID . " AND bpmn_bound.bou_element_type='bpmnEvent'", 0, -1, -1, array(), array(array('INNER', 'bpmn_bound', 'bpmn_event.evn_id=bpmn_bound.bou_element'), array('LEFT', 'bpm_event_definition', 'bpmn_event.evn_id=bpm_event_definition.evn_id')));
         $q = new SugarQuery();
         $q->from($eventBean, array('alias' => 'a'));
         $q->joinRaw("INNER JOIN pmse_bpmn_bound b ON (a.id=b.bou_element)", array('alias' => 'b'));
         $q->joinRaw("LEFT JOIN pmse_bpm_event_definition c ON (a.id=c.id)", array('alias' => 'c'));
         $fields = $this->getFields('pmse_BpmnEvent', array('name'), 'a');
         $q->select($fields);
         $q->where()->queryAnd()->addRaw("a.prj_id='" . $prjID . "' AND b.bou_element_type='bpmnEvent'");
         $fields_bound = $this->getFields('pmse_BpmnBound', array(), 'b');
         foreach ($fields_bound as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $fields_ad = $this->getFields('pmse_BpmEventDefinition', array(), 'c');
         foreach ($fields_ad as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $rows = $q->execute();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row['bou_element'] = $row['bou_uid'];
                 $tmpActBean = $activityBean->retrieve_by_string_fields(array("id" => $row['evn_attached_to']));
                 $row['evn_attached_to'] = isset($tmpActBean->act_uid) ? $tmpActBean->act_uid : '';
                 $tmpActBean = $activityBean->retrieve_by_string_fields(array("id" => $row['evn_cancel_activity']));
                 $row['evn_cancel_activity'] = isset($tmpActBean->act_uid) ? $tmpActBean->act_uid : '';
                 $tmpActBean = $activityBean->retrieve_by_string_fields(array("id" => $row['evn_activity_ref']));
                 $row['evn_activity_ref'] = isset($tmpActBean->act_uid) ? $tmpActBean->act_uid : '';
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeFields($row);
                 $eventData[] = $row;
             }
         }
         $diagramBean->fetched_row['events'] = $eventData;
         // list of gateways based in the project id
         //$data = $gatewayBean->getSelectRows("", "bpmn_gateway.prj_id=" . $prjID . " AND bpmn_bound.bou_element_type='bpmnGateway'", 0, -1, -1, array(), array(array('INNER', 'bpmn_bound', 'bpmn_gateway.gat_id=bpmn_bound.bou_element')));
         $q = new SugarQuery();
         $q->from($gatewayBean, array('alias' => 'a'));
         $q->joinRaw("INNER JOIN pmse_bpmn_bound b ON (a.id=b.bou_element)", array('alias' => 'b'));
         $fields = $this->getFields('pmse_BpmnGateway', array('name'), 'a');
         $q->select($fields);
         $q->where()->queryAnd()->addRaw("a.prj_id='" . $prjID . "' AND b.bou_element_type='bpmnGateway'");
         $fields_bound = $this->getFields('pmse_BpmnBound', array(), 'b');
         foreach ($fields_bound as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $rows = $q->execute();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row['bou_element'] = $row['bou_uid'];
                 $flowObject = $flowBean->retrieve_by_string_fields(array("id" => $row['gat_default_flow']));
                 $row['gat_default_flow'] = isset($flowObject->flo_uid) ? $flowObject->flo_uid : '';
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeFields($row);
                 $gatewayData[] = $row;
             }
         }
         $diagramBean->fetched_row['gateways'] = $gatewayData;
         // list of artifacts based in the project id
         //$data = $artifactBean->getSelectRows("", "bpmn_artifact.prj_id=" . $prjID . " AND bpmn_bound.bou_element_type='bpmnArtifact'", 0, -1, -1, array(), array(array('INNER', 'bpmn_bound', 'bpmn_artifact.art_id=bpmn_bound.bou_element')));
         $q = new SugarQuery();
         $q->from($artifactBean, array('alias' => 'a'));
         $q->joinRaw("INNER JOIN pmse_bpmn_bound b ON (a.id=b.bou_element)", array('alias' => 'b'));
         $fields = $this->getFields('pmse_BpmnArtifact', array('name'), 'a');
         $q->select($fields);
         $q->where()->queryAnd()->addRaw("a.prj_id='" . $prjID . "' AND b.bou_element_type='bpmnArtifact'");
         $fields_bound = $this->getFields('pmse_BpmnBound', array(), 'b');
         foreach ($fields_bound as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $rows = $q->execute();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row['bou_element'] = $row['bou_uid'];
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeFields($row);
                 $artifactData[] = $row;
             }
         }
         $diagramBean->fetched_row['artifacts'] = $artifactData;
         // list of flows based in the project id
         //$data = $flowBean->getSelectRows("", "bpmn_flow.prj_id=" . $prjID, 0, -1, -1, array());
         $rows = $flowBean->get_full_list('', "prj_id='" . $prjID . "'");
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row = $row->fetched_row;
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeKeyFields($row);
                 $row['prj_id'] = $prjID;
                 $row['flo_element_origin'] = PMSEEngineUtils::getElementUid($row['flo_element_origin'], $row['flo_element_origin_type'], PMSEEngineUtils::getEntityUid($row['flo_element_origin_type']));
                 $row['flo_element_dest'] = PMSEEngineUtils::getElementUid($row['flo_element_dest'], $row['flo_element_dest_type'], PMSEEngineUtils::getEntityUid($row['flo_element_dest_type']));
                 $row['flo_state'] = json_decode($row['flo_state']);
                 $row['flo_condition'] = json_decode($row['flo_condition']);
                 $row['flo_condition'] = !empty($row['flo_condition']) ? $this->processBusinessRulesData($row['flo_condition']) : '';
                 $flowData[] = $row;
             }
         }
         $diagramBean->fetched_row['flows'] = $flowData;
         // list of pools based in the project id
         //$data = $lanesetBean->getSelectRows("", "bpmn_laneset.prj_id=" . $prjID . " AND bpmn_bound.bou_element_type='bpmnLaneset'", 0, -1, -1, array(), array(array('INNER', 'bpmn_bound', 'bpmn_laneset.lns_id=bpmn_bound.bou_element')));
         $q = new SugarQuery();
         $q->from($lanesetBean, array('alias' => 'a'));
         $q->joinRaw("INNER JOIN pmse_bpmn_bound b ON (a.id=b.bou_element)", array('alias' => 'b'));
         $fields = $this->getFields('pmse_BpmnLaneset', array('name'), 'a');
         $q->select($fields);
         $q->where()->queryAnd()->addRaw("a.prj_id='" . $prjID . "' AND b.bou_element_type='bpmnLaneset'");
         $fields_bound = $this->getFields('pmse_BpmnBound', array(), 'b');
         foreach ($fields_bound as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $rows = $q->execute();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row['bou_element'] = $row['bou_uid'];
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeFields($row);
                 $lanesetData[] = $row;
             }
         }
         $diagramBean->fetched_row['pools'] = $lanesetData;
         // list of lanes based in the project id
         //$data = $laneBean->getSelectRows("", "bpmn_lane.prj_id=" . $prjID . " AND bpmn_bound.bou_element_type='bpmnLane'", 0, -1, -1, array(), array(array('INNER', 'bpmn_bound', 'bpmn_lane.lan_id=bpmn_bound.bou_element')));
         $q = new SugarQuery();
         $q->from($laneBean, array('alias' => 'a'));
         $q->joinRaw("INNER JOIN pmse_bpmn_bound b ON (a.id=b.bou_element)", array('alias' => 'b'));
         $fields = $this->getFields('pmse_BpmnLane', array('name'), 'a');
         $q->select($fields);
         $q->where()->queryAnd()->addRaw("a.prj_id='" . $prjID . "' AND b.bou_element_type='bpmnLane'");
         $fields_bound = $this->getFields('pmse_BpmnBound', array(), 'b');
         foreach ($fields_bound as $key => $value) {
             $q->select->fieldRaw($value);
         }
         $rows = $q->execute();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row['bou_element'] = $row['bou_uid'];
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $row = PMSEEngineUtils::sanitizeFields($row);
                 $laneData[] = $row;
             }
         }
         $diagramBean->fetched_row['lanes'] = $laneData;
         // list of participants based in the project id
         //$data = $participantBean->getSelectRows("", "bpmn_participant.prj_id=" . $prjID, 0, -1, -1, array(), array());
         //            $rows = $participantBean->get_full_list("", "prj_id='" . $prjID . "'");
         //            if (!empty($rows)) {
         //                foreach ($rows as $row) {
         //                    $row = $row->fetched_row;
         //                    $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
         //                    $row['bou_element'] = $row['bou_uid'];
         //                    $participantData[] = $row;
         //                }
         //            }
         //            $diagramBean->fetched_row['participants'] = $participantData;
         $diagramBean->fetched_row['participants'] = array();
         // data list based in the project id
         //$data = $retrievedDataBean->getSelectRows("", "prj_id=" . $prjID, 0, -1, -1, array(), array());
         $rows = $retrievedDataBean->get_full_list("", "prj_id='" . $prjID . "'");
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $retrievedData[] = $row->fetched_row;
             }
         }
         $diagramBean->fetched_row['data'] = $retrievedData;
         // documentation list based in the project id
         //$data = $documentationBean->getSelectRows("", "prj_id=" . $prjID, 0, -1, -1, array(), array());
         $rows = $documentationBean->get_full_list("", "prj_id='" . $prjID . "'");
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row = $row->fetched_row;
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $documentationData[] = $row;
             }
         }
         $diagramBean->fetched_row['documentation'] = $documentationData;
         // data list based in the project id
         //$data = $extensionBean->getSelectRows("", "prj_id=" . $prjID, 0, -1, -1, array(), array());
         $rows = $extensionBean->get_full_list("", "prj_id='" . $prjID . "'");
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 $row = $row->fetched_row;
                 $row = PMSEEngineUtils::unsetCommonFields($row, array('name', 'description'));
                 $extensionData[] = $row;
             }
         }
         $diagramBean->fetched_row['extension'] = $extensionData;
         array_push($diagramData, $diagramBean->fetched_row);
     }
     return $diagramData;
 }