亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        BPEL文檔基于DAG自動(dòng)生成框架的研究與實(shí)現(xiàn)

        2016-06-08 05:48:33蘇厚勤
        關(guān)鍵詞:服務(wù)模型

        陳 龍 蘇厚勤

        (東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 上海 200051)

        ?

        BPEL文檔基于DAG自動(dòng)生成框架的研究與實(shí)現(xiàn)

        陳龍?zhí)K厚勤

        (東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院上海 200051)

        摘要針對(duì)目前服務(wù)之間組合的復(fù)雜性,提出一種基于有向無環(huán)圖的業(yè)務(wù)流程執(zhí)行語言文檔生成框架。通過對(duì)框架模型的解析,提出一種能夠自動(dòng)生成服務(wù)組合所需各種文檔的改進(jìn)框架及其算法,有效地隱藏了專業(yè)的業(yè)務(wù)流程執(zhí)行語言知識(shí)和繁瑣的服務(wù)組合流程。實(shí)踐表明,該框架簡單、易用,不僅能夠清楚地反應(yīng)服務(wù)組合之間的流程,而且還不需要BPEL專業(yè)方面的知識(shí),減少了服務(wù)組合的工作量。

        關(guān)鍵詞業(yè)務(wù)流程執(zhí)行語言Web服務(wù)服務(wù)組合有向非循環(huán)圖

        0引言

        由于Web服務(wù)具有跨平臺(tái)、跨語言和低耦合等應(yīng)用特性,使得Web服務(wù)技術(shù)已經(jīng)成為解決企業(yè)集成、組件復(fù)用問題的一種重要方法[1]。實(shí)際業(yè)務(wù)環(huán)境中,單個(gè)Web 服務(wù)的功能是特定的,為了滿足快速發(fā)展的業(yè)務(wù)需求,需要對(duì)Web 服務(wù)進(jìn)行組合。2002年7月在BEA、IBM和微軟的努力下,發(fā)布了業(yè)務(wù)流程執(zhí)行語言(BPEL)來解決Web 服務(wù)集成問題。在實(shí)踐中一般使用BPEL設(shè)計(jì)器來編寫B(tài)PEL文檔。目前市場(chǎng)上有許多BPEL設(shè)計(jì)器,如Eclipse 的BPEL插件、Oracle的BPEL Process Manager以及Active Endpoints的 Active BPEL等[2]。這些設(shè)計(jì)器都是圖形化操作,通過手工拖動(dòng)組件設(shè)計(jì)業(yè)務(wù)流程,生成Web 服務(wù)組合需要的文檔。但是使用這些BPEL設(shè)計(jì)器需要相關(guān)的Web服務(wù)和BPEL知識(shí),并且創(chuàng)建組合服務(wù)的過程非常繁瑣。目前針對(duì)Web服務(wù)組合建模并自動(dòng)生成BPEL的研究已有一定的成果,如文獻(xiàn)[3,4]采用的是Petri 網(wǎng)模型來對(duì)服務(wù)組合建模。文獻(xiàn)[5]使用有限自動(dòng)機(jī)來對(duì)服務(wù)組合建模。但是這兩種建模方式可讀性比較差。有向圖模型的建模過程簡單并且模型流程清楚。文獻(xiàn)[2]給出了一種基于有向無環(huán)圖的自動(dòng)生成組合文檔的原型框架,但是此原型框架沒有控制流程且組合的活動(dòng)不能并行執(zhí)行。由于在BPEL2.0規(guī)范中有標(biāo)簽支持流程控制和并行執(zhí)行,本文在該原型框架的基礎(chǔ)上,提出一種新的組合框架,并對(duì)生成算法加以改進(jìn),解決了原框架生成的組合文檔沒有控制流程和組合活動(dòng)不能并行執(zhí)行的問題。

        1BPEL元模型

        BPEL是一種使用XML編寫的業(yè)務(wù)流程執(zhí)行語言,主要用來對(duì)Web 服務(wù)進(jìn)行編制,組合成大粒度的服務(wù)以滿足復(fù)雜的業(yè)務(wù)需求[6]。BPEL定義了一些元素標(biāo)簽用來描述服務(wù)組合流程的消息流、控制流、數(shù)據(jù)流和伙伴會(huì)話的通道。消息流部分使用、三個(gè)基本標(biāo)簽支持接收、響應(yīng)和調(diào)用消息活動(dòng),以便與其他服務(wù)進(jìn)行通信??刂屏靼?Sequence>、等結(jié)構(gòu)化活動(dòng)標(biāo)簽,能夠用于控制流程的串行和并行執(zhí)行,以及選擇狀態(tài)轉(zhuǎn)移活動(dòng)。標(biāo)簽可以對(duì)流程中的數(shù)據(jù)進(jìn)行拷貝和更新活動(dòng)。標(biāo)簽用于指定服務(wù)組合時(shí)角色和提供的接口活動(dòng),從而建立對(duì)等的會(huì)話信道[7]。BPEL還有異常和故障處理的標(biāo)簽元素等,限于篇幅不再贅述。圖1是關(guān)于BPEL2.0元模型的UML視圖[7]。

        圖1 BPEL 2.0元模型的UML視圖

        2Web服務(wù)組合工作流建模

        DAG模型的建模過程簡單、描述內(nèi)容豐富,廣泛應(yīng)用于描述業(yè)務(wù)流程,已成為流程工業(yè)系統(tǒng)建模的主要建模方法之一[8]。鑒于DAG建模的簡單性,采用DAG對(duì)服務(wù)組合工作流進(jìn)行建模,并稱這種模型為服務(wù)組合DAG(SCDAG)。一個(gè)SCDAG主要由3部分組成:開始和結(jié)束節(jié)點(diǎn)、伙伴節(jié)點(diǎn)以及節(jié)點(diǎn)之間的連接。

        2.1開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)

        開始節(jié)點(diǎn)是流程的開始,用來接收整個(gè)流程的輸入?yún)?shù),并說明開始調(diào)用流程,對(duì)應(yīng)BPEL文檔中的標(biāo)簽。結(jié)束節(jié)點(diǎn)一般接收整個(gè)流程的輸出參數(shù),并表明流程的結(jié)束,對(duì)應(yīng)BPEL文檔中的標(biāo)簽。在一個(gè)SCDAG中只有一個(gè)開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn),分別用帶有字符S、E的方形表示,如圖2所示。

        圖2 SCDAG模型圖

        2.2伙伴節(jié)點(diǎn)

        伙伴節(jié)點(diǎn)和BPEL文檔中的標(biāo)簽對(duì)應(yīng)的,用來調(diào)用伙伴服務(wù),使用帶圈內(nèi)的小寫字母表示,如圖2所示。

        2.3連接

        連接是用來連接節(jié)點(diǎn)之間的弧,并且弧是有方向的?;〉姆较虮硎净顒?dòng)調(diào)用的順序,并且也表示一種依賴關(guān)系,只有當(dāng)該節(jié)點(diǎn)父節(jié)點(diǎn)全部執(zhí)行完,該節(jié)點(diǎn)才能被調(diào)用。一般在連接中會(huì)傳遞一些服務(wù)調(diào)用的變量參數(shù)和一些條件選擇信息。節(jié)點(diǎn)之間是通過連接串連一起的,節(jié)點(diǎn)間是選擇執(zhí)行還是并行執(zhí)行都可以通過連接來傳遞。SCDAG中有3種類型的連接,分別是順序連接、并行連接和帶有條件選擇的連接。順序連接只是表明節(jié)點(diǎn)之間的依賴關(guān)系。并行連接和條件選擇連接除了有依賴關(guān)系還有其他特性。并行連接表明有唯一相同父節(jié)點(diǎn)的節(jié)點(diǎn)可以并行執(zhí)行,如圖3所示的?節(jié)點(diǎn)有兩個(gè)并行執(zhí)行節(jié)點(diǎn)?和。條件選擇連接和高級(jí)語言中的選擇判斷語句相似,只有條件滿足時(shí),被指向的分支才能夠執(zhí)行。其中順序連接和并行連接使用實(shí)線有向弧表示,在代碼生成時(shí),通過模型上下文來區(qū)分是哪種連接。條件選擇連接使用虛線有向弧表示,如圖2所示。

        圖3 SCDAG并行模型圖

        3Web服務(wù)組合文檔的生成

        Web服務(wù)組合時(shí)會(huì)涉及到3個(gè)文檔,分別是Web服務(wù)描述語言WSDL(Web Services Description Language)文檔、BPEL文檔、Deploy發(fā)布文檔。其中WSDL是Web服務(wù)的描述文檔,為用戶提供詳細(xì)的接口說明書。BPEL文檔是描述Web服務(wù)組合之間業(yè)務(wù)流程的文檔。Deploy發(fā)布文檔用來發(fā)布新集成的服務(wù)。由于這3個(gè)文檔都使用XML語言描述,可以采用開源的XML解析框架DOM4J來生成和解析這些XML文檔。其中WSDL文檔和Deploy文檔的結(jié)構(gòu)比較固定且內(nèi)容簡單,容易生成,這里不再贅述。

        3.1生成BPEL文檔算法選擇

        對(duì)于有向無環(huán)圖的遍歷方法,主要有廣度優(yōu)先遍歷和深度優(yōu)先遍歷。但是在SCDAG模型中,節(jié)點(diǎn)之間是有依賴的。如圖2所示,c節(jié)點(diǎn)指向e節(jié)點(diǎn),那么e節(jié)點(diǎn)就依賴c節(jié)點(diǎn)。如果想要遍歷e節(jié)點(diǎn),必須當(dāng)e的前驅(qū)節(jié)點(diǎn)c、d、b都被執(zhí)行后才能遍歷e節(jié)點(diǎn)。所以一般的廣度和深度優(yōu)先遍歷不能滿足對(duì)SCDGA模型的遍歷。對(duì)于這種有依賴關(guān)系的遍歷,可以采用基于一種依賴的遍歷方法,具體在3.3節(jié)予以描述。

        3.2并行和條件選擇設(shè)計(jì)

        BPEL使用、、等結(jié)構(gòu)化活動(dòng)來控制管理整個(gè)流程并指定活動(dòng)的執(zhí)行順序。在SCDGA中,有唯一相同父節(jié)點(diǎn)的節(jié)點(diǎn)可以并行執(zhí)行。如圖3所示,節(jié)點(diǎn)a和節(jié)點(diǎn)b是兄弟節(jié)點(diǎn),并且節(jié)點(diǎn)a和節(jié)點(diǎn)b只依賴節(jié)點(diǎn)S,那么節(jié)點(diǎn)a、b可以并行運(yùn)行。對(duì)于節(jié)點(diǎn)e,它依賴節(jié)點(diǎn)a和節(jié)點(diǎn)b,所以節(jié)點(diǎn)e不能和節(jié)點(diǎn)c、節(jié)點(diǎn)d并行運(yùn)行。而節(jié)點(diǎn)c和節(jié)點(diǎn)d可以在節(jié)點(diǎn)a流程下嵌套進(jìn)行并行執(zhí)行。對(duì)于節(jié)點(diǎn)e,則會(huì)跳出標(biāo)簽,在標(biāo)簽之后生成對(duì)節(jié)點(diǎn)e的調(diào)用。

        在SCDGA中,使用條件選擇連接控制活動(dòng)分支的選擇。每一個(gè)條件選擇連接都有一個(gè)判斷條件,當(dāng)條件為真時(shí),則會(huì)執(zhí)行該分支。標(biāo)簽里有多個(gè)分支,當(dāng)分支的輸出參數(shù)作為另一個(gè)伙伴節(jié)點(diǎn)的輸入?yún)?shù)時(shí),會(huì)使得伙伴節(jié)點(diǎn)的輸入?yún)?shù)不知來自哪一分支。如圖2所示,伙伴節(jié)點(diǎn)f的中的一個(gè)輸入?yún)?shù)可能來自節(jié)點(diǎn)c或節(jié)點(diǎn)d。這里采用一個(gè)節(jié)點(diǎn)執(zhí)行完后立即對(duì)它出度節(jié)點(diǎn)賦值。

        3.3整體設(shè)計(jì)和算法實(shí)現(xiàn)

        如果把BPEL文檔中的服務(wù)之間調(diào)用看成一個(gè)整體,那么BPEL文檔結(jié)構(gòu)是比較固定的,可以采用生成器模式來設(shè)計(jì)。圖4是框架的整體實(shí)現(xiàn),BpelBulider定義了BPEL文檔主要結(jié)構(gòu)的接口,BpelBuliderImpl是接口實(shí)現(xiàn)。Edge表示連接,Vertex表示伙伴節(jié)點(diǎn),Graph表示SCDAG模型。

        圖4 框架實(shí)現(xiàn)類視圖

        在對(duì)SCDAG模型進(jìn)行遍歷生成BPEL文檔前,應(yīng)該保證SCDAG是一個(gè)無環(huán)的并且沒有孤立節(jié)點(diǎn)的有向圖,這兩點(diǎn)也比較容易實(shí)現(xiàn)。在DAG中,若從節(jié)點(diǎn)i到節(jié)點(diǎn)j有一條有向路徑,那么就說節(jié)點(diǎn)j依賴節(jié)點(diǎn)i,i是j的入度節(jié)點(diǎn),j是i的出度節(jié)點(diǎn)。在對(duì)DAG進(jìn)行依賴遍歷時(shí),如果遍歷i節(jié)點(diǎn),必須把i的依賴節(jié)點(diǎn)全部遍歷后才能遍歷i節(jié)點(diǎn)。由于BPEL標(biāo)簽可以嵌套,是有層次結(jié)構(gòu)的,那么在生成BPEL標(biāo)簽時(shí)也是分層次。如果節(jié)點(diǎn)i有一個(gè)出度節(jié)點(diǎn)j,那么節(jié)點(diǎn)i和節(jié)點(diǎn)j生成的BPEL標(biāo)簽是同一層次;如果節(jié)點(diǎn)i有多個(gè)出度,那么出度節(jié)點(diǎn)的生成標(biāo)簽在i后面的標(biāo)簽內(nèi)部;如果i節(jié)點(diǎn)有多個(gè)依賴節(jié)點(diǎn),那么節(jié)點(diǎn)i生成的標(biāo)簽和依賴節(jié)點(diǎn)的最近公共父節(jié)點(diǎn)在同一個(gè)層次,這種情況下要先找到依賴節(jié)點(diǎn)最近父節(jié)點(diǎn)。下面是依賴遍歷算法和依賴算法中會(huì)使用的最近公共父節(jié)點(diǎn)算法的偽代碼。

        算法1依賴遍歷算法

        輸入?yún)?shù)v表示當(dāng)前要遍歷的節(jié)點(diǎn),f是節(jié)點(diǎn)v的一個(gè)入度節(jié)點(diǎn),e當(dāng)前XML標(biāo)簽。

        void genBpel(v,f, e)

        {

        if(v的入度節(jié)點(diǎn)還有沒訪問的) return;

        v.visit = true;

        //標(biāo)記當(dāng)前節(jié)點(diǎn)已訪問

        type = 節(jié)點(diǎn)f到節(jié)點(diǎn)v的連接類型;

        if(v有多個(gè)入度節(jié)點(diǎn))

        {

        commFather=lastCommonFather(v);

        //算法下面給出

        e = 獲取節(jié)點(diǎn)commFather對(duì)應(yīng)同一層級(jí)的XML標(biāo)簽;

        }

        if(type == IF連接)

        e = 生成BPEL的IF標(biāo)簽;

        else If(type == Flow類型連接)

        e = 生成BPEL的Flow標(biāo)簽;

        生成節(jié)點(diǎn)v的活動(dòng)調(diào)用標(biāo)簽invoke;

        For(v的出度節(jié)點(diǎn)v1…vn)

        {

        生成節(jié)點(diǎn)v到出度節(jié)點(diǎn)vi的參數(shù)賦值標(biāo)簽Assign;

        genBpel(vi,v,e);

        } }

        算法2最近公共父節(jié)點(diǎn)算法

        在調(diào)用算法前,先把v的入度節(jié)點(diǎn)放入集合set中。對(duì)DAG進(jìn)行深度優(yōu)先遍歷,如果節(jié)點(diǎn)在set集合中則返回,當(dāng)遞歸節(jié)點(diǎn)w的出度節(jié)點(diǎn)有返回多個(gè)不同的值時(shí),則說明要找的節(jié)點(diǎn)分布在以w出度節(jié)點(diǎn)為根子圖中,這時(shí)遞歸函數(shù)返回w。輸入?yún)?shù)root為DAG根節(jié)點(diǎn)S。

        Node lastCommonFather(root)

        {

        If(root == null) return null;

        If(root 在集合set中)

        {

        return root;

        }

        node = v;

        int cnt = 0;

        for(root出度節(jié)點(diǎn)child1…childn)

        {

        nodei = lastCommonFather(childi);

        if(nodei != null&& node !=nodei)

        {

        cnt ++;

        //簡單記錄nodei是否多于2個(gè)

        node = nodei;

        }

        }

        If(cnt >=2) return root;

        Else if(cnt == 1) return node;

        Else return null;

        }

        4原型系統(tǒng)搭建及驗(yàn)證

        用戶通過使用UML建模工具Enterprise Architect建立服務(wù)組合流程,并生成相應(yīng)的XML文檔,系統(tǒng)對(duì)XML文檔解析建立SCDAG模型。然后系統(tǒng)再讀取伙伴服務(wù)的WSDL文檔,提取相關(guān)信息生成組合服務(wù)的WSDL文檔,結(jié)合SCDAG模型生成BPEL文檔和服務(wù)發(fā)布文檔。把生成的文檔放入BPEL引擎中進(jìn)行發(fā)布。系統(tǒng)使用的是Apache 基金下的開源項(xiàng)目Apache ODE作為BPEL執(zhí)行引擎。

        圖5 服務(wù)組合工作流程圖

        當(dāng)把生成的文檔在ODE引擎中發(fā)布后,可以調(diào)用新的組合服務(wù)。使用SoapUI對(duì)組合服務(wù)進(jìn)行測(cè)試,圖6是調(diào)用組合服務(wù)的往返soap消息,其中左邊是發(fā)送的soap消息,右邊是返回的soap消息。

        圖6 服務(wù)調(diào)用時(shí)的往返SOAP消息

        5結(jié)語

        針對(duì)目前服務(wù)之間組合的復(fù)雜性,提出了一種基于DGA的BPEL文檔生成框架。通過對(duì)框架模型的解析,能夠自動(dòng)生成服務(wù)組合時(shí)所需要的各種文檔,有效地隱藏了專業(yè)的BPEL知識(shí)和繁瑣的服務(wù)組合流程。實(shí)踐表明,該框架簡單易用,不僅能夠清楚地反應(yīng)服務(wù)組合之間的流程而且還不需要BPEL專業(yè)方面的知識(shí),減少了服務(wù)組合的工作量。

        實(shí)驗(yàn)驗(yàn)證表明該框架是可行的,但是該框架還不夠完善。雖然框架解決了伙伴服務(wù)的并行調(diào)用,但是沒有把融入并行處理中。框架還應(yīng)該增加對(duì)BPEL的故障異常處理的支持。

        參考文獻(xiàn)

        [1] 岳昆,王曉玲,周傲英.Web服務(wù)核心支撐技術(shù):研究綜述[J].軟件學(xué)報(bào),2004,15(3):428-442.

        [2] 崔福東,喬彥友,常原飛.基于BPEL的Web服務(wù)快速組合框架[J].計(jì)算機(jī)工程,2010,36(7):262-264.

        [3] 劉賢,李建華,李向,等.基于擴(kuò)展同步Petri網(wǎng)的BPEL建模[J].計(jì)算機(jī)工程,2011,37(2):57-60.

        [4] 杜彥華,范玉順,李喜彤.基于模塊化可達(dá)圖的服務(wù)組合驗(yàn)證及BPEL代碼生成[J].軟件學(xué)報(bào),2010,21(8):1810-1819.

        [5] 于守健,李衛(wèi)民,吳國文,等.BPEL中基于有限狀態(tài)自動(dòng)機(jī)的Web服務(wù)自動(dòng)組合[J].小型微型計(jì)算機(jī)系統(tǒng),2007,28(4):742-747.

        [6] 丁兆青,董傳良.基于SOA的分布式應(yīng)用集成研究[J].計(jì)算機(jī)工程,2007(10):246-248.

        [7] 鐵威,黃志球,王進(jìn).基于BPEL的RESTful Web服務(wù)異步交互及組合研究[J].計(jì)算機(jī)工程與科學(xué),2013,35(4):29-36.

        [8] 韓中,高建民,陳富民,等.面向?qū)ο蟮牧鞒坦I(yè)系統(tǒng)有向無環(huán)圖建模[J].計(jì)算機(jī)工程,2009,35(8):23-25.

        RESEARCH AND IMPLEMENTATION OF DAG-BASED AUTOMATIC BPEL DOCUMENT GENERATION FRAMEWORK

        Chen LongSu Houqin

        (SchoolofComputerScienceandTechnology,DonghuaUniversity,Shanghai200051,China)

        AbstractWe proposed a DAG-based framework of Business Process Execution Language document generation for the complexities of compositions among current services. By resolving the framework model, we presented an improved framework, which can automatically generate various documents required for service compositions, and its algorithm, the professional knowledge of Business Process Execution Language and complex service composition processes are effectively hidden. Practice indicated that the framework was simple and easy to apply, the process among service compositions could be clearly reflected, and there was no need of professional knowledge of Business Process Execution Language as well, this reduced the work quantity for service compositions.

        KeywordsBusiness Process Execution Language (BPEL)Web serviceService compositionDirected acyclic graph(DAG)

        收稿日期:2014-11-14。陳龍,碩士生,主研領(lǐng)域:Web服務(wù)。蘇厚勤,教授級(jí)高工。

        中圖分類號(hào)TP393

        文獻(xiàn)標(biāo)識(shí)碼A

        DOI:10.3969/j.issn.1000-386x.2016.05.022

        猜你喜歡
        服務(wù)模型
        一半模型
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        招行30年:從“滿意服務(wù)”到“感動(dòng)服務(wù)”
        商周刊(2017年9期)2017-08-22 02:57:56
        3D打印中的模型分割與打包
        黄色视频在线免费观看 | 精品国产av无码一道| 一区二区视频网站在线观看| 视频在线观看国产自拍| 久久久无码人妻精品无码| 欧美成人三级一区二区在线观看| 中文字幕乱码亚洲无线| 手机久草视频福利在线观看| 国产精品久久777777| 麻豆91免费视频| 国产美女主播福利一区| 蜜桃视频免费进入观看| 人人妻人人澡人人爽精品欧美| 亚洲乱码一区二区三区成人小说| 精品久久人妻一区二区 | 四虎成人精品无码永久在线| 亚洲av第二区国产精品| 丰满少妇被猛烈进入高清播放| 国产免费无码一区二区三区| 国产真实乱XXXⅩ视频| 国产精品久久婷婷免费观看| 性色av免费网站| 国产乱淫视频| 国产精品天堂在线观看| 精品无码一区二区三区爱欲| 国产va免费精品观看| 精品国产自拍在线视频| 久久精品日本不卡91| 六月婷婷久香在线视频| 久久天堂av色综合| 日韩精品中文字幕第二页| 永久黄网站色视频免费看| 国产精品18禁久久久久久久久| 国产精品久久熟女吞精| 久久午夜福利无码1000合集| 亚洲欧洲日产国码高潮αv| 五月激情狠狠开心五月| 日韩熟女系列中文字幕| 国产乱色精品成人免费视频| 亚洲国产AⅤ精品一区二区不卡| 亚洲国产综合在线亚洲区亚洲av|