余軍
(中國商用飛機(jī)有限公司上海航空工業(yè)(集團(tuán))有限公司,上海201210)
?
基于JBPM4的飛機(jī)EO落實跟蹤系統(tǒng)應(yīng)用實踐
余軍
(中國商用飛機(jī)有限公司上海航空工業(yè)(集團(tuán))有限公司,上海201210)
摘要:通過對工作流及工作流引擎JBPM4的介紹,對JBPM4的主要特點、流程定義與部署等進(jìn)行研究,并在其基礎(chǔ)上建立一套適用于ARJ21-700型號飛機(jī)工程指令更改落實跟蹤系統(tǒng),以達(dá)到更好地實現(xiàn)流程管理,簡化系統(tǒng)設(shè)計與開發(fā)的目的,并且降低了程序代碼直接耦合度,提高了軟件開發(fā)的效率,提高了系統(tǒng)的擴(kuò)展性和可維護(hù)性。
關(guān)鍵詞:工作流;JBPM4;飛機(jī)工程指令;更改落實
工程更改指在構(gòu)型項的研制、生產(chǎn)過程中,對已批準(zhǔn)的現(xiàn)行構(gòu)型文件(基線范圍內(nèi))所做的更改。在飛機(jī)的生命周期內(nèi),特別是在研制階段,由于采用新技術(shù)、彌補(bǔ)產(chǎn)品的缺陷、增加客戶所希望的新功能等原因都會引起工程更改[1]。
ARJ21-700飛機(jī)是我國首個按照國際適航標(biāo)準(zhǔn)設(shè)計的完全擁有自主知識產(chǎn)權(quán)的新型噴氣式支線飛機(jī),目前還處在研制階段,工程更改不可避免。ARJ項目中工程更改不僅涉及到飛機(jī)產(chǎn)品設(shè)計,而且涉及到生產(chǎn)制造和采購、維修、質(zhì)檢、客服、培訓(xùn)手冊等,需要跨部門、跨區(qū)域、跨專業(yè)合作完成。工程更改從提出到實施周期長、涉及人數(shù)廣、工作難度大。
工程更改的有效管理與控制一定程度上是通過建立嚴(yán)格的更改業(yè)務(wù)流程,在計算機(jī)工具支持下,使得更改活動始終處于嚴(yán)格的可控狀態(tài),并記錄涉及到的所有對象的變化,對下游工程指令(Engineering Order,簡稱EO)落實更改的全程跟蹤,既保證了ARJ21項目構(gòu)型控制的完整性和符合性,也有利于后期對工程變更影響的分析與研究。良好的更改落實跟蹤管理能夠有效降低成本、提高工作效率、縮短生產(chǎn)周期、保證產(chǎn)品質(zhì)量、響應(yīng)市場需求,從而提升企業(yè)競爭實力。
本文通過對JBPM4的深入研究,在分析新支線ARJ21在客戶服務(wù)方面工程落實更改流程的基礎(chǔ)上,提出了基于JBPM4的工程指令更改落實跟蹤系統(tǒng)的核心工作流程設(shè)計方法,建立有效的工程指令更改落實跟蹤系統(tǒng)。
1.1工作流簡介
工作流的定義[2]:工作流是一種經(jīng)營過程,它可以按照一定的規(guī)則完全或者部分自動化執(zhí)行。在工作流中定義了許多任務(wù)的觸發(fā)順序以及觸發(fā)的條件。每個任務(wù)可以是由一個或者多個軟件系統(tǒng)來完成,也可以是由一個或者一組人來完成,還可以是由一個或者多個人與軟件系統(tǒng)協(xié)作來完成。任務(wù)的觸發(fā)順序和觸發(fā)的條件用來定義并實現(xiàn)任務(wù)的觸發(fā)、任務(wù)的同步以及信息流(數(shù)據(jù)流)的傳遞。
簡單地說,工作流就是用一個個有序的任務(wù)點(活動點)來抽象表示業(yè)務(wù)流的處理過程。工作流管理系統(tǒng)是一個軟件系統(tǒng),它完成工作流的定義和管理,并按照在計算機(jī)中預(yù)先定義好的工作流邏輯推進(jìn)工作流實例的執(zhí)行。目前工作流管理系統(tǒng)開源框架中以JBPM為主流。
1.2JBPM4概述
JBPM(Java Business Process Management)是基于Java實現(xiàn)的流程業(yè)務(wù)處理框架 (Business Process-Management)。它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個開源的、靈活的、易擴(kuò)展的可執(zhí)行流程語言框架[3]。它支撐企業(yè)的流程性業(yè)務(wù)應(yīng)用,實現(xiàn)流程的自動化。JBPM采用了JBoss JBPM Process Definition Language(JPDL)來設(shè)計流程,JPDL結(jié)合應(yīng)用了狀態(tài)機(jī)、UML2.0活動圖、PetriNet算法三方面的知識,利用狀態(tài)機(jī)控制了工作流狀態(tài)變遷,借鑒使用了PetriNet算法,擴(kuò)充了活動圖的建模能力[4]。JBPM的另一個特色是使用Hibernate來管理數(shù)據(jù)庫。通過Hibernate,JBPM將數(shù)據(jù)的管理職能分離出去,專注于業(yè)務(wù)邏輯的處理。
JBPM4的結(jié)構(gòu)特點[5]如下:
(1)嵌入式的工作流引擎
JBPM4是完全支持嵌入式應(yīng)用的業(yè)務(wù)流程開發(fā)框架,可以在事務(wù)處理、數(shù)據(jù)持久化等各個方面與業(yè)務(wù)應(yīng)用程序進(jìn)行靈活的集成。
(2)可插拔的體系架構(gòu)
JBPM4采用了模塊化的架構(gòu)設(shè)計,采用了IOC(依賴注入)的設(shè)計理念,各模塊之間可以比較方便地解除耦合或替換不同的實現(xiàn),例如持久化、事務(wù)處理、身份認(rèn)證、日志服務(wù)等,都由可選模塊實現(xiàn)。
(3)易擴(kuò)展到流程語言
JBPM4框架內(nèi)置的流程定義活動,包括start,task,foreach,fork,join和decision等,是構(gòu)建完整業(yè)務(wù)流程所必需的組成部分,它們提供了可以將業(yè)務(wù)邏輯Java代碼和業(yè)務(wù)流程編排無縫銜接的綁定機(jī)制。
1.3JBPM4開發(fā)工作流的一般流程
(1)環(huán)境搭建與配置
在開發(fā)項目中引入JBPM4的jar包,做好與數(shù)據(jù)庫連接的配置,JBPM4采用Hibernate框架操作數(shù)據(jù)庫,對于數(shù)據(jù)庫的初始化,JBPM4都是通過Hibernate自動創(chuàng)建相關(guān)表。
(2)流程定義
JBPM4使用的JPDL語言定義工作流,根據(jù)業(yè)務(wù)邏輯定義好工作流程,生成process.jpdl.xml文件
(3)流程的部署
RepositoryService流程部署服務(wù),根據(jù)對應(yīng)的process.jpdl.xml文件部署到數(shù)據(jù)庫。
(4)流程實例的創(chuàng)建
由ExecutionService流程執(zhí)行服務(wù)來創(chuàng)建一個流程實例ProcessInstance,將此流程實例與業(yè)務(wù)數(shù)據(jù)表關(guān)聯(lián)。
(5)流程實例的流轉(zhuǎn)與結(jié)束
業(yè)務(wù)與流程實例關(guān)聯(lián)綁定后,開始根據(jù)流程定義流轉(zhuǎn),中間結(jié)點都會與各種業(yè)務(wù)處理關(guān)聯(lián),但業(yè)務(wù)處理存儲與流程數(shù)據(jù)處理單獨分開,流程與業(yè)務(wù)處理同時結(jié)束。在此過程中會涉及到TaskService任務(wù)服務(wù),HistoryService歷史服務(wù),ManagementService流程管理服務(wù),IdentityService身份認(rèn)證服務(wù)等多個事務(wù)處理。
ARJ飛機(jī)工程更改落實跟蹤系統(tǒng)的目的是對整個ARJ項目中由設(shè)計部門流轉(zhuǎn)下來的工程更改數(shù)據(jù)進(jìn)行管理控制與落實,跟蹤管理每一份由其他系統(tǒng)分轉(zhuǎn)下來的工程更改指令,記錄EO的每一個落實更改項以及相關(guān)的參與管理控制人員操作信息,并進(jìn)行報表匯總導(dǎo)出等。整個系統(tǒng)是采用B/S三層結(jié)構(gòu):數(shù)據(jù)層、業(yè)務(wù)層、表示層,MVC開發(fā)模式,在開源項目Struts2、Hibernate、JBPM4的基礎(chǔ)上進(jìn)行設(shè)計與開發(fā),使用oracle數(shù)據(jù)庫作為后臺支撐。
2.1業(yè)務(wù)基本流程
在整個飛機(jī)研制生產(chǎn)的客戶服務(wù)環(huán)節(jié)的工程更改落實過程中,同一份落實更改,不同部門關(guān)注重點不一樣,流程也不一樣,業(yè)務(wù)流程非常復(fù)雜。流程有多層嵌套,有并行,有串行及并行串行交叉進(jìn)行。
以某份EO為例,工程數(shù)據(jù)部構(gòu)型管理員選擇性分發(fā)到多個業(yè)務(wù)部門構(gòu)型管理員,各業(yè)務(wù)部門構(gòu)型管理員選擇性分發(fā)到不同科室構(gòu)型管理員,科室構(gòu)型管理員分發(fā)到具體的工程師,工程師進(jìn)行更改落實,所有工程師完成后交由審核員審批,所有部門科室的任務(wù)審批完后,由工程數(shù)據(jù)部構(gòu)型管理員審核,批準(zhǔn)通過,流程結(jié)束;駁回則指派到具體部門構(gòu)型員循環(huán)走流程。
在工程師進(jìn)行落實更改,在提交給審核員審核前如果對分發(fā)給自己的任務(wù)有異議,可以選擇駁回給科室構(gòu)型管理員,讓科室構(gòu)型管理員重新分發(fā)。
在航材部門,業(yè)務(wù)邏輯與其他業(yè)務(wù)部門不同,航材部業(yè)務(wù)分發(fā)是串行與并行“穿插交替”,其他業(yè)務(wù)部門都是并行落實處理。航材部構(gòu)型管理員分發(fā)給工程室,工程室處理完后由審核員選擇是否關(guān)系到采購室和庫存室,如果是,流程分流到采購室和庫存室,庫存室落實完成后流轉(zhuǎn)到支援室,最后所有科室都完成流轉(zhuǎn)到工程數(shù)據(jù)部審核。
2.2流程分析與設(shè)計
結(jié)合jpdl流程定義規(guī)范,下面對業(yè)務(wù)流程的各個環(huán)節(jié)進(jìn)行分析,確定每個結(jié)點的結(jié)點類型。
(1)分發(fā)任務(wù):工程數(shù)據(jù)部構(gòu)型管理員、業(yè)務(wù)部門構(gòu)型管理員、科室構(gòu)型管理員接收到上一級的分發(fā)任務(wù),由于是動態(tài)不定數(shù)地往下一級分配,采用decision與foreach和join結(jié)合的方式,當(dāng)構(gòu)型管理員判斷不需要往下流轉(zhuǎn)時decision直接到end結(jié)束,需要向下流轉(zhuǎn)時通過foreach和join繼續(xù)流轉(zhuǎn)流程。
(2)業(yè)務(wù)部門處理:當(dāng)上一級主流程流轉(zhuǎn)下來,到此結(jié)點時會自動生成子流程實例sub-process,當(dāng)子流程結(jié)束時返回到本流程。
(3)構(gòu)型審核:采用task結(jié)點結(jié)合decision結(jié)點繼續(xù)流轉(zhuǎn)。
(4)科室處理:當(dāng)上一級子流程流轉(zhuǎn)下來,到此結(jié)點時會自動生成子流程實例sub-process,當(dāng)子流程結(jié)束時返回到本流程。
(5)工程師落實:采用task結(jié)點。
2.3流程的設(shè)計
根據(jù)對整體業(yè)務(wù)流程的分析與研究,為保證系統(tǒng)業(yè)務(wù)流程的可擴(kuò)展性,應(yīng)對有可能新增業(yè)務(wù)部門和人員等情況,將業(yè)務(wù)流程設(shè)計為一個兩層子流程嵌套的復(fù)雜流程。
2.3.1主流程設(shè)計
在主流程實例里,工程數(shù)據(jù)部構(gòu)型管理員進(jìn)入系統(tǒng)獲取對應(yīng)的task-“構(gòu)型指派任務(wù)”,人工處理,通過decision判斷,如果不需要落實處理,則直接關(guān)閉到end結(jié)點,整個流程結(jié)束(如圖1所示)。
圖1 主流程圖
如果需要往下分發(fā)處理落實,則根據(jù)手動選擇流轉(zhuǎn)到foreach結(jié)點,動態(tài)并發(fā)生成多個sub-process子節(jié)點,創(chuàng)建多個子流程實例,流轉(zhuǎn)到子節(jié)點處理,join結(jié)點接收到所有子節(jié)點處理結(jié)果后,生產(chǎn)task-“構(gòu)型管理審核”,人工處理,通過decision判斷,如果審批通過則整個流程結(jié)束,如果不通過則駁回,流轉(zhuǎn)到foreach重復(fù)之前的動態(tài)產(chǎn)生多個sub-process結(jié)點,創(chuàng)建多個子流程實例。
2.3.2一級子流程設(shè)計
在一級子流程實例中,業(yè)務(wù)部門的構(gòu)型管理員接收到task,人工處理,傳遞到decision結(jié)點判斷,如果不需要落實,則直接到end結(jié)束此流程,返回到上一級流程中對應(yīng)的join結(jié)點;否則根據(jù)手動選擇通過foreach動態(tài)分派任務(wù)到多個科室,并創(chuàng)建二級子流程sub-process.如果是航材部門則需要在工程室處理完成后繼續(xù)由工程室審核員決定是否往后流轉(zhuǎn)及流程的科室,所有科室完成后返回到主流程(如圖2所示)。
圖2 一級子流程圖
2.3.3二級子流程設(shè)計
在二級子流程實例中,與一級子流程類似,只是在科室內(nèi)部流轉(zhuǎn),完成后返回到一級子流程對應(yīng)的join結(jié)點(如圖3所示)。
圖3 二級子流程圖
2.4流程管理與實現(xiàn)
流程管理作為一個飛機(jī)工程指令落實更改系統(tǒng)的核心,全權(quán)交給JBPM4管理,啟動流程后,通過外鍵ID關(guān)聯(lián)到業(yè)務(wù)表,業(yè)務(wù)表中存儲符合業(yè)務(wù)需求的流程信息,JBPM4只需關(guān)注流程的發(fā)起、流轉(zhuǎn)、結(jié)束,其他的業(yè)務(wù)邏輯流程單獨開發(fā)管理。流程管理作為定制核心不在系統(tǒng)頁面上具體表現(xiàn),整個系統(tǒng)的查看任務(wù),數(shù)據(jù)查詢,報表導(dǎo)出等多個業(yè)務(wù)模塊不與流程模塊綁定。
本文介紹了工作流的概念,工作流程引擎JBPM4的定義及特點、開發(fā)流程等,分析了ARJ飛機(jī)工程落實更改的業(yè)務(wù)流程,并在設(shè)計開發(fā)了一套基于JBPM4工作流引擎的飛機(jī)工程落實更改管理控制系統(tǒng),對JBPM4的業(yè)務(wù)流程功能進(jìn)行了應(yīng)用。經(jīng)實踐證明,該業(yè)務(wù)流程管理系統(tǒng)運行正常,有較高的兼容性,可擴(kuò)展性。盡管在某些細(xì)節(jié)方面仍存在不適用于業(yè)務(wù)方面,但不影響整體系統(tǒng)開發(fā)。將JBPM4作為系統(tǒng)流程管理核心,節(jié)省了開發(fā)人員對于業(yè)務(wù)流程管理時間,提高了開發(fā)效率,降低開發(fā)成本,對于一般業(yè)務(wù)流程系統(tǒng)開發(fā)是一個很好的嘗試。
參考文獻(xiàn):
[1]郭方華.民用飛機(jī)工程更改控制流程綜述[J].科技信息Science&Technology Information.2013,(20):387.
[2]范玉順.工作流管理技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社,2001.
[3]高杰.深入淺出jBPM[M].北京:人民郵電出版社,2009.
[4]凌正俊.基于JBPM與JPDL的工作流管理系統(tǒng)的研究與設(shè)計[J].計算機(jī)技術(shù)與發(fā)展,2011,21(8):50-53.
[5]胡奇.JBPM4工作流應(yīng)用開發(fā)指南[M].北京:電子工業(yè)出版社,2011:42-43.
The Application of Implementation Tracking System for Aircraft Engineering Order Using JBPM4
YU Jun
(Shanghai Aviation industry(Group)Co.,Ltd.Commercial Aircraft Corporation of China,Shanghai 201210,China)
Abstract:This paper illustrates workflow and JBPM4;research on JBPM4,including the characteristics of JBPM4,define and deploy the workflow.The author build a system named airplane engineering order change implement tracking system on the base of JBPM4,apply to ARJ21-700,on the purpose to manage workflow properly and simplify system design and development,improve the efficiency of software development,and the system's scalability and maintainability.
Key words:workflow;JBPM4;airplane engineering order;change implementation
中圖分類號:TP311.5
文獻(xiàn)標(biāo)識碼:B
文章編號:1672-545X(2016)03-0201-03
收稿日期:2015-12-03
作者簡介:余軍(1987-),男,湖南常德人,碩士研究生,工程師,研究方向為企業(yè)信息化。