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