開發筆記2 2012-5-4 周五
系統報警信息發送程序開發。
其它程序收集了報警信息,如:硬盤滿、硬盤壞、網絡連不通、用戶欠費、硬件設備無法訪問等,這些程序已經實現了插入數據到幾張不同類型的表,類似流水日志表,狀態變化表。
我則在這個基礎上,對這些表寫個簡單觸發器,觸發器盡量簡單,然后調用同一個存儲過程,負責決定把什么樣的報警信息以什么樣的方式發送給誰。
什么樣的報警信息?上面提到的:硬盤滿、硬盤壞、網絡連不通、用戶欠費、硬件設備無法訪問等。
以什么樣的方式?短信、郵件、客戶端提示。
發送給誰?用戶(給公務員繳費的非公務員們)、客戶(某事業單位,公務員們)、代維公司的人員、我們自己的技術支持人員。
很多時候,需求分析就是一次次確認和細化:時間、地點、人物、事件。誰在什么時候在什么地點做什么事,不信你在業務流程分析中注意一下,是不是這么回事。
說說這個觸發器和存儲過程:
我用的是mysql5.0, 已經支持了觸發器、存儲過程、函數。以前在sqlserver2000寫這些,那是用的相當熟,現在忘記光了。
在寫存儲過程時,發現一個現象,當列名和變量名相同時,查詢賦值不成功,如下:
DECLARE mobile varchar(16);
DECLARE email varchar(32);
select mobile, email into mobile, email from organization where id = rowid;
把變量名修改一下,讓他們不相同,則正確了,如:
DECLARE _mobile varchar(16);
DECLARE _email varchar(32);
select mobile, email into _mobile, _email from organization where id = rowid;
不知道為什么不能分辨,沒時間去看那英文文檔了,能實現正確功能則行。