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
图1
2.2.2、配置邮件
新建作业,暂时命名为【测试客户分控付款即将到期预警邮件发送】,参考下图,一次拖入【STAT】、【发送邮件】、【SQL脚本】、【完成】,组合成作业
这里主要是【发送邮件】配置。如图2
收件人地址:因为循环提取,在这里设置参数${YWYEMAIL}
回复名称和发件人地址,因为相对固定,可以直接设置好。
图2
图3
如图3:用户配置好邮件服务器smtp配置,一般企业都有自己的邮箱,可以根据实际情况设置。
最后配置邮件消息,主题和注释中,采用了一些参数${WXHTNO},${BALANCEDAY},${PAYDAY}
这些参数分表代表是合同号,剩余时间,实际付款时间,因为每个合同号都存在不同的时间点,需要从系统中直接提取,需要设置成变量。
图4
做完这些,保存作业后,还要配置作业的配置信息。右键点击空白处,点击属性,出现如图5,并且在命名参数中设置,设置大写作为参数变量,与sql查询字段保持一致
图5
2.4、拼接并设计完整的批量循环发送邮件的作业
图6
图6
图中的交换选择【测试即将到期的客户清单】, 邮件发送通知,选择的作业是【测试客户分控付款即将到期预警邮件发送】,并且把当前作业进行保存,命名为【客户风控逾期合同跟踪】。
截止到当前步骤,刚完成的步骤基本完成。如果现在执行,依然还是无法实现,我们批量循环发送邮件,还需要一个步骤配置。双击【邮件发送通知】,出现属性对话框,图7
图7
其中核心就是要把【执行每一个输入行】打勾,意味着查询多少个记录,就循环执行多少次。
3、在jenkins构建作业
进入自己搭建的jenkins平台,新建任务,如图8
输入名称,选择【构建一个自由风格的软件项目】,点击【确定】
图8
进入到配置页面,其中重要的是一个构建触发器,如图9
这个信息是早上的5点26日执行,而且是在工作日1-5执行。
jenkins有很多时间规则,网上也有很多,下次可以单独开篇幅讲解。
后续,在选择【增加构建步骤】,选择【执行windows批处理命令】
D:
cd D:\Program Files\kettle
kitchen.bat -rep:kettle -dir:/ -job:"客户风控逾期合同跟踪" -user:admin1 -pass:abcd1234 -level:Basic -log:D:\kettlebat\log\每日执行%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt
上面是一个批处理脚本,可以根据自己实际情况进行调整,因为公司内部,kettle所有配置信息都放在数据库中,需要从内部读取路径,设置账户和密码。另外输出执行脚本。
网友评论