1、批量循環(huán)發(fā)送郵件應(yīng)用場(chǎng)景:
比如:外貿(mào)公司希望監(jiān)控客戶(hù)的收款到賬情況魔市。單證登記每次報(bào)關(guān)合同主届,財(cái)務(wù)根據(jù)合同和客戶(hù)登記收款明細(xì)。
客戶(hù)少的時(shí)候待德,可以認(rèn)為來(lái)盯君丁。一旦,這些工作變成流水化作業(yè)将宪,那人為監(jiān)控變?yōu)椴豢赡堋绘闷,F(xiàn)在系統(tǒng)需要監(jiān)控每票合同的出貨金額和財(cái)務(wù)登記的到賬匯總數(shù)據(jù)。同一票合同號(hào)较坛,如果出現(xiàn)[出貨金額]>sum[收款金額],表明客戶(hù)未正常收款印蔗。為了達(dá)到提前預(yù)警的效果,我們需要根據(jù)賬期判斷客戶(hù)的最后付款時(shí)間丑勤,并且根據(jù)客戶(hù)的最后付款時(shí)間华嘹,往前推15天,提醒業(yè)務(wù)員催款法竞。這個(gè)時(shí)候就需要根據(jù)合同的不同歸屬耙厚,通知不同的業(yè)務(wù)員和具體付款時(shí)間。
2爪喘、解決幾個(gè)要點(diǎn)
2.1颜曾、定時(shí)處理
kettle自帶的定時(shí)處理,其開(kāi)發(fā)公司也認(rèn)為自己的定時(shí)調(diào)度作業(yè)較弱秉剑,建議用戶(hù)使用其他定時(shí)處理方法泛豪。因?yàn)橹拔恼吕镏v解jenkins構(gòu)建企業(yè)內(nèi)部的定時(shí)調(diào)度作業(yè)平臺(tái),參考《企業(yè)內(nèi)部構(gòu)架ETL操作2-Jenkins篇》,搭建環(huán)境诡曙,在此不累贅臀叙。
其作用在于,設(shè)置調(diào)度kettle構(gòu)造時(shí)間价卤,完成定時(shí)處理作業(yè)功能
2.2劝萤、循環(huán)處理,并且發(fā)送郵件
此部分為文章核心內(nèi)容:
2.2.1慎璧、掃描特定表單數(shù)據(jù)床嫌,提取所有的記錄,并把查詢(xún)的結(jié)果輸出胸私。
首先在kettle厌处,新建一個(gè)轉(zhuǎn)換,我們大致命名為【測(cè)試即將到期的客戶(hù)清單】,選擇【表輸入】岁疼,拖到空白處阔涉,并且設(shè)置查詢(xún)語(yǔ)句, 把合同號(hào),業(yè)務(wù)員email捷绒,業(yè)務(wù)員提取出來(lái)瑰排;最后把【復(fù)制到記錄結(jié)果】拖到空白處。把所有查詢(xún)的結(jié)果暖侨,輸出記錄集椭住。如下圖1所示
select wxhtno,ywwemail,ywyname,balanceday,payday from cw_riskcontrol
圖1
2.2.2、配置郵件
新建作業(yè)它碎,暫時(shí)命名為【測(cè)試客戶(hù)分控付款即將到期預(yù)警郵件發(fā)送】函荣,參考下圖,一次拖入【STAT】扳肛、【發(fā)送郵件】傻挂、【SQL腳本】、【完成】挖息,組合成作業(yè)
這里主要是【發(fā)送郵件】配置金拒。如圖2
收件人地址:因?yàn)檠h(huán)提取,在這里設(shè)置參數(shù)${YWYEMAIL}
回復(fù)名稱(chēng)和發(fā)件人地址套腹,因?yàn)橄鄬?duì)固定绪抛,可以直接設(shè)置好。
圖2
圖3
如圖3:用戶(hù)配置好郵件服務(wù)器smtp配置电禀,一般企業(yè)都有自己的郵箱幢码,可以根據(jù)實(shí)際情況設(shè)置。
最后配置郵件消息尖飞,主題和注釋中症副,采用了一些參數(shù)${WXHTNO},${BALANCEDAY},${PAYDAY}
這些參數(shù)分表代表是合同號(hào)店雅,剩余時(shí)間,實(shí)際付款時(shí)間贞铣,因?yàn)槊總€(gè)合同號(hào)都存在不同的時(shí)間點(diǎn)闹啦,需要從系統(tǒng)中直接提取,需要設(shè)置成變量辕坝。
圖4
做完這些窍奋,保存作業(yè)后,還要配置作業(yè)的配置信息酱畅。右鍵點(diǎn)擊空白處琳袄,點(diǎn)擊屬性,出現(xiàn)如圖5圣贸,并且在命名參數(shù)中設(shè)置挚歧,設(shè)置大寫(xiě)作為參數(shù)變量,與sql查詢(xún)字段保持一致
圖5
2.4吁峻、拼接并設(shè)計(jì)完整的批量循環(huán)發(fā)送郵件的作業(yè)
圖6
圖6
圖中的交換選擇【測(cè)試即將到期的客戶(hù)清單】, 郵件發(fā)送通知,選擇的作業(yè)是【測(cè)試客戶(hù)分控付款即將到期預(yù)警郵件發(fā)送】在张,并且把當(dāng)前作業(yè)進(jìn)行保存用含,命名為【客戶(hù)風(fēng)控逾期合同跟蹤】。
截止到當(dāng)前步驟帮匾,剛完成的步驟基本完成啄骇。如果現(xiàn)在執(zhí)行,依然還是無(wú)法實(shí)現(xiàn)瘟斜,我們批量循環(huán)發(fā)送郵件缸夹,還需要一個(gè)步驟配置。雙擊【郵件發(fā)送通知】螺句,出現(xiàn)屬性對(duì)話框虽惭,圖7
圖7
其中核心就是要把【執(zhí)行每一個(gè)輸入行】打勾,意味著查詢(xún)多少個(gè)記錄蛇尚,就循環(huán)執(zhí)行多少次芽唇。
3、在jenkins構(gòu)建作業(yè)
進(jìn)入自己搭建的jenkins平臺(tái)取劫,新建任務(wù)匆笤,如圖8
輸入名稱(chēng),選擇【構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目】谱邪,點(diǎn)擊【確定】
圖8
進(jìn)入到配置頁(yè)面炮捧,其中重要的是一個(gè)構(gòu)建觸發(fā)器,如圖9
這個(gè)信息是早上的5點(diǎn)26日?qǐng)?zhí)行惦银,而且是在工作日1-5執(zhí)行咆课。
jenkins有很多時(shí)間規(guī)則末誓,網(wǎng)上也有很多,下次可以單獨(dú)開(kāi)篇幅講解傀蚌。
后續(xù)基显,在選擇【增加構(gòu)建步驟】,選擇【執(zhí)行windows批處理命令】
D:
cd D:\Program Files\kettle
kitchen.bat -rep:kettle -dir:/ -job:"客戶(hù)風(fēng)控逾期合同跟蹤" -user:admin1 -pass:abcd1234 -level:Basic -log:D:\kettlebat\log\每日?qǐng)?zhí)行%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt
上面是一個(gè)批處理腳本善炫,可以根據(jù)自己實(shí)際情況進(jìn)行調(diào)整撩幽,因?yàn)楣緝?nèi)部,kettle所有配置信息都放在數(shù)據(jù)庫(kù)中箩艺,需要從內(nèi)部讀取路徑窜醉,設(shè)置賬戶(hù)和密碼。另外輸出執(zhí)行腳本艺谆。