專利名稱:一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及工作流中間件技術(shù)架構(gòu)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支 動(dòng)態(tài)合并的方法及裝置。
背景技術(shù):
工作流指業(yè)務(wù)過程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化,使在多個(gè)參與者 之間按照某種預(yù)定義的規(guī)則傳遞文檔、信息或任務(wù)的過程自動(dòng)進(jìn)行,從而實(shí)現(xiàn)某個(gè)預(yù)期的 業(yè)務(wù)目標(biāo),或者促使此目標(biāo)的實(shí)現(xiàn)。工作流中間件是用于支持業(yè)務(wù)流程自動(dòng)化的中間件,通 過工作流中間件可以實(shí)現(xiàn)多個(gè)企業(yè)應(yīng)用系統(tǒng)之間的業(yè)務(wù)流程集成。流程引擎是工作流中間件的核心,包含最基本的對(duì)象和服務(wù),以及用于解決流程 運(yùn)行問題的調(diào)度機(jī)制和執(zhí)行機(jī)制,主要用于滿足流程基本運(yùn)行。具體而言,流程引擎要確 保流程按照既有的定義,從一個(gè)節(jié)點(diǎn)運(yùn)行到另一個(gè)節(jié)點(diǎn),并正確執(zhí)行當(dāng)前節(jié)點(diǎn)。通常,流程 引擎從以下四個(gè)方面來控制流程(1)流程定義即用一套定義對(duì)象來詮釋所定義的流程; (2)流程調(diào)度即提供調(diào)度機(jī)制,可以確保流程能夠處理復(fù)雜的“流程圖結(jié)構(gòu)”,諸如串行、 并行、分支、合并等,并在復(fù)雜結(jié)構(gòu)中確保流程從一個(gè)節(jié)點(diǎn)運(yùn)行到另一個(gè)節(jié)點(diǎn);(3)流程執(zhí) 行即當(dāng)流程運(yùn)行到某個(gè)節(jié)點(diǎn)時(shí),需要一套機(jī)制來解決是否執(zhí)行此節(jié)點(diǎn)、如何執(zhí)行此節(jié)點(diǎn)的 問題,并維持節(jié)點(diǎn)狀態(tài)生命周期;(4)流程實(shí)例對(duì)象用一套流程實(shí)例對(duì)象來描述流程實(shí)例 運(yùn)行的狀態(tài)和結(jié)果。目前,流程引擎定義的流程為結(jié)構(gòu)化流程,要求流程引擎在定義分支-合并時(shí),每 個(gè)合并節(jié)點(diǎn)一定對(duì)應(yīng)于一個(gè)分支節(jié)點(diǎn),而且在該分支節(jié)點(diǎn)到與其對(duì)應(yīng)的合并節(jié)點(diǎn)經(jīng)過的所 有節(jié)點(diǎn),都沒有不在這個(gè)分支-合并內(nèi)的輸入或輸出轉(zhuǎn)移,如圖1所示。在圖1中,節(jié)點(diǎn)A 為開始節(jié)點(diǎn),節(jié)點(diǎn)D為結(jié)束節(jié)點(diǎn),節(jié)點(diǎn)B為分支節(jié)點(diǎn),節(jié)點(diǎn)C為合并節(jié)點(diǎn),節(jié)點(diǎn)E、F和G為 動(dòng)作節(jié)點(diǎn),分支節(jié)點(diǎn)B和合并節(jié)點(diǎn)C構(gòu)成分支-合并,在分支節(jié)點(diǎn)B到合并節(jié)點(diǎn)C經(jīng)過節(jié)點(diǎn) E、節(jié)點(diǎn)F和節(jié)點(diǎn)G,節(jié)點(diǎn)E、節(jié)點(diǎn)F和節(jié)點(diǎn)G的輸入或輸出轉(zhuǎn)移都位于分支節(jié)點(diǎn)C和合并節(jié) 點(diǎn)B之間。分支節(jié)點(diǎn)B產(chǎn)生兩個(gè)分支連接弧2、節(jié)點(diǎn)E和連接弧3組成的分支,以及連接 弧4、節(jié)點(diǎn)F、連接弧5、節(jié)點(diǎn)G和連接弧6組成的分支,這兩個(gè)分支作為合并節(jié)點(diǎn)C的輸入轉(zhuǎn) 移。當(dāng)兩個(gè)分支未全部到達(dá)合并節(jié)點(diǎn)C時(shí),合并節(jié)點(diǎn)C等待,當(dāng)兩個(gè)分支全部到達(dá)合并節(jié)點(diǎn) C時(shí),對(duì)合并節(jié)點(diǎn)C的輸入轉(zhuǎn)移進(jìn)行同步,之后激活合并節(jié)點(diǎn)C,實(shí)現(xiàn)流程的調(diào)度。但是,結(jié)構(gòu)化流程會(huì)減弱流程對(duì)于業(yè)務(wù)的處理能力,使得所有自然流程都要人為 的進(jìn)行結(jié)構(gòu)化處理,對(duì)于不能變通的業(yè)務(wù)流程,無法使用工作流引擎進(jìn)行流程的控制。因此 提出一種無結(jié)構(gòu)化流程,如圖2所示,對(duì)于無結(jié)構(gòu)化流程,在分支節(jié)點(diǎn)到合并節(jié)點(diǎn)經(jīng)過的節(jié) 點(diǎn)中,可以包含位于該分支-合并之外的輸入或輸出轉(zhuǎn)移。在圖2中,節(jié)點(diǎn)G除了包含指向 合并節(jié)點(diǎn)C的輸出轉(zhuǎn)移,還包括指向結(jié)束節(jié)點(diǎn)D的輸出轉(zhuǎn)移。由于節(jié)點(diǎn)G產(chǎn)生的輸出轉(zhuǎn)移 可能是指向結(jié)束節(jié)點(diǎn)D的,所以合并節(jié)點(diǎn)C無法確定要進(jìn)行同步的輸入轉(zhuǎn)移,這導(dǎo)致流程引 擎無法對(duì)流程中的分支進(jìn)行動(dòng)態(tài)合并。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法 及裝置,可以對(duì)流程中的分支進(jìn)行動(dòng)態(tài)合并。為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法,包括確定流程中分支節(jié)點(diǎn)和與 其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支;創(chuàng)建等待分支列表,將所述分支的特征屬性存儲(chǔ)于所述等 待分支列表;判斷所述分支是否可以到達(dá)所述合并節(jié)點(diǎn),若否,則在所述等待分支列表中刪 除所述分支的特征屬性;判斷所述等待分支列表中的特征屬性表征的分支是否全部到達(dá)所 述合并節(jié)點(diǎn),若是,則激活所述合并節(jié)點(diǎn),否則,等待。優(yōu)選的,在上述方法中,所述判斷所述分支是否可以到達(dá)所述合并節(jié)點(diǎn)的過程具 體為分別確定所述分支中的連接??;創(chuàng)建連接弧列表,將所述連接弧的特征屬性存儲(chǔ)于 所述連接弧列表;判斷所述分支中的節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征屬性是否 包含于所述連接弧列表,若是,則所述分支可以到達(dá)所述合并節(jié)點(diǎn),否則,所述分支無法到 達(dá)所述合并節(jié)點(diǎn)。優(yōu)選的,在上述方法中,所述判斷所述分支是否可以到達(dá)所述合并節(jié)點(diǎn)的過程具 體為分別確定所述分支中的節(jié)點(diǎn);創(chuàng)建節(jié)點(diǎn)列表,將所述節(jié)點(diǎn)的特征屬性存儲(chǔ)于所述節(jié) 點(diǎn)列表;判斷所述分支中的節(jié)點(diǎn)完成后所指向的后續(xù)節(jié)點(diǎn)的特征屬性是否包含于所述節(jié)點(diǎn) 列表或者所述后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn),若是,則所述分支可以到達(dá)所述合并節(jié)點(diǎn),否則, 所述分支無法到達(dá)所述合并節(jié)點(diǎn)。一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的裝置,包括分支確定單元,用于確定流 程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支;等待分支列表創(chuàng)建單元,用于創(chuàng)建等待 分支列表;分支存儲(chǔ)單元,用于將所述分支的特征屬性存儲(chǔ)于所述等待分支列表;第一判 斷單元,用于判斷所述分支是否可以到達(dá)所述合并節(jié)點(diǎn);列表修改單元,用于在所述等待分 支列表中刪除不能到達(dá)合并節(jié)點(diǎn)的分支;第二判斷單元,用于判斷所述等待分支列表中的 特征屬性表征的分支是否全部到達(dá)所述合并節(jié)點(diǎn)。優(yōu)選的,在上述裝置中,所述第一判斷單元包括連接弧確定模塊,用于分別確定 所述分支中的連接?。贿B接弧列表創(chuàng)建模塊,用于創(chuàng)建連接弧列表;連接弧存儲(chǔ)模塊,用于 將所述連接弧的特征屬性存儲(chǔ)于所述連接弧列表;判斷模塊,用于判斷所述分支中的節(jié)點(diǎn) 產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征屬性是否包含于所述連接弧列表。優(yōu)選的,在上述裝置中,所述第一判斷單元包括節(jié)點(diǎn)確定模塊,用于分別確定所 述分支中的節(jié)點(diǎn);節(jié)點(diǎn)列表創(chuàng)建模塊,用于創(chuàng)建節(jié)點(diǎn)列表;節(jié)點(diǎn)存儲(chǔ)模塊,用于將所述節(jié)點(diǎn) 的特征屬性存儲(chǔ)于所述節(jié)點(diǎn)列表;判斷模塊,用于判斷所述分支中的節(jié)點(diǎn)完成后所指向的 后續(xù)節(jié)點(diǎn)的特征屬性是否包含于所述節(jié)點(diǎn)列表或所述后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn)。由以上本發(fā)明提供的技術(shù)方案可見,本發(fā)明提供的實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài) 合并的方法,有效解決了無結(jié)構(gòu)化流程中分支正確進(jìn)行動(dòng)態(tài)合并的問題,通過對(duì)分支節(jié)點(diǎn) 和合并節(jié)點(diǎn)之間分支進(jìn)行分析,判斷分支是否可以到達(dá)合并節(jié)點(diǎn),在分支不能到達(dá)合并節(jié) 點(diǎn)的情況下,在合并節(jié)點(diǎn)正在等待的輸入轉(zhuǎn)移中刪除該分支,并在可到達(dá)合并節(jié)點(diǎn)的分支 全部到達(dá)合并節(jié)點(diǎn)之后,激活合并節(jié)點(diǎn),實(shí)現(xiàn)分支的動(dòng)態(tài)合并。
為了更清楚地說明本發(fā)明實(shí)施例,下面將對(duì)實(shí)施例中所需要使用的附圖做簡(jiǎn)單的 介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人 員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為結(jié)構(gòu)化流程示意圖;圖2為非結(jié)構(gòu)化流程示意圖;圖3為本發(fā)明實(shí)施例公開的一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法的流 程圖;圖4為本發(fā)明實(shí)施例公開的另一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法的 流程圖;圖5為本發(fā)明實(shí)施例公開的又一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法的 流程圖;圖6為本發(fā)明實(shí)施例公開的一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的裝置的結(jié) 構(gòu)示意圖;圖7為本發(fā)明實(shí)施例公開的第一判斷單元的一種結(jié)構(gòu)示意圖;圖8為本發(fā)明實(shí)施例公開的第一判斷單元的另一種結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部實(shí)施例。基于本 發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下,所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)范圍。本發(fā)明提供了一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法,可以對(duì)非結(jié)構(gòu)化流 程中的分支正確進(jìn)行動(dòng)態(tài)合并。實(shí)施例一參見圖3,圖3為本發(fā)明公開的一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法的 流程圖。包括步驟Sll 確定流程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支。一個(gè)業(yè)務(wù)過程可以看做一個(gè)由節(jié)點(diǎn)和連接弧所組成的有向圖,其中節(jié)點(diǎn)代表活 動(dòng),連接弧代表活動(dòng)之間的順序關(guān)系。在流程引擎進(jìn)行流程定義的過程中,根據(jù)節(jié)點(diǎn)代表的 活動(dòng)定義其屬性,并通過連接弧描述流程中相鄰的兩個(gè)節(jié)點(diǎn)及前后關(guān)系,它把活動(dòng)按一定 的邏輯順序連接起來,定義了活動(dòng)之間的運(yùn)行規(guī)則,使得流程可以按定義規(guī)則從初始化運(yùn) 行到結(jié)束。流程引擎解析流程定義,確定分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn),并確定分支節(jié)點(diǎn) 和合并節(jié)點(diǎn)之間的分支,此時(shí)認(rèn)為所有的分支都是有可能到達(dá)合并節(jié)點(diǎn)的輸入轉(zhuǎn)移。步驟S12 創(chuàng)建等待分支列表。步驟S13 將分支的特征屬性存儲(chǔ)于等待分支列表。創(chuàng)建等待分支列表,將位于分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的各個(gè)分支的特征屬性存儲(chǔ) 于等待分支列表中,該特征屬性可以表征分支,并對(duì)不同的分支進(jìn)行區(qū)別。在實(shí)施中,可以 將組成該分支的一系列的連接弧和節(jié)點(diǎn)的組合作為特征屬性,也可以將僅存在于該分支的
6連接弧或分支作為特征屬性。步驟S14:判斷分支是否可以到達(dá)合并節(jié)點(diǎn),若是,則轉(zhuǎn)向步驟S16,否則,則轉(zhuǎn)向 步驟S15。步驟S15 在等待分支列表中刪除該分支的特征屬性。在流程運(yùn)行之前,認(rèn)為分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間所有的分支都可以到達(dá)合并節(jié) 點(diǎn),但是隨著流程的運(yùn)行,之前可能到達(dá)合并節(jié)點(diǎn)的分支最終不能到達(dá),因此在流程運(yùn)行過 程中,要對(duì)分支的路由情況進(jìn)行檢測(cè),判斷其最終是否可以到達(dá)合并節(jié)點(diǎn)。若隨著流程的 運(yùn)行發(fā)現(xiàn)某一分支無法到達(dá)合并節(jié)點(diǎn)之后,要將等待分支列表中表征該分支的特征屬性刪 除,也就是該分支不再作為合并節(jié)點(diǎn)要等待的輸入轉(zhuǎn)移。步驟S16 判斷等待分支列表中的特征屬性所表征的分支是否全部到達(dá)合并節(jié) 點(diǎn),若是,則轉(zhuǎn)向步驟S17,否則,轉(zhuǎn)向步驟S16。步驟S17 激活合并節(jié)點(diǎn)。在步驟S15之后,存儲(chǔ)于等待分支列表中的特征屬性表征的分支都可以到達(dá)合并 節(jié)點(diǎn),此時(shí)判斷所有可到達(dá)合并節(jié)點(diǎn)的分支是否已全部到達(dá)合并節(jié)點(diǎn),若已全部到達(dá),則激 活該合并節(jié)點(diǎn),否則繼續(xù)等待。本發(fā)明提供的實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法,有效解決了無結(jié)構(gòu)化流 程中分支正確進(jìn)行動(dòng)態(tài)合并的問題,通過對(duì)分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間分支進(jìn)行分析,判斷 分支是否可以到達(dá)合并節(jié)點(diǎn),在分支不能到達(dá)合并節(jié)點(diǎn)的情況下,將合并節(jié)點(diǎn)正在等待的 輸入轉(zhuǎn)移中刪除該分支,并在可到達(dá)合并節(jié)點(diǎn)的分支全部到達(dá)合并節(jié)點(diǎn)之后,激活合并節(jié) 點(diǎn),實(shí)現(xiàn)分支的動(dòng)態(tài)合并。通過采用本發(fā)明公開的實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方 法,可以使流程引擎快速正確對(duì)無結(jié)構(gòu)化流程中的分支-合并情況進(jìn)行解析,使流程在定 義時(shí),不在局限于結(jié)構(gòu)化流程中所限制的“每個(gè)合并節(jié)點(diǎn)一定對(duì)應(yīng)在一個(gè)分支節(jié)點(diǎn),而且每 個(gè)分支節(jié)點(diǎn)到它的合并節(jié)點(diǎn)經(jīng)過的所有節(jié)點(diǎn),都沒有不在這個(gè)分支-合并對(duì)內(nèi)的輸入或輸 出轉(zhuǎn)移”,擴(kuò)大了流程引擎的業(yè)務(wù)支持范圍。實(shí)施例二參見圖4,圖4為本發(fā)明公開的另一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法 的流程圖。包括步驟S21 確定流程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支。步驟S22 創(chuàng)建等待分支列表。步驟S23 將分支的特征屬性存儲(chǔ)于等待分支列表。步驟S24 確定各分支中的連接弧。步驟S25 創(chuàng)建連接弧列表,將連接弧的特征屬性存儲(chǔ)于連接弧列表。步驟S26 判斷分支中的節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征屬性是否包 含于連接弧列表中,若是,則轉(zhuǎn)向步驟S28,否則,轉(zhuǎn)向步驟S27。步驟S27 在等待分支列表中刪除不能到達(dá)合并節(jié)點(diǎn)的分支的特征屬性。步驟S28 判斷與等待分支列表中的特征屬性對(duì)應(yīng)的分支是否全部到達(dá)合并節(jié) 點(diǎn),若是,則轉(zhuǎn)向步驟S29,否則,轉(zhuǎn)向步驟S28。步驟S29 激活合并節(jié)點(diǎn)。在實(shí)施例二公開的方法中,判斷分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的分支是否可以到達(dá)合并節(jié)點(diǎn),是通過判斷分支中的節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征屬性是否包含于 連接弧列表實(shí)現(xiàn)的。對(duì)于位于分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的分支,分別確定各個(gè)分支上的連接弧,并將 表征連接弧的特征屬性存儲(chǔ)在連接弧列表中。連接弧的特征屬性可以為該連接弧的前驅(qū)節(jié) 點(diǎn)和后繼節(jié)點(diǎn)信息,也可以是連接弧的轉(zhuǎn)移條件。隨著流程的運(yùn)行,分支中的節(jié)點(diǎn)被激活, 在該節(jié)點(diǎn)完成之后,產(chǎn)生輸出轉(zhuǎn)移,確定該輸出轉(zhuǎn)移滿足的連接弧,判斷該連接弧的特征屬 性是否包含于連接弧列表中,如果分支中所有節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征 屬性都存在于連接弧列表中,則該分支可以到達(dá)合并節(jié)點(diǎn);否則,該分支不可以到達(dá)合并節(jié) 點(diǎn)ο下面以圖2中的流程結(jié)構(gòu)進(jìn)行說明。將連接弧2、3、4、5和6的特征屬性存儲(chǔ)于連接弧列表中。假設(shè)連接弧6的轉(zhuǎn)移條 件為數(shù)據(jù)大于100,連接弧8的轉(zhuǎn)移條件為數(shù)據(jù)量小于100,當(dāng)流程運(yùn)行到節(jié)點(diǎn)G時(shí),如果節(jié) 點(diǎn)G完成之后產(chǎn)生的輸出轉(zhuǎn)移的數(shù)據(jù)量大于100,則其輸出轉(zhuǎn)移滿足連接弧6,通過判斷確 定連接弧6的特征屬性包含于連接弧列表中,此時(shí)由連接弧4、節(jié)點(diǎn)F、連接弧5、節(jié)點(diǎn)G和連 接弧6組成的分支可以到達(dá)合并節(jié)點(diǎn)C ;如果節(jié)點(diǎn)G完成之后產(chǎn)生的輸出轉(zhuǎn)移的數(shù)據(jù)量小 于100,則其輸出轉(zhuǎn)移滿足連接弧8,通過判斷確定連接弧8的特征屬性不包含于連接弧列 表中,此時(shí)由連接弧4、節(jié)點(diǎn)F、連接弧5、節(jié)點(diǎn)G和連接弧6組成的分支不可以到達(dá)合并節(jié)點(diǎn) C0實(shí)施例三參見圖5,圖5為本發(fā)明公開的又一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法 的流程圖。包括步驟S31 確定流程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支。步驟S32 創(chuàng)建等待分支列表。步驟S33 將分支的特征屬性存儲(chǔ)于等待分支列表。步驟S34 確定各分支中的節(jié)點(diǎn)。步驟S35 創(chuàng)建節(jié)點(diǎn)列表,將節(jié)點(diǎn)的特征屬性存儲(chǔ)于節(jié)點(diǎn)列表。步驟S36 判斷分支中的節(jié)點(diǎn)完成后指向的后續(xù)節(jié)點(diǎn)的特征屬性是否包含于節(jié)點(diǎn) 列表中或所述后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn),若是,則轉(zhuǎn)向步驟S38,否則,轉(zhuǎn)向步驟S37。步驟S37 在等待分支列表中刪除不能到達(dá)合并節(jié)點(diǎn)的分支的特征屬性。步驟S38 判斷與等待分支列表中的特征屬性對(duì)應(yīng)的分支是否全部到達(dá)合并節(jié) 點(diǎn),若是,則轉(zhuǎn)向步驟S39,否則,轉(zhuǎn)向步驟S38。步驟S39 激活合并節(jié)點(diǎn)。在實(shí)施例三公開的方法中,判斷分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的分支是否可以到達(dá)合 并節(jié)點(diǎn),是通過判斷分支中的節(jié)點(diǎn)完成后所指向的后續(xù)節(jié)點(diǎn)的特征屬性是否包含于節(jié)點(diǎn)列 表中或者該后續(xù)節(jié)點(diǎn)是否是合并節(jié)點(diǎn)實(shí)現(xiàn)的。對(duì)于位于分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的分支,分別確定各個(gè)分支上的節(jié)點(diǎn),并將表 征節(jié)點(diǎn)的特征屬性存儲(chǔ)于節(jié)點(diǎn)列表中。節(jié)點(diǎn)的特征屬性可以是模板ID,也可以是連接該節(jié) 點(diǎn)的兩個(gè)連接弧信息。隨著流程的運(yùn)行,分支中的節(jié)點(diǎn)被激活,在節(jié)點(diǎn)完成之后,產(chǎn)生輸出 轉(zhuǎn)移,并根據(jù)輸出轉(zhuǎn)移滿足的連接弧轉(zhuǎn)移至后續(xù)節(jié)點(diǎn),判斷該后續(xù)節(jié)點(diǎn)的特征屬性是否包
8含于節(jié)點(diǎn)列表中或者該后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn),如果分支中的節(jié)點(diǎn)所指向的后續(xù)節(jié)點(diǎn)的 節(jié)點(diǎn)屬性都包含于節(jié)點(diǎn)列表中或者后續(xù)節(jié)點(diǎn)為合并節(jié)點(diǎn),則該分支可以到達(dá)合并節(jié)點(diǎn);否 則,該分支不能到達(dá)合并節(jié)點(diǎn)。下面以圖2中的流程結(jié)構(gòu)進(jìn)行說明。將節(jié)點(diǎn)B、C、E、F和G的特征屬性存儲(chǔ)于節(jié)點(diǎn)列表中。當(dāng)流程運(yùn)行到節(jié)點(diǎn)G時(shí),如 果節(jié)點(diǎn)G完成之后產(chǎn)生的輸出轉(zhuǎn)移所指向的后續(xù)節(jié)點(diǎn)為合并節(jié)點(diǎn)C,此時(shí)由連接弧4、節(jié)點(diǎn) F、連接弧5、節(jié)點(diǎn)G和連接弧6組成的分支可以到達(dá)合并節(jié)點(diǎn)C ;如果節(jié)點(diǎn)G完成之后產(chǎn)生 的輸出轉(zhuǎn)移所指向的后續(xù)節(jié)點(diǎn)為D,通過判斷確定節(jié)點(diǎn)D的特征屬性不包含于節(jié)點(diǎn)列表中, 此時(shí)由連接弧4、節(jié)點(diǎn)F、連接弧5、節(jié)點(diǎn)G和連接弧6組成的分支不可以到達(dá)合并節(jié)點(diǎn)C。本發(fā)明還公開了一種實(shí)現(xiàn)無結(jié)構(gòu)化流程分支動(dòng)態(tài)合并的裝置,與本發(fā)明公開的方 法相對(duì)應(yīng),可以對(duì)流程中的分支進(jìn)行動(dòng)態(tài)合并。參見圖6,圖6為本發(fā)明公開的一種實(shí)現(xiàn)無結(jié)構(gòu)化流程分支動(dòng)態(tài)合并的裝置的結(jié) 構(gòu)示意圖。該裝置包括分支確定單元61、等待分支列表創(chuàng)建單元62、分支存儲(chǔ)單元63、第一 判斷單元64、列表修改單元65和第二判斷單元66。其中,分支確定單元61用于確定流程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的 分支;等待分支列表創(chuàng)建單元62,用于創(chuàng)建等待分支列表;分支存儲(chǔ)單元63,用于將所述分 支存儲(chǔ)于所述等待分支列表;第一判斷單元64,用于判斷所述分支是否可以到達(dá)所述合并 節(jié)點(diǎn);列表修改單元65,用于在所述等待分支列表中刪除不能到達(dá)合并節(jié)點(diǎn)的分支;第二 判斷單元66,用于判斷所述等待分支列表中的分支是否全部到達(dá)所述合并節(jié)點(diǎn)。在實(shí)施中,第一判斷單元64的結(jié)構(gòu)可以如圖7所示,包括連接弧確定模塊6401、 連接弧列表創(chuàng)建模塊6402、連接弧存儲(chǔ)模塊6403和判斷模塊6404。連接弧確定模塊6401,用于分別確定所述分支中的連接??;連接弧列表創(chuàng)建模塊 6402,用于創(chuàng)建連接弧列表;連接弧存儲(chǔ)模塊6403,用于將所述連接弧的特征屬性存儲(chǔ)于 所述連接弧列表;判斷模塊6404,用于判斷所述分支中的節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連 接弧的特征屬性是否包含于所述連接弧列表。另外,第一判斷單元64的結(jié)構(gòu)可以如圖8所示,包括節(jié)點(diǎn)確定模塊6411、節(jié)點(diǎn)列 表創(chuàng)建模塊6412、節(jié)點(diǎn)存儲(chǔ)模塊6413和判斷模塊6414。節(jié)點(diǎn)確定模塊6411,用于分別確定所述分支中的節(jié)點(diǎn);節(jié)點(diǎn)列表創(chuàng)建模塊6412, 用于創(chuàng)建節(jié)點(diǎn)列表;節(jié)點(diǎn)存儲(chǔ)模塊6413,用于將所述節(jié)點(diǎn)的特征屬性存儲(chǔ)于所述節(jié)點(diǎn)列 表;判斷模塊6414,用于判斷所述分支中的節(jié)點(diǎn)完成后所指向的后續(xù)節(jié)點(diǎn)的特征屬性是否 包含于所述節(jié)點(diǎn)列表或該后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn)。本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他 實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置 而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說 明即可。本領(lǐng)域技術(shù)人員可以理解,可以使用許多不同的工藝和技術(shù)中的任意一種來表示 信息、消息和信號(hào)。例如,上述說明中提到過的消息、信息都可以表示為電壓、電流、電磁波、 磁場(chǎng)或磁性粒子、光場(chǎng)或以上任意組合。
權(quán)利要求
一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法,其特征在于,包括確定流程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支;創(chuàng)建等待分支列表,將所述分支的特征屬性存儲(chǔ)于所述等待分支列表;判斷所述分支是否可以到達(dá)所述合并節(jié)點(diǎn),若否,則在所述等待分支列表中刪除所述分支的特征屬性;判斷所述等待分支列表中的特征屬性表征的分支是否全部到達(dá)所述合并節(jié)點(diǎn),若是,則激活所述合并節(jié)點(diǎn),否則,等待。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷所述分支是否可以到達(dá)所述合 并節(jié)點(diǎn)的過程具體為分別確定所述分支中的連接?。粍?chuàng)建連接弧列表,將所述連接弧的特征屬性存儲(chǔ)于所述連接弧列表; 判斷所述分支中的節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征屬性是否包含于所述 連接弧列表,若是,則所述分支可以到達(dá)所述合并節(jié)點(diǎn),否則,所述分支無法到達(dá)所述合并 節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷所述分支是否可以到達(dá)所述合 并節(jié)點(diǎn)的過程具體為分別確定所述分支中的節(jié)點(diǎn);創(chuàng)建節(jié)點(diǎn)列表,將所述節(jié)點(diǎn)的特征屬性存儲(chǔ)于所述節(jié)點(diǎn)列表; 判斷所述分支中的節(jié)點(diǎn)完成后所指向的后續(xù)節(jié)點(diǎn)的特征屬性是否包含于所述節(jié)點(diǎn)列 表或者所述后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn),若是,則所述分支可以到達(dá)所述合并節(jié)點(diǎn),否則,所 述分支無法到達(dá)所述合并節(jié)點(diǎn)。
4.一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的裝置,其特征在于,包括 分支確定單元,用于確定流程中分支節(jié)點(diǎn)和與其對(duì)應(yīng)的合并節(jié)點(diǎn)之間的分支; 等待分支列表創(chuàng)建單元,用于創(chuàng)建等待分支列表;分支存儲(chǔ)單元,用于將所述分支的特征屬性存儲(chǔ)于所述等待分支列表; 第一判斷單元,用于判斷所述分支是否可以到達(dá)所述合并節(jié)點(diǎn); 列表修改單元,用于在所述等待分支列表中刪除不能到達(dá)合并節(jié)點(diǎn)的分支; 第二判斷單元,用于判斷所述等待分支列表中的特征屬性表征的分支是否全部到達(dá)所 述合并節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述第一判斷單元包括 連接弧確定模塊,用于分別確定所述分支中的連接??;連接弧列表創(chuàng)建模塊,用于創(chuàng)建連接弧列表;連接弧存儲(chǔ)模塊,用于將所述連接弧的特征屬性存儲(chǔ)于所述連接弧列表; 判斷模塊,用于判斷所述分支中的節(jié)點(diǎn)產(chǎn)生的輸出轉(zhuǎn)移所滿足的連接弧的特征屬性是 否包含于所述連接弧列表。
6.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述第一判斷單元包括 節(jié)點(diǎn)確定模塊,用于分別確定所述分支中的節(jié)點(diǎn);節(jié)點(diǎn)列表創(chuàng)建模塊,用于創(chuàng)建節(jié)點(diǎn)列表;節(jié)點(diǎn)存儲(chǔ)模塊,用于將所述節(jié)點(diǎn)的特征屬性存儲(chǔ)于所述節(jié)點(diǎn)列表;判斷模塊,用于判斷所述分支中的節(jié)點(diǎn)完成后所指向的后續(xù)節(jié)點(diǎn)的特征屬性是否包含 于所述節(jié)點(diǎn)列表或所述后續(xù)節(jié)點(diǎn)是否為合并節(jié)點(diǎn)。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的方法,確定流程中分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的分支;創(chuàng)建等待分支列表,將分支的特征屬性存儲(chǔ)于等待分支列表;若分支無法到達(dá)合并節(jié)點(diǎn),則在等待分支列表中刪除該分支的特征屬性;當(dāng)?shù)却种Я斜碇械奶卣鲗傩员碚鞯姆种康竭_(dá)合并節(jié)點(diǎn)時(shí),激活合并節(jié)點(diǎn)。本發(fā)明公開的方法,解決了無結(jié)構(gòu)化流程中分支進(jìn)行動(dòng)態(tài)合并的問題,判斷分支節(jié)點(diǎn)和合并節(jié)點(diǎn)之間的分支是否可以到達(dá)合并節(jié)點(diǎn),在分支不能到達(dá)合并節(jié)點(diǎn)的情況下,在合并節(jié)點(diǎn)正在等待的輸入轉(zhuǎn)移中刪除該分支,在可到達(dá)合并節(jié)點(diǎn)的分支全部到達(dá)之后激活合并節(jié)點(diǎn),實(shí)現(xiàn)分支的動(dòng)態(tài)合并。本發(fā)明還公開了一種實(shí)現(xiàn)無結(jié)構(gòu)化流程中分支動(dòng)態(tài)合并的裝置。
文檔編號(hào)G06Q10/00GK101963908SQ201010506079
公開日2011年2月2日 申請(qǐng)日期2010年9月30日 優(yōu)先權(quán)日2010年9月30日
發(fā)明者劉民, 劉江寧, 王可鑫 申請(qǐng)人:山東中創(chuàng)軟件工程股份有限公司;山東中創(chuàng)軟件商用中間件股份有限公司