專利名稱:一種業(yè)務(wù)工作流的流程識別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)信息安全技術(shù)領(lǐng)域,尤其涉及一種SOA業(yè)務(wù)工作流的流程識別方法。
背景技術(shù):
工作流管理技術(shù)是國際上新興起的一項對工作流程進(jìn)行控制和管理的技術(shù),該技術(shù)是實現(xiàn)企業(yè)業(yè)務(wù)過程建模、業(yè)務(wù)過程仿真分析、業(yè)務(wù)過程優(yōu)化、業(yè)務(wù)過程管理與集成,從而最終實現(xiàn)業(yè)務(wù)過程的自動化的核心技術(shù)。為了實現(xiàn)不同工作流產(chǎn)品之間的互操作,工作流管理聯(lián)盟(Workflow Management Coalition,簡稱WfMC)在工作流管理系統(tǒng)的相關(guān)術(shù)語、體系結(jié)構(gòu)及應(yīng)用編程接口(WAPI)等方面制定了一系列標(biāo)準(zhǔn)。
WfMC提出的工作流管理系統(tǒng)體系結(jié)構(gòu)模型由5個部分組成1)過程定義工具用來定義工作過程,是業(yè)務(wù)過程的計算機(jī)形式表示。(2)工作流執(zhí)行服務(wù)是工作流管理系統(tǒng)的核心,它借助一個或者多個工作流引擎,來激活并解釋過程定義的全部或者部分,提供了過程實例執(zhí)行的運(yùn)行環(huán)境。(3)工作流客戶應(yīng)用是指用戶操作工作流管理系統(tǒng)分配的任務(wù)或者活動的功能。(4)工作流機(jī)直接調(diào)用的應(yīng)用是指工作流執(zhí)行服務(wù)在過程實例的運(yùn)行過程中調(diào)用的,用以對應(yīng)用數(shù)據(jù)進(jìn)行處理的應(yīng)用程序。(5)工作流管理工具其功能是對工作流管理系統(tǒng){Wfms)中過程實例的狀態(tài)進(jìn)行監(jiān)控與管理。
在這個工作流管理系統(tǒng)體系結(jié)構(gòu)模型中,工作流管理工具的主要功能是監(jiān)控與管理工作流的具體實現(xiàn)過程,現(xiàn)有的監(jiān)控工具能夠?qū)ぷ髁髟谡麄€組織內(nèi)部的流動狀況進(jìn)行監(jiān)視,并提供一系列的管理功能,實現(xiàn)了安全性、過程控制和授權(quán)操作等方面的管理。
現(xiàn)有的工作流管理系統(tǒng)自帶的管理和監(jiān)控功能,在監(jiān)控工作流執(zhí)行的過程中,只能保證預(yù)設(shè)的業(yè)務(wù)工作流程執(zhí)行順序不被更改,而無法確認(rèn)業(yè)務(wù)工作流的每一個具體流程步驟是否真正安全和可靠的被執(zhí)行,也無法保證業(yè)務(wù)工作流的具體流程在執(zhí)行的過程中未被篡改。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點,提供一種保證SOA業(yè)務(wù)工作流執(zhí)行可靠性和安全性的流程識別方法,對業(yè)務(wù)工作流的執(zhí)行過程進(jìn)行監(jiān)控和管理,防止業(yè)務(wù)工作流在執(zhí)行的過程中被篡改。
針對所要解決的技術(shù)問題,本發(fā)明所采用的技術(shù)方案是 采用一種新的業(yè)務(wù)工作流的流程識別方法,,通過捕獲用戶信息系統(tǒng)中的操作報文,并依據(jù)預(yù)設(shè)的規(guī)則,與用戶預(yù)先配置的工作流進(jìn)行比較,由此實現(xiàn)對工作流的識別與檢測。包括如下步驟 第一步(S11)定義流程識別規(guī)則; 依據(jù)預(yù)先定義的工作流所定義的XML格式的流程文件,定義流程識別規(guī)則的定義所需要建立的流程識別規(guī)則樹。
第二步(S12)解析上報的流程執(zhí)行數(shù)據(jù)報文 接收業(yè)務(wù)客戶端在執(zhí)行流程過程中,捕獲該流程的實際執(zhí)行數(shù)據(jù),并上報到流程識別服務(wù)端;流程識別服務(wù)端利用預(yù)設(shè)的解析模板對上報的流程執(zhí)行數(shù)據(jù)報文進(jìn)行解析,包括,從解析模塊集合中查找與該報文數(shù)據(jù)相匹配的解析模塊,以及利用查找到的解析模塊從該報文數(shù)據(jù)中提取數(shù)據(jù),并將提取到的數(shù)據(jù)相轉(zhuǎn)換為統(tǒng)一的節(jié)點數(shù)據(jù)格式。
所述解析模板,是與具體業(yè)務(wù)工作流的具體執(zhí)行步驟中與業(yè)務(wù)服務(wù)端交互的數(shù)據(jù)內(nèi)容相關(guān),并依據(jù)該交互數(shù)據(jù)報文內(nèi)容格式來定義的LUA正則表達(dá)式。
所述節(jié)點數(shù)據(jù)格式,至少包括統(tǒng)一資源位置(URL),客戶端IP地址,客戶端MAC地址,客戶端提交數(shù)據(jù)的最大長度,客戶端cookie,和客戶端接收數(shù)據(jù)的最大長度。
第三步(S13)依據(jù)預(yù)定義的識別規(guī)則識別當(dāng)前待識別流程; 根據(jù)步驟S11所預(yù)定義的流程識別規(guī)則,對待識別流程進(jìn)行流程識別根據(jù)流程識別樹對待識別的流程進(jìn)行流程識別; 識別已解析隊列中待識別流程的節(jié)點數(shù)據(jù),并將識別結(jié)果寫入日志。
第四步(S14)保存流程識別結(jié)果; 將流程識別結(jié)果保存到文件或存儲到數(shù)據(jù)庫中,以供第三方應(yīng)用使用,和/或管理員事后審計。
第五步(S15)非法流程告警; 檢索識別過程中產(chǎn)生的日志信息,對識別日志中,如有不能識別的流程,則直接告警。
所述步驟S11流程識別規(guī)則定義步驟中所建立的流程識別樹,其中,所有的流程都有一個共同的虛擬根,由一個開始標(biāo)志,至少一個流程步驟,一個或多個結(jié)束標(biāo)志組成,所定義的流程識別規(guī)則以XML文件的格式存儲在預(yù)設(shè)目錄下。
所述步驟S12解析上報流程執(zhí)行數(shù)據(jù)報文方法,其中,所述的解析過程是指,使用報文解析模板中的節(jié)點識別碼,在當(dāng)前的流程執(zhí)行數(shù)據(jù)中做字符串匹配搜索,只有當(dāng)上報的流程執(zhí)行數(shù)據(jù)格式與報文解析模板所要求的格式完全匹配時,才認(rèn)為解析成功;并將提取出來的數(shù)據(jù)項轉(zhuǎn)換成統(tǒng)一的識別節(jié)點數(shù)據(jù)格式;最后將統(tǒng)一格式的節(jié)點數(shù)據(jù)保存到隊列中,該隊列自動依據(jù)客戶端標(biāo)識組成小隊列,所有小隊列的隊首組成大隊列。
所述的解析上報的流程執(zhí)行數(shù)據(jù)報文方法中,所使用的解析模板,是與具體業(yè)務(wù)工作流的具體執(zhí)行步驟中與業(yè)務(wù)服務(wù)端交互的數(shù)據(jù)內(nèi)容相關(guān),并依據(jù)該交互數(shù)據(jù)報文的格式來定義的,且是滿足LUA語法規(guī)范的正則表達(dá)式。
所述的解析上報的流程執(zhí)行數(shù)據(jù)報文方法中,所述的節(jié)點數(shù)據(jù)格式,至少包括URL地址,客戶端IP地址,客戶端MAC地址,客戶端提交數(shù)據(jù)的最大長度,客戶端cookie,和客戶端接收數(shù)據(jù)的最大長度。
所述的解析上報的流程執(zhí)行數(shù)據(jù)報文方法中,所接收的流程實際執(zhí)行數(shù)據(jù),是業(yè)務(wù)客戶端的WEB瀏覽器所設(shè)置的代理服務(wù)器,利用Winpcap或Libpcap捕獲瀏覽器的請求及響應(yīng)數(shù)據(jù)報文后上報的。
所述步驟S13識別待識別流程,利用流程節(jié)點識別方法,將同一客戶端的所述節(jié)點數(shù)據(jù),同所述步驟S11所定義的流程識別樹上的流程入口節(jié)點進(jìn)行匹配,或該客戶端的活動流程子樹上活動節(jié)點的兒子節(jié)點進(jìn)行匹配; 所述活動流程,是所述節(jié)點數(shù)據(jù)與流程識別樹上的流程入口節(jié)點相匹配時,所述流程入口節(jié)點所確定的流程;所示活動節(jié)點,是當(dāng)前匹配節(jié)點。
所述流程節(jié)點識別,每一個節(jié)點使用一組節(jié)點內(nèi)部的識別碼進(jìn)行識別匹配,當(dāng)且僅當(dāng)所述節(jié)點數(shù)據(jù)的所有識別碼都和所述步驟S11所定義的流程識別樹上的一個節(jié)點的識別碼匹配一致時才認(rèn)為節(jié)點匹配。
所述步驟S14保存流程識別結(jié)果,可以以文件或數(shù)據(jù)庫的方式保存流程識別結(jié)果的詳細(xì)信息,以便第三方應(yīng)用使用,和/或用戶事后審計。
所述步驟S15非法流程告警,通過檢索日志文件,針對不能解析,不能數(shù)據(jù)格式轉(zhuǎn)換和流程不能識別的條目,產(chǎn)生告警信息,告警信息至少包括時間,終端IP,終端MAC和附加信息;管理員可以依據(jù)告警信息快速定位到客戶端,并采取預(yù)防措施,如警告終端操作員、增加防火墻規(guī)則限制終端訪問等。
有益效果 本發(fā)明提供一種SOA業(yè)務(wù)工作流的流程識別方法,通過對客戶信息系統(tǒng)交互數(shù)據(jù)進(jìn)行安全控制分析,識別用戶信息系統(tǒng)的真實數(shù)據(jù)的工作流,與用戶配置的工作流是否存在差異,判斷是否按照設(shè)計安全控制流程執(zhí)行,由此分辨出用戶的信息系統(tǒng)是否存在安全問題,同時對于不正確或者違背預(yù)先制定的安全流程規(guī)則的情況進(jìn)行告警與記錄,從而保證業(yè)務(wù)工作流執(zhí)行過程的可靠性和安全性,通過對業(yè)務(wù)工作流的執(zhí)行過程進(jìn)行實時的監(jiān)控和管理,防止業(yè)務(wù)工作流在執(zhí)行的過程中的異常和被篡改。
圖1是本發(fā)明一種業(yè)務(wù)工作流流程識別方法的實施例的流程示意圖; 圖2是流程識別規(guī)則定義的流程識別樹邏輯示意圖; 圖3是接收上報流程執(zhí)行數(shù)據(jù)并解析的流程示意圖; 圖4是流程識別流程圖; 圖5是流程節(jié)點識別流程圖。
具體實施例方式 如圖1所示,是本發(fā)明所述一種業(yè)務(wù)工作流流程識別方法的流程圖。包括如下步驟定義流程識別規(guī)則,解析接收到的待識別流程執(zhí)行數(shù)據(jù),對解析后的數(shù)據(jù)作格式轉(zhuǎn)換處理,依據(jù)預(yù)定義的識別規(guī)則識別當(dāng)前待識別流程,并保存流程識別結(jié)果以及非法流程示警。其具體描述如下 步驟S11定義流程識別規(guī)則;依據(jù)已預(yù)定義的XML格式的流程文件,定義流程識別所需要的流程識別規(guī)則樹。
本實施例中,利用流程名稱來標(biāo)識流程,故流程名是唯一的,且流程內(nèi)的每個節(jié)點都有唯一的名稱。如果流程名稱或流程節(jié)點名稱相同,則認(rèn)為是同一流程或是同一節(jié)點。
本實施例中,合法的工作流都保存為XML格式內(nèi)容的文件,并直接利用所有已定義好的工作流的相應(yīng)XML文件內(nèi)容,建立流程識別樹。所述流程識別樹如圖2所示,其描述了流程識別規(guī)則定義過程所產(chǎn)生的流程識別樹的邏輯示意圖。其中,在流程識別樹中,第一層是所有的流程的一個共同的虛擬根,也就是流程識別時總?cè)肟凇5诙邮橇鞒谭种?,每一個已定義好的具體流程都具有一個唯一對應(yīng)的分支,是流程識別過程中特定流程的入口,第三層是具體流程內(nèi)部的具體步驟,每個已定義好的流程由至少一個流程步驟,一個或多個結(jié)束標(biāo)志組成。
在流程識別樹中,具體流程內(nèi)部的具體步驟等同于工作流XML文件中的節(jié)點。為了與該工作流XML文件保持一致,本實施例中使用統(tǒng)一格式對所有流程進(jìn)行描述。流程識別樹的XML格式樣例如表一所示。
表一 在表一中,RuleManager的name描述規(guī)則管理名稱,表示流程識別規(guī)則的名稱,每個流程識別規(guī)則對應(yīng)一個具體的業(yè)務(wù)流程的識別規(guī)則;Path描述流程文件的存儲路徑,表示流程識別文件的存儲路徑;Process的name描述流程的名稱,表示一個具體流程的名稱;Filename描述流程定義文件的名稱,每個流程定義文件對應(yīng)一個具體流程的執(zhí)行規(guī)則,定義流程識別規(guī)則時,將根據(jù)該流程定義文件名稱和流程定義文件存儲路徑,取得該流程的具體信息。
本步中所定義的流程識別規(guī)則將以XML文件的格式存儲在預(yù)設(shè)目錄下。
步驟S12解析上報的流程執(zhí)行數(shù)據(jù)報文。
解析過程是指,使用報文解析模板中的節(jié)點識別碼,在當(dāng)前的流程執(zhí)行數(shù)據(jù)中做字符串匹配搜索,只有當(dāng)上報的流程執(zhí)行數(shù)據(jù)格式與報文解析模板所要求的格式完全匹配時,才認(rèn)為解析成功;業(yè)務(wù)客戶端在執(zhí)行流程過程中,捕獲該流程的實際執(zhí)行數(shù)據(jù),并上報到流程識別服務(wù)端;流程識別服務(wù)端利用預(yù)設(shè)的解析模板對上報的流程執(zhí)行數(shù)據(jù)報文進(jìn)行解析,包括,從解析模塊集合中查找與該報文數(shù)據(jù)相匹配的解析模塊,以及利用查找到的解析模塊從該報文數(shù)據(jù)中提取數(shù)據(jù),并將提取到的數(shù)據(jù)相轉(zhuǎn)換為統(tǒng)一的節(jié)點數(shù)據(jù)格式;最后將統(tǒng)一格式的節(jié)點數(shù)據(jù)保存到隊列中,該隊列自動依據(jù)客戶端標(biāo)識組成小隊列,所有小隊列的隊首組成大隊列。
所述解析模板,是與具體業(yè)務(wù)工作流的具體執(zhí)行步驟中與業(yè)務(wù)服務(wù)端交互的數(shù)據(jù)內(nèi)容相關(guān),并依據(jù)該交互數(shù)據(jù)報文的格式來定義的,且是滿足LUA語法規(guī)范的正則表達(dá)式。
所述節(jié)點數(shù)據(jù)格式,包括URL地址,客戶端IP地址,客戶端MAC地址,客戶端提交數(shù)據(jù)的最大長度Length,客戶端cookie,客戶端接收數(shù)據(jù)的最大長度content-length等用于識別流程執(zhí)行的特征值的組合。
如圖3所示,是接收并解析上報流程執(zhí)行數(shù)據(jù)報文的流程圖,該過程包括如下步驟 步驟S301接收上報數(shù)據(jù),接收業(yè)務(wù)客戶端上報的流程執(zhí)行過程數(shù)據(jù),并插入緩存隊列中,業(yè)務(wù)客戶端的WEB瀏覽器設(shè)置代理服務(wù)器,該代理服務(wù)器上利用Winpcap捕獲瀏覽器的請求及響應(yīng)數(shù)據(jù)報文后上報;或利用Libpcap捕獲瀏覽器的請求及響應(yīng)數(shù)據(jù)報文后上報;步驟S302加載解析模板,將預(yù)定義的報文解析模板全部加載到內(nèi)存中。解析模板是LUA正則表達(dá)式; 示例1在字符串提取年,月,日的值。如日期字符串內(nèi)容為“17/7/1990”,定義正則表達(dá)式為“(%d+)/(%d+)/(%d+)”,則提取的值分別為17 7 1990 示例2在字符串提取“=”前面的名稱和值。如″name=Anna″,定義其正則表達(dá)式為“(%a+)%s*=%s*(%a+)”,則提取到的內(nèi)容分別為name Anna 示例3針對一次工作流交互報文,其數(shù)據(jù)內(nèi)容形如 pair= <pm version=″0.1″><mac>00:11:d8:32:7f:92,00:00:00:00:00:00</mac> <ip>192.168.1.123</ip><protocol>https</protocol> <certid>abc00001</certid> <request>GET http://192.168.1.2/ HTTP/1.0 Accept: application/x-shockwave-flash,image/gif,image/x-xbitmap,image/jpeg, image/pjpeg,application/vnd.ms-excel,application/vnd.ms-powerpoint, application/msword,application/x-silverlight, */* Accept-Language: zh-cn Cookie: ASPSESSIONIDCASTQSDA=EIOBCAHADPCCHOHFLHAMCIKE; </request> <response>HTTP/1.1 200 OK Date:Sun,31 May 2009 03:45:36 GMT Server:Microsoft-IIS/6.0 X-Powered-By:ASP.NET Content-Length: 5076 Content-Type:text/html Expires:Sun,31 May 2009 03:45:36 GMT Cache-control:private</response></pm> 則需要定義針對不同域的正則表達(dá)式,如其MAC地址的正則表達(dá)式“<mac>%s*(%a+)%s*</mac>”,則提取的內(nèi)容為00:11:d8:32:7f:92,00:00:00:00:00:00;再如其IP地址的正則表達(dá)式為“<ip>%s*(%a+)%s*<ip>”,則提取的內(nèi)容為192.168.1.123 步驟S303循環(huán)地從已接收的流程執(zhí)行數(shù)據(jù)報文隊列尾取數(shù)據(jù)包; 步驟S304判斷是否讀取到數(shù)據(jù),如果數(shù)據(jù)為空,轉(zhuǎn)步驟S305;否則,轉(zhuǎn)步驟S306; 步驟S305定時延遲,數(shù)據(jù)隊列已為空,無待處理數(shù)據(jù),延遲之后轉(zhuǎn)步驟S303,重新取數(shù)據(jù); 步驟S306根據(jù)解析模板解析讀取到的信息體數(shù)據(jù),依次使用所有報文解析模板集中的模板解析取得的流程執(zhí)行數(shù)據(jù),直到解析數(shù)據(jù)成功或全部模板匹配完畢。所述解析的過程是指,使用報文解析模板中的節(jié)點識別碼,在當(dāng)前的流程執(zhí)行數(shù)據(jù)中做字符串匹配搜索,只有當(dāng)上報的流程執(zhí)行數(shù)據(jù)格式與報文解析模板所要求的格式完全匹配時,才認(rèn)為解析成功;并將提取出來的數(shù)據(jù)項轉(zhuǎn)換成統(tǒng)一的識別節(jié)點數(shù)據(jù)格式,例如<ProcessHttp label=″LABEL″url=″URL″method=″METHOD″form=″FORM″time=″TIME″week=″WEEK″date=″DATE″ip=″IP″mac=″MAC″Length=″LEN″cookie=″COOK″content-length=″LENG″name=″HTTP″></ProcessHttp>; 步驟S307判斷數(shù)據(jù)解析是否成功,如果為真,轉(zhuǎn)步驟S310;否則,轉(zhuǎn)步驟S308; 步驟S308將數(shù)據(jù)標(biāo)識為“無法解析”,并記入日志文件中,轉(zhuǎn)步驟S309; 步驟S309丟棄非法報文數(shù)據(jù),轉(zhuǎn)步驟S303; 步驟S310判斷數(shù)據(jù)包的包頭是否合法;根據(jù)解析所得的數(shù)據(jù)包頭域內(nèi)容,與流程定義時規(guī)定的執(zhí)行數(shù)據(jù)合法包頭數(shù)據(jù)作比較,判斷數(shù)據(jù)包是否合法,如果該數(shù)據(jù)包包頭與規(guī)定的執(zhí)行數(shù)據(jù)合法包頭匹配,認(rèn)為是合法數(shù)據(jù)包,轉(zhuǎn)步驟S312;否則,轉(zhuǎn)步驟S311; 步驟S311將非法報文信息標(biāo)記為“非法數(shù)據(jù)”,并記入日志文件; 步驟S312將解析后的數(shù)據(jù)放入已解析隊列中,該隊列所保存的數(shù)據(jù)即為待識別流程的原始數(shù)據(jù),轉(zhuǎn)步驟S303; 步驟S13使用預(yù)先定義的識別規(guī)則對已解析隊列中的識別節(jié)點數(shù)據(jù)進(jìn)行流程識別。
流程識別過程調(diào)用流程節(jié)點識別過程對流程的節(jié)點進(jìn)行識別,每一個節(jié)點使用一組節(jié)點內(nèi)部的識別碼進(jìn)行識別匹配,當(dāng)且僅當(dāng)節(jié)點數(shù)據(jù)的所有識別碼都和步驟S11所定義的流程識別樹上的一個節(jié)點的識別碼匹配一致時才認(rèn)為節(jié)點匹配。
具體實施時,將利用步驟S11所定義的識別規(guī)則對已解析隊列中的識別節(jié)點數(shù)據(jù)進(jìn)行識別前,需要確保已載入已定義好的流程識別規(guī)則數(shù)據(jù),即步驟S11中所述的流程規(guī)則樹數(shù)據(jù)。
如圖4所示,是流程識別處理流程圖。該流程識別包括如下步驟 步驟S401讀取待識別節(jié)點數(shù)據(jù),即取得已解析隊列中的待識別節(jié)點數(shù)據(jù),并取得上報數(shù)據(jù)的客戶端IP; 步驟S402判斷客戶端上下文是否存在,根據(jù)客戶端IP,測試緩存區(qū)中是否有該客戶端上下文,如果為真,轉(zhuǎn)步驟S403,否則,轉(zhuǎn)步驟S412; 步驟S403從客戶端IP所對應(yīng)的上下文中取得活動流程指針、活動流程規(guī)則節(jié)點指針,所述活動流程指針指向客戶端上一次執(zhí)行所用的業(yè)務(wù)流程,所述活動流程規(guī)則節(jié)點指針指向客戶端上一次執(zhí)行的業(yè)務(wù)流程節(jié)點; 上下文緩存區(qū)分兩大類型,分別為活動緩存區(qū)和非活動緩存區(qū)?;顒泳彺鎱^(qū)保存了目前所有活動的客戶端的流程執(zhí)行信息,活動緩存區(qū)中的上下文空間將在該客戶端的待識別節(jié)點數(shù)據(jù)隊列為空后,搬遷到非活動緩存區(qū);而非活動緩存區(qū)也保存了客戶端的流程執(zhí)行信息,但是,該客戶端相關(guān)的待識別節(jié)點數(shù)據(jù)隊列為空。非活動緩存區(qū)的上下文所占空間將在超時后自動回收,或在又有待識別節(jié)點數(shù)據(jù)時,搬遷到活動緩存區(qū)中。
步驟S404調(diào)用流程節(jié)點識別方法,比較待識別節(jié)點數(shù)據(jù)與當(dāng)前活動流程規(guī)則節(jié)點指針?biāo)_定節(jié)點的直接兒子節(jié)點是否匹配; 識別時,是從當(dāng)前活動流程規(guī)則節(jié)點的最左邊兒子節(jié)點比較,直到最右邊的兒子節(jié)點,如果存在兒子節(jié)點與待識別節(jié)點匹配,則為匹配成功,不再比較右邊的兒子節(jié)點; 步驟S405判斷比較結(jié)果是否匹配,如果為真,轉(zhuǎn)步驟S406,否則,轉(zhuǎn)步驟S413; 步驟S406針對客戶端上下文已存在時,保存當(dāng)前流程規(guī)則指針到活動流程指針、保存當(dāng)前流程規(guī)則節(jié)點指針到活動流程規(guī)則節(jié)點指針,并將該當(dāng)前客戶端上下文標(biāo)識為“活動”;否則,從空閑的緩存區(qū)中申請客戶端上下文空間,將當(dāng)前流程規(guī)則指針保存到活動流程指針、將當(dāng)前流程規(guī)則節(jié)點指針保存到活動流程規(guī)則節(jié)點指針,并將該當(dāng)前客戶端上下文標(biāo)識為“活動”; 步驟S407在當(dāng)前活動流程指針?biāo)_定的流程規(guī)則樹上查找當(dāng)前活動流程規(guī)則節(jié)點指針?biāo)_定的節(jié)點的兒子節(jié)點,判斷待識別流程是否已經(jīng)結(jié)束,如果無兒子節(jié)點,則為真,轉(zhuǎn)步驟S411,否則,轉(zhuǎn)步驟S408; 步驟S408測試該客戶端報文隊列是否為空,如果為真,轉(zhuǎn)步驟S410,否則,轉(zhuǎn)步驟S409; 步驟S409讀取下一個待識別節(jié)點數(shù)據(jù),從當(dāng)前客戶端的已解析隊列中讀取下一個待識別節(jié)點數(shù)據(jù),轉(zhuǎn)步驟S404; 步驟S410客戶端沒有新的業(yè)務(wù)流程操作,將該客戶端上下文標(biāo)識為“非活動”,并記日志;結(jié)束。
步驟S411流程已識別,并記日志;結(jié)束。
步驟S412依據(jù)步驟S11所定義的流程檢測規(guī)則,調(diào)用流程節(jié)點識別方法,將當(dāng)前待識別節(jié)點與流程規(guī)則樹中的流程入口節(jié)點比較,轉(zhuǎn)步驟S405; 步驟S413測試是否為該IP所確定的客戶端上報的首報文,如果為真,轉(zhuǎn)步驟S415,否則,轉(zhuǎn)步驟S414; 步驟S414流程異常,并記日志;轉(zhuǎn)步驟S415; 步驟S415判斷是否已比較完所有流程入口節(jié)點,如果為真,轉(zhuǎn)步驟S416,否則,轉(zhuǎn)步驟S412; 步驟S416測試是否是首次處理該客戶端的報文,如果為真,則本次流程識別過程結(jié)束,否則,轉(zhuǎn)步驟S417; 步驟S417流程不可識別,并記日志;結(jié)束。
需要注意的是,本實施例的流程識別流程圖只表示了一個流程的識別過程,實際處理流程是循環(huán)過程。
流程識別處理中所采用的流程節(jié)點識別方法,具體描述如下本實施例中,流程節(jié)點內(nèi)部的識別碼描述如表二。
表二 流程節(jié)點中的識別碼都包含表二所述識別碼的全部或部分。只有當(dāng)待識別節(jié)點的所有識別碼項和流程識別樹中某個節(jié)點所要求的識別碼項完全匹配時,才認(rèn)為節(jié)點匹配。流程識別碼的名稱必須唯一。
在如表二所述節(jié)點識別碼示例中,MaxStep描述最大的識別步驟,表示需要識別的節(jié)點識別碼的個數(shù),在進(jìn)行節(jié)點識別時,最大識別步驟確定了識別碼匹配識別的循環(huán)次數(shù)的上限,如本例中MaxStep=11;SerialNumber描述識別的順序,從1開始到MaxStep結(jié)束,在進(jìn)行節(jié)點識別時,識別順序號確定了識別碼匹配識別的前后順序,如本例中,每一個特定的SignCode(識別碼)屬性都對應(yīng)了不同的SerialNumber值;SignCode描述識別碼,用于做識別匹配的特征指標(biāo),必須與流程定義中的相應(yīng)屬性名一致;識別規(guī)則的輸入項是從被識別信息中提取到的與流程識別碼相對應(yīng)的數(shù)據(jù),輸出是True或False。
具體的節(jié)點識別法如圖5所示,描述了流程節(jié)點識別流程圖,在流程識別時,需要對流程內(nèi)部的節(jié)點信息進(jìn)行識別時,將啟用本方法。步驟如下 步驟S501置節(jié)點識別順序(SerialNumber)為1;在本節(jié)點識別碼示例中,即從識別順序為1所對應(yīng)的節(jié)點識別碼項url開始識別; 步驟S502判斷識別順序(SerialNumber)是否不大于最大識別步驟(MaxStep),如果為真,說明節(jié)點內(nèi)部識別未完成,轉(zhuǎn)步驟S503;否則,說明節(jié)點內(nèi)部識別已經(jīng)完成,轉(zhuǎn)步驟S512; 步驟S503在節(jié)點識別順序配置文件中讀取與識別順序(SerialNumber)相對應(yīng)的識別碼(SignCode); 步驟S504依據(jù)識別碼(SignCode)從待識別節(jié)點信息中提取與識別碼相對應(yīng)的信息域上的數(shù)據(jù); 步驟S505判斷在待識別節(jié)點信息中提取的數(shù)據(jù)是否為空,如果為真,則置數(shù)據(jù)為空標(biāo)志;無論提取的數(shù)據(jù)是否為空,繼續(xù)執(zhí)行步驟S506; 步驟S506依據(jù)當(dāng)前識別碼(SignCode)從流程識別樹上的當(dāng)前待匹配節(jié)點信息中提取識別碼所確定的信息域上的數(shù)據(jù); 步驟S507測試2次讀取的數(shù)據(jù);判斷在流程識別樹上的節(jié)點信息中提取的數(shù)據(jù)是否為空,如果在待識別節(jié)點信息和流程識別樹上的節(jié)點信息中提取的數(shù)據(jù)都為空,轉(zhuǎn)步驟S508;否則,如果在待識別節(jié)點信息中提取的數(shù)據(jù)不為空,而在流程識別樹上的節(jié)點信息中提取的數(shù)據(jù)為空,或者相反,則該節(jié)點不匹配,轉(zhuǎn)步驟S509;否則,在待識別節(jié)點信息和流程識別樹上的節(jié)點信息中提取的數(shù)據(jù)都不為空,需要對提取到的數(shù)據(jù)作匹配識別,轉(zhuǎn)步驟S510; 步驟S508匹配成功,識別順序(SerialNumber)增一,繼續(xù)節(jié)點內(nèi)部識別,轉(zhuǎn)步驟S502; 步驟S509匹配不成功,標(biāo)識節(jié)點匹配不成功(False),結(jié)束; 步驟S510數(shù)據(jù)匹配,測試在流程識別樹上的節(jié)點信息中提取到的數(shù)據(jù),其可能是一個或一組數(shù)據(jù)值,是否完全包含從待識別節(jié)點信息中提取的數(shù)據(jù); 步驟S511判斷匹配結(jié)果,如果匹配成功,轉(zhuǎn)步驟S508;否則,轉(zhuǎn)步驟S509; 步驟S512節(jié)點匹配成功,標(biāo)識節(jié)點匹配成功(True); 步驟S513待識別節(jié)點可識別,在待識別節(jié)點上標(biāo)注匹配的流程節(jié)點名稱; 步驟S514將待識別信息存儲在已識別數(shù)據(jù)中,結(jié)束; 步驟S14保存流程識別結(jié)果保存流程識別的結(jié)果,可以以文件或數(shù)據(jù)庫的方式保存流程識別結(jié)果的詳細(xì)信息,以便第三方應(yīng)用使用,和/或用戶事后審計; 本實施中,以文件或數(shù)據(jù)庫的方式保存流程識別結(jié)果的詳細(xì)信息。
當(dāng)采用文件方式保存時,只支持XML文件格式被識別的流程的識別結(jié)果以XML格式存儲在預(yù)定的目錄下。目錄可以按日期或流程名稱多級存儲。流程識別結(jié)果的查詢索引可以以XML格式,按日期或流程名稱存放在指定位置。
針對按日期存放的日志文件的查詢索引文件格式如表三所示,以供第三方應(yīng)用和/或用戶以日期為條件查詢業(yè)務(wù)工作流的執(zhí)行情況。
表三 在表三中,Date的name描述流程識別的日期,記錄了流程識別的具體日期;Process的Name描述與待識別流程匹配的流程名稱,可以根據(jù)流程名稱找到流程定義文件;Process的FileName描述待識別流程的存儲位置,記錄了待識別流程在硬盤上的存儲位置;Process的Time描述流程識別的時間,記錄了流程識別的具體時間。
針對按流程名稱存放的日志文件的查詢索引文件格式如表四所示。以供第三方應(yīng)用和/或用戶以具體流程名稱為條件查詢業(yè)務(wù)工作流的執(zhí)行情況。
表四 在表四中,Process Name描述與待識別流程匹配的流程名稱,可以根據(jù)流程名稱在流程定義文件中找到具體的工作流程規(guī)則;ProcessFile的FileName描述待識別流程的存儲位置,記錄了待識別流程在硬盤上的存儲位置;ProcessFile的Time描述流程識別的時間,記錄了流程識別的具體時間; 當(dāng)采用數(shù)據(jù)庫方式存儲時,將識別結(jié)果,包括可識別流程的流程名稱、流程識別的時間、流程執(zhí)行信息、流程識別結(jié)果等保存到數(shù)據(jù)表中。
步驟S15非法流程告警; 通過檢索日志文件,針對不能解析,不能數(shù)據(jù)格式轉(zhuǎn)換和流程不能識別的條目,產(chǎn)生告警信息,告警信息包括時間、終端IP、終端MAC、URI(由URL和Form組成)、附加信息組成,管理員可以依據(jù)告警信息快速定位到客戶端,并通過URI和附加信息判斷該終端用戶的錯誤操作,從而指導(dǎo)其采取預(yù)防措施,如警告終端操作員、增加防火墻規(guī)則限制終端訪問等。
至此,流程識別方法結(jié)束。
本發(fā)明中的業(yè)務(wù)工作流識別方法優(yōu)選通過計算機(jī)軟件的形式集成于位于網(wǎng)絡(luò)中的任意計算機(jī)系統(tǒng)中,其也可以通過計算機(jī)系統(tǒng)的形式存在。
權(quán)利要求
1.一種業(yè)務(wù)工作流的流程識別方法,其特征在于,包括以下步驟
S11定義流程識別規(guī)則,根據(jù)預(yù)設(shè)的工作流XML文件,建立流程識別樹;
S12解析上報的流程執(zhí)行數(shù)據(jù)報文,接收業(yè)務(wù)客戶端捕獲的流程實際執(zhí)行數(shù)據(jù),解析該數(shù)據(jù)并將提取到的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的節(jié)點數(shù)據(jù)格式;
S13使用S11所預(yù)定義的識別規(guī)則識別待識別流程;
S14保存流程識別結(jié)果;
S15非法流程告警,對識別日志中不能識別的流程,產(chǎn)生告警信息。
2.根據(jù)權(quán)利要求1所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述步驟S11流程識別規(guī)則定義步驟中所建立的流程識別樹,其中,所有的流程都有一個共同的虛擬根,由一個開始標(biāo)志,至少一個流程步驟,一個或多個結(jié)束標(biāo)志組成,所定義的流程識別規(guī)則以XML文件的格式存儲在預(yù)設(shè)目錄下。
3.根據(jù)權(quán)利要求1所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述步驟S12解析上報流程執(zhí)行數(shù)據(jù)報文方法,其中,所述的解析過程是指,使用報文解析模板中的節(jié)點識別碼,在當(dāng)前的流程執(zhí)行數(shù)據(jù)中做字符串匹配搜索,只有當(dāng)上報的流程執(zhí)行數(shù)據(jù)格式與報文解析模板所要求的格式完全匹配時,才認(rèn)為解析成功;并將提取出來的數(shù)據(jù)項轉(zhuǎn)換成統(tǒng)一的識別節(jié)點數(shù)據(jù)格式;最后將統(tǒng)一格式的節(jié)點數(shù)據(jù)保存到隊列中,該隊列自動依據(jù)客戶端標(biāo)識組成小隊列,所有小隊列的隊首組成大隊列。
4.根據(jù)權(quán)利要求3所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述的解析上報的流程執(zhí)行數(shù)據(jù)報文方法中,所使用的解析模板,是與具體業(yè)務(wù)工作流的具體執(zhí)行步驟中與業(yè)務(wù)服務(wù)端交互的數(shù)據(jù)內(nèi)容相關(guān),并依據(jù)該交互數(shù)據(jù)報文的格式來定義的,且是滿足LUA語法規(guī)范的正則表達(dá)式。
5.根據(jù)權(quán)利要求3所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述的解析上報的流程執(zhí)行數(shù)據(jù)報文方法中,所述的節(jié)點數(shù)據(jù)格式,至少包括URL地址,客戶端IP地址,客戶端MAC地址,客戶端提交數(shù)據(jù)的最大長度,客戶端cookie,和客戶端接收數(shù)據(jù)的最大長度。
6.根據(jù)權(quán)利要求1所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述的解析上報的流程執(zhí)行數(shù)據(jù)報文方法中,所接收的流程實際執(zhí)行數(shù)據(jù),是業(yè)務(wù)客戶端的WEB瀏覽器所設(shè)置的代理服務(wù)器,利用Winpcap或Libpcap捕獲瀏覽器的請求及響應(yīng)數(shù)據(jù)報文后上報的數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述步驟S13識別待識別流程,利用流程節(jié)點識別方法,將同一客戶端的所述節(jié)點數(shù)據(jù),同所述步驟S11所定義的流程識別樹上的流程入口節(jié)點進(jìn)行匹配,或該客戶端的活動流程子樹上活動節(jié)點的兒子節(jié)點進(jìn)行匹配;
所述活動流程,是所述節(jié)點數(shù)據(jù)與流程識別樹上的流程入口節(jié)點相匹配時,所述流程入口節(jié)點所確定的流程;所示活動節(jié)點,是當(dāng)前匹配節(jié)點。
8.根據(jù)權(quán)利要求7所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述流程節(jié)點識別,每一個節(jié)點使用一組節(jié)點內(nèi)部的識別碼進(jìn)行識別匹配,當(dāng)且僅當(dāng)所述節(jié)點數(shù)據(jù)的所有識別碼都和步驟S11所定義的流程識別樹上的一個節(jié)點的識別碼匹配一致時才認(rèn)為節(jié)點匹配。
9.根據(jù)權(quán)利要求1所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述步驟S14保存流程識別結(jié)果,可以以文件或數(shù)據(jù)庫的方式保存流程識別結(jié)果的詳細(xì)信息,以便第三方應(yīng)用使用,和/或用戶事后審計。
10.根據(jù)權(quán)利要求1所述的業(yè)務(wù)工作流的流程識別方法,其特征在于,所述步驟S15非法流程告警,通過檢索日志文件,針對不能解析,不能數(shù)據(jù)格式轉(zhuǎn)換和流程不能識別的條目,產(chǎn)生告警信息,告警信息至少包括時間,終端IP,終端MAC和附加信息;管理員可以依據(jù)告警信息快速定位到客戶端,并采取預(yù)防措施,如警告終端操作員、增加防火墻規(guī)則限制終端訪問。
全文摘要
本發(fā)明提供一種業(yè)務(wù)工作流的流程識別方法,包括以下步驟流程識別規(guī)則的定義根據(jù)工作流定義模塊定義的工作流XML文件,建立流程識別樹;解析上報的流程執(zhí)行數(shù)據(jù)報文接收業(yè)務(wù)客戶端捕獲的流程實際執(zhí)行數(shù)據(jù),解析該數(shù)據(jù)并將提取到的數(shù)據(jù)相轉(zhuǎn)換為統(tǒng)一的節(jié)點數(shù)據(jù)格式;使用定義的識別規(guī)則對待識別流程進(jìn)行流程識別根據(jù)流程識別樹對待識別的流程進(jìn)行流程識別;保存流程識別結(jié)果將已識別流程存儲到可識別數(shù)據(jù)中,并將流程識別的結(jié)果保存在指定的文件中;非法流程告警對識別日志中不能識別的流程,產(chǎn)生告警信息。本發(fā)明可防止業(yè)務(wù)工作流在執(zhí)行的過程中的異常和被篡改。
文檔編號G06Q10/00GK101610265SQ20091015731
公開日2009年12月23日 申請日期2009年7月24日 優(yōu)先權(quán)日2009年7月24日
發(fā)明者戚建淮, 周文柱, 干 曾, 劉喜雨, 珉 施 申請人:深圳市永達(dá)電子股份有限公司