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