您的位置:首页 > Web前端

通达OA2015-工作流前端触发器的使用

2015-10-22 17:21 225 查看
      通达OA2015版支持多种前端触发器的使用,之前的版本只支持后端处理,即通过转交动作将表单中的数据POST到触发器的php文件中,2015也保留了这种方法,但这种方法当检查数据合法性时,显示不够灵活,通常的做法是,触发器分析$_POST数组中的数据,若不合要求,则通过echo 返回按钮,重新将整个表单打开一次;当用户比较多,这种方式会对web服务器会造成较大影响;

      因此,对于复杂的数据合法性检查,能用前端的尽量用前端实现,下面的操作步骤以母件工作流转交某个步骤时,要检查其子件工作流是否结束做为应用场景,当有未结束的子件工作流时,母件工作流不允许转交下一步,具体操作及代码如下:

第一步:创建触发器目录

      打开X:\MYOA\webroot\general\workflow\plugin\turn,创建新目录chkSubIsOver

第二步:创建触发器配置文件

      打开X:\MYOA\webroot\general\workflow\plugin\turn\chkSubIsOver,创建chkSubIsOver.ini,内容如下:

NAME = 子流程是否全部完成
DESC = 母件转最后下一步时,检查子件是否已全部完成
BEFORE_FRONTEND =BEFORE_FRONTEND.php

第三步:创建触发器文件

      创建 E:\MYOA\webroot\general\workflow\plugin\turn\chkSubIsOver\BEFORE_FRONTEND.php文件,文件内容:

<script>
jQuery.ajaxSetup({
type:"POST",
dataType:"json",
async:false,
cache:false
});

function chkSubIsOver_before_callBack_<?php echo $PRCS_KEY_ID;?>(){
var run_id=jQuery("input[name='run_id']:eq(0)").val(); //获取流水号
var flow_id=jQuery("input[name='flow_id']:eq(0)").val(); //获取流程ID号
//获取表单内控件值 如果需要对表单某个数据做较验,可以使用以下部份
//var myform=jQuery(window.frames["work_form_data"].document).find("form[name='form1'");
//var val=myform.find(":input[name='DATA_2']").val();

//检查子件是否结束
var chckflag=true;
jQuery.ajax({
url:"/userext/index.php?c=workflow&m=chkSubisOver",
data:{flow_id:flow_id,run_id:run_id},
success:function(res){
if (!res){
alert("获取子件数据失败");
chckflag=false;
}
if (!res.rescode){
alert("该母件的子件还未结束\r子件流水号:\r"+res.resmsg);
chckflag=false;
}
}
});
if (!chckflag){
return false;
}
}
</script>


第四步:设置需要触发器的步骤
    


确定后保存

第五步:验证效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: