国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種工作流引擎及其實(shí)現(xiàn)方法

      文檔序號(hào):6524037閱讀:229來(lái)源:國(guó)知局
      一種工作流引擎及其實(shí)現(xiàn)方法
      【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種工作流引擎及其實(shí)現(xiàn)方法,用于降低網(wǎng)絡(luò)通信開(kāi)銷(xiāo),工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的瀏覽器內(nèi)加載運(yùn)行,包括:流程解析器,用于讀取流程配置文件,解析流程配置文件中流程定義模型,生成流程執(zhí)行控制器執(zhí)行的流程指令;流程執(zhí)行控制器,用于根據(jù)流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行初始化;在對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算;對(duì)當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,如當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則工作流引擎結(jié)束流程,如匹配到下一工作流節(jié)點(diǎn),則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),繼續(xù)執(zhí)行加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      【專(zhuān)利說(shuō)明】一種工作流引擎及其實(shí)現(xiàn)方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,具體涉及一種工作流引擎及其實(shí)現(xiàn)方法。
      【背景技術(shù)】
      [0002]在計(jì)算機(jī)環(huán)境下,工作流就是按照某種預(yù)先設(shè)置的流程在多個(gè)參與者之間傳遞文檔、信息或任務(wù)的過(guò)程。實(shí)現(xiàn)工作流的核心,就是工作流引擎,或稱(chēng)為流程引擎,它為流程的定義和解釋、信息傳遞的方式和路徑、角色的分工和條件等提供實(shí)現(xiàn)。工作流節(jié)點(diǎn),是流程中的一個(gè)步驟或環(huán)節(jié),一般與應(yīng)用系統(tǒng)中的一項(xiàng)應(yīng)用相對(duì)應(yīng),通過(guò)工作流引擎可以將一個(gè)或多個(gè)工作流節(jié)點(diǎn)連接起來(lái)形成工作流。
      [0003]在現(xiàn)有技術(shù)中,商用的工作流引擎產(chǎn)品大部分采用獨(dú)立式的應(yīng)用模式,獨(dú)立式是指工作流引擎獨(dú)立地部署在進(jìn)程或服務(wù)器上,需要通過(guò)遠(yuǎn)程調(diào)用的方式進(jìn)行工作流節(jié)點(diǎn)和工作流引擎的交互。工作流引擎在Web應(yīng)用的場(chǎng)景下,工作流引擎需要部署在Web服務(wù)器端,這種獨(dú)立式工作流引擎的實(shí)現(xiàn)方式需要較大的網(wǎng)絡(luò)通信開(kāi)銷(xiāo),工作流的執(zhí)行過(guò)程需要部署在Web服務(wù)器端的工作流引擎遠(yuǎn)程與運(yùn)行在客戶(hù)端上的工作流節(jié)點(diǎn)交互,帶寬成本較高、網(wǎng)絡(luò)延時(shí)較長(zhǎng),另外服務(wù)器負(fù)載壓力較大。

      【發(fā)明內(nèi)容】

      [0004]有鑒于此,本發(fā)明的主要目的是提供一種工作流引擎及其實(shí)現(xiàn)方法,以解決現(xiàn)有技術(shù)中工作流引擎的實(shí)現(xiàn)網(wǎng)絡(luò)通信開(kāi)銷(xiāo)大的技術(shù)問(wèn)題。
      [0005]為解決上述問(wèn)題,本發(fā)明提供的技術(shù)方案如下:
      [0006]一種工作流引擎,所述工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的所述瀏覽器內(nèi)加載運(yùn)行,所述工作流引擎包括:
      [0007]流程解析器以及流程執(zhí)行控制器;
      [0008]所述流程解析器,用于讀取流程配置文件,解析所述流程配置文件中的流程定義模型從而生成所述流程執(zhí)行控制器執(zhí)行的流程指令;
      [0009]所述流程執(zhí)行控制器,用于根據(jù)所述流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行所述當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯;在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)所述當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算;對(duì)所述當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,如果所述當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則所述工作流引擎結(jié)束流程,如果匹配到下一工作流節(jié)點(diǎn),則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),繼續(xù)執(zhí)行加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      [0010]相應(yīng)的,所述流程解析器包括:
      [0011]讀取子模塊,用于根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件;
      [0012]解析子單元,用于解析所述流程配置文件中包括的流程定義模型從而生成所述流程執(zhí)行控制器執(zhí)行的流程指令。[0013]相應(yīng)的,所述流程配置文件中的流程定義模型包括公共變量、每個(gè)工作流節(jié)點(diǎn)的初始化邏輯、運(yùn)算邏輯表達(dá)式以及跳轉(zhuǎn)條件。
      [0014]相應(yīng)的,所述工作流引擎基于Silverlight技術(shù)實(shí)現(xiàn),所述流程配置文件為可擴(kuò)展標(biāo)記語(yǔ)言XML文件。
      [0015]相應(yīng)的,將所述工作流引擎的接口封裝在業(yè)務(wù)基類(lèi)中,以使所述工作流引擎的接口繼承到各個(gè)工作流節(jié)點(diǎn)中。
      [0016]一種工作流引擎的實(shí)現(xiàn)方法,所述方法包括:
      [0017]工作流引擎讀取流程配置文件,解析所述流程配置文件中的流程定義模型從而生成所述流程執(zhí)行控制器執(zhí)行的流程指令;所述工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的所述瀏覽器內(nèi)加載運(yùn)行;
      [0018]根據(jù)所述流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行所述當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯;
      [0019]在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)所述當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算;
      [0020]對(duì)所述當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,如果所述當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則結(jié)束流程,如果匹配到下一工作流節(jié)點(diǎn),則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),繼續(xù)執(zhí)行加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      [0021]相應(yīng)的,所述讀取流程配置文件,包括:
      [0022]根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件。
      [0023]相應(yīng)的,所述流程配置文件中的流程定義模型包括公共變量、每個(gè)工作流節(jié)點(diǎn)的初始化邏輯、運(yùn)算邏輯表達(dá)式以及跳轉(zhuǎn)條件。
      [0024]相應(yīng)的,所述工作流引擎基于Silverlight技術(shù)實(shí)現(xiàn),所述流程配置文件為可擴(kuò)展標(biāo)記語(yǔ)言XML文件。
      [0025]相應(yīng)的,將所述工作流引擎的接口封裝在業(yè)務(wù)基類(lèi)中,以使所述工作流引擎的接口繼承到各個(gè)工作流節(jié)點(diǎn)中。
      [0026]由此可見(jiàn),本發(fā)明具有如下有益效果:
      [0027]本發(fā)明實(shí)施例中提供的工作流引擎直接運(yùn)行在Web應(yīng)用客戶(hù)端的瀏覽器內(nèi),實(shí)現(xiàn)了流程控制、節(jié)點(diǎn)調(diào)用、條件判斷等輕量級(jí)功能,無(wú)需依賴(lài)單獨(dú)的流程服務(wù)器,在工作流引擎的工作過(guò)程中沒(méi)有遠(yuǎn)程調(diào)用,節(jié)約了用于遠(yuǎn)程調(diào)用的網(wǎng)絡(luò)通信開(kāi)銷(xiāo);同時(shí),本發(fā)明可以充分利用客戶(hù)端的計(jì)算資源,降低了服務(wù)器的運(yùn)算壓力;另外,工作流引擎對(duì)于工作流也即應(yīng)用來(lái)說(shuō)是不可見(jiàn)的,每個(gè)工作流節(jié)點(diǎn)均可以獨(dú)立運(yùn)行,可以為流程靈活變更創(chuàng)造條件。
      【專(zhuān)利附圖】

      【附圖說(shuō)明】
      [0028]圖1為本發(fā)明實(shí)施例中工作流引擎實(shí)施例的示意圖;
      [0029]圖2為本發(fā)明實(shí)施例中工作流引擎的運(yùn)行環(huán)境示意圖;
      [0030]圖3為本發(fā)明實(shí)施例中流程定義模型的示意圖;
      [0031]圖4為本發(fā)明實(shí)施例中工作流引擎的工作過(guò)程示意圖;
      [0032]圖5為本發(fā)明實(shí)施例中工作流引擎的接口繼承示意圖;
      [0033]圖6為本發(fā)明實(shí)施例中工作流引擎的實(shí)現(xiàn)方法實(shí)施例的流程圖?!揪唧w實(shí)施方式】
      [0034]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說(shuō)明。
      [0035]本發(fā)明實(shí)施例提供的工作流引擎及其實(shí)現(xiàn)方法,是針對(duì)現(xiàn)有技術(shù)中工作流引擎的實(shí)現(xiàn)網(wǎng)絡(luò)通信開(kāi)銷(xiāo)大、服務(wù)器負(fù)載大的技術(shù)問(wèn)題,提出基于瀏覽器插件技術(shù),實(shí)現(xiàn)了工作流引擎運(yùn)行在Web應(yīng)用的客戶(hù)端的瀏覽器內(nèi),工作流引擎分為流程解析器和流程執(zhí)行控制器,其中,流程解析器用于讀取包括流程定義模型的流程配置文件,并解析成流程執(zhí)行控制器可執(zhí)行的流程指令,流程執(zhí)行控制器是流程指令的執(zhí)行者,用于執(zhí)行根據(jù)流程定義模型創(chuàng)建相應(yīng)的業(yè)務(wù)對(duì)象、并處理初始化以及業(yè)務(wù)運(yùn)行結(jié)束后的事件等步驟。
      [0036]基于上述思想,本發(fā)明實(shí)施例中提供的工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的瀏覽器內(nèi)加載運(yùn)行,參見(jiàn)圖1所示,該工作流引擎實(shí)施例可以包括:
      [0037]流程解析器101以及流程執(zhí)行控制器102。
      [0038]流程解析器101可以用于讀取流程配置文件,解析流程配置文件中的流程定義模型從而生成流程執(zhí)行控制器執(zhí)行的流程指令。
      [0039]流程執(zhí)行控制器102可以用于根據(jù)流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯;在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算;對(duì)當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,如果當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則工作流引擎結(jié)束流程,如果匹配到下一工作流節(jié)點(diǎn),則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),繼續(xù)執(zhí)行加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      [0040]在本發(fā)明的一些實(shí)施例中,流程解析器可以包括:
      [0041]讀取子模塊,用于根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件。
      [0042]解析子單元,用于解析流程配置文件中包括的流程定義模型從而生成流程執(zhí)行控制器執(zhí)行的流程指令。
      [0043]在本發(fā)明的一些實(shí)施例中,工作流也即流程是指在計(jì)算機(jī)應(yīng)用環(huán)境下,對(duì)業(yè)務(wù)過(guò)程進(jìn)行自動(dòng)化,可以具體這樣定義工作流:按照某種預(yù)先設(shè)置的流程在多個(gè)參與者之間傳遞文檔、信息或任務(wù)的過(guò)程。參與者可以有人或計(jì)算機(jī)實(shí)現(xiàn)的服務(wù)。工作流引擎為流程的定義和解釋、信息傳遞的方式和路徑、角色的分工和條件等提供實(shí)現(xiàn),是工作流的核心部分。工作流節(jié)點(diǎn)是工作流中的一個(gè)步驟或環(huán)節(jié),通過(guò)工作流引擎將一個(gè)或多個(gè)工作流節(jié)點(diǎn)連接起來(lái)就形成了工作流,在本發(fā)明中,一個(gè)工作流節(jié)點(diǎn)可以為一個(gè)業(yè)務(wù),可以指一個(gè)完整的業(yè)務(wù)功能單元,例如查詢(xún)業(yè)務(wù)、信息錄入業(yè)務(wù)等。
      [0044]在本發(fā)明實(shí)施例中,是在Silverlight技術(shù)基礎(chǔ)上實(shí)現(xiàn)的,Silverlight是微軟公司一項(xiàng)Web應(yīng)用開(kāi)發(fā)技術(shù),它通過(guò)瀏覽器插件,為Web客戶(hù)端應(yīng)用提供完整的運(yùn)行環(huán)境。在本發(fā)明中,工作流引擎以及應(yīng)用(可以將業(yè)務(wù)或多個(gè)業(yè)務(wù)組成的業(yè)務(wù)流程都統(tǒng)稱(chēng)為應(yīng)用)都是基于Silverlight技術(shù)實(shí)現(xiàn)的。Silverlight開(kāi)發(fā)的程序以二進(jìn)制類(lèi)庫(kù)的形式部署在Web服務(wù)器上,由瀏覽器將其下載到客戶(hù)端并加載運(yùn)行,也即由于工作流引擎采用Silverlight技術(shù)實(shí)現(xiàn),因此可以運(yùn)行在瀏覽器中。參見(jiàn)圖2所示,是本發(fā)明實(shí)施例提供的工作流引擎所運(yùn)行的環(huán)境。也就是說(shuō),本發(fā)明實(shí)施例中提供的工作流引擎在需要使用時(shí)可以通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端加載運(yùn)行。
      [0045]流程配置文件中的流程定義模型可以描述整個(gè)流程的節(jié)點(diǎn)、節(jié)點(diǎn)間轉(zhuǎn)移的條件、節(jié)點(diǎn)間傳遞的數(shù)據(jù)等等,流程配置文件可以為可擴(kuò)展標(biāo)記語(yǔ)言XML文件。應(yīng)用開(kāi)發(fā)人員開(kāi)發(fā)流程的過(guò)程,就是寫(xiě)XML流程配置文件的過(guò)程。為了簡(jiǎn)化開(kāi)發(fā)工作,可以使用一個(gè)可視化的流程編輯器,能夠大幅提高流程的開(kāi)發(fā)效率。
      [0046]由于本發(fā)明提供的工作流引擎是一個(gè)輕量級(jí)的引擎,可以滿(mǎn)足最常見(jiàn)的客戶(hù)端工作流場(chǎng)景,也可以根據(jù)實(shí)際需要進(jìn)行功能擴(kuò)展,可以支持順序流、條件分支流,支持公共變量定義,支持簡(jiǎn)單的邏輯運(yùn)算,支持條件判斷,支持在節(jié)點(diǎn)之間傳遞數(shù)據(jù)等。參見(jiàn)圖3所示,在本發(fā)明的一些實(shí)施例中,流程配置文件中的流程定義模型包括公共變量、每個(gè)工作流節(jié)點(diǎn)的初始化邏輯、運(yùn)算邏輯表達(dá)式以及跳轉(zhuǎn)條件。
      [0047]—個(gè)業(yè)務(wù)流程是由一個(gè)或多個(gè)工作流節(jié)點(diǎn)組成的。一個(gè)工作流節(jié)點(diǎn)可以對(duì)應(yīng)一個(gè)業(yè)務(wù)。流程執(zhí)行控制器在執(zhí)行一個(gè)工作流節(jié)點(diǎn)時(shí),有三個(gè)方面的工作:首先,加載業(yè)務(wù)對(duì)象,執(zhí)行特定的初始化邏輯;其次,在業(yè)務(wù)運(yùn)行結(jié)束或業(yè)務(wù)對(duì)象關(guān)閉時(shí),執(zhí)行本工作流節(jié)點(diǎn)的運(yùn)算邏輯;最后,根據(jù)條件判斷的結(jié)果,進(jìn)行下一節(jié)點(diǎn)的跳轉(zhuǎn)。為了支持在工作流流程中實(shí)現(xiàn)一些邏輯,在流程定義模型中增加了公共變量聲明,這些公共變量對(duì)所有的工作流節(jié)點(diǎn)都是可見(jiàn)的,可通過(guò)公共變量不同工作流節(jié)點(diǎn)之間傳遞信息。
      [0048]這樣,工作流引擎實(shí)施例可以包括:流程解析器以及流程執(zhí)行控制器,參見(jiàn)圖4所示,在本發(fā)明實(shí)施例工作流引擎的一種工作過(guò)程示意圖。
      [0049]流程開(kāi)發(fā)人員使用流程編輯器對(duì)流程進(jìn)行開(kāi)發(fā),生成流程配置文件,流程配置文件中包括流程定義模型,流程配置文件保存在Web服務(wù)器上,由工作流引擎中的流程解析器下載到客戶(hù)端使用,也即流程解析器根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件。
      [0050]流程解析器解析流程配置文件中的流程定義模型從而生成流程執(zhí)行控制器執(zhí)行的流程指令,在解析的過(guò)程中,流程解析器會(huì)生成一系列的對(duì)象,例如流程中定義的公共變量以及邏輯運(yùn)算表達(dá)式等都會(huì)轉(zhuǎn)換成內(nèi)存對(duì)象,可以直觀地將這些內(nèi)存對(duì)象看作流程指令,因?yàn)樗鼈兌紝?shí)現(xiàn)了特定的接口方法,可以被流程控制器調(diào)用執(zhí)行。解析完成后該流程也就做好了運(yùn)行的準(zhǔn)備,流程執(zhí)行控制器可以開(kāi)始運(yùn)行。
      [0051]流程執(zhí)行控制器根據(jù)流程指令,創(chuàng)建第一個(gè)工作流節(jié)點(diǎn)所對(duì)應(yīng)的業(yè)務(wù)對(duì)象,并執(zhí)行當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯,例如包括訂閱業(yè)務(wù)結(jié)束時(shí)的相關(guān)事件。一般地,初始化邏輯還可以包括設(shè)置業(yè)務(wù)對(duì)象的一些public屬性等。之后,業(yè)務(wù)就進(jìn)入了正常的運(yùn)行狀態(tài),展示業(yè)務(wù)界面、相應(yīng)用戶(hù)操作等。此時(shí),業(yè)務(wù)運(yùn)行過(guò)程與非流程驅(qū)動(dòng)時(shí)完全相同。也就是說(shuō),一個(gè)工作流節(jié)點(diǎn)是否在工作流引擎驅(qū)動(dòng)下運(yùn)行,其運(yùn)行狀態(tài)是相同的,工作流節(jié)點(diǎn)就是一個(gè)業(yè)務(wù),每個(gè)業(yè)務(wù)都是獨(dú)立而完整的,在沒(méi)有流程引擎的情況下,它們都是可運(yùn)行的,這樣為流程靈活變更創(chuàng)造了條件。
      [0052]流程執(zhí)行控制器一直處于等待狀態(tài),直到業(yè)務(wù)運(yùn)行結(jié)束,注冊(cè)的事件處理程序啟動(dòng)執(zhí)行,根據(jù)當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式完成一些邏輯運(yùn)算。這里的運(yùn)算相對(duì)簡(jiǎn)單,通常是對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)做一些分析處理。
      [0053]流程執(zhí)行控制器執(zhí)行條件運(yùn)算邏輯,并根據(jù)運(yùn)算結(jié)果進(jìn)行路徑判斷,也即對(duì)當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,找到下一個(gè)工作流節(jié)點(diǎn)。如果當(dāng)前工作流節(jié)點(diǎn)是流程結(jié)束節(jié)點(diǎn),則結(jié)束流程,流程引擎退出,如果成功匹配到下一個(gè)工作流節(jié)點(diǎn),則返回執(zhí)行加載下一個(gè)工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      [0054]另外,在本發(fā)明的一些實(shí)施例中,將工作流引擎的接口封裝在業(yè)務(wù)基類(lèi)中,以使工作流弓I擎的接口繼承到各個(gè)工作流節(jié)點(diǎn)中。
      [0055]需要注意的是,工作流引擎的設(shè)計(jì)與業(yè)務(wù)的設(shè)計(jì)有很好的相互配合,以至于開(kāi)發(fā)交易的人無(wú)需為支持工作流作任何額外的工作。這里,需要利用面向?qū)ο蠹夹g(shù)中“封裝”、“繼承”等特性,參見(jiàn)圖5所示,在業(yè)務(wù)的基類(lèi)中封裝了對(duì)工作流引擎接口,例如業(yè)務(wù)初始化、關(guān)閉事件等接口,這些接口會(huì)自動(dòng)繼承到具體的業(yè)務(wù)類(lèi)中,從而使工作流引擎的接口可以繼承到各個(gè)工作流節(jié)點(diǎn)中。
      [0056]這樣,本發(fā)明實(shí)施例中提供的工作流引擎直接運(yùn)行在Web應(yīng)用的客戶(hù)端瀏覽器內(nèi),實(shí)現(xiàn)了流程控制、節(jié)點(diǎn)調(diào)用、條件判斷等輕量級(jí)功能,無(wú)需依賴(lài)單獨(dú)的流程服務(wù)器,在工作流引擎的工作過(guò)程中沒(méi)有遠(yuǎn)程調(diào)用,節(jié)約了用于遠(yuǎn)程調(diào)用的網(wǎng)絡(luò)通信開(kāi)銷(xiāo);同時(shí),本發(fā)明可以充分利用客戶(hù)端的計(jì)算資源,降低了服務(wù)器的運(yùn)算壓力;另外,工作流引擎對(duì)于工作流也即應(yīng)用來(lái)說(shuō)是不可見(jiàn)的,每個(gè)工作流節(jié)點(diǎn)均可以獨(dú)立運(yùn)行,可以為流程靈活變更創(chuàng)造條件。
      [0057]參見(jiàn)圖6所示,本發(fā)明實(shí)施例中提供的工作流引擎的實(shí)現(xiàn)方法實(shí)施例,可以包括以下步驟:
      [0058]步驟601:工作流引擎讀取流程配置文件,解析流程配置文件中的流程定義模型從而生成流程執(zhí)行控制器執(zhí)行的流程指令,工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的瀏覽器內(nèi)加載運(yùn)行。
      [0059]在本發(fā)明的一些實(shí)施例中,工作流引擎是基于Silverlight技術(shù)實(shí)現(xiàn)的,流程配置文件為可擴(kuò)展標(biāo)記語(yǔ)言XML文件。
      [0060]工作流引擎需要讀取流程配置文件中的流程定義模型,也就是加載配置文件,配置文件一般保存在Web服務(wù)器上,需要由工作流引擎將其下載到客戶(hù)端。
      [0061]也就是說(shuō),在本發(fā)明的一些實(shí)施例中,讀取流程配置文件的具體實(shí)現(xiàn)可以包括:根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件。
      [0062]在具體實(shí)現(xiàn)中,讀取流程配置文件,解析流程配置文件中的流程定義模型從而生成流程執(zhí)行控制器執(zhí)行的流程指令可以由流程解析器實(shí)現(xiàn)。
      [0063]在解析的過(guò)程中,流程解析器會(huì)生成一系列的對(duì)象,例如流程中定義的公共變量以及邏輯運(yùn)算表達(dá)式等都會(huì)轉(zhuǎn)換成內(nèi)存對(duì)象,可以直觀地將這些內(nèi)存對(duì)象看作流程指令,因?yàn)樗鼈兌紝?shí)現(xiàn)了特定的接口方法,可以被工作流引擎中的流程控制器調(diào)用執(zhí)行。
      [0064]在本發(fā)明的一些實(shí)施例中,流程配置文件中的流程定義模型可以包括公共變量、每個(gè)工作流節(jié)點(diǎn)的初始化邏輯、運(yùn)算邏輯表達(dá)式以及跳轉(zhuǎn)條件。
      [0065]一個(gè)工作流節(jié)點(diǎn)可以對(duì)應(yīng)一個(gè)業(yè)務(wù)。根據(jù)流程定義模型流程執(zhí)行控制器在執(zhí)行一個(gè)工作流節(jié)點(diǎn)時(shí),有三個(gè)方面的工作:首先,加載業(yè)務(wù)對(duì)象,執(zhí)行特定的初始化邏輯;其次,在業(yè)務(wù)運(yùn)行結(jié)束或業(yè)務(wù)對(duì)象關(guān)閉時(shí),執(zhí)行本工作流節(jié)點(diǎn)的運(yùn)算邏輯;最后,根據(jù)條件判斷的結(jié)果,進(jìn)行下一節(jié)點(diǎn)的跳轉(zhuǎn)。為了支持在工作流流程中實(shí)現(xiàn)一些邏輯,在流程定義模型中增加了公共變量聲明,這些公共變量對(duì)所有的工作流節(jié)點(diǎn)都是可見(jiàn)的,可通過(guò)公共變量不同工作流節(jié)點(diǎn)之間傳遞信息。具體可以參見(jiàn)本實(shí)施例中步驟602-604所示。
      [0066]步驟602:根據(jù)流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯。
      [0067]流程執(zhí)行控制器從第一個(gè)工作流節(jié)點(diǎn)開(kāi)始加載該工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)對(duì)象,并執(zhí)行當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯,例如包括訂閱業(yè)務(wù)結(jié)束時(shí)的相關(guān)事件。一般地,初始化邏輯還可以包括設(shè)置業(yè)務(wù)對(duì)象的一些public屬性等。
      [0068]步驟603:在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算。
      [0069]在初始化之后,業(yè)務(wù)可以進(jìn)入正常的運(yùn)行狀態(tài),展示業(yè)務(wù)界面、相應(yīng)用戶(hù)操作等,在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,可以執(zhí)行邏輯運(yùn)算表達(dá)式,通常是對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)做一些分析處理。
      [0070]步驟604:對(duì)當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,判斷是否匹配到下一工作流節(jié)點(diǎn),如果是,則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),返回步驟602,如果否,則當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則結(jié)束流程,也即退出工作流引擎。
      [0071]也就是說(shuō),流程執(zhí)行控制器執(zhí)行條件運(yùn)算邏輯,并根據(jù)運(yùn)算結(jié)果進(jìn)行路徑判斷,也即對(duì)當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,找到下一個(gè)工作流節(jié)點(diǎn)。如果當(dāng)前工作流節(jié)點(diǎn)是流程結(jié)束節(jié)點(diǎn),則結(jié)束流程,流程引擎退出,如果成功匹配到下一個(gè)工作流節(jié)點(diǎn),則返回執(zhí)行加載下一個(gè)工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      [0072]另外,在本發(fā)明的一些實(shí)施例中,將工作流引擎的接口封裝在業(yè)務(wù)基類(lèi)中,以使工作流弓I擎的接口繼承到各個(gè)工作流節(jié)點(diǎn)中。
      [0073]需要注意的是,工作流引擎的設(shè)計(jì)與業(yè)務(wù)的設(shè)計(jì)有很好的相互配合,以至于開(kāi)發(fā)交易的人無(wú)需為支持工作流作任何額外的工作。這里,需要利用面向?qū)ο蠹夹g(shù)中“封裝”、“繼承”等特性,在業(yè)務(wù)的基類(lèi)中封裝了對(duì)工作流引擎接口,例如業(yè)務(wù)初始化、關(guān)閉事件等接口,這些接口會(huì)自動(dòng)繼承到具體的業(yè)務(wù)類(lèi)中,從而使工作流引擎的接口可以繼承到各個(gè)工作流節(jié)點(diǎn)中。
      [0074]這樣,本發(fā)明實(shí)施例中提供的工作流引擎直接運(yùn)行在Web應(yīng)用的客戶(hù)端上,實(shí)現(xiàn)了流程控制、節(jié)點(diǎn)調(diào)用、條件判斷等輕量級(jí)功能,無(wú)需依賴(lài)單獨(dú)的流程服務(wù)器,在工作流引擎的工作過(guò)程中沒(méi)有遠(yuǎn)程調(diào)用,節(jié)約了用于遠(yuǎn)程調(diào)用的網(wǎng)絡(luò)通信開(kāi)銷(xiāo);同時(shí),本發(fā)明可以充分利用客戶(hù)端的計(jì)算資源,降低了服務(wù)器的運(yùn)算壓力;另外,工作流引擎對(duì)于工作流也即應(yīng)用來(lái)說(shuō)是不可見(jiàn)的,每個(gè)工作流節(jié)點(diǎn)均可以獨(dú)立運(yùn)行,可以為流程靈活變更創(chuàng)造條件。
      [0075]需要說(shuō)明的是,本說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的系統(tǒng)或裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。
      [0076]還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
      [0077]結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、CD-ROM、或【技術(shù)領(lǐng)域】?jī)?nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。 [0078]對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。
      【權(quán)利要求】
      1.一種工作流引擎,其特征在于,所述工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的所述瀏覽器內(nèi)加載運(yùn)行,所述工作流引擎包括: 流程解析器以及流程執(zhí)行控制器; 所述流程解析器,用于讀取流程配置文件,解析所述流程配置文件中的流程定義模型從而生成所述流程執(zhí)行控制器執(zhí)行的流程指令; 所述流程執(zhí)行控制器,用于根據(jù)所述流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行所述當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯;在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)所述當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算;對(duì)所述當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,如果所述當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則所述工作流引擎結(jié)束流程,如果匹配到下一工作流節(jié)點(diǎn),則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),繼續(xù)執(zhí)行加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      2.根據(jù)權(quán)利要求1所述的工作流引擎,其特征在于,所述流程解析器包括: 讀取子模塊,用于根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件; 解析子單元,用于解析所述流程配置文件中包括的流程定義模型從而生成所述流程執(zhí)行控制器執(zhí)行的流程指令。
      3.根據(jù)權(quán)利要求1所述的工作流引擎,其特征在于,所述流程配置文件中的流程定義模型包括公共變量、每個(gè)工作流節(jié)點(diǎn)的初始`化邏輯、運(yùn)算邏輯表達(dá)式以及跳轉(zhuǎn)條件。
      4.根據(jù)權(quán)利要求1所述的工作流引擎,其特征在于,所述工作流引擎基于Silverlight技術(shù)實(shí)現(xiàn),所述流程配置文件為可擴(kuò)展標(biāo)記語(yǔ)言XML文件。
      5.根據(jù)權(quán)利要求1所述的工作流引擎,其特征在于,將所述工作流引擎的接口封裝在業(yè)務(wù)基類(lèi)中,以使所述工作流引擎的接口繼承到各個(gè)工作流節(jié)點(diǎn)中。
      6.一種工作流引擎的實(shí)現(xiàn)方法,其特征在于,所述方法包括: 工作流引擎讀取流程配置文件,解析所述流程配置文件中的流程定義模型從而生成所述流程執(zhí)行控制器執(zhí)行的流程指令;所述工作流引擎通過(guò)瀏覽器從網(wǎng)絡(luò)服務(wù)器下載到客戶(hù)端的所述瀏覽器內(nèi)加載運(yùn)行; 根據(jù)所述流程指令,加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象,執(zhí)行所述當(dāng)前工作流節(jié)點(diǎn)的初始化邏輯; 在當(dāng)前工作流節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)運(yùn)行結(jié)束后,根據(jù)所述當(dāng)前工作流節(jié)點(diǎn)的運(yùn)算邏輯表達(dá)式,對(duì)業(yè)務(wù)運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行計(jì)算; 對(duì)所述當(dāng)前工作流節(jié)點(diǎn)的跳轉(zhuǎn)條件進(jìn)行判斷,如果所述當(dāng)前工作流節(jié)點(diǎn)為流程結(jié)束節(jié)點(diǎn),則結(jié)束流程,如果匹配到下一工作流節(jié)點(diǎn),則將下一工作流節(jié)點(diǎn)確定為當(dāng)前工作流節(jié)點(diǎn),繼續(xù)執(zhí)行加載當(dāng)前工作流節(jié)點(diǎn)的業(yè)務(wù)對(duì)象及后續(xù)步驟。
      7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述讀取流程配置文件,包括: 根據(jù)工作流請(qǐng)求,從網(wǎng)絡(luò)服務(wù)器上下載并讀取對(duì)應(yīng)的流程配置文件。
      8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述流程配置文件中的流程定義模型包括公共變量、每個(gè)工作流節(jié)點(diǎn)的初始化邏輯、運(yùn)算邏輯表達(dá)式以及跳轉(zhuǎn)條件。
      9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述工作流引擎基于Silverlight技術(shù)實(shí)現(xiàn),所述流程配置文件為可擴(kuò)展標(biāo)記語(yǔ)言XML文件。
      10.根據(jù)權(quán)利要求6所述的方法,其特征在于,將所述工作流引擎的接口封裝在業(yè)務(wù)基類(lèi)中, 以使所述工作流引擎的接口繼承到各個(gè)工作流節(jié)點(diǎn)中。
      【文檔編號(hào)】G06F9/445GK103617066SQ201310690266
      【公開(kāi)日】2014年3月5日 申請(qǐng)日期:2013年12月16日 優(yōu)先權(quán)日:2013年12月16日
      【發(fā)明者】應(yīng)俊, 操先良, 劉利峰, 黃強(qiáng), 朱坤 申請(qǐng)人:中國(guó)農(nóng)業(yè)銀行股份有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1