热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bat循环执行带参数_kettle自动批量循环发送邮件

1、批量循环发送邮件应用场景:比如:外贸公司希望监控客户的收款到账情况。单证登记每次报关合同,财务根据合同和客户登记收款明细。客户少的时候

1、批量循环发送邮件应用场景:

比如:外贸公司希望监控客户的收款到账情况。单证登记每次报关合同,财务根据合同和客户登记收款明细。

客户少的时候,可以认为来盯。一旦,这些工作变成流水化作业,那人为监控变为不可能。现在系统需要监控每票合同的出货金额和财务登记的到账汇总数据。同一票合同号,如果出现[出货金额]>sum[收款金额],表明客户未正常收款。为了达到提前预警的效果,我们需要根据账期判断客户的最后付款时间,并且根据客户的最后付款时间,往前推15天,提醒业务员催款。这个时候就需要根据合同的不同归属,通知不同的业务员和具体付款时间。

2、解决几个要点

  • 2.1、定时处理

kettle自带的定时处理,其开发公司也认为自己的定时调度作业较弱,建议用户使用其他定时处理方法。因为之前文章里讲解jenkins构建企业内部的定时调度作业平台,参考《企业内部构架ETL操作2-Jenkins篇》,搭建环境,在此不累赘。

其作用在于,设置调度kettle构造时间,完成定时处理作业功能

  • 2.2、循环处理,并且发送邮件

此部分为文章核心内容:

2.2.1、扫描特定表单数据,提取所有的记录,并把查询的结果输出。

首先在kettle,新建一个转换,我们大致命名为【测试即将到期的客户清单】,选择【表输入】,拖到空白处,并且设置查询语句, 把合同号,业务员email,业务员提取出来;最后把【复制到记录结果】拖到空白处。把所有查询的结果,输出记录集。如下图1所示

select wxhtno,ywwemail,ywyname,balanceday,payday from cw_riskcontrol

cad6506b82b3983b7f16fda8e41ae1f7.png
图1

2.2.2、配置邮件

新建作业,暂时命名为【测试客户分控付款即将到期预警邮件发送】,参考下图,一次拖入【STAT】、【发送邮件】、【SQL脚本】、【完成】,组合成作业

0c23f896851fb96454ab9b2bf796f7bb.png

这里主要是【发送邮件】配置。如图2

收件人地址:因为循环提取,在这里设置参数${YWYEMAIL}

回复名称和发件人地址,因为相对固定,可以直接设置好。

bc9f0e8c4634e4cfae49a5f741be5f43.png
图2
42c877439681d0007f2482149987389a.png
图3

如图3:用户配置好邮件服务器smtp配置,一般企业都有自己的邮箱,可以根据实际情况设置。

最后配置邮件消息,主题和注释中,采用了一些参数${WXHTNO},${BALANCEDAY},${PAYDAY}

这些参数分表代表是合同号,剩余时间,实际付款时间,因为每个合同号都存在不同的时间点,需要从系统中直接提取,需要设置成变量。

0b3ee234052747bcb2dc0db8b8095731.png
图4

做完这些,保存作业后,还要配置作业的配置信息。右键点击空白处,点击属性,出现如图5,并且在命名参数中设置,设置大写作为参数变量,与sql查询字段保持一致

9ec1a9e5921b23dc1d07f79add1562e2.png
图5
  • 2.4、拼接并设计完整的批量循环发送邮件的作业

图6

8c3600eab24bb17a18776da32a9e3460.png
图6

图中的交换选择【测试即将到期的客户清单】, 邮件发送通知,选择的作业是【测试客户分控付款即将到期预警邮件发送】,并且把当前作业进行保存,命名为【客户风控逾期合同跟踪】。

截止到当前步骤,刚完成的步骤基本完成。如果现在执行,依然还是无法实现,我们批量循环发送邮件,还需要一个步骤配置。双击【邮件发送通知】,出现属性对话框,图7

78c37e36a314c95b416930641a31c5b1.png
图7

其中核心就是要把【执行每一个输入行】打勾,意味着查询多少个记录,就循环执行多少次。

3、在jenkins构建作业

进入自己搭建的jenkins平台,新建任务,如图8

输入名称,选择【构建一个自由风格的软件项目】,点击【确定】

1952a0e54314551faafaa44062985db6.png
图8

进入到配置页面,其中重要的是一个构建触发器,如图9

这个信息是早上的5点26日执行,而且是在工作日1-5执行。

jenkins有很多时间规则,网上也有很多,下次可以单独开篇幅讲解。

b9e81086894b952cb7d4449bdd154c83.png

后续,在选择【增加构建步骤】,选择【执行windows批处理命令】

D:cd D:Program Fileskettlekitchen.bat -rep:kettle -dir:/ -job:"客户风控逾期合同跟踪" -user:admin1 -pass:abcd1234 -level:Basic -log:D:kettlebatlog每日执行%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt

上面是一个批处理脚本,可以根据自己实际情况进行调整,因为公司内部,kettle所有配置信息都放在数据库中,需要从内部读取路径,设置账户和密码。另外输出执行脚本。



推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • PreparedStatement防止SQL注入
    添加数据:packagecom.hyc.study03;importcom.hyc.study02.utils.JDBCUtils;importjava.sql ... [详细]
  • 适合小型网络环境的免费网络管理软件Intermapper
    InterMapper网络管理软件可支持监测5台以内的网络设备,特别适合安装使用在小型网络环境,可以实时了解网络运行状态和网络拓扑,支持多 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • gitlab重置password
    ruby没怎么学,自己搭建的gitlab的rootpassword又忘了。幸好看见此帖子,试验okhttp:roland.kierkels.netgitreset-your-git ... [详细]
  • destoon会员注册提示“数据校验失败(2)”解决方法【PHP】
    后端开发|php教程destoon,会员注册,数据校验失败,后端开发-php教程很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:“数据校验失败 ... [详细]
  • 浅谈EditText控件的inputType类型
    其中大多数是用不到的,这里总结一下常用的几种键盘效果1、numberDecimal(可以带小数点的浮点格式)只可以输入0-9数字和小数点,即只浮点数2、number(数字格式 )只 ... [详细]
author-avatar
Liberty_Ai2502871477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有