工作流手册:https://www.kancloud.cn/guowenbin/tpflow 赞助支持我们,可购买看云完整文档
Tpflow 工作流引擎,历时两年多的积累开发,包括N家企业的实际应用,我们一直再改进工作流的各种文档性能,截至(2020.2)我们仍是码云唯一开源的PHP工作流引擎,感谢各位大神的一路支持。
Tpflow一直都是精简集成,本文简要描述Tpflow的集成与新增的Api文档
第一步:了解下核心文件
\extend\workflow 为插件目录
├─workflow 扩展类库目录 │ ├─class 流引擎目录 │ ├─config 配置项目录 │ ├─db 数据操作目录 │ ├─msg 消息处理目录 │─workflow.php 工作流入口文件
当然你必须完整将整个
workflow
目录安装到你的项目中去
\application\index\controller\Wf.php Demo中的相关调用方式
\application\index\view\Wf Demo中的样式及可视化设计文件
\public\static\work Demo中的资源文件
这些文件是Demo文件,你需要根据你的项目进行调整
第二步:ThinkPhp 项目如何快速集成
如果你是Thinkphp小白,烦请先了解下TP官方手册
Demo项目基于5.1版本开发,本描述也基于5.1进行说明
1、复制
tpflow\extend\workflow
到你的项目目录
2、修改\extend\workflow\config
里面的config.php 里面的配置信息
3、导入tpflow3.1.sql
数据库,建议直接复制表结构出来就好了;
4、复制Demo文件,\application\index\controller
里面的wf.php
以及 对应的视图文件;
5、 修改wf.php
文件initialize
中的$this->uid $this->role_id
6、调用工作流状态:{:action('wf/status',['status'=>$k.status])}
7、调用工作流按钮: {:action('wf/btn',['wf_fid'=>$k.id,'wf_type'=>'news','status'=>$k.status])}
$k.id 单据的编号 $wf_type 单据的数据表 $status 单据的状态值
8、调用工作流日志:{:action('wf/wflogs',['id'=>$k.id,'wf_type'=>'news'])}
$k.id 单据的编号 $wf_type 单据的数据表
注意点:
1、你的数据表必须符合SQL设计规范(默认读取含注释的字段及数据表)
2、业务表必须包含status
、uptime
两个字段,工作流会根据审批结果进行业务表的更新
第三步:非Thinkphp的集成开发
严格意义来说,只要继承了TP的ORM也就是DB数据库驱动,就可以直接使用工作流引擎,因为所有的数据读写全部用了Db::name() 的写法。
3.0跟1.0 2.0 最大的变化就是提供了丰富的API设计接口,已经重新布局的三分架构。我们通过超级强大的API 对接功能,flowApi
ProcessApi
SuperApi
等接口可以快速的进行工作流设计、步骤的管理、流程的监控等等。同时还新增了同步模式等等。
flowApi
可支持工作流设计开发管理
ProcessApi
步骤管理API,可以对步骤进行管理、读取
SuperApi
超级管理接口,对流程进行终止,代审
FlowApi接口--工作流设计接口
<?php namespace app\index\Controller;use app\common\controller\admin;use workflow\workflow;class Flowdesign extends Admin { public function initialize() { parent::initialize(); $this->work = new workflow(); } /** * 流程设计首页 */ public function lists($map = []){ $this->assign('list',$this->work->FlowApi('List')); $this->assign('type', ['news'=>'新闻信息','cnt'=>'合同信息','paper'=>'证件信息']); return $this->fetch(); }
FlowApi 用法很简单,主要是对Flow工作流的数据封装
详细可以阅读以下API调用方法及示例
参数名称 | 参数变量 | 示例/说明 |
---|---|---|
List | ~~~ | $work->FlowApi('List'); //直接获取到工作流列表数据 |
AddFlow | $work->FlowApi('AddFlow',$data) | $data //POST数据 |
EditFlow | $work->FlowApi('EditFlow',$data); | $data //POST数据 |
GetFlowInfo | $work->FlowApi('GetFlowInfo',input('id')) | $id 为Flow组件 |
ProcessApi用法很简单,主要是对工作流的步骤进行封装
详细可以阅读以下API调用方法及示例
参数名称 | 参数变量 | 示例/说明 |
---|---|---|
All | $flow_id 流程主键 | $this->work->ProcessApi('All',$flow_id); //获取对应流程所有步骤信息,返回JSON json_encode(['total'=>$process_total,'list'=>$process_data] |
ProcessDel | $this->work->ProcessApi('ProcessDel',$flow_id,$process_id) | $process_id $flow_id 返回Array |
ProcessDelAll | $this->work->ProcessApi('ProcessDelAll',$flow_id); | $flow_id 清空所有步骤 |
ProcessLink | $this->work->ProcessApi('ProcessLink',$flow_id,$process_info) | 保存设计 |
ProcessAttView | $this->work->ProcessApi('ProcessAttView',input('id')) | 查看步骤设置 |
ProcessAttSave | $this->work->ProcessApi('ProcessAttSave',$data['process_id'],$data) | 保存步骤信息 |
SuperApi 是精简后的一些超级接口
参数名称 | 参数变量 | 示例/说明 |
---|---|---|
WfEnd | $key工作流主键 | $taskService->doSupEnd($key,$data) |
本文为逆天的蝈蝈的文章,转载无需和我联系,但请注明cojz8.com