劉利靜?燕鵬飛
摘 要 隨著海事衛(wèi)星業(yè)務(wù)范圍日益擴(kuò)大,為了能夠更好兼容三、四代星及未來(lái)的五代星業(yè)務(wù),提升整體業(yè)務(wù)受理的交易量和成功率,縮短業(yè)務(wù)受理時(shí)長(zhǎng),其現(xiàn)有業(yè)務(wù)支撐系統(tǒng)需要不斷更新。本論文將研究和實(shí)現(xiàn)基于工作流的業(yè)務(wù)受理系統(tǒng)。工作流處理模塊采用開源的Activiti5工作流引擎實(shí)現(xiàn)業(yè)務(wù)受理數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)分發(fā)及全流程自動(dòng)處理功能。最終消除半手工工作狀態(tài),保持各系統(tǒng)數(shù)據(jù)一致的需求。
關(guān)鍵詞 Activiti5;工作流;業(yè)務(wù)受理系統(tǒng);海事衛(wèi)星
前言
國(guó)際海事衛(wèi)星(Inmarsat)是第一個(gè)可以覆蓋面積為全球范圍的商用移動(dòng)衛(wèi)星通信系統(tǒng)[1],現(xiàn)已發(fā)展成為海、陸、空范圍內(nèi)話音、傳真、數(shù)據(jù)等衛(wèi)星通信服務(wù)。全球有四大關(guān)口站,其中北京關(guān)口站為其中之一。
目前北京關(guān)口站業(yè)務(wù)子系統(tǒng)已經(jīng)形成第四代海事衛(wèi)星[2]網(wǎng)絡(luò)體系。四代星業(yè)務(wù)支撐系統(tǒng)主要是用于支撐電信通信業(yè)務(wù)的業(yè)務(wù)受理與業(yè)務(wù)需求的擴(kuò)展[3],提供業(yè)務(wù)開通、變更、注銷,以及對(duì)計(jì)費(fèi)數(shù)據(jù)的賬務(wù)處理功能,服務(wù)于海事衛(wèi)星全體用戶及系統(tǒng)管理部門。
業(yè)務(wù)受理是業(yè)務(wù)支撐系統(tǒng)重要的組成部分,通過內(nèi)外需求驅(qū)動(dòng)來(lái)優(yōu)化整個(gè)系統(tǒng)運(yùn)營(yíng)流程,從而提升資金安全,最終滿足系統(tǒng)業(yè)務(wù)、財(cái)務(wù)審計(jì)及管理需求等。
由于現(xiàn)有的業(yè)務(wù)支撐系統(tǒng)實(shí)現(xiàn)非模塊化,大量的建設(shè)需求及相關(guān)信息處于半手工管理階段,使得各交互系統(tǒng)之間的數(shù)據(jù)存在數(shù)據(jù)不一致情況。鑒于此,本論文將設(shè)計(jì)和實(shí)現(xiàn)一套基于開源的Activiti5工作流的業(yè)務(wù)受理系統(tǒng),通過全自動(dòng)的流程處理,減少半手工處理帶來(lái)的數(shù)據(jù)差異。
1 工作流工作機(jī)制
1.1 工作流技術(shù)
生產(chǎn)與辦公自動(dòng)化領(lǐng)域在發(fā)展過程中為了優(yōu)化管理,將生產(chǎn)/辦公處理過程中具有共性的內(nèi)容進(jìn)行抽象,涉及的人員通過角色權(quán)限抽象成數(shù)據(jù)信息,涉及的共性工作通過任務(wù)來(lái)進(jìn)行處理,涉及不同人員/部門之間工作的調(diào)度等抽象為系統(tǒng)中的執(zhí)行規(guī)則與過程,將生產(chǎn)/辦公處理過程通過軟件技術(shù)進(jìn)行處理,從中孕育出了工作流技術(shù)[4],提升整個(gè)領(lǐng)域的處理效率。
1993年工作流管理聯(lián)盟(Workflow Management Coalition, WMFC)成立,定義工作流為:“工作流是一類能夠完全或者部分自動(dòng)執(zhí)行的經(jīng)營(yíng)過程,它根據(jù)一系列過程規(guī)則、文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間進(jìn)行傳遞與執(zhí)行”[5]。從上可以看出工作流管理聯(lián)盟對(duì)于兩者的定義重點(diǎn)在于工作流的執(zhí)行工作上。
WMFC定義了工作流最基本的概念,其中提出的廣泛應(yīng)用的術(shù)語(yǔ)有:工作流、業(yè)務(wù)流程、過程定義、過程定義工具、活動(dòng)、過程/活動(dòng)實(shí)例、工作流管理系統(tǒng)、工作流引擎、工作項(xiàng)、工作列表等,工作流管理聯(lián)盟定義的工作流基本概念間關(guān)系圖,如圖1所示。
1.2 業(yè)務(wù)流程建模標(biāo)記語(yǔ)言(BPMN2.0)
(1)BPMN2.0
WMFC的成立在一定程度上促使了整個(gè)業(yè)務(wù)流程管理市場(chǎng)繁榮發(fā)展,業(yè)務(wù)流程管理基本內(nèi)容是將現(xiàn)實(shí)生產(chǎn)活動(dòng)按照相應(yīng)的管理過程進(jìn)行抽象,通過統(tǒng)一管理,使流程涉及的人員能夠在恰當(dāng)?shù)臅r(shí)間點(diǎn)完成各自的任務(wù)且任務(wù)內(nèi)容準(zhǔn)確無(wú)誤,最終實(shí)現(xiàn)減少流程冗余及處理流程優(yōu)化的目標(biāo)。
業(yè)務(wù)流程建模標(biāo)注語(yǔ)言(Business Process Modeling Notation, BPMN)是業(yè)務(wù)流程設(shè)計(jì)與流程實(shí)現(xiàn)之間搭建的一條標(biāo)準(zhǔn)化的橋梁,該語(yǔ)言使用圖示的形式簡(jiǎn)單清晰的表達(dá)生產(chǎn)活動(dòng)中的業(yè)務(wù)流程信息,這種圖示與常見的業(yè)務(wù)流程圖圖示相似[6]。
對(duì)象管理組織(Object Management Group,OMG)在2011年發(fā)布了BPMN2.0規(guī)范。2.0版本引用了XML語(yǔ)言描述,使用XML語(yǔ)言定義流程節(jié)點(diǎn)的執(zhí)行先后順序,完成了業(yè)務(wù)流程可執(zhí)行化的描述。因?yàn)锽PMN2.0的出現(xiàn),業(yè)務(wù)流程管理的流程建模與模型的序列化執(zhí)行可以使用同一種規(guī)范化定義標(biāo)準(zhǔn)。
(2)BPMN2.0圖形標(biāo)記
BPMN2.0定義了用于業(yè)務(wù)流程處理主要圖形標(biāo)記,圖形內(nèi)容包含有五個(gè)基本元素,分別是將各個(gè)分開的業(yè)務(wù)過程/任務(wù)/活動(dòng)連接在一起的連接對(duì)象;各節(jié)點(diǎn)直接進(jìn)行相互傳遞的數(shù)據(jù)信息;用于分辨多部門或者多系統(tǒng)或者多用戶間各自獨(dú)立的流程定義的泳道;為各個(gè)活動(dòng)提供上下文途徑的擴(kuò)展符號(hào)——工件(Artifacts)[6];標(biāo)識(shí)基本工作流處理事件或者任務(wù)的工作流對(duì)象。2.0版本定義了流程的開始、結(jié)束、流程過程判斷等,其包含了事件(Events)、活動(dòng)節(jié)點(diǎn)(Activities)及網(wǎng)關(guān)(Gateways)三類基本要素。
①事件
事件一般用圓圈表示,可以用于表示業(yè)務(wù)流程活動(dòng)的開始、結(jié)束,當(dāng)出現(xiàn)邊界判斷或者定時(shí)判斷時(shí)候,也可以使用事件進(jìn)行定義。在實(shí)際使用過程中存在多個(gè)業(yè)務(wù)系統(tǒng)之間整合,此時(shí)也可以通過使用事件增強(qiáng)整個(gè)系統(tǒng)之間交互控制。BPMN2.0中定義的事件有:開始事件(Start Events)、中間事件(Intermediate Events)、結(jié)束事件(End Events)等。
②活動(dòng)
工作流建模中將存在從啟動(dòng)到結(jié)束有一定過程狀態(tài)的內(nèi)容定義為活動(dòng),活動(dòng)一般用圓角型圖示進(jìn)行表示,常見的活動(dòng)的有任務(wù)(Task)、流向(Sequence Flow)及子流程(Sub-Process)等。
任務(wù):可以用于表示工作流執(zhí)行活動(dòng)內(nèi)容,任務(wù)與其他類型節(jié)點(diǎn)或者其他任務(wù)之間的連接通過順序流來(lái)實(shí)現(xiàn)。
順序流:是帶箭頭的有向連接線,在進(jìn)行順序定義的時(shí)候同時(shí)有源頭ID定義及目的ID定義。工作流建模中涉及的所有元素之間的連接均通過順序流連接。
子流程:主要功能是實(shí)現(xiàn)流程的繼承。當(dāng)出現(xiàn)多重復(fù)雜流程時(shí),可以通過創(chuàng)建不同級(jí)別的流程進(jìn)行實(shí)現(xiàn)。
③網(wǎng)關(guān)
工作流建模過程中存在流程判斷與流程并行執(zhí)行情況,這種情況可以通過網(wǎng)關(guān)來(lái)實(shí)現(xiàn)。BPMN2.0中定義的網(wǎng)關(guān)有:并行網(wǎng)關(guān)(Parallel Gateway)、排他型網(wǎng)關(guān)(Exclusive Gateway)、包容型網(wǎng)關(guān)(Inclusive Gateway)。
并行網(wǎng)關(guān):是經(jīng)過該網(wǎng)關(guān)的活動(dòng)可以同時(shí)被執(zhí)行,該網(wǎng)關(guān)所有輸入的順序流對(duì)應(yīng)的源活動(dòng)節(jié)點(diǎn)均執(zhí)行完畢后,才能繼續(xù)執(zhí)行網(wǎng)關(guān)輸出流連接的活動(dòng)節(jié)點(diǎn)。
排他型網(wǎng)關(guān):是經(jīng)過該網(wǎng)關(guān)可能有多條順序流輸出,但是最終只有一條滿足參數(shù)判斷條件的輸出流被調(diào)用執(zhí)行。
包容型網(wǎng)關(guān):被用來(lái)進(jìn)行條件性拆分或者歸并順序流。
1.3 Activiti5引擎
(1)Activiti5
Activiti5以BPMN2.0標(biāo)準(zhǔn)化語(yǔ)言為基礎(chǔ),可以通過標(biāo)準(zhǔn)化的建模語(yǔ)言與可執(zhí)行化的描述完成相應(yīng)工作流的建立與執(zhí)行,使應(yīng)用該開源工作流引擎的企業(yè)能夠處理形式多樣的問題。Activiti5最終的目標(biāo)是為了創(chuàng)建更靈活開放的業(yè)務(wù)流程管理處理方案[7]。
Activiti5擁有活躍的生命力與潛在的可能性,原因在于在底層開發(fā)框架許可上選擇的是Apache,這樣使得整個(gè)架構(gòu)可以開放給全世界,而不僅僅是將歸屬權(quán)限制在某個(gè)公司或者個(gè)人。
(2)Activiti5與BPMN2.0
BPMN2.0定義了標(biāo)準(zhǔn)的建模圖示與可序列化執(zhí)行的描述信息,Activiti5在設(shè)計(jì)與研發(fā)中嚴(yán)格按照BPMN2.0標(biāo)準(zhǔn)執(zhí)行,實(shí)現(xiàn)了其中大部分的圖示定義與可序列化執(zhí)行語(yǔ)義的描述。Activiti5是開源的業(yè)務(wù)流程管理軟件和工作流系統(tǒng)引擎,同時(shí)通過自定義擴(kuò)展元素與屬性,在實(shí)際生產(chǎn)過程自動(dòng)化建設(shè)過程中,可以實(shí)現(xiàn)更多的業(yè)務(wù)功能。這些擴(kuò)展的元素與屬性同樣支持BPMN2.0標(biāo)準(zhǔn)規(guī)范。
Activiti5通過BpmnParseHandler類進(jìn)行BPMN2.0 XML流程定義文件的解析。其解析過程為從頂部節(jié)點(diǎn)開始解析,逐級(jí)深入,從定義的屬性、導(dǎo)入、分項(xiàng)定義、消息、接口、錯(cuò)誤信息到過程定義,最后進(jìn)行可視化定義的讀取與分析。
除了以上內(nèi)容外,Activiti5還引入了監(jiān)聽機(jī)制,包含:BPMN解析監(jiān)聽、任務(wù)監(jiān)聽、執(zhí)行監(jiān)聽、事務(wù)監(jiān)聽。
2 工作流處理模塊設(shè)計(jì)與實(shí)現(xiàn)
2.1 工作流處理模塊需求分析
海事衛(wèi)星業(yè)務(wù)受理系統(tǒng)需要將用戶提交的業(yè)務(wù)受理信息,進(jìn)行數(shù)據(jù)解析處理并發(fā)送到不同系統(tǒng)中。與業(yè)務(wù)受理系統(tǒng)進(jìn)行交互的有Inmarsat系統(tǒng)、Billing系統(tǒng)、賬管系統(tǒng)、流控系統(tǒng)及870系統(tǒng)。
各交互系統(tǒng)需要的數(shù)據(jù)類型、數(shù)據(jù)格式相差很大,對(duì)受理數(shù)據(jù)進(jìn)行數(shù)據(jù)解析轉(zhuǎn)換處理在工作流處理模塊進(jìn)行操作。各平臺(tái)數(shù)據(jù)處理的時(shí)候根據(jù)其開通的關(guān)鍵性及后續(xù)處理便捷性進(jìn)行排序。
現(xiàn)有系統(tǒng)目前對(duì)于各平臺(tái)數(shù)據(jù)處理部分處于半手工狀態(tài),因而為了能夠?qū)崿F(xiàn)數(shù)據(jù)處理的及時(shí)性、準(zhǔn)確性,引用Activiti開源工作流進(jìn)行配置處理。Inmarsat系統(tǒng)通過報(bào)文文件方式進(jìn)行數(shù)據(jù)訂購(gòu)/變更/退訂操作,因而工作流流程處理過程中采用異步的方式實(shí)現(xiàn)。當(dāng)某個(gè)平臺(tái)處理失敗的時(shí)候,需要考慮錯(cuò)單、異常訂單處理機(jī)制。
因而工作流處理模塊需要實(shí)現(xiàn)的內(nèi)容如下:
(1)Activiti工作流的啟動(dòng)、查詢、停止等操作控制與管理。
(2)需要解析訂單信息,將訂單信息轉(zhuǎn)化為各個(gè)外圍平臺(tái)識(shí)別的報(bào)文信息。
(3)出現(xiàn)異常情況的錯(cuò)單處理,訂單重發(fā)或者訂單撤單操作等。
(4)所有平臺(tái)均處理完成后,整個(gè)工作流數(shù)據(jù)的歸檔操作。
2.2 Activiti5在海事衛(wèi)星受理系統(tǒng)中的應(yīng)用實(shí)現(xiàn)
工作流管理模塊主要實(shí)現(xiàn)工作流的啟動(dòng)、查詢與終止操作。訂單模塊創(chuàng)建訂單完成后,調(diào)用工作流處理模塊進(jìn)行訂單的派發(fā)操作。初始化時(shí)調(diào)用Activiti啟動(dòng)工作流,每個(gè)訂單生成唯一的流程實(shí)例ID(PROC_INST_ID),每個(gè)訂單發(fā)送到不同平臺(tái),生成不同的TASK_ID。當(dāng)訂單派發(fā)處理完成后,調(diào)用Activiti終止工作流,管理工作流的生命周期。Activiti流程圖如圖6所示。
圖6 Activiti流程圖
工作流管理模塊實(shí)現(xiàn)了對(duì)工作流流程的控制與分發(fā),整個(gè)流程設(shè)計(jì)自動(dòng)化完成處理,減少了人工操作及各系統(tǒng)之間的數(shù)據(jù)差異。系統(tǒng)中實(shí)現(xiàn)的工作流主要使用節(jié)點(diǎn)有開始事件、順序流、JAVA服務(wù)任務(wù)、用戶任務(wù)、排他型網(wǎng)關(guān)及結(jié)束事件。每個(gè)節(jié)點(diǎn)實(shí)現(xiàn)的任務(wù)不同。針對(duì)Acitiviti流程圖中重要節(jié)點(diǎn)定義圖形符號(hào)、類型及功能描述如表1所示。
(1)JAVA服務(wù)任務(wù):工單預(yù)處理節(jié)點(diǎn)的XML定義如下。
節(jié)點(diǎn)參數(shù)定義:
id參數(shù)定義為 servicetask_orderPreprocessor;name名稱為工單預(yù)處理(判斷是否發(fā)送inmarsat);
activiti:expression是該節(jié)點(diǎn)調(diào)用的表達(dá)式,Expression表達(dá)式可以用于Java Service Tasks、Task Listeners和Condition Sequence Flows中。
activiti:resultVariableName表示該節(jié)點(diǎn)執(zhí)行完畢后,執(zhí)行結(jié)果賦值的參數(shù)名稱,如節(jié)點(diǎn)正常結(jié)束,節(jié)點(diǎn)最終輸出結(jié)果為param=Continue(param參數(shù)值用于順序流判定)。
節(jié)點(diǎn)功能:
該節(jié)點(diǎn)實(shí)現(xiàn)的功能為先判斷是否發(fā)送Inmarsat平臺(tái),如果發(fā)送直接調(diào)用發(fā)送Inmarsat任務(wù),不發(fā)送則調(diào)用通知訂單處理模塊進(jìn)行轉(zhuǎn)實(shí)例操作。
(2)用戶任務(wù):發(fā)送Inmarsat節(jié)點(diǎn)的XML定義如下。
節(jié)點(diǎn)參數(shù)定義:
id定義為usertask_inmarsat。name名稱定義為發(fā)送inmarsat。
activiti:async參數(shù)定義服務(wù)處理是異步操作;當(dāng)設(shè)置async=”true”的時(shí)候,流程引擎采用JobExecutor來(lái)異步執(zhí)行,引擎首先會(huì)將該任務(wù)實(shí)例化一條job記錄,插入act_ru_job表中,然后JobExecutor掃描該表并加鎖執(zhí)行該job。
extensionElements:User Task的擴(kuò)展屬性定義,任務(wù)監(jiān)控(Task Listener)定義是用戶任務(wù)的擴(kuò)展屬性。
activiti:taskListener:使用任務(wù)監(jiān)聽器方式實(shí)現(xiàn)該節(jié)點(diǎn)功能,通過方法表達(dá)式完成類調(diào)用,在此該節(jié)點(diǎn)功能具體的實(shí)現(xiàn)類方法為interOrderAllBusiServiceImpl.orderSendInmarsat(task)(task參數(shù)保存當(dāng)前任務(wù)的相關(guān)信息)。
節(jié)點(diǎn)功能:
對(duì)訂單數(shù)據(jù)進(jìn)行解析并轉(zhuǎn)化成Inmarsat平臺(tái)可以識(shí)別的文件,并增加任務(wù)監(jiān)控,出現(xiàn)異常的時(shí)候捕獲異常,并進(jìn)行相應(yīng)的異常處理。
(3)排他型網(wǎng)關(guān):網(wǎng)關(guān)節(jié)點(diǎn)的XML定義如下。
節(jié)點(diǎn)參數(shù)定義:
id定義為exclusivegateway1;name名稱定義為Exclusive Gateway;
節(jié)點(diǎn)功能:
排他型網(wǎng)關(guān)連接一個(gè)輸入流,三個(gè)輸出流,三個(gè)輸出流分別為:判斷參數(shù)值是Continue調(diào)用通知受理轉(zhuǎn)實(shí)例分支;判斷參數(shù)值是Repeat調(diào)用發(fā)送Inmarsat節(jié)點(diǎn);判斷參數(shù)值是Exception調(diào)用錯(cuò)單處理節(jié)點(diǎn)。
(4)順序流:連接排他型網(wǎng)關(guān)exclusivegateway1有三個(gè)輸出順序流。
節(jié)點(diǎn)參數(shù)定義(以flow90節(jié)點(diǎn)為例):
id定義為flow90。
sourceRef定義flow90順序流的源頭節(jié)點(diǎn)是id為exclusivegateway1的排他型網(wǎng)關(guān)。
targetRef定義flow90順序流的目標(biāo)節(jié)點(diǎn)是id為servicetask_accept的服務(wù)任務(wù)。
conditionExpression定義順序流flow90分支條件判斷表達(dá)式,使用單變量的boolean表達(dá)式進(jìn)行判斷處理,順序流flow90分支的條件判斷定義為:${param==Continue},增加CDATA標(biāo)記是格式化字符數(shù)據(jù)。
節(jié)點(diǎn)功能:
flow90的源頭節(jié)點(diǎn)是網(wǎng)關(guān),目標(biāo)節(jié)點(diǎn)是服務(wù)任務(wù)通知訂單處理模塊進(jìn)行轉(zhuǎn)實(shí)例操作節(jié)點(diǎn);flow91的源頭節(jié)點(diǎn)是網(wǎng)關(guān),目標(biāo)節(jié)點(diǎn)是發(fā)送數(shù)據(jù)到Inmarsat系統(tǒng)節(jié)點(diǎn);flow72的源頭節(jié)點(diǎn)是網(wǎng)關(guān),目標(biāo)節(jié)點(diǎn)是錯(cuò)單處理節(jié)點(diǎn)。
輸出順序流的定義如下所示:
sourceRef=”exclusivegateway1” targetRef=”servicetask_accept”>
sourceRef=”exclusivegateway1” targetRef=”usertask_inmarsat”>
sourceRef=”exclusivegateway1” targetRef=”usertask_error_1”>
3 結(jié)束語(yǔ)
本文研究和實(shí)現(xiàn)了基于工作流的業(yè)務(wù)受理系統(tǒng),通過引用開源的Activiti5工作流引擎,實(shí)現(xiàn)了海事衛(wèi)星業(yè)務(wù)受理系訂單的全自動(dòng)處理功能,解決了之前應(yīng)用系統(tǒng)的半手工訂單處理問題,最終避免了各系統(tǒng)之間數(shù)據(jù)不一致情況。而與五代星業(yè)務(wù)融合是后續(xù)事衛(wèi)星業(yè)務(wù)范圍日益擴(kuò)大,五代星業(yè)務(wù)也在慢慢成熟,需要推廣到市場(chǎng)中,如何實(shí)現(xiàn)與五代星業(yè)務(wù)融合,也將是非常有意義的工作。
參考文獻(xiàn)
[1] 王震東,趙興生.國(guó)際海事衛(wèi)星組織的通信業(yè)務(wù)[J].現(xiàn)代通信,1997,(8):28-31.
[2] 鄒栫潔.第四代國(guó)際海事衛(wèi)星技術(shù)的特點(diǎn)研究[J].中國(guó)海事,2012,(11):53-56.
[3] 莊少燉.基于Spring的輕量級(jí)Web框架研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2009.
[4] 于萬(wàn)鈞.工作流管理技術(shù)研究[D].吉林:吉林大學(xué),2004.
[5] Palmer N.Workflow Management Coalition[M].New York:Springer US,2009:179.
[6] Rosing M V,White S,Cummins F,et al.Business Process Model and Notation—BPMN[J].Complete Business Process Handbook,2015,(95):429-453.
[7] Tijs Rademakers,Ron van Liempd.Activiti in Action[M].New York:Manning Publications,2007:51-52.
作者簡(jiǎn)介
劉利靜(1987-),女,河南新鄉(xiāng)人,中國(guó)交通通信信息中心,研究方向:交通信息化。
燕鵬飛(1981-),男,內(nèi)蒙古烏蘭察布人,中國(guó)交通通信信息中心,研究方向:交通信息化。