預警通知的功能對於管理軟件比較常見。比如,開發部填寫購買10台電腦的采購申請單,需要通知經理和財務經理審批;又如供應商把10台電腦送到公司,貨物經過倉庫部門入庫,倉庫需要通知申請購買的部門來領取電腦。這種具有通知功能的軟件模塊,在管理軟件中非常普遍。用形象的詞語表達是push,用一種方式來推動和告知相關的主體來參與系統的某項活動(審批,領料)。 比較直接的方式一般是直接打電話給經理,告訴他需要在系統中審批一下物料請購,這種方式效果好,如果同時與郵件配合使用,效果更佳。
預警通知的工具可以是郵件,短信,電話。從實現方法上講,根據我的理解,有下面的幾個實現例子供參考。
1 系統自動發送電子郵件通知
如下圖,已經填寫了加班申請單,需要通知經理審批。系統自動發送一封郵件到經理的郵箱中。
經理批准了加班後,系統又自動發送一封郵件到申請加班的員工的郵箱中,可以加班。
這種自動郵件的通知方式,在郵件盛行的企業中相當通用。
與直接打電話相比教,打電話的好處是直接,方便。但是有時候被電話通知的人可能不在電話旁邊,或是一直在忙,你用電話的方式去打擾他(一般是上級),這種打擾帶有是催促的意味,有點不合適。
在一些關鍵的業務流程活動中,電話溝通有時候是無效的。比如,負責項目的工程師一開始根據客戶的需求,通知采購員購買Yudo的熱流道系統,采購員根據項目工程師的電話通知,下單購買Yudo的熱流道系統,PO單很快就被打印出來並傳到Yudo供應商那裡。項目進行到一半,由於負責任的原因,項目的工程師再次向采購員確認Eden的熱流道系統有沒有到貨時,采購員不相信自己的耳朵,怎麼這次說的是Eden的熱流道。熟悉模具行業的朋友應該知道,熱流道系統在模具的成本中占有相當重的比重。個人細節不用深究,我想表達的主題是,電話溝通有時候是無效的。把郵件發給我吧,先留下你的證據,我再來做事。
2 金蝶ERP的方現方式
我不是故意給金蝶做廣告,我是想表達,金蝶ERP在中國的ERP市場占有相當的比重,有它的道理。常常研究現有的成熟的做法,比起閉門造車,效果往往會事半功倍。
在進入金蝶ERP的主界面後,在右下邊有一個消息窗口,打開消息管理器,如下圖
這是ERP系統發送給當前登陸用戶的所有通知消息。
金蝶的消息撰寫界面如下
用這種方式通知自己的經理批准加班申請,主動撰寫通知,然後發送給經理。
我猜測這個模塊的設計意圖,不是我所說的這個用途。
請注意上面的收件箱和發件箱的兩個子節點:普通消息和工作流消息。我所說的發送郵件通知經理批准加班的消息,也可能就在ERP系統中申請加班後,系統自動發送通知消息給經理。這種消息通知,可以把它寫到工作流消息中去,當加班申請提交後自動觸發,也可以以我演示的方式,手動撰寫消息,指定消息接收人為經理。這種設計方式,彌補了上面第一種的郵件發送方式的不足。第一種方法實現的郵件由系統自動發送,只是實現了這裡所說的工作流消息。金蝶ERP還實現了自定義的消息,如上圖,可以撰寫自定義的消息。金蝶ERP的消息還不依賴電子郵件,購買郵件客戶端(Outlook,Foxmail)還需要一筆費用。
3 XX系統的實現方式
設計管理軟件,我們會先研究現有的工作方式,工作流程,然後再設計相關的工具來實現軟件流程化管理。這個設計思路一般包含有三個方面
1) input 數據輸入
2 )process flow/workflow 工作流程
3) performance/report 報表,績效
這種方法貫穿於軟件開發的整個過程。feedback也算一個步驟,但是重要性比上面三項要小很多。
之所以提到這個方法,是因為下面將會介紹一種由老外設計的消息通知結構,可能符合國外的工作習慣。
而上面的方法也是一個外國同事介紹給我的,可能會增進理解下面的設計方法。
先上個圖,一圖解千言
這是通知(Notification)的主界面,左邊是通知動作,ListView列出模塊名稱和需要通知的消息。右邊是接受消息的人員,
下面的面板顯示了已經發送的通知消息的歷史記錄。
我舉一個例子幫助理解上面各部分的含義。對於EMP-LoginAttempt模塊,有一條通知消息是Exceed Login Attempt Limit(登陸嘗試超過系統設定的最大次數),在右邊選擇相應的接受消息的人員。當James Li登陸系統,可能因為一大把年紀了,
忘記了密碼,一直不能進入系統。在超過系統規定的嘗試登陸次數後,James Li的帳號被鎖定,
無法繼續嘗試登陸。與此同時,系統會觸發一封通知消息,告訴James Li已經超過了系統規定的最大登陸次數,帳號被鎖定。這裡的通知消息是郵件,
可以應用SQL Server實現的郵件發送方法,也可以使用指定的SMTP服務器來發送郵件。SQLMail可發送的消息包括文本串,附加文件或SQL語句的執行結果集。應用SQLMail的擴展存儲過程,郵件消息可以從一個觸發器或一個存儲過程中發送,並且通過SQLServer提供的任務和警告等功能,可以根據需要在不同的時間和情況下發送。這是SQL Mail的優勢,但是需要安裝一個基於MAPI的客戶端,比如Outlook。
這種設計有點工作流的含義,當某個系統事件發生後,自動觸發一項系統活動。
如果說看了第一種實現方法還不太明白通知的總體結構,看了這個界面後,應該可以從全局上把握這種通知功能的結構。需要建幾個表,有什麼技術要求,如何實現,都已經很明顯的擺在界面上了。
這個程序運用SQL Server的Job和SQL Mail功能,實現消息通知功能。如果配置SQL Mail麻煩,可以直接指定SMTP發送郵件服務器。這種設計是考慮到有的員工可能不屬於公司的正式編制,沒有公司配置的統一郵件(公司配置的郵件系統一般是Exchange Server,這樣做的好處太多),這時可以通過指定SMTP服務器也達到同樣的效果。
4 XX系統的實現方式
這個系統的設計者也是老外,它的設計方法深深的打上外國人的思維模式。
雖然標題是Task Manager,實際上它也是用於管理任務消息通知的程序。
左側面板是命令操作區,可以新建一項任務,接收任務,右邊是消息面板,分為當前未處理的消息或任務,和已經處理過的消息或任務,分別放在New Task和Accepted Task面板中。
讓我們來看一下,如何新建一個任務消息通知
還是以上面的加班申請為例,已經寫好了加班申請,在系統中新建一個消息通知經理審批加班。
如上圖所示,Assign頁面是選擇加班的審批經理。
從程序實踐方面來講,這種方式是數據庫的實現主式,和金蝶ERP的方式相似,不和郵件關聯。
提到Task Manager,SQL Server也實現了與任務管理類似的功能,叫Task Pad.
打開SQL企業管理器,選擇一個數據庫,在右邊的查看視圖中點擊右鍵,View—>Taskpad
這是個SQL的任務管理工具窗體,提供查看數據庫和表的信息,創建新的任務(Table,View,Job之類)的引導窗口,它和Windows Task Manager的相似程度很高。
看了這兩個界面,也許就會熟悉有關Task的界面設計模式。是的,他們長的都很相似。
通過發送郵件或新建一條數據庫記錄,或發送手機短信,再參考上面提到的四種實現方式,
可以實現一個帶預警提醒功能的模塊。依據各自的喜好和應用情景,選擇不同的實現方式。
從程序實現方面來講,自動發送郵件最簡單,結合工作流和自動發送的方式實現起來比較復雜。
這類功能通常是一個管理軟件必備的功能。也可以綜合這幾種情況,實現一個基於消息通知的中間件,
也許會有市場。這就好比權限管理,組織機構管理,把這個模塊做好做穩定,還是有相當的市場的。拿不出手就自己用在項目開發中,
讓工作輕松,每天少加班及時回家;如果可以拿得出手,自認為各方面比較成熟(架構,編碼,應用場景)就到網上吆喝叫賣。