您好,根据您的需求,您可以在需求过期通知的审批节点设置24小时过期提醒,表单中增加一个过期时间的隐藏字段,当记录从上一节点提交到该节点时(示例中为登记节点提交给审批节点)提交(流程处理类型)按钮的动作执行后脚本去设置过期时间(给该隐藏字段设置过期审批时限)。然后在我们的定时任务中
去获取这些记录,用当前时间与过期时间作比较,如果当前时间大于过期时间,则发一邮件给指定的人接收(该示例中写了发邮件、发站内短信的例子)- //提交按钮的动作执行后脚本
- var doc1=getCurrentDocument();
- var process=getDocumentProcess();
- var statelabel=doc1.getStateLabel();
- if(statelabel!=null && statelabel.equals("流程审批")){
- 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+"')";
- var doc2=findBySQL(sql1);
- if(doc2!=null){
- var value1=doc2.getItemValueAsDate("deadline");
- doc1.findItem("过期时间").setValue(value1);//给隐藏字段设置审批时限
- process.doUpdate(doc1);
- }
- }
- //定时任务脚本
- var sql1="select * from tlk_过期通知测试表单 where ITEM_过期时间<>''"
- var applicationid="11e3-175e-472c3209-9a8a-e567a6302858";
- var domainid="11e3-1764-19352b7f-9a8a-e567a6302858";
- var process=getDocProcess(applicationid);
- var datas=process.queryBySQL(sql1,domainid).datas;
- if(datas!=null && datas.size()>0){
- for(var iter = datas.iterator();iter.hasNext();){
- var doc1 = iter.next();
- if(doc1!=null){
- var value1=doc1.getItemValueAsDate("过期时间");//获取隐藏字段的值
- println(value1+" =====value1====");
- var value2=$TOOLS.DATE_UTIL.getDateTimeStr(getToday());//获取当前时间
- println(value2+" ===value2===");
- if(value2>value1){//用当前时间与隐藏字段作比较,如果大于则执行发邮件 发站内短信等操作
- println("333333333333");
- sendMessage("11e3-1764-785d84a4-9a8a-e567a6302858", "11e3-1765-5580b1a5-9a8a-e567a6302858","过期提醒sophie", "过期提醒测试sophie"); //发站内短信
- sendMail("sophie@teemlink.com","sophie@teemlink.com","过期提醒主题sophie","正在验证过期提醒功能sophie","teemlink.com","sophie","teemlink","1797595452@qq.com",true);//发邮件
- doc1.findItem("过期时间").setValue('');
- process.doUpdate(doc1);
- }
- }
- }
- }
复制代码 您先尝试,有结果请跟进。 |