天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 841|回复: 8

[已解决] 审批超时通知

[复制链接]
jqfang 发表于 2013-11-5 08:04:44 | 显示全部楼层 |阅读模式
本帖最后由 sophie 于 2013-11-15 13:31 编辑

在某一节点,如果超过24小时没有审批,送一Email提醒审批人。
echochen 发表于 2013-11-5 09:10:36 | 显示全部楼层
您好,您可以在流程通知那里设置过期,然后做相应的配置即可, 11111.jpg
 楼主| jqfang 发表于 2013-11-5 09:59:43 | 显示全部楼层
除了通知审批人外,还要CC给另一人,不在流程中的。
sophie 发表于 2013-11-5 10:52:14 | 显示全部楼层
您好,给您的解决方案如下:
您的过期提醒采用代码模式,您的代码思路如下:
首先您通过T_RELATIONHIS(流程历史信息表),根据STARTNODENAME(开始结点名)、ENDNODENAME(结束节点名)、DOCID(文档id)三个条件查询出PROCESSTIME(到达下一节点的时间),然后拿该时间(取该时间时用order by 降序查找,取最后一条数据)与当前
时间作对比,使用函数diffHours(startDate, endDate)(相隔小时函数)作对比,如果大于等于1时,则发邮件给另外的人接收(sendMail(from, to, subject, body, host, user, password, bbc,  validate)),同时返回当前时间,在当前时间发邮件给代办人。
 楼主| jqfang 发表于 2013-11-5 15:24:44 | 显示全部楼层
可不可以稍微再详细点儿,或给个例子, 谢谢!
sophie 发表于 2013-11-5 16:08:48 | 显示全部楼层
您好,稍后整理一个示例,再跟进
sophie 发表于 2013-11-5 17:03:31 | 显示全部楼层
您好,我们在整理该示例时,发现了一个bug,等那个bug修复了再整理该示例,给您带来不便,实在抱歉。
sophie 发表于 2013-11-11 09:33:38 | 显示全部楼层
您好,根据您的需求,您可以在需求过期通知的审批节点设置24小时过期提醒,表单中增加一个过期时间的隐藏字段,当记录从上一节点提交到该节点时(示例中为登记节点提交给审批节点)提交(流程处理类型)按钮的动作执行后脚本去设置过期时间(给该隐藏字段设置过期审批时限)。然后在我们的定时任务中
去获取这些记录,用当前时间与过期时间作比较,如果当前时间大于过期时间,则发一邮件给指定的人接收(该示例中写了发邮件、发站内短信的例子)
  1. //提交按钮的动作执行后脚本
  2. var doc1=getCurrentDocument();
  3. var process=getDocumentProcess();
  4. var statelabel=doc1.getStateLabel();
  5. if(statelabel!=null && statelabel.equals("流程审批")){
  6.        var sql1="select id,nodert_id,domainid,deadline as item_deadline from T_ACTORRT where NODERT_ID=(select ID from T_NODERT where DOCID='"+doc1.getId()+"' and STATELABEL='"+statelabel+"')";
  7.            var doc2=findBySQL(sql1);
  8.            if(doc2!=null){
  9.                var value1=doc2.getItemValueAsDate("deadline");
  10.                    doc1.findItem("过期时间").setValue(value1);//给隐藏字段设置审批时限
  11.                    process.doUpdate(doc1);
  12.            }
  13. }       

  14. //定时任务脚本
  15. var sql1="select * from tlk_过期通知测试表单 where ITEM_过期时间<>''"
  16. var applicationid="11e3-175e-472c3209-9a8a-e567a6302858";
  17. var domainid="11e3-1764-19352b7f-9a8a-e567a6302858";
  18. var process=getDocProcess(applicationid);
  19. var datas=process.queryBySQL(sql1,domainid).datas;
  20. if(datas!=null && datas.size()>0){
  21.    for(var iter = datas.iterator();iter.hasNext();){
  22.         var doc1 = iter.next();
  23.                 if(doc1!=null){
  24.                    var value1=doc1.getItemValueAsDate("过期时间");//获取隐藏字段的值
  25.                    println(value1+"      =====value1====");
  26.                    var value2=$TOOLS.DATE_UTIL.getDateTimeStr(getToday());//获取当前时间
  27.                  println(value2+"   ===value2===");
  28.                    if(value2>value1){//用当前时间与隐藏字段作比较,如果大于则执行发邮件 发站内短信等操作
  29.                          println("333333333333");
  30.                          sendMessage("11e3-1764-785d84a4-9a8a-e567a6302858", "11e3-1765-5580b1a5-9a8a-e567a6302858","过期提醒sophie", "过期提醒测试sophie"); //发站内短信
  31.                                  sendMail("sophie@teemlink.com","sophie@teemlink.com","过期提醒主题sophie","正在验证过期提醒功能sophie","teemlink.com","sophie","teemlink","1797595452@qq.com",true);//发邮件
  32.                           doc1.findItem("过期时间").setValue('');
  33.                           process.doUpdate(doc1);
  34.            }                  
  35.                 }
  36.    }
  37. }
复制代码
您先尝试,有结果请跟进。
sophie 发表于 2013-11-15 13:31:38 | 显示全部楼层
Q上客户同意关闭该帖子。

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-13 08:16

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表