nodeProperty['routeMethod']; if (!empty($methodString)) { return MethodLoader::getInstanceByMethodString($methodString); } return null; } /** *获取流程FLowCode * @return mixed */ public function getFlowCode() { $flowContext = unserialize($_SESSION['flowContext']); $workFlowParser = $flowContext->getWorkFLowParser(); $prevNodes = $workFlowParser->getPrevLevelNodes(parent::getNodeId(), Node::FLOW_NODE); $tmpNode = $prevNodes[Node::FLOW_NODE][0]; $tmpNodeFlowCode = $tmpNode->getFlowCode(); return $tmpNodeFlowCode; } /** * 1.检查逻辑节点下层节点,并获取下层节点的assigner * @param $flowchart * @return array */ public function getAssignerList($flowchart) { $nodes = $flowchart->getNextLevelNodes(parent::getNodeId()); $assigner = array(); foreach (Node::$nodeTypes as $type) { if (!array_key_exists($type, $nodes)) continue; foreach ($nodes[$type] as $node) { if (method_exists($node, 'getAssignerList')) { $assigner = array_merge((array)$assigner, $node->getAssignerList($flowchart)); } } } /* $methodString = $this->getMethod(); if (!empty($methodString)) { $_methodInstance = MethodLoader::getInstanceByMethodString($methodString); }*/ return $assigner; } /** * 获取附加的签核人员 * @param $userId * @return array */ public function getDepartmentalAssignerList($userId) { $leader = Employee::leader($userId); $nextAssignerStr = Employee::get_employee($leader, $format = "employee_no-name"); $nextAssigner = array(0 => array(0 => "F6", 1 => $nextAssignerStr)); return $nextAssigner; } /** * 检查是否满足流转下一关条件 * @param $assignClass * @param $leadCode * @return bool */ function checkTrust($assignClass, $leadCode) { $_flag = false; switch ($assignClass) { case 'A': //无需审核 $_flag = true; break; case 'B': //审核至科长 $_flag = (in_array($leadCode, array('50', '20', '19', '18', '17', '16', '12', '10')) ? true : false); break; case 'C': //审核至经理 $_flag = in_array($leadCode, array('20', '19', '18', '17', '16', '12', '10')) ? true : false; break; case 'D': //审核至 协理/厂长/总监 $_flag = in_array($leadCode, array('19', '18', '17', '16', '12', '10')) ? true : false; break; case 'E': //审核至副总 $_flag = in_array($leadCode, array('12', '10')) ? true : false; break; case 'F': //审核至总经理 $_flag = substr($leadCode, 0, 2) == '10' ? true : false; break; case 'X': $method = MethodLoader::getInstanceByMethodString(strip_tags($this->getAssignClassMethod())); $_assignClass = $method->invokeMethod($this->getFlow(), $this->getFormData()); $_flag = $this->checkTrust($_assignClass, $leadCode); break; default: $_flag = false; break; } return $_flag; } }