金忠孝,劉 峰
(上海汽車集團股份有限公司,上海 201804)
21世紀(jì),中國的汽車市場正在經(jīng)歷著爆發(fā)式的增長,同時也面臨著越來越激烈的全球化市場競爭。汽車產(chǎn)業(yè)作為我國的支柱產(chǎn)業(yè),不僅具有較高的產(chǎn)業(yè)關(guān)聯(lián)度,能吸收較多的勞動就業(yè)者,而且還是技術(shù)進步速度最快的產(chǎn)業(yè)之一, 它能有力帶動相關(guān)產(chǎn)業(yè)的技術(shù)進步和產(chǎn)品升級換代。
從汽車企業(yè)成本發(fā)生的類型來看,主要有采購成本、加工成本和管理成本等。供應(yīng)商的采購成本根據(jù)所從事行業(yè)的不同,分別占到總成本的55%~70%,主機廠采購成本所占比例更是高達(dá)70%,如果能有效降低采購成本,就抓住了成本優(yōu)化的關(guān)鍵。為了有效地提高采購效率及降低采購成本,汽車企業(yè)都較早地開始了電子采購(EP:E-Procurement)模式的實踐。
汽車行業(yè)的電子采購活動中貫穿著工作流和信息流兩種活動,其中工作流是企業(yè)生產(chǎn)活動的主流,是企業(yè)生產(chǎn)經(jīng)營活動的核心,而信息流是伴隨著采購流程而產(chǎn)生的,是電子采購活動的重要組成部分。上海汽車在自主品牌的建設(shè)和發(fā)展過程中,充分意識到電子采購的重要性,在借鑒了上海通用和上海大眾等優(yōu)秀企業(yè)成熟的電子采購經(jīng)驗的基礎(chǔ)上,自主開發(fā)出一套先進的電子采購管理平臺,其業(yè)務(wù)架構(gòu)如圖1所示,軟件架構(gòu)如圖2所示。
從圖2可以看出,上海汽車的電子采購平臺采用J2EE架構(gòu),并采用IBM的Websphere Application Server(簡稱WAS)作為應(yīng)用服務(wù)器,IBM的WebSphere Process Server(簡稱WPS)作為流程引擎。
在上海汽車電子采購平臺的研制過程中,我們遇到大量的人工工作流,人工工作流的處理,是一個復(fù)雜的技術(shù)難題,本文就重點介紹我們在研制采購平臺過程中人工工作流平臺的設(shè)計方法,供同行參考。
工作流平臺的設(shè)計理念如下:
1)打破各孤立系統(tǒng)的信息孤島,恢復(fù)被信息孤島割斷了的本來是密切相連的業(yè)務(wù)流程,保證各系統(tǒng)之間的互聯(lián)、互通、互享、互動。
圖1 采購平臺業(yè)務(wù)架構(gòu)圖
2)重用功能模塊,避免功能的交叉與重復(fù),特別是對已有的業(yè)務(wù)系統(tǒng)的重用。
3)建立業(yè)務(wù)流程驅(qū)動的開發(fā)模式,建立業(yè)務(wù)人員和IT人員的橋梁。
4)建立開放型,松耦合的流程平臺,并且建立在業(yè)界的標(biāo)準(zhǔn)之上。
5)便于流程的集中管理和數(shù)據(jù)的中央集成,用數(shù)據(jù)總線整合和交互各種數(shù)據(jù)信息。
6)有完備的流程監(jiān)控、查詢、監(jiān)督和分析的功能。
圖 2 采購平臺軟件架構(gòu)圖
圖 3 總體架構(gòu)設(shè)計圖
人工工作流平臺的總體架構(gòu)設(shè)計如圖3所示:
總體架構(gòu)設(shè)計說明:
人工工作流平臺的總體架構(gòu)分為三個部分:
1)流程門戶系統(tǒng)
(1)流程門戶主要用于展現(xiàn)各個業(yè)務(wù)系統(tǒng)的流程單據(jù);
(2)所有流程單據(jù)存放于Portal門戶系統(tǒng)的數(shù)據(jù)庫中;
(3)流程門戶不會主動訪問后臺的業(yè)務(wù)系統(tǒng);
(4)流程門戶與后臺業(yè)務(wù)及流程沒有任何強耦合的關(guān)聯(lián)關(guān)系;
(5)流程門戶與后臺業(yè)務(wù)子系統(tǒng)及流程通過配置手段進行統(tǒng)一展現(xiàn)和訪問。
2)各個子系統(tǒng)業(yè)務(wù)和流程訪問系統(tǒng)
(1)主要運行各個子系統(tǒng)的核心業(yè)務(wù)程序及其訪問后臺工作流引擎的程序;
(2)用于處理業(yè)務(wù)相關(guān)數(shù)據(jù);
(3)用于和后臺工作流引擎進行流程訪問。
3)后臺業(yè)務(wù)流程核心運行系統(tǒng)
(1)主要運行各個業(yè)務(wù)系統(tǒng)所需的工作流程;
(2)控制業(yè)務(wù)的流轉(zhuǎn);
(3)實現(xiàn)流程相關(guān)數(shù)據(jù)與核心業(yè)務(wù)數(shù)據(jù)松耦合;
(4)實現(xiàn)業(yè)務(wù)數(shù)據(jù)和流程數(shù)據(jù)分開,但是又關(guān)聯(lián)的功能;
(5)業(yè)務(wù)數(shù)據(jù)通過BOUUID(全局變量名)唯一標(biāo)識實現(xiàn),并嵌入流程的數(shù)據(jù)BO(業(yè)務(wù)對象簡稱)中。
工作流平臺的核心內(nèi)容主要有以下六方面:
1)流程門戶系統(tǒng)
(1)任務(wù)查詢和管理架構(gòu);
(2)前端頁面表單邏輯架構(gòu);
(3)流程BO和外部業(yè)務(wù)數(shù)據(jù)的整合(如任務(wù)的查詢列表,任務(wù)的填寫和完成等);
(4)流程數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)的事務(wù)性控制(提交任務(wù)時,保證兩者的一致性);
(5)流程實例和任務(wù)實例的管理。
2)常用流程模板的模式設(shè)計
3)組織架構(gòu)的管理和配置
人員任務(wù)分配架構(gòu)。
4)業(yè)務(wù)規(guī)則配置架構(gòu)
流程設(shè)計及配置架構(gòu)。
5)安裝,運維模塊
6)流程監(jiān)控
以下重點介紹人工工作流平臺設(shè)計中的難點,分別是任務(wù)查詢和管理框架、Cunsom Table(用戶表)框架、前端頁面表單邏輯與業(yè)務(wù)數(shù)據(jù)整合的框架。
流程平臺的工作流查詢架構(gòu)為:
1)WPS的工作流任務(wù)列表查詢采用custom table解決方案,custom table含有流程相關(guān)的任務(wù)數(shù)據(jù),同時也包含和業(yè)務(wù)相關(guān)的業(yè)務(wù)數(shù)據(jù)。
2)工作流平臺擁有自己應(yīng)用后接口分別去查詢系統(tǒng)的custom table工作列表。
3)人員工作的分配由用戶的一個“人員組織架構(gòu)和任務(wù)分配系統(tǒng)”維護,統(tǒng)一管理人員的分配。流程引擎通過應(yīng)用接口調(diào)用該“人員組織架構(gòu)和任務(wù)分配系統(tǒng)”,得到對于某個流程、某個節(jié)點的人員信息。
2.2.1 應(yīng)用范圍
人工任務(wù)的查詢一般需要流程數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)的聯(lián)合查詢,這需要流程數(shù)據(jù)庫和業(yè)務(wù)數(shù)據(jù)庫的一個整合方案。另外,當(dāng)系統(tǒng)中運行了大量的人工任務(wù)實例時,通過流程引擎提供的應(yīng)用接口來查找工作項的效率就會很低(因為有許多表的join查詢)。為了解決這兩個問題,我們引入了Custom Table的概念。該方案通過利用系統(tǒng)提供的應(yīng)用接口的Event Handler(事件處理器)來跟蹤任務(wù)實例的生命周期,并在任務(wù)實例的狀態(tài)變化時將特定的數(shù)據(jù)寫入到Custom Table中。通過這種方式,和流程相關(guān)的關(guān)鍵信息以及查詢業(yè)務(wù)數(shù)據(jù)都被存儲到Custom Table中,從而在查詢工作項時可以直接查詢Custom Table,無需再使用流程的API(應(yīng)用程序接口的簡稱)來執(zhí)行查詢。
2.2.2 Custom Table的功能列表
1)當(dāng)任務(wù)被創(chuàng)建時,任務(wù)相關(guān)的業(yè)務(wù)數(shù)據(jù)被自動寫入到Custom Table。
2)當(dāng)任務(wù)被處理時(Claim),任務(wù)所有人和任務(wù)狀態(tài)被自動的更新到對應(yīng)的數(shù)據(jù)上。
3)當(dāng)任務(wù)被Transfer(轉(zhuǎn)移)時,新的任務(wù)所有人的ID也會被自動的更新到數(shù)據(jù)表中。
4)當(dāng)任務(wù)被完成時,跟該任務(wù)相關(guān)的數(shù)據(jù)會被自動的從Custom Table中刪除。
5)當(dāng)任務(wù)被終止時(用戶可以顯示的終止流程來終止任務(wù),或者流程中出現(xiàn)異常導(dǎo)致任務(wù)所在的范圍被終止),跟該任務(wù)相關(guān)的數(shù)據(jù)會被自動的從Custom Table中刪除。
目前,我們已經(jīng)在上海汽車的電子采購平臺中實現(xiàn)了Custom Table的以下功能:
1)待辦任務(wù)記錄
提供了當(dāng)前處于Ready和Claim狀態(tài)的任務(wù)基本信息。
2)已辦任務(wù)歷史
如果選擇了保留任務(wù)歷史,則在任務(wù)完成時自動將代辦任務(wù)記錄轉(zhuǎn)移到已辦任務(wù)歷史表中,然后把記錄從待辦任務(wù)記錄表中刪除。
2.3.1 流程門戶設(shè)計
流程門戶的設(shè)計核心思想為:
1)核心使用MVC(Model-View-Controller的簡稱)實現(xiàn),實現(xiàn)業(yè)務(wù)數(shù)據(jù)、邏輯控制、UI表現(xiàn)的分離;
2)展現(xiàn)層使用ExtJS(一種JavaScript框架)框架;
3)控制層使用依賴注入方式開發(fā),提高開發(fā)的靈活性;
4)數(shù)據(jù)訪問使用JPA(Java Persistence API的簡稱)風(fēng)格 Annotation(注釋)方式進行描述對象屬性和數(shù)據(jù)庫表的關(guān)聯(lián)關(guān)系,并實現(xiàn)CRUD(創(chuàng)建、查詢、更新、刪除的簡稱)的自動實現(xiàn)。
2.3.2 子業(yè)務(wù)及流程訪問系統(tǒng)層架構(gòu)設(shè)計
1)業(yè)務(wù)功能單元實現(xiàn)的設(shè)計思想等同于流程門戶的設(shè)計思想;
2)后臺WPS工作流程訪問使用輕量的EJB Thin客戶端,實現(xiàn)了EJB POJO化的敏捷開發(fā)。
2.3.3 后臺業(yè)務(wù)流程核心運行平臺架構(gòu)概要設(shè)計
1)使用業(yè)界標(biāo)準(zhǔn)流程描述語言BPEL開發(fā)核心業(yè)務(wù)流程服務(wù);
圖 4 BOUUID全局變量的應(yīng)用示例
2)WPS流程中的人工任務(wù)節(jié)點使用嵌入接口的方式,在一個事務(wù)中自動更新前臺門戶流程單列表展現(xiàn)庫表Custom_Task_Work_T;
3)通過EJB Statelss SessionBean的方式向外提供工作流引擎的訪問接口。
1)流程門戶系統(tǒng)、業(yè)務(wù)和流程訪問系統(tǒng)、業(yè)務(wù)流程運行系統(tǒng)三個系統(tǒng)互為獨立,屬于松耦合的體系架構(gòu),他們之間的互聯(lián)主要通過BOUUID來進行實現(xiàn)關(guān)聯(lián);
2)當(dāng)業(yè)務(wù)系統(tǒng)發(fā)起流程前,會自動為業(yè)務(wù)訂單生成唯一的BOUUID,并作為此訂單數(shù)據(jù)的ID進行標(biāo)識;
3)在啟動后臺流程過程中會自動把BOUUID傳遞進去,在人員任務(wù)狀態(tài)變化中激活的EventHandler會自動把此BOUUID放置到 Portal 門戶流程單據(jù)列表核心數(shù)據(jù)庫表Custom_Task_Work_T中,作為業(yè)務(wù)數(shù)據(jù)關(guān)聯(lián)的唯一標(biāo)識;
4)利用BOUUID,可以在任何處理的階段快捷地獲取業(yè)務(wù)數(shù)據(jù);
5)最終實現(xiàn)流程數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)的分離,并能在需要的時候進行關(guān)聯(lián)處理。
在WPS中,BPEL流程定義中BOUUID與具體業(yè)務(wù)庫表ID的關(guān)系可以用圖4來表示。
本文重點介紹了汽車電子采購平臺中人工工作流的解決方案,目前該方案已經(jīng)成功應(yīng)用于上海汽車的電子采購平臺中,所涉及的業(yè)務(wù)覆蓋了所有上海汽車自主品牌轎車相關(guān)的采購業(yè)務(wù),涉及5000多家國內(nèi)外供應(yīng)商,該方案的實施,大大提高了上海汽車的采購效率,從而有效地降低了采購成本,實踐證明是一個可行的、滿足復(fù)雜采購業(yè)務(wù)的好方案。
在方案的實施過程中,我們也總結(jié)出一些人工工作流設(shè)計經(jīng)驗,供同行參考:
經(jīng)驗一:基本功能組件化、可變功能腳本化。
在流程設(shè)計時,把那些可能變化的因素提取出來,變成可定制的腳本或參數(shù)定制文件。
經(jīng)驗二:利用規(guī)則引擎,動態(tài)定制流程。
業(yè)務(wù)策略并不是靜態(tài)的,它們經(jīng)常變更,且其關(guān)聯(lián)的業(yè)務(wù)流程也會隨之變更。 因此,可以考慮用規(guī)則引擎,事件處理器等動態(tài)方法進行流程的設(shè)計。
經(jīng)驗三:流程模版分類和可定制化。
首先分析企業(yè)的流程,然后對企業(yè)流程進行分類。對每一類流程建立一個(或多個)流程模版類。然后在這個流程模版類中,對易改變的流程節(jié)點用動態(tài)方式進行節(jié)點的增加和消減。
經(jīng)驗四: 考慮流程體系的可移植性。
在設(shè)計一個部門的流程體系時,考慮將來把該系統(tǒng)移植到其他相似部門時的重用問題。方法是盡量多的設(shè)置可定制的腳本或參數(shù)文件,把流程體系變?yōu)榭啥ㄖ频摹?/p>
[1] 程嶸.基于業(yè)務(wù)流程再造設(shè)計汽車整車廠電子采購管理系統(tǒng)[D].上海交通大學(xué),2008.
[2] 王莉,張穎江.供應(yīng)鏈管理下的電子采購系統(tǒng)[J].軟件導(dǎo)刊,2009,8(6).