工作流由两部分构成,一部分是控制器代码片段,另外一部分是工作流模型
在需要使用工作流的控制器中,需要加载工作流代码片段和工作流模块
```
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端手写签名的实现
- 手机端手写签名的实现
- 智能硬件
- 签名板
- 高拍仪
- 会知声(道邦魔盒)
- 宇泛人脸识别
- 设备
- 设备列表
- 添加设备
- 更新设备
- 设备详情
- 删除设备
- 网络查询
- 启用设备
- 禁用设备
- 重启设备
- 重置设备
- 获取更新包信息
- 设备升级
- 人员授权(批量)
- 人员销权
- 授权查询
- 人员
- 人像