商業公司的業務同質化很高,市場如戰場,誰能快一步應變,誰能給客戶提供個人化,誰就得到了業務,誰就能生存。特別是象中國這樣各地的經濟、文化、政治極其不平均的國家,中央與地方的差異鴻溝巨大,地方特色必然需要。
但是站在總公司的管理角度上來考慮,當然是希望商務程序越規範越好,新花樣總是意味著管理上的潛在危險。而對於總部資訊技術部門的角度來看,個人化的新花樣則是開發工作量的劇增、無止無盡的新需求。
管理與市場、領導與客戶、全域與局部、總公司與分公司之間,這個思路方向性的矛盾是現實存在,而且不可避免的。
當然,最後項目還是要按上級的管理意圖來實施,於是我們得到了一個全國一致的系統,一個唯一可用的UI,一本統一印發的操作手冊。對於常規的業務,按著系統的要求操作就可以滿足需要了。但是這個系統不再給機會進行業務、技術的創新,一切新的想法只能做為新需求向上級提出,然後由情緒惡劣的IT人員在程式裡加入一個個 “if(strncmp(deptno, “BEJ”, 3) == 0)…” 這樣醜陋到暴的代碼來完成流程定製化。
其實要在同一個系統裡同時滿足總分公司雙方的訴求,並不是不可能,就是把應用系統分為兩層:商務邏輯與UI層,商務邏輯層是對商務邏輯的原子化,以即時服務的形式提供。在此商務邏輯服務的基礎上,構建介面展現。
這裡的關鍵點在於商務邏輯服務的提供,不僅可以是標準UI對其的進程內調用,也同時需要能夠通過webserivce等協議提供進程外服務。對於標準流程,可以由總部來做“典型實現”,而對於有特別需要的分部,則可以方便在商務服務的基礎構建業務系統的其他前端外延。
這樣,從管理的角度上來講,業務資料的進出都是通過標準服務來進行的,業務資料品質、業務一致性、合規性都可以通過統一的商務邏輯來得到保證,而分公司則有機會為不同的業務開發不同的前端介面,以根據市場要求靈活創新。
這種模式特別適合於有外部合作機構的公司採用,如金融企業、電子商務企業等。如果業務系統只有一個UI的IO方式,一切資料進出都要通過操作員來進行,那麼與其他合作方進行自動化的資料對接就很難實現,一但有這樣的需求,只能由交由掌握了底層邏輯的總公司IT從頭開發。
現在我們的系統已經上線,可惜的是,系統採用了最簡單最直覺的思路開發,幾乎要把商務邏輯寫在介面裡了。事已至此,也不可能有什麼改變了,這裡只是我有過的想法分享出來,作為討論。