ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
工作流由两部分构成,一部分是控制器代码片段,另外一部分是工作流模型 在需要使用工作流的控制器中,需要加载工作流代码片段和工作流模块 ``` use app\common\model\workflow\Workflow; use \Com\Traits\WorkFlowTrait; ``` 并且在控制器内部使用代码片段 ``` use WorkFlowTrait; ``` 引入工作流代码片段后会在当前控制器中增加如下属性 ``` /* 定义当前模块的标识 */ protected $modelSerialno =''; /* 定义当前模块的名称*/ protected $modelName =''; /* 是否启用工作流 */ protected $isWorkFlow =false; /* 是否自动提单 */ protected $isAutoSubmit =false; /* 工作流流程应用ID */ protected $workFlowAppId =''; /* 定义当前工作流模型示例 */ protected $workFlowModel =null; ``` 同时工作流代码片段还包含如下几个方法 1.生成单据编号 ``` /** * 函数作用:生成SANO * @access public号 * @param intger $length:单据长度,默认为16 * @return string */ public function createSano($length=16){} ``` ***** 2.生成流程单据示例编号 ``` /** * 函数作用:生成流程实例编号 * @access public * @param void * @return string */ public function createWiid(){ } ``` ***** 3.初始化工作流配置信息 ``` /** * 函数作用:初始化工作流相关信息 * @access protected * @param string $modelNo:当前的模块编号 * @return void */ public function initFlowWork($modelNo=''){} ``` ***** 首先,需要在控制器的初始化函数中初始化工作流模块 ``` //初始化工作流 $this->initFlowWork('DEMO'); //初始化模块编号为DEMO的工作流配置信息 ``` 接下来就可以在控制器的方法中调用工作流的相关接口了,完整的代码示例如下 ``` <?php namespace app\admin\controller; use app\common\controller\Backend; use app\common\model\workflow\Workflow; use app\admin\model\Demo as DemoModel; use think\Db; use think\Config; use think\Session; use Com\Db\Dictionary; use \Com\Traits\AddonsTrait; use \Com\Traits\NoticeTrait; use \Com\Traits\WorkFlowTrait; class Demo extends Backend{ use AddonsTrait; use NoticeTrait; use WorkFlowTrait; /* 定义当前数据模型 */ protected $model =null; /** * 函数作用:初始化控制器 * @access public * @param void * @return void */ public function _initialize(){ parent::_initialize(); //初始化数据模型 $this->model =new DemoModel(); //初始化工作流 $this->initFlowWork('DEMO'); } public function add(){ if($this->request->isPost()){ $data =$this->request->post('row/a'); $applys =session::get('admin'); $data['sano'] =$this->createSano(16); //生成单据编号 $data['wiid'] =$this->workFlowModel->createWiid(); //生成工作流示例编号 $data['apply_id'] =$applys['id']; $data['apply_name'] =$applys['nickname']; $data['status'] =-1; $result =$this->model->Insert($data); if(false===$result){ $this->error($this->model->getError()); }else{ $this->success(); } }else{ /*$data =array(); $data['sano'] =$this->workFlowModel->createSano($this->modelSerialno); $this->assign('row',$data); */ return $this->view->fetch(); } } /**提交到工作流处理*/ public function submit($ids){ if(!$this->isWorkFlow)return false; $table =$this->workFlowModel->getTable(); $info =Db::Table($table)->Where('id='.$ids)->Find(); $result =$this->workFlowModel->startWorkFlow($info); if($result['code']!=1){ $this->error($result['msg']); }else{ $this->success(); } } } ?> ```