Esempio n. 1
0
 /**
  * @param int $task_id
  * @param array $data
  * @param null $continue_mid
  * @return array
  */
 public function run_flow($task_id, $data = [], $continue_mid = null)
 {
     $pre_mid = null;
     $mids = $this->flow[Module_FlowManager_Main::FLOW_TYPE_MAIN];
     foreach ($mids as $_mid) {
         if (!empty($continue_mid)) {
             if ($continue_mid == $_mid) {
                 $continue_mid = null;
                 if ($pre_mid) {
                     $meta_data = self::read_meta($task_id, $pre_mid);
                     if ($meta_data['errno'] !== Const_Err_Base::ERR_OK) {
                         return $meta_data;
                     }
                     $data = $meta_data['data'];
                 }
             } else {
                 $pre_mid = $_mid;
                 continue;
             }
         }
         // run main flow module
         $begin_time = microtime(true);
         $data = $this->_run_section($task_id, $_mid, $data);
         $end_time = microtime(true);
         Lib_Log::monitor("TIMER: task [%d] run module section [%d] at [%.4f], end at [%.4f], use [%.4f]", [Module_ControlCentre_Main::current_task_id(), $_mid, $begin_time, $end_time, $end_time - $begin_time]);
         if (!isset($data['errno'])) {
             Lib_Log::error("Call back return faild!. err: return data not has errno.\tdata:%s", json_encode($data));
             return Lib_Helper::get_err_struct(Const_Err_Base::ERR_DATA_FORMAT, '模块[' . $_mid . ']返回数据错误');
         }
         if ($data['errno'] !== Const_Err_Base::ERR_OK) {
             return $data;
         }
         $data = $data['data'];
     }
     return Lib_Helper::get_return_struct($data);
 }
Esempio n. 2
0
 /**
  * @param array $data
  * @param array $control_options
  * @return array
  */
 public function run($data = [], $control_options = [])
 {
     $begin_time = microtime(true);
     Lib_Log::monitor("TIMER task [%d] begin at [%.4f]", [Module_ControlCentre_Main::current_task_id(), $begin_time]);
     $this->options = $control_options;
     $flow = Module_ControlCentre_FlowManager::get_instance()->get_current_flow();
     // run before hooks
     $this->run_hooks(self::HOOK_TYPE_BEFORE_RUN, [$data]);
     // run
     $result = $flow->run($this->id, $data);
     // run after hook
     $this->run_hooks(self::HOOK_TYPE_AFTER_RUN, [$result]);
     $end_time = microtime(true);
     Lib_Log::monitor("TIMER task [%d] end at [%.4f], use [%.4f]", [Module_ControlCentre_Main::current_task_id(), $end_time, $end_time - $begin_time]);
     return $result;
 }