# 引入控制器片段
工作流由兩部分構成,一部分是控制器代碼片段,另外一部分是工作流模型
在需要使用工作流的控制器中,需要加載工作流代碼片段和工作流模塊
```
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();
}
}
}
?>
```
- 簡介
- 目錄結構說明
- 開發規范
- 文件命名規范
- 函數的命名
- 命名空間命名規范
- 數據庫命名規范
- 編碼注釋規范
- 文件注釋規范
- 方法注釋規范
- 行內注釋
- 外包開發人員特別說明
- 前端開發
- 組件的使用
- 單文件上傳
- 多文件上傳
- 選擇組織機構
- 選擇用戶
- 選擇角色
- 選擇用戶組
- 手機門戶
- 常用值對照表
- 工作流審批狀態對照
- 請假類型鍵值對照
- 后端開發
- 訪問權限
- 數據權限
- 公共函數庫
- 用戶數據共享
- 通過類庫共享用戶數據
- 跨應用共享用戶數據
- 組織機構操作
- 公共數據詞典
- 創建詞典
- 讀取詞典
- 配置詞典
- 消息推送
- 消息發送
- 發送郵件
- 發送短信
- 企業微信
- 釘釘消息
- 即時通訊(站內消息)
- 二維碼
- 文件壓縮與解壓
- 文檔轉換
- 工作流引擎
- 工作流簡介
- 引入控制器片段
- ResetFull接口
- 01.提交單據發起流程
- 06.獲取當前用戶待辦列表
- 07.獲取指定任務信息
- 08.獲取流程下個可執行節點
- 09.獲取指定流程所有節點
- 10.獲取指定編號的流程節點
- 11.獲取指定節點的審批人員信息
- 手寫簽名
- PC端手寫簽名的實現
- 手機端手寫簽名的實現
- 智能硬件
- 高拍儀
- 會知聲(道邦魔盒)