通达OA系统2019版流程中心,外部表单提交数据到指定流程第一步
总体操作过程
1.新建业务数据表
2.新建业务引擎
3.新建业务引擎映射关系类文件
4.绑定外部表单与OA流程的映射关系
5.新建引擎调用文件
具体操作过程
1、根据需要提交到流程的表单,新建表
/*
Navicat MySQL Data Transfer
Source Server : 本地-通用OA-2017
Source Server Version : 50635
Source Host : localhost:3336
Source Database : TD_OA
Target Server Type : MYSQL
Target Server Version : 50635
File Encoding : 65001
Date: 2021-11-24 20:43:59
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`OVERTIME_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增字段',
`USER_ID` varchar(64) NOT NULL COMMENT '用户名',
`USER_NAME` varchar(255) DEFAULT NULL COMMENT '加班人姓名',
`APPROVE_ID` varchar(254) NOT NULL COMMENT '审批人',
`APPROVE_NAME` varchar(255) DEFAULT NULL COMMENT '审批人姓名',
`RECORD_TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '登记时间',
`START_TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '加班开始时间',
`END_TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '加班结束时间',
`OVERTIME_HOURS` varchar(254) NOT NULL COMMENT '加班时长',
`OVERTIME_CONTENT` text NOT NULL COMMENT '加班内容',
`CONFIRM_TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '确认时间',
`CONFIRM_VIEW` text NOT NULL COMMENT '确认意见',
`ALLOW` char(1) NOT NULL COMMENT '审批状态(0—待审批,1—已批准,2—未批准,3—待确认)',
`STATUS` char(1) NOT NULL COMMENT '确认状态(0—未确认,1—已确认)',
`REGISTER_IP` varchar(254) NOT NULL COMMENT '登记IP',
`REASON` text NOT NULL COMMENT '不准原因',
`HANDLE_TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '请求处理时间',
`AGENT` varchar(20) NOT NULL COMMENT '创建人',
`ORDER_NO` int(10) NOT NULL DEFAULT '0' COMMENT '排序号',
`WHETHER_OFF` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否倒休(1-是,0-否)',
`EXCHANGE_TIME` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否已经兑换过时长(1-已兑换,0-未兑换)',
PRIMARY KEY (`OVERTIME_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='加班登记';
SET FOREIGN_KEY_CHECKS=1;
2、系统管理员账号登录OA系统,按照 菜单》流程中心》工作流设置》业务引擎设置 打开页面,点击添加按钮,新建业务引擎
结果如图:
3.1、 找到目录:D:\MYOA\webroot\inc\SI\hook
3.2、在此目录下新建test.class.php,具体内容参照。
<?php
include_once "inc/SI/SIHook.class.php";
class test extends \SI\SIHook
{
public $PKey;
public $module;
public $info = array();
public function __construct()
{
}
public function setField()
{//需要在TD_OA库下新建表test,具体字段如下
$this->info = array(array('name' => 'OVERTIME_ID', 'desc' => _('主键ID'), 'type' => ''), array('name' => 'USER_ID', 'desc' => _('加班人ID'), 'type' => ''), array('name' => 'USER_NAME', 'desc' => _('加班人姓名'), 'type' => 'Text'), array('name' => 'APPROVE_ID', 'desc' => _('审批人ID'), 'type' => ''), array('name' => 'APPROVE_NAME', 'desc' => _('审批人姓名'), 'type' => 'Text'), array('name' => 'OVERTIME_CONTENT', 'desc' => _('加班内容'), 'type' => 'Textarea'), array('name' => 'START_TIME', 'desc' => _('加班开始时间'), 'type' => 'Calendar'), array('name' => 'END_TIME', 'desc' => _('加班结束时间'), 'type' => 'Calendar'), array('name' => 'OVERTIME_HOUR', 'desc' => _('加班时长(小时)'), 'type' => 'Text'), array('name' => 'OVERTIME_MINUTE', 'desc' => _('加班时长(分)'), 'type' => 'Text'), array('name' => 'WHETHER_OFF', 'desc' => _('是否倒休(1-是,0-否)'), 'type' => 'Radio'), array('name' => 'RECORD_TIME', 'desc' => _('登记时间'), 'type' => 'Text'));
return $this->info;
}
public function outData($id)
{
$id = intval($id);
$dataBack = array();
$sql = 'SELECT * FROM test WHERE OVERTIME_ID = \'' . $id . '\'';
$cursor = exequery(TD::conn(), $sql);
if (0 < mysql_affected_rows()) {
if ($row = mysql_fetch_array($cursor)) {
$USER_ID = $row['USER_ID'];
$APPROVE_ID = $row['APPROVE_ID'];
$OVERTIME_CONTENT = $row['OVERTIME_CONTENT'];
$START_TIME = $row['START_TIME'];
$END_TIME = $row['END_TIME'];
$OVERTIME_HOURS = $row['OVERTIME_HOURS'];
$WHETHER_OFF = $row['WHETHER_OFF'];
$RECORD_TIME = $row['RECORD_TIME'];
$OVERTIME_HOURS_ARRAY = explode(_('小时'), $OVERTIME_HOURS);
$OVERTIME_MINUTES_ARRAY = explode(_('分'), $OVERTIME_HOURS_ARRAY[1]);
}
$USER_NAME = td_trim(GetUserNameById($USER_ID));
$APPROVE_NAME = td_trim(GetUserNameById($APPROVE_ID));
$dataBack = array('OVERTIME_ID' => $id, 'USER_ID' => $USER_ID, 'USER_NAME' => $USER_NAME, 'APPROVE_ID' => $APPROVE_ID, 'APPROVE_NAME' => $APPROVE_NAME, 'OVERTIME_CONTENT' => $OVERTIME_CONTENT, 'START_TIME' => $START_TIME, 'END_TIME' => $END_TIME, 'RECORD_TIME' => $RECORD_TIME, 'WHETHER_OFF' => $WHETHER_OFF == 1 ? _('是') : _('否'), 'OVERTIME_HOUR' => $OVERTIME_HOURS_ARRAY[0], 'OVERTIME_MINUTE' => $OVERTIME_MINUTES_ARRAY[0]);
}
return $dataBack;
}
public function inData($id)
{
}
public function setPKey()
{//表的自增主键的字段名
$this->PKey = 'OVERTIME_ID';
}
public function setModule()
{//业务引擎模块名,默认与表名一致,
$this->module = 'test';
}
}
include_once 'inc/utility_org.php';
include_once 'inc/SI/SIHook.class.php';
注意:类的文件名test,类名test,模块名test,三者默认保持一致。模块名即第2步的模块名。
4、在业务引擎设置页面,找到新建的业务引擎,点击编辑,如图:
5、新建调用文件,内容如下:
<?php
include_once "inc/session.php"; //加载OA系统的session文件
include_once "inc/conn.php"; //加载OA系统的数据库连接文件
session_start(); //开启session,可以读取当前登录用户session信息
include_once "inc/flow_engine2.0/workrun/dao/WorkRunHook.class.php"; //流程中心 业务引擎的核心文件
//向新建表中添加需要提交的表单的数据
$content=date('Y-m-d H:i:s');
$sql="insert into test (OVERTIME_CONTENT) values('".$content."')";
$res=exequery(TD::conn(),$sql);
//查询到添加的数据
$sql="select * from test order by OVERTIME_ID desc limit 1";
$res=exequery(TD::conn(),$sql);
$data=mysql_fetch_assoc($res);
//读取的主键的值
$id=$data['OVERTIME_ID'];
if($id){
//调用业务引擎
$wrk= dao\run\hook\WorkRunHook::runHook(
"test", //模块名 必须
$config = array(
"OVERTIME_ID"=>$id //主键名 必须
)
);
}
如果有用,请多多支持,点赞加关注哦!
内容绝对原创,希望对您有帮助。您的打赏,是让我持续更新的牛奶和面包