本發(fā)明涉及一種工作流處理系統(tǒng),尤其涉及一種適用于地基增強網(wǎng)運維場景的工作流引擎方法及系統(tǒng)。
背景技術:
地基增強網(wǎng)是北斗衛(wèi)星定位系統(tǒng)提供穩(wěn)定定位服務必不可少的基礎設施,由全球各地分布著的各種各樣的地基基站組成,其特點是分布廣,數(shù)量龐大,維護成本高,運維難度大,當規(guī)模達到一定程度時,就像一張網(wǎng)一樣。
工作流是對企業(yè)中業(yè)務的各操作步驟之間的業(yè)務規(guī)則的抽象以及概括描述。在詳細一點的話工作流則是將工作流程中的操作步驟的邏輯和規(guī)則,在計算機中以恰當?shù)哪P捅磉_出來,并供公司人員使用的一套軟件系統(tǒng)或解決方案。工作流要解決的主要問題是:為實現(xiàn)某個業(yè)務目標或業(yè)務場景,利用計算機在多個參與者(即和業(yè)務有關的人員)之間按某種預定規(guī)則自動傳遞文檔、信息或者任務,以達到業(yè)務的規(guī)范化,高效化,以及可追溯化。
而工作流引擎負責定義工作流中的節(jié)點,以及流程實例的創(chuàng)建,以及實現(xiàn)將任務分發(fā)給執(zhí)行者,并根據(jù)任務執(zhí)行的返回結(jié)果決定下一步的任務,控制并協(xié)調(diào)各種復雜工作流程的執(zhí)行,實現(xiàn)對業(yè)務流程整個運行生命周期的控制。工作流引擎是工作流系統(tǒng)最核心的模塊,它將工作流底層的節(jié)點跳轉(zhuǎn),派發(fā)任務處理等邏輯與最上層的業(yè)務邏輯實現(xiàn)了分離。
工作流節(jié)點是工作流中對各個業(yè)務場景的每個操作步驟或環(huán)節(jié),比如在維修基站流程的工作流中運維人員首先先要填寫基站的故障單,然后提交給上級領導審批是否可維修,如果審批通過的話則通知相關技術人員進行維修工作,維修人維修好后通知運維人員此基站可以使用,這時候的工作流節(jié)點有四個:
運維人員填寫維修單->上級領導審批->通知技術員進行維修工作->通知運維人員基站可用
隨著大地增強網(wǎng)基站的分布越來越廣,數(shù)量也越來越大,運維業(yè)務的復雜度就會越來越高,這時就必須使用工作流系統(tǒng)來高效,有序的處理運維中產(chǎn)生的業(yè)務需求。但實際中卻存在這樣的一個問題,運維業(yè)務針對不同的區(qū)域或場景在不同的時間點會有n種不同的工作流(比如有可能一個負責兩個區(qū)域(或省)的運維人員在三個月內(nèi)會對應好幾個工作流,這三個月過了后被調(diào)到了另外的區(qū)域,這時候又會有不同業(yè)務的需求了),但企業(yè)中通過現(xiàn)有的大部分工作流引擎開發(fā)工作流的速度卻非常緩慢,導致了很多業(yè)務場景只能使用excel,寫郵件或人為的形式處理業(yè)務。目前主流的工作流引擎,其缺點如下:
1、主流工作流引擎學習成本較大,配置項較多,且受制于某種平臺的限制,基本上需要在其限制的平臺上進行二次開發(fā)才能使用。
2、每個流程的每個節(jié)點所對應的前端任務頁面依舊需要開發(fā)人員從零開始開發(fā),開發(fā)時間非常漫長。
3、無法滿足大規(guī)?;具\維人員隨時提出的大量的工作流程需求。
4、大規(guī)模運維人員流動性較大,一個通過現(xiàn)有流程引擎制定出的流程無法及時的更新節(jié)點所對應的任務執(zhí)行人。
技術實現(xiàn)要素:
針對上述問題,本發(fā)明提出一種適用于地基增強網(wǎng)運維場景的工作流引擎系統(tǒng),包括工作流模板,工作流實例,接口層,屬性控件庫;工作流模板可對工作流、工作流節(jié)點以及工作流節(jié)點屬性進行定義,工作流模板可將信息復制至工作流實例;工作流實例包括工作流實例節(jié)點和工作流實例節(jié)點屬性;接口層用于取得工作流實例節(jié)點字段信息和實例節(jié)點屬性字段信息;屬性控件庫用于存儲控件,控件用于動態(tài)渲染節(jié)點任務頁面。
工作流節(jié)點包含一個以上工作流節(jié)點屬性,工作流實例節(jié)點包含一個以上工作流實例節(jié)點屬性;工作流模板通過顯示設備和輸入設備提供可視化界面編輯;工作流模板可以保存于工作流模板數(shù)據(jù)庫;工作流實例可以保存于工作流實例數(shù)據(jù)庫。
工作流節(jié)點的字段信息包括上一節(jié)點、下一節(jié)點、是否當前節(jié)點、是否開始節(jié)點、是否結(jié)束節(jié)點、處理人。工作流節(jié)點屬性的字段信息包括距離瀏覽器左邊距離、距離瀏覽器上邊距離、控件高度、控件款單,控件名;控件名與屬性控件庫中控件唯一對應。
一種適用于地基增強網(wǎng)運維場景的工作流引擎方法:發(fā)起一個工作流實例;工作流節(jié)點字段信息復制到工作流實例節(jié)點,工作流節(jié)點屬性字段信息復制到實例節(jié)點屬性;接口層取得工作流實例節(jié)點字段信息和實例節(jié)點屬性字段信息;節(jié)點任務頁面從接口層獲取工作流實例節(jié)點字段信息和實例節(jié)點屬性字段信息;節(jié)點任務頁面從屬性控件庫中調(diào)取相對應的控件,控件動態(tài)渲染出節(jié)點任務頁面;
節(jié)點任務頁面的“同意”操作,若當前工作流實例節(jié)點存在下一節(jié)點,那么下一節(jié)點將被置為當前節(jié)點,同時根據(jù)工作流實例節(jié)點下一節(jié)點的處理人字段信息給處理人分配一條任務,當前節(jié)點不存在下一節(jié)點,工作流實例結(jié)束;
點擊節(jié)點任務頁面“拒絕”操作,若當前工作流實例節(jié)點存在上一節(jié)點且不是起始節(jié)點,那么工作流實例節(jié)點上一節(jié)點將被置為當前節(jié)點,且給工作流實例節(jié)點上一節(jié)點的處理人分配一條任務,若所屬當前工作流實例節(jié)點節(jié)點的上一節(jié)點是起始節(jié)點,則流程被駁回至工作流實例節(jié)申請人節(jié)點。
工作流引擎具有加簽功能,是指在當前節(jié)點與當前節(jié)點的下一節(jié)點間增加一個節(jié)點的操作,且可實現(xiàn)無限增加節(jié)點的操作。
本發(fā)明技術方案實現(xiàn)的有益效果:
本工作流引擎可以動態(tài)的渲染出前端的任務表單頁面,無需再需要前端開發(fā)人員對每個節(jié)點的任務頁面進行定制開發(fā),節(jié)省了大量的時間;由于制定流程的速度非常迅速,可滿足大規(guī)模基站運維人員隨時提出的大量工作流程的開發(fā)需求,故非常適合在大規(guī)模地基增強網(wǎng)運維場景中使用;實例在運行時與工作流的定義分離,相互獨立,即使流程管理員修改模板時也不會影響到實例的運轉(zhuǎn)。
附圖說明
圖1是本發(fā)明一種適用于地基增強網(wǎng)運維場景的工作流引擎的示意圖。
圖2是本發(fā)明工作流模板模塊間的關系圖。
圖3是本發(fā)明工作流實例模塊間的關系圖。
圖4是本發(fā)明加簽功能示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例,進一步闡述本發(fā)明,本發(fā)明實施例僅用以說明本發(fā)明的技術方案而非限制本發(fā)明的保護范圍。
如圖1、圖2、圖3所示,本發(fā)明提出一種適用于地基增強網(wǎng)運維場景的工作流引擎系統(tǒng),包括工作流模板,工作流實例,接口層,屬性控件庫;工作流模板可對工作流、工作流節(jié)點以及工作流節(jié)點屬性進行定義,工作流模板可將信息復制至工作流實例;工作流實例包括工作流實例節(jié)點和工作流實例節(jié)點屬性;接口層用于取得工作流實例節(jié)點字段信息和實例節(jié)點屬性字段信息;屬性控件庫用于存儲控件,控件用于動態(tài)渲染節(jié)點任務頁面。
工作流節(jié)點包含一個以上工作流節(jié)點屬性,工作流實例節(jié)點包含一個以上工作流實例節(jié)點屬性;工作流模板通過顯示設備和輸入設備提供可視化界面編輯;工作流模板可以保存于工作流模板數(shù)據(jù)庫;工作流實例可以保存于工作流實例數(shù)據(jù)庫。
工作流節(jié)點的字段信息包括上一節(jié)點、下一節(jié)點、是否當前節(jié)點、是否開始節(jié)點、是否結(jié)束節(jié)點、處理人。工作流節(jié)點屬性的字段信息包括距離瀏覽器左邊距離、距離瀏覽器上邊距離、控件高度、控件款單,控件名;控件名與屬性控件庫中控件唯一對應。
一種適用于地基增強網(wǎng)運維場景的工作流引擎方法:發(fā)起一個工作流實例;工作流節(jié)點字段信息復制到工作流實例節(jié)點,工作流節(jié)點屬性字段信息復制到實例節(jié)點屬性;接口層取得工作流實例節(jié)點字段信息和實例節(jié)點屬性字段信息;節(jié)點任務頁面從接口層獲取工作流實例節(jié)點字段信息和實例節(jié)點屬性字段信息;節(jié)點任務頁面從屬性控件庫中調(diào)取相對應的控件,控件動態(tài)渲染出節(jié)點任務頁面;
節(jié)點任務頁面的“同意”操作,若當前工作流實例節(jié)點存在下一節(jié)點,那么下一節(jié)點將被置為當前節(jié)點,同時根據(jù)工作流實例節(jié)點下一節(jié)點的處理人字段信息給處理人分配一條任務,當前節(jié)點不存在下一節(jié)點,工作流實例結(jié)束;
點擊節(jié)點任務頁面“拒絕”操作,若當前工作流實例節(jié)點存在上一節(jié)點且不是起始節(jié)點,那么工作流實例節(jié)點上一節(jié)點將被置為當前節(jié)點,且給工作流實例節(jié)點上一節(jié)點的處理人分配一條任務,若所屬當前工作流實例節(jié)點節(jié)點的上一節(jié)點是起始節(jié)點,則流程被駁回至工作流實例節(jié)申請人節(jié)點。
工作流引擎具有加簽功能,是指在當前節(jié)點與當前節(jié)點的下一節(jié)點間增加一個節(jié)點的操作,且可實現(xiàn)無限增加節(jié)點的操作,如圖4所示。具體操作如下:根據(jù)當前節(jié)點生成一個新的節(jié)點,再將當前節(jié)點的節(jié)點屬性信息也復制到新生成的節(jié)點里。接著將當前節(jié)點的下一節(jié)點的“上一節(jié)點”的字段指向新節(jié)點,再將當前節(jié)點的“下一節(jié)點”指向新節(jié)點。
當發(fā)起實例時,根據(jù)所選的工作流模板,將會把工作流模板節(jié)點以及工作流節(jié)點屬性等數(shù)據(jù)復制到工作流實例當中。在本引擎的設計當中,“工作流節(jié)點定義”表中的字段會存在“上一節(jié)點”,“下一節(jié)點”,“是否當前節(jié)點”,“是否開始節(jié)點”,“是否結(jié)束節(jié)點”,“處理人”這幾個字段,所以,在可視化編輯工作流的時候,流程的跳轉(zhuǎn)邏輯在工作流節(jié)點定義中已經(jīng)實現(xiàn)了。處理人點擊“同意”操作時,若當前節(jié)點存在下一節(jié)點,那么下一節(jié)點將被置為當前節(jié)點,同時,根據(jù)下一節(jié)點的“處理人”字段給該處理人分配一條任務,若當前節(jié)點不存在下一節(jié)點,該流程實例結(jié)束。處理人點擊了“拒絕”操作時,若當前節(jié)點存在上一節(jié)點且不是起始節(jié)點,那么上一節(jié)點將被置為當前節(jié)點,且給上一節(jié)點的處理人分配一條任務。若當前節(jié)點的上一節(jié)點是起始節(jié)點,則流程被駁回至申請人節(jié)點。
工作流節(jié)點屬性的字段有l(wèi)eft(距離瀏覽器左邊距離),top(距離瀏覽器上邊距離),height(控件高度),width(控件款單),widget(控件名),這些字段是生成前端節(jié)點任務頁面的關鍵字段,原理是前端頁面的屬性渲染區(qū)域是絕對定位的,前端頁面根據(jù)任務id從后端獲取對應工作流實例的當前節(jié)點的節(jié)點屬性信息,前端語言動態(tài)的渲染出這些屬性所對應的控件在瀏覽器中的位置,長度以及寬度,要注意的是widget控件字段僅僅表示的是屬性控件庫中控件的唯一名稱,比如屬性控件庫中輸入框在html語言中就是<input>標簽,那么后端該字段的值就是“input”,也就是說,后端記錄的控件字段與屬性控件庫所有的控件是一一對應的,且屬性控件庫中不僅僅存放的是html中的常用的標簽名稱,也可以是其他的模塊化的前端框架所開發(fā)出來的獨立的控件的唯一名稱,其他的字段則描述的是這個控件的在屏幕中的x,y值(即控件中的left字段和top字段)和長寬高值。在前端頁面開發(fā)的時候只需要根據(jù)這些控件寫一個統(tǒng)一的獲取輸入值的接口,即可在提交的時候?qū)⑦@些值獲取傳進后端數(shù)據(jù)庫進行保存。
將工作流模板中的節(jié)點定義以及節(jié)點屬性定義復制到工作流實例中的實例節(jié)點和實例屬性節(jié)點,作用有兩個:
一,因為對于大地增強網(wǎng)的運維人員而言,在實際流程的運轉(zhuǎn)過程當中,會發(fā)生許多的突發(fā)狀況,例如運維人員正好出差在其他的區(qū)域又或者單子的處理者對這塊區(qū)域的業(yè)務不熟悉需要其他人來解決,這時流程引擎應該提供一種機制,讓當前節(jié)點的任務處理人可以在下一節(jié)點的中間臨時增加一個節(jié)點,然后將這個單子轉(zhuǎn)給這個新增節(jié)點的處理者,在這里,我們把這個過程定義為“加簽”。
二,如果流程實例引用的是流程模板節(jié)點定義信息,那么當前節(jié)點加簽后,那么流程模板節(jié)點的定義信息就會被修改,過了一段時間,下一個流程發(fā)起者再發(fā)起這個單子的時候,流程節(jié)點的處理人卻已經(jīng)不再是原來的流程節(jié)點指定的處理人了。這顯然不是我們想要的結(jié)果,我們想要的結(jié)果僅僅是,當前節(jié)點與下一個節(jié)點之間再增加一個節(jié)點(加簽),是僅僅對這個工作流實例而言的,所以在發(fā)起流程實例的時候,將流程模板的模板節(jié)點以及模板節(jié)點屬性中的字段值的大部分信息都復制到流程實例中所對應的實例節(jié)點以及實例節(jié)點屬性中。