
有沒有一種方法能夠快速方便的批量設(shè)置流程路由規(guī)則,使之適應(yīng)變化迅速而復(fù)雜的企業(yè)組織架構(gòu)?本企業(yè)從業(yè)務(wù)應(yīng)用角度出發(fā),為減輕實(shí)施和維護(hù)的工作量,而設(shè)計(jì)了一套企業(yè)通用路由方案。根據(jù)在本企業(yè)的實(shí)際運(yùn)行結(jié)果,證明能夠適應(yīng)企業(yè)的組織架構(gòu)變化,確實(shí)減輕維護(hù)工程師的工作量。特編寫此文,以拋磚引玉。
前 言
我公司采用炎黃盈動(dòng)BPM平臺(tái)以來,系統(tǒng)已成為公司的重要溝通和管理工具之一。但復(fù)雜的組織架構(gòu)和快速變動(dòng)的崗位和部門調(diào)整,給平臺(tái)開發(fā)和實(shí)施人員帶來了很大的困惑和工作量。同時(shí),由于企業(yè)的管理已經(jīng)進(jìn)入精細(xì)化管理階段,這就導(dǎo)致每個(gè)流程的系統(tǒng)規(guī)則更為復(fù)雜。
正是如下的三個(gè)問題,逼迫著我們?nèi)ニ伎家环N技術(shù)方案,能簡(jiǎn)單快速的實(shí)施和維護(hù)流程:
·復(fù)雜的矩陣式組織架構(gòu),非樹型的工作匯報(bào)路線
·快速變化的部門和崗位、人員調(diào)整
·難以簡(jiǎn)單實(shí)現(xiàn)的流程規(guī)則和審核路由
企業(yè)通用路由的設(shè)計(jì)思路
從易用性考慮,我們最終確定使用EXCEL作為維護(hù)工具,在其中按【EXCEL模板】規(guī)定的業(yè)務(wù)習(xí)慣輸入、修改路由規(guī)則,然后利用自己開發(fā)的工具【規(guī)則生成器】導(dǎo)入到數(shù)據(jù)庫(kù)的相關(guān)表中。在系統(tǒng)運(yùn)行流程尋找下一節(jié)點(diǎn)的人員時(shí),通過平臺(tái)99號(hào)路由嵌入系統(tǒng)的【路由解析器】就從這張表中讀取規(guī)則,進(jìn)行路由解析,最后得到對(duì)應(yīng)的崗位和人員。

EXCEL模板
Excel模板主要分為2部分,分別是系統(tǒng)識(shí)別項(xiàng)說明和業(yè)務(wù)規(guī)則設(shè)置。
·系統(tǒng)識(shí)別:用來幫助系統(tǒng)自動(dòng)識(shí)別第2部分的業(yè)務(wù)規(guī)則。
主要內(nèi)容:流程名稱、流程UUID、流程包含的業(yè)務(wù)條件(比如請(qǐng)假類型)、流程包含的流程節(jié)點(diǎn),分別對(duì)應(yīng)第2部分的第幾列。而業(yè)務(wù)條件對(duì)應(yīng)哪個(gè)數(shù)據(jù)表的哪個(gè)字段,則是其中的重點(diǎn)之一。
·業(yè)務(wù)規(guī)則:用輸入或修改的方式,直接按業(yè)務(wù)習(xí)慣輸入業(yè)務(wù)規(guī)則。
如下圖,第二行表示:總部的公司領(lǐng)導(dǎo)請(qǐng)事假3天以上,需要總裁、董事長(zhǎng)審批。

正如上圖,在審核人發(fā)生變動(dòng)時(shí),維護(hù)人員只需手工修改審核人,然后運(yùn)用工具再次倒入系統(tǒng),系統(tǒng)就可以自動(dòng)識(shí)別新的路由方案。
規(guī)則生成器
規(guī)則生成器的作用是:
·把EXCEL上傳到服務(wù)器,根據(jù)EXCEL中(1)系統(tǒng)識(shí)別項(xiàng)的說明,自動(dòng)讀取EXCEL中的(2)業(yè)務(wù)規(guī)則數(shù)據(jù),保存到數(shù)據(jù)庫(kù)中的原業(yè)務(wù)規(guī)則表中備查。
·按數(shù)據(jù)庫(kù)中系統(tǒng)規(guī)則表的要求,將數(shù)據(jù)重新組織,然后保存到系統(tǒng)規(guī)則表中。
其中,系統(tǒng)規(guī)則表的設(shè)計(jì)如下:

具體數(shù)據(jù)存儲(chǔ)舉例如下:

路由解析器
路由解析器的作用是:
·根據(jù)流程和節(jié)點(diǎn)號(hào),程序讀取路由系統(tǒng)規(guī)則表,然后逐一判斷系統(tǒng)路由規(guī)則是否符合當(dāng)前環(huán)境條件,從而得到相匹配的系統(tǒng)規(guī)則后,得到一個(gè)或一批虛擬或者實(shí)際崗位。
·得到崗位后,根據(jù)企業(yè)的實(shí)際組織架構(gòu)進(jìn)行人員定位,最終得到某一個(gè)或一批人員返回給平臺(tái)。
·同時(shí)也可以得到下一個(gè)跳轉(zhuǎn)的節(jié)點(diǎn)號(hào)或者默認(rèn)下一個(gè)節(jié)點(diǎn)。
主程序框架:
public String routeUser(UserContext uc,HeadMessageModel instanceModel,DepartmentModel localDepartmentModel,int ownerDepartmentId,WorkFlowStepModel workFlowStepModel,int taskId) {
Connection conn = null;
try{
conn = DBSql.open();
HashMap arguments = getCommonArguments(conn, uc, workFlowStepModel;taskId); //得到環(huán)境變量
Regulation reg = getRegulation(arguments, conn);//得到匹配的規(guī)則
String users = getRouteUsers(reg, arguments);//得到實(shí)際的用戶UserID
String ret = Function.checkAddress(users);//檢查
if(ret == null||ret.equals(“”){
MessageQueue.getInstance()。putMessage(uc.getUID(),“數(shù)據(jù)庫(kù)錯(cuò)誤【E01】:崗位解析發(fā)生錯(cuò)誤!請(qǐng)與系統(tǒng)管理員聯(lián)系!”);//彈出提示信息
return “”;
}
if(ret.equals(“ok”)) { return users;} else { return “”;}
}
catch(Exception ex){
ex.printStackTrace();
MessageQueue.getInstance()。putMessage(uc.getUID(),
“通用路由錯(cuò)誤,請(qǐng)與管理員聯(lián)系[”+ ex.getMessage() + “]”);
}
finally{ DBPoolsManager.getInstance()。freeConnection(conn);}
return “”;
}
根據(jù)規(guī)則返回的崗位或工號(hào),進(jìn)行實(shí)際組織架構(gòu)匹配,返回實(shí)際的人員工號(hào):
public static Interpreter getRoleInterpreter(String roleName,String auditLevel,HashMap argument) {
int roleType = RoleUtil.getRoleTypeByRoleName(roleName);
if (roleType == HsRouteCommonParameters.ROLE_DIRECTUID){
//工號(hào),直接返回
return new DirectUidInterpreter(roleName);
} else if (roleType == HsRouteCommonParameters.ROLE_DIRECTROLE){
//實(shí)際崗位,解析得到人員工號(hào)
return new DirectRoleInterpreter(roleName,auditLevel,argument);
} else if (roleType == HsRouteCommonParameters.ROLE_VIRTUALROLE){
//虛擬崗位,解析得到人員工號(hào)
return new VirtualRoleInterpreter(roleName,auditLevel,argument);
} else if (roleType == HsRouteCommonParameters.ROLE_IGNOREROLE){
return new IgnoreRoleInterpretor(roleName,auditLevel,argument);
} else if (roleType == HsRouteCommonParameters.ROLE_TABLE){
//數(shù)據(jù)表中的字段,讀取出來后再解析
return new TableRoleInterpretor(roleName,auditLevel,argument);
}
return null;
}
企業(yè)通用路由與炎黃平臺(tái)的關(guān)系
本路由功能在炎黃BPM平臺(tái)上開發(fā),必須使用炎黃平臺(tái),具體技術(shù)接口為:99號(hào)自定義路由(得到路由崗位人員)和RoleJump觸發(fā)器(得到下一節(jié)點(diǎn)號(hào),指定跳轉(zhuǎn))。
炎黃BPM平臺(tái)目前已經(jīng)提供了業(yè)務(wù)規(guī)則的設(shè)置界面。這個(gè)企業(yè)通用路由功能,本質(zhì)是完成了相同工作。
具體區(qū)別和功能拓展有:
·可以批量設(shè)置流程規(guī)則和路由崗位。
·增加對(duì)一個(gè)流程的一次性所有節(jié)點(diǎn)的流程規(guī)則設(shè)置。
·增加對(duì)“門店-分公司-區(qū)域-總部-集團(tuán)”的層級(jí)審批支持。
·增加對(duì)特殊“虛擬崗位”的支持。這有利于減少規(guī)則的設(shè)置數(shù)量。
比如:分管副總裁這個(gè)虛擬崗位,其本質(zhì)為某些崗位組合,只是需要在運(yùn)行時(shí)根據(jù)某些條件再確定具體崗位。如:行政的人發(fā)起流程時(shí),分管副總裁就是分管行政的副總裁。
·增加對(duì)特殊人員或者特殊崗位的特殊處理。
比如:秘書崗位,無論處于那個(gè)部門,都必須歸屬于當(dāng)?shù)匦姓块T管理。
當(dāng)然,這些功能可以不斷根據(jù)企業(yè)的實(shí)際情況不斷調(diào)整,直至更為完善,更為符合企業(yè)的需要。
結(jié)束語(yǔ)
作為中國(guó)首家BPM軟件和服務(wù)提供商,炎黃盈動(dòng)一直專注于為合作伙伴和最終用戶提供最優(yōu)秀的商業(yè)流程應(yīng)用快速開發(fā)平臺(tái)和成熟的應(yīng)用套件產(chǎn)品,并幫助用戶完成從協(xié)同管理向流程管理的價(jià)值過渡。炎黃盈動(dòng)的BPM整體解決方案構(gòu)建在自主研發(fā)的AWS BPM業(yè)務(wù)基礎(chǔ)中間件平臺(tái)上,提供了從業(yè)務(wù)規(guī)劃、建模到運(yùn)營(yíng)、監(jiān)控、優(yōu)化的全周期管理。
企業(yè)通用路由方案就是完全基于AWS BPM平臺(tái)之上的快速搭建的一個(gè)應(yīng)用功能,在企業(yè)實(shí)際運(yùn)行中,不僅能提高維護(hù)人員的反應(yīng)速度,減少工作量,而且能快速的接入企業(yè)管理思想,實(shí)現(xiàn)企業(yè)的敏捷管理,大幅提升企業(yè)辦公效率。
最后,衷心的感謝炎黃盈動(dòng)的各位工程師,是他們給予了我技術(shù)支持和無私的幫助。并將此文獻(xiàn)給同樣在OA流程開發(fā)和維護(hù)戰(zhàn)線上奮斗中的其他企業(yè)開發(fā)工程師們。
CIO頻道人物視窗
CIO頻道方案案例庫(kù)
大數(shù)據(jù)建設(shè)方案案例庫(kù)
電子政務(wù)建設(shè)方案案例庫(kù)
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫(kù)
商務(wù)智能建設(shè)方案案例庫(kù)
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄