專利名稱::一種程序版本管理方法
技術領域:
:本發(fā)明涉及聯(lián)通SOA(面向服務架構Service-OrientedArchitecture)平臺及移動EOMS(電子運維管理系統(tǒng)ElectricOperationManagementSystem)系統(tǒng)中流程平臺上應用程序的版本管理,具體的說是基于J2EE+MVC+S0A(Java2企業(yè)級開發(fā)平臺+Model-View-Controller模型-視圖-控制器+S0A面向服務架構Service-OrientedArchitecture)體系結構提供一種程序版本管理方法。
背景技術:
:隨著SOA技術的日益成熟,為了達到快速響應企業(yè)內部業(yè)務需求的需要,越來越多的企業(yè)開始搭建自己的SOA系統(tǒng)。SOA系統(tǒng)中可以靈活地實現(xiàn)業(yè)務流程的自由編排,從而可以快速響應業(yè)務需求的變化,同時也可以為不同業(yè)務系統(tǒng)之間的連接提供自由通信的渠道。每個為了滿足一定業(yè)務需求而被組合在一起的業(yè)務過程稱為業(yè)務流程;每個業(yè)務流程在執(zhí)行過程中不可避免地會產生變化,為了適應這種變化目前主要SOA產品都提供了基于時間的版本管理功能,從而使得在系統(tǒng)版本升級中新舊版本流程不相互影響。即在升級前已經啟動的流程實例仍然會按照舊版本流轉,升級后新啟動的流程實例才會啟用新的版本。在SOA產品雖然針對流程模板本身提供為了完善的版本管理技術;但是在人機交互方面的功能還相對薄弱。在S0A架構下,軟件的邏輯數(shù)據(jù)和應用數(shù)據(jù)是分離的。在人-機交互的流程中需要人的參與,需要為操作人員提供交互界面,通常就是我們所說的表單。表單將用戶輸入的應用數(shù)據(jù)提交后臺應用程序進行保存,表單和流程是相對獨立的,那么當業(yè)務需求變化系統(tǒng)升級時(某個人-機交互界面的表單元素發(fā)生改變),如何保證表單和后臺程序的一致性和系統(tǒng)數(shù)據(jù)的完整性是一個現(xiàn)實的問題,具體地說,就是如何讓在升級前發(fā)起流程實例仍然以原來的表單運行,而新產生的流程實例以新的表單運行。簡單說就是,4如何完成S0A架構下應用程序的版本管理問題。相關名詞解釋如下E0MSElectricOperationMaintenanceSystem,電子運行維護系統(tǒng)SOAService—OrientedArchitecture,面向月艮務架構J2EEJava2enterpriseedition,Java2企業(yè)級開發(fā)平臺MVCModel-View-Controller,模型-視圖-控制器Struts—種開源的JavaWeb應用程序開發(fā)框架ContextRootWeb應用程序訪問上下文根Trigger數(shù)據(jù)庫技術中的觸發(fā)器,建立在一張?zhí)囟ǖ臄?shù)據(jù)庫表上;當表中的數(shù)據(jù)發(fā)生改變時可以被執(zhí)行。HashmapJava中的一個類,實現(xiàn)了"鍵一值"對應的快速存取。APIApplicationProgrammingInterface,應用程序編程接□Action在Web應用程序中處理網頁操作動作的Java類。
發(fā)明內容本發(fā)明的一種程序版本管理方法,是當業(yè)務需求發(fā)生變更時,可以保證流程交互的應用程序界面的連續(xù)性以及數(shù)據(jù)的一致性。業(yè)務變更以前的流程實例仍然可以按照原來的應用界面運行直到所有流程完成,而新的流程實例則以新的應用界面進行流轉。本發(fā)明解決其技術問題所采用的技術方案是首先,維護一個應用程序列表,用來保存在SOA平臺上運行的所有應用程序的信息,包括應用的ContextRoot以及其它說明。所使用到的表結構如下<table>tableseeoriginaldocumentpage5</column></row><table><formula>formulaseeoriginaldocumentpage6</formula>應用程序架構采用開源的StrutsMVC架構,系統(tǒng)為每個流程模板提供一個統(tǒng)一的響應程序,稱之為一個Action。即一個流程模板對應一個響應業(yè)務邏輯處理的Action,Action定義以下幾個方法,用來響應人機交互的不同動作方<table>tableseeoriginaldocumentpage6</column></row><table>說明方法的參數(shù)為-ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse返回值為ActionForward方法調用在execute方法中讀取request中的parm參數(shù)據(jù)的值,根據(jù)不同的參數(shù)調用不同的方法,用來響應用戶不同操作動作。Parm的值在用戶提交表單時傳入Acticm。實現(xiàn)流程模板管理功能,實現(xiàn)對每個流程的分類及響應Action管理。提供對平臺上所有流程的統(tǒng)一管理,記錄模板所屬的應用程序、流程分類信息、以及交互程序所對應的Action地址。<table>tableseeoriginaldocumentpage7</column></row><table>流程歸檔功能。本功能主要是用來在流程發(fā)起時記錄每個流程實例所對應流程模板的設置情況,并在生成任務列表時用戶能夠査詢根據(jù)歸檔情況組成每個流程任務所對應的Action,從而使得在用戶操作時能夠找到正確的響應程<table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>在流程發(fā)起時的處理方法。在流程發(fā)起過程中,首先根據(jù)流程模板名稱查詢引流程模板當前的設置情況,包括所屬應用、模板中文名、以及Action地址等在1.3中設置的所有內容,將內容保存為Hashmap變量(Key為字段名,Value為字段值);其次,利用平臺提供的API將Hashmap變量中的內容設置為流程實例的自定義屬性(customerproperty);最后,將Hashmap中的內容連同流程實例的實例號(PIID)以及其它相關信息轉換成Insert操作插入到1.4所述的表中,初始情況下flag設置為O。流程結束時的處理方法。為了保存SOA平臺的運行效率,將流程設置為完成后自動刪除;同時為了能夠方便査詢到已經完成的流程,設置了1.4所示的表,并在1.5所述的流程發(fā)起操作中將流程實例的相關內容保存到了該表中;只是在流程發(fā)起時記錄的flag標志為O(未完成),那么在流程完成的同時將標識update(更新)為1即可。任務列表及生成方法。為了方便用戶辦理以及査詢任務或流程實例,應用程序提供了相應的任務查詢界面,包括待辦任務、已辦任務、我發(fā)起的流程、辦結任務等。任務列表的形成包括兩部分內容,一部分為需要為用戶展示的內容,另一部分為當用戶需要查看或辦理任務時系統(tǒng)所要指向的響應地址。在本發(fā)明中響應地址的生成方法有兩種,一種是根據(jù)流程自身的屬性(customerproperties)組合而成,待辦任務、已辦任務、我發(fā)起的流程都是以這種方法生成;另一種方法是,從1.4中所述的表中査詢結果組合而成,辦結任務列表即以方法生成。在任務列表當用戶點擊任務名時跳到任務處理界面,鏈接以全路徑的形式表現(xiàn)。包括服務器地址(含端口)、應用程序RootContext、流程的響應地址(form_url);其它內容以請求參數(shù)(RequestParameter)的形式傳遞,包括Parm(當前結點名)、PIID(流程實例號)、PPIID(父流程號)、state(流程當前狀態(tài))等幾部分內容;其中state的取值在不同的列表界面中有所不同,在待辦任務為waiting、已辦任務為finished、我發(fā)起的流程為started;在辦結任務列表中沒有state屬性,以parm=view表示。下面是一個待辦任務列表的一個鏈接示例http:〃192.168.200.120:9080/eoms/cirAttemper/cirAttemperAction.doparm=sgddyzddd&tkiid=xxx&piid=xxxx&ppiid=xxxxx&displayName=nnnn&state=waiting本發(fā)明的一種程序版本管理方法,是吸收流程模板管理的思想,采用新舊共存、逐步替代方式來解決版本升級問題。簡單的說就是新實例運行新程序,舊實例運行舊程序。具體實現(xiàn)上,每個流程實例都記錄自己的人-機交互操作界面的全部信息,并在生成響應鏈接時以全路徑的形式生成響應地址,從而避免新的修改對已有流程產生影響。圖1為本發(fā)明的一種程序版本管理方法的方法流程圖。具體實施例方式下面結合附圖和具體實施例對本發(fā)明的一種程序版本管理方法作進一步的描述。一種程序版本管理方法,包括以下步驟A、維護一個應用程序列表,用來保存在SOA平臺上運行的所有應用程序的信息;B、系統(tǒng)為每個流程模板提供一個統(tǒng)一的響應程序;9c、提供對平臺上所有流程的統(tǒng)一管理,記錄模板所屬的應用程序、流程分類信息、以及交互程序所對應的地址;D、記錄每個流程實例所對應流程模板的設置情況,并在生成任務列表時用戶能夠查詢根據(jù)歸檔情況組成每個流程任務所對應的響應程序;應用程序架構采用開源的StrutsMVC架構。在流程發(fā)起過程中,首先根據(jù)流程模板名稱査詢引流程模板當前的設置情況,其次,利用平臺提供的API將Hashmap變量中的內容設置為流程實例的自定義屬性;最后,將Hashmap中的內容連同流程實例的實例號以及其它相關信息轉換操作插入到下表中,初始情況下flag設置為0。字段名說明類型主鍵PIID流程實例號字符YTITLE任務名字符Nstarter流程發(fā)起人字符NStart—time流程發(fā)起時間日期NEnd—time流程結束時間曰期NFLAG狀態(tài)標成(l結束,o流轉中)數(shù)值NT旨LATE一腿E流程模板名字符NTEMPLATE—DISPLAY—NAME流程模板中文名字符NAPPLICATION—ID所屬應用程序ID字符NAPPLICATION—NAME所屬應用程序名數(shù)字NTEMPLATE—TYPE—ID流程分類代碼字符NTEMPLATE—TYPE流程分類名字符NFORM—URLAction地址(應用程序內相對地址)字符N流程結束時,將流程設置為完成后自動刪除;同時將流程實例的相關內容10保存到上面的表中;在流程完成的同時將標識update為1。當系統(tǒng)的某個部分(即某個流程的響應程序)發(fā)現(xiàn)改變時,首先,開發(fā)一個新的處理程序并配置一個新的Action地址,與原來程序發(fā)布在同一個應用程序包(相同contextRoot)下;其次,修改相應流程模板發(fā)起操作的菜單鏈接,目的是讓新發(fā)起的流程的響應程序定位到新的Action地址;最后,在流程模板管理模塊中修改相應模板的Action址值,這樣在流程發(fā)起時流程模板就可以為新實例設置新的屬性。當整個系統(tǒng)需要升級時,則需要新舊兩個版本系統(tǒng)的并存且采用不同的應用名,保持同時運行;同時在流程模板管理模塊修改本系統(tǒng)下所有模板的應用程序ID。舊應用程序的存在能保證原來流程實例的正常流轉,直至流程最終結束;對最終用戶屏蔽舊應用入口,暴露新應用程序地址,保證新的流程實例使用新的應用發(fā)起;從而保證了新舊應用中流程實例的無縫轉換。升級過程中數(shù)據(jù)一致性的處理。為了保持新舊兩個數(shù)據(jù)庫中數(shù)據(jù)的一致性,將原有所有數(shù)據(jù)一次性全部導入新的數(shù)據(jù)庫中,同時在舊數(shù)據(jù)庫中相應的表中創(chuàng)建一個叩date/deletetrigger,當舊數(shù)據(jù)表中發(fā)生update或delete操作時觸發(fā),從而使得原有數(shù)據(jù)的修改能與新數(shù)據(jù)庫中的數(shù)據(jù)同步。原應用程序的退出。當新舊系統(tǒng)并行運行一段時后,隨著時間的推移,從原應用程序發(fā)起的流程實例會越來越少,當所有使用原應用程序驅動的所有流程實例(通過流程發(fā)起時設置的流程自定義屬性進行標識)執(zhí)行完以后,原應用程序的生命周期也就結束了,即可以將其停止或卸載。生成任務査詢列表功能。本部分描述的內容可以作為在每個應用程序中的一部分,也可以作為一個單獨的應用程序存在;當作為一個單獨應用程序存時,其它程序通過界面集成(直接調用鏈接)的方式嵌入本部分描述的功能。如果需要其它內容,也可以適當擴展。待辦任務本功能用來查詢和辦理當前用戶接收到的任務。任務以列表的形式展示給用戶,列表內容包括任務名、模板名、流程的發(fā)起人、發(fā)起時間、待辦時間等。已辦任務本功能用來査詢用戶曾經參與過的流程的任務及與任務想關的li流程的執(zhí)行情況。主要內容列表內容包括任務名、模板名、流程的發(fā)起人、發(fā)起時間、任務完成時間。我發(fā)起的流程用來查詢當前用戶發(fā)起的流程。列表內容包括任務名、模板名、發(fā)起時間等。辦結任務本模塊完成對于已經完成的流程査詢以及査看流程詳細信息的功能。列表內容包括任務名、模板名、發(fā)起時間、結束時間、發(fā)起人等。以上所述的實施例,只是本發(fā)明較優(yōu)選的具體實施方式的一種,本領域的技術人員在本發(fā)明技術方案范圍內進行的通常變化和替換都應包含在本發(fā)明的保護范圍內。權利要求1、一種程序版本管理方法,包括以下步驟A、維護一個應用程序列表,用來保存在SOA平臺上運行的所有應用程序的信息;B、系統(tǒng)為每個流程模板提供一個統(tǒng)一的響應程序;C、提供對平臺上所有流程的統(tǒng)一管理,記錄模板所屬的應用程序、流程分類信息、以及交互程序所對應的地址;D、記錄每個流程實例所對應流程模板的設置情況,并在生成任務列表時用戶能夠查詢根據(jù)歸檔情況組成每個流程任務所對應的響應程序。2、根據(jù)權利要求1所述的一種程序版本管理方法,其特征在于,所述應用程序架構采用開源的StrutsMVC架構。3、根據(jù)權利要求1所述的一種程序版本管理方法,其特征在于,所述在流程發(fā)起過程中,首先根據(jù)流程模板名稱査詢引流程模板當前的設置情況,其次,利用平臺提供的API將Hashmap變量中的內容設置為流程實例的自定義屬性;最后,將Hashmap中的內容連同流程實例的實例號以及其它相關信息轉換操作插入到下表中,初始情況下flag設置為0。<table>tableseeoriginaldocumentpage2</column></row><table>TEMPLATE_DISPLAY_NAME流程模板中文名字符NAPPLICATION—ID所屬應用程序ID字符NAPPLICATION—NAME所屬應用程序名數(shù)字NTEMPLATE—TYPE_ID流程分類代碼字符NTEMPLATE—TYPE流程分類名字符NFORM—URLAction地址(應用程序內相對地址)字符N4、根據(jù)權利要求1所述的一種程序版本管理方法,其特征在于,所述流程結束時,將流程設置為完成后自動刪除;同時將流程實例的相關內容保存到上面的表中;在流程完成的同時將標識更新為1。全文摘要本發(fā)明涉及聯(lián)通SOA平臺及移動EOMS系統(tǒng)中流程平臺上應用程序的版本管理,具體的說是基于J2EE+MVC+SOA體系結構提供一種程序版本管理方法。本發(fā)明采用新舊共存、逐步替代方式來解決版本升級問題,具體是每個流程實例都記錄自己的人-機交互操作界面的全部信息,并在生成響應鏈接時以全路徑的形式生成響應地址,從而避免新的修改對已有流程產生影響,進而提高了管理效率。文檔編號G06F9/445GK101458628SQ20081023861公開日2009年6月17日申請日期2008年12月17日優(yōu)先權日2008年12月17日發(fā)明者安森彪申請人:浪潮通信信息系統(tǒng)有限公司