




已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 業(yè)務(wù)流程語(yǔ)言業(yè)務(wù)流程語(yǔ)言 BPEL 編程思想及架構(gòu)編程思想及架構(gòu) 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 2 頁(yè) 修訂歷史記錄修訂歷史記錄 1 概述概述 4 2 業(yè)務(wù)流程的慨念及業(yè)務(wù)流程的慨念及 BPEL 簡(jiǎn)史簡(jiǎn)史 4 2 1什么是業(yè)務(wù)流程 4 2 2BPEL 簡(jiǎn)史 5 3 BPEL 的基本特性的基本特性 6 4 BPEL 的基本思想的基本思想 6 4 1用 JAVA實(shí)例模擬 BPEL 的創(chuàng)建過(guò)程 7 4 2用實(shí)例概述 BPEL 的創(chuàng)建過(guò)程 11 5 BPEL 模型基礎(chǔ)模型基礎(chǔ) 16 6 BPEL 的基本活動(dòng)介紹的基本活動(dòng)介紹 20 6 1RECEIVE 接收 REPLY 回答 20 6 2INVOKE請(qǐng)求 20 6 3ASSIGN賦值 21 6 4WAIT等待 21 6 5SEQUENCE順序 22 6 6FLOW流程 22 6 7SWITCH分支 22 6 8WHILE WHILE循環(huán) 23 6 9PICK 選取 在 WPS 中被稱為 RECEIVE CHOICE 23 7 BPEL 的異常管理的異常管理 24 7 1FAULTHANDLERS CATCH及CATCHALL元素 24 8 BPEL 事務(wù)與補(bǔ)償機(jī)制事務(wù)與補(bǔ)償機(jī)制 25 9 BPEL 抽象流程和開(kāi)發(fā)簡(jiǎn)介抽象流程和開(kāi)發(fā)簡(jiǎn)介 27 9 1抽象流程 27 9 2BPEL 開(kāi)發(fā) 28 10 房屋貸款房屋貸款 BPEL 實(shí)例詳解實(shí)例詳解 28 10 1房屋貸款案例介紹 29 10 1 1案例的由來(lái) 29 10 1 2業(yè)務(wù)現(xiàn)狀 29 10 1 3業(yè)務(wù)需求 30 10 1 4實(shí)現(xiàn)流程 30 10 2定義 BPEL 流程的接口 WSDL 31 10 3外部服務(wù)合作伙伴的 WSDL 34 10 4定義合作伙伴的鏈接 40 10 5聲明變量 42 10 6聲明異常處理 43 10 7開(kāi)發(fā) BPEL 流程 44 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 3 頁(yè) 11 BPEL 過(guò)程組件過(guò)程組件 50 11 1合作伙伴連接 PARTNER LINKS 51 11 2變量 VARIABLES 52 11 3相關(guān)集 CORRELATION SETS 53 11 4錯(cuò)誤處理 FAULT HANDLERS 57 11 5補(bǔ)償處理 COMPENSATION HANDLERS 58 12 BPEL 活動(dòng)淺析活動(dòng)淺析 60 12 1 RECEIVE REPLY 接收 恢復(fù) 61 12 2 ASSIGN INVOKE 賦值 調(diào)用 62 12 3 CONDITION OTHERWISE 條件 否則 64 12 4 SEQUENCE FLOW 順序 并行 65 12 5 LINK SOURCE TARGET 鏈接 源 目標(biāo) 66 12 6 PICK ONMESSAGE ONALARM 選擇 監(jiān)聽(tīng) 鬧鐘 68 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 4 頁(yè) 1 概述概述 BPEL 是一門用于自動(dòng)化業(yè)務(wù)流程的形式規(guī)約語(yǔ)言 用 XML 文檔寫入 BPEL 中的流程能在 Web 服務(wù)之間以標(biāo)準(zhǔn)化的交互方式得到精心組織 這些流程能夠在任何一個(gè)符合 BPEL 規(guī) 范的平臺(tái)或產(chǎn)品上執(zhí)行 所以 通過(guò)允許顧客們?cè)诟鞣N各樣的創(chuàng)作工具和執(zhí)行 平臺(tái)之間 移動(dòng)這些流程 BPEL 使得他們保護(hù)了他們?cè)诹鞒套詣?dòng)化上的投資 盡管以前想使業(yè)務(wù)流 程定義標(biāo)準(zhǔn)化 但 BPEL 已經(jīng)引起了史無(wú)前例的興趣 而且它 最早在軟件供應(yīng)商中獲得大 量認(rèn)可 BPEL 實(shí)現(xiàn)了抽象的 WSDL 接口的集成 所以它也屬于 SOA 的解決方案之一 2 業(yè)務(wù)流程的慨念及業(yè)務(wù)流程的慨念及 BPEL 簡(jiǎn)史簡(jiǎn)史 2 1 什么是業(yè)務(wù)流程什么是業(yè)務(wù)流程 業(yè)務(wù)流程業(yè)務(wù)流程可 以被定義為一個(gè)由各種不同功能的活動(dòng)相連的一組有相互關(guān)系的任務(wù) 它們依照一定的業(yè)務(wù)邏輯和順序依次執(zhí)行 業(yè)務(wù)流程有起點(diǎn)和終點(diǎn) 而且它們都是可重復(fù) 的 業(yè)務(wù)流程是企業(yè)實(shí)現(xiàn)商務(wù)目標(biāo)的方法 對(duì)于企業(yè)而言 業(yè)務(wù)流程是企業(yè)重要的知識(shí) 資產(chǎn) 是企業(yè)的核心競(jìng)爭(zhēng)力的體現(xiàn) 一個(gè)精心設(shè)計(jì)和執(zhí)行的業(yè)務(wù)流程能夠?yàn)槠髽I(yè)創(chuàng) 造價(jià) 值并節(jié)約成本 在著名作家佛里德曼的獲獎(jiǎng)作品 世界是扁平的 21 世紀(jì)簡(jiǎn)史 THE WORLD IS FLAT A Brief History of the Twenty first Century 一書(shū)中 對(duì)經(jīng)濟(jì)全球化有著精彩 的論述 它描繪了一個(gè)由互聯(lián)網(wǎng) 通信基礎(chǔ)設(shè)施和新型軟件搭建的全球舞臺(tái) 在這個(gè)舞臺(tái) 上 人們能夠以多種方式 分享知識(shí) 勞動(dòng) 娛樂(lè)和發(fā)現(xiàn) 并且創(chuàng)造新的商業(yè)機(jī)會(huì) 佛里 德曼舉例說(shuō) 如今沃爾瑪是美國(guó)最大的公司 然而它什么也不生產(chǎn) 只是建立了這個(gè)非 凡的供應(yīng)環(huán) 節(jié) 從世界各地進(jìn)口非常便宜的商品 并把世界各地的產(chǎn)品送到消費(fèi)者手 里 它是一個(gè)全球組裝線 在經(jīng)濟(jì)全球化的過(guò)程中 企業(yè)的邊界變得模糊 企業(yè)會(huì)將任務(wù)分解為一系列的子任務(wù) 企業(yè)只關(guān)注于自己的核心競(jìng)爭(zhēng)力所在 并將其他工作分包給最合適的人來(lái)完成 企業(yè)需要 通過(guò)業(yè)務(wù)流程將這些片斷有機(jī)地組織在一起 在這里我們可以深刻地認(rèn)識(shí)到業(yè)務(wù)流程對(duì)企 業(yè)的重要性 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 5 頁(yè) 定義業(yè)務(wù)流程并對(duì)其做出文檔所花費(fèi)的時(shí)間和努力是完全值得的 在一個(gè)反映中國(guó)傳 統(tǒng)醫(yī)學(xué)的電視劇中 當(dāng)配置藥劑的時(shí)候 掌柜把自己反鎖在藥房里 只有他會(huì)根據(jù) 秘 方 將不同的藥材調(diào)配成救死扶傷的靈藥 然而只有他一人掌握這個(gè)過(guò)程是非常危險(xiǎn)的 對(duì)于現(xiàn)代企業(yè)來(lái)說(shuō)這更是不可能的 我們不可能只讓配件 制造主任了解企業(yè)的配件制造 知識(shí) 然后讓他每晚獨(dú)自裝配所有的零件 只要定義了配件制造業(yè)務(wù)流程 配件制造工人 可以隨時(shí)來(lái)去 而且任何配件制造工人都可以 隨時(shí)取代另一個(gè)人的工作 這是因?yàn)楣S 里的所有配件制造工人都理解并遵循業(yè)務(wù)流程 我們可以學(xué)習(xí) 改變 評(píng)估 然后再次改 變配件制造業(yè)務(wù)流程 因?yàn)樵摿鞒?對(duì)于每個(gè)人都是可見(jiàn)的 而非局限于配件制造主任 現(xiàn)代業(yè)務(wù)流程管理系統(tǒng)的歷史可以追溯到工作流系統(tǒng) 簡(jiǎn)單地來(lái)講 工作流定義了業(yè) 務(wù)流程中的參與者 Who 所執(zhí)行的工作 What 及何時(shí)執(zhí) 行 When 在企業(yè) IT 環(huán)境中 工作流軟件通常與企業(yè)應(yīng)用集成 Enterprise Application Integration EAI 系統(tǒng)結(jié)合 在一起 成為企業(yè)應(yīng)用的 黏合劑 實(shí)現(xiàn)業(yè)務(wù)流程的自動(dòng)化和流水線化 傳統(tǒng)工作流系統(tǒng)的最大缺陷就是 它們大多采用了專有技術(shù) 這使得業(yè)務(wù)流程與企業(yè) 應(yīng)用的結(jié)合變得非常復(fù)雜 通常需要很長(zhǎng)時(shí)間進(jìn)行部署和實(shí)施 而與 企業(yè)外部系統(tǒng)進(jìn)行 集成則更加困難 無(wú)法適應(yīng)全球化浪潮和互聯(lián)網(wǎng)時(shí)代對(duì)企業(yè)靈活 無(wú)縫集成的需求 人們 開(kāi)始考慮利用 Web 服務(wù)的開(kāi)放性和標(biāo)準(zhǔn)化 來(lái)解決業(yè)務(wù) 流程與企業(yè)應(yīng)用之間的互操作性 問(wèn)題 2 2 BPEL 簡(jiǎn)史簡(jiǎn)史 2002 年 7 月 IBM 微軟 BEA 提交了 Business Process Execution Language for Web Services BPEL4WS 1 0 的規(guī)范 業(yè)務(wù)流程執(zhí)行語(yǔ)言基于 XML 和 Web 服務(wù)技術(shù) 它融 合了早期的 IBM 的 Web Services Flow Language WSFL 及微軟的 XLANG 規(guī)范的很多特點(diǎn) 隨后許多主要供貨商如 SAP 和 Siebel 已被 Oracle 并購(gòu) 等公司陸續(xù)加入規(guī)范的制定 并催生了多項(xiàng)修改和改進(jìn) 并于 2003 年 3 月發(fā) 布了 1 1 版 2003 年 4 月 BPEL 被提交 結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織 OASIS 以實(shí)現(xiàn)標(biāo)準(zhǔn)化 并組建了 Web 服務(wù)業(yè)務(wù)流程執(zhí)行語(yǔ)言技 術(shù)委員會(huì) WSBPEL TC 該努力使 BPEL 在業(yè)界獲得更為廣泛的認(rèn)可 目前該技術(shù)委員會(huì) 正在致力于下一代規(guī)范的制定工作 并將該規(guī)范重命名為 WS BPEL 2 0 雖然除 BPEL 之外還有一些業(yè)務(wù)流程規(guī)范 但是到目前為止 BPEL 是最為成熟和被廣 泛支持的技術(shù) WebSphere Process Server 6 0 提供了 BPEL4WS1 1 規(guī)范兼容實(shí)現(xiàn) 并支 持制定中的 WS BPEL 2 0 草案 除此之外還增加了對(duì)人員任務(wù) WS BPEL Extension for People 和 Java 語(yǔ)言 BPELJ 等擴(kuò)展的支持 在下文中 我們將利用 WebSphere Integration Developer 6 0 和 WebSphere Process Server 6 0 來(lái)演示如何創(chuàng)建和運(yùn)行 BPEL 流程 關(guān)于本文涉及的 BPEL 規(guī)范 可以從下面網(wǎng)址獲得 http www 128 ibm com developerworks library ws bpel 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 6 頁(yè) 3 BPEL 的基本特性的基本特性 相對(duì)于對(duì)象組裝技術(shù) 服務(wù)組裝更為復(fù)雜 人們必須面對(duì) SOASOA 環(huán)境中異構(gòu)的 松耦合的 自主的服務(wù) 它們間的交互關(guān)系是動(dòng)態(tài)的 按需發(fā)生的 而且缺少中央控制 因此 BPEL 提供的服務(wù)組裝模型提供了下列特性 1 靈活性 服務(wù)組裝模型應(yīng)該具有豐富的表現(xiàn)能力 能夠描述復(fù)雜的交互場(chǎng)景 而 且能夠快速地適應(yīng)變化 2 嵌套組裝 一個(gè)業(yè)務(wù)流程可以表現(xiàn)為一個(gè)標(biāo)準(zhǔn)的 Web 服務(wù) 并被組裝到其他流程 或服務(wù)中 構(gòu)成更粗粒度的服務(wù) 提高了服務(wù)的可伸縮性和重用性 3 關(guān)注點(diǎn)分離 BPEL 只關(guān)注與服務(wù)組裝的業(yè)務(wù)邏輯 其他關(guān)注點(diǎn) 比如服務(wù)質(zhì)量 QoS Quality of Service 事務(wù)處理等 可被作為附加擴(kuò)展 由具體實(shí)現(xiàn)平臺(tái)進(jìn)行處 理 4 會(huì)話狀態(tài)和生命周期管理 與無(wú)狀態(tài)的 Web 服務(wù)不同 一個(gè)業(yè)務(wù)流程通常具有明 確的生命周期模型 BPEL 提供了對(duì)長(zhǎng)時(shí)間運(yùn)行的 有狀態(tài)交互的支持 5 可恢復(fù)性 這對(duì)于業(yè)務(wù)流程 尤其對(duì)長(zhǎng)時(shí)間運(yùn)行的流程 是非常重要的 BPEL 提供 了內(nèi)置的失敗處理和補(bǔ)償機(jī)制 對(duì)于可預(yù)測(cè)的錯(cuò)誤進(jìn)行必要的處理 4 BPEL 的基本思想的基本思想 許多開(kāi)發(fā)人員覺(jué)得 BPEL 很神秘 不知道到底是什么意思 主要是因?yàn)樗歉鶕?jù)很抽象的 基于 WSDL 的 Web Service 再定義一些抽象執(zhí)行的流程 其實(shí) BPEL 一點(diǎn)都不神秘 是一個(gè)很簡(jiǎn)單的東西 首先談一下 BPEL 和 WSDL 的區(qū)別 WSDL 只是定義接口參數(shù) 不會(huì)定義如何實(shí)現(xiàn)接口 而 BPEL 不僅有自己的接口定義 也是一個(gè) WSDL 文件 包括 輸入?yún)?shù) 方法操作名 返 回參數(shù) BPEL 會(huì)定義如何調(diào)用其他服務(wù)的接口來(lái)實(shí)現(xiàn)自己的接口 簡(jiǎn)單地說(shuō) BPEL 通 過(guò)流程編程將各種接口組合在一起 其目 的在于提供一個(gè) 集成了各種接口 的接口 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 7 頁(yè) 首先 BPEL 會(huì)有一個(gè)起點(diǎn)和終點(diǎn) 1 它的起點(diǎn)就是 receive 也就是接收它自己接口的輸入?yún)?shù) 2 它的終點(diǎn)就是 reply 也就是得到它自己接口的返回參數(shù) 整個(gè) BPEL 就是定義如何通過(guò)它的接口輸入?yún)?shù) 調(diào)用其他外部服務(wù)的接口 得到其 接口的返回參數(shù) 它最重要的是兩個(gè)定義 1 一個(gè)是賦值命令 Assign Copy 通過(guò)賦值命令將某一變量值賦給所要調(diào)用的接 口的輸入?yún)?shù) 2 另一個(gè)是調(diào)用命令 Invoke 通過(guò) Invoke 命令來(lái)調(diào)用外部服務(wù) 另外一個(gè)比較重要的就是條件命令 Case Condition 根據(jù)變量的不同來(lái)定義各種 條件 然后根據(jù)各種條件來(lái)調(diào)用不同的服務(wù) 這些變量可以來(lái)自于輸入?yún)?shù) 也可以來(lái)自 于調(diào)用外部服務(wù)的結(jié)果 作為 BPEL 運(yùn)行環(huán)境的一個(gè)重要功能就是能夠保存并查詢到這些 變量 4 1 用用 Java 實(shí)例模擬實(shí)例模擬 BPEL 的創(chuàng)建過(guò)程的創(chuàng)建過(guò)程 這里用一個(gè)簡(jiǎn)單的實(shí)例來(lái)進(jìn)一步說(shuō)明 BPEL 的基本思想和核心本質(zhì) 并用 Java 實(shí)例來(lái) 模擬 BPEL 的創(chuàng)建過(guò)程 首先假定已經(jīng)有了兩個(gè) Web Service 一個(gè)為 加法服務(wù) 專門處理兩個(gè)數(shù)相加 名為 AddService 另外一個(gè)為 減法服務(wù) 專門處理兩個(gè)數(shù)相減 名為 SubtractService 現(xiàn)在有一個(gè)新的需求 需要將上面兩個(gè) Web Service 集成起來(lái) 也就是需要?jiǎng)?chuàng)建一個(gè) 新的服務(wù) 稱為 運(yùn)算服務(wù) 名為 CaculatorService 它有一個(gè)運(yùn)算類型的參數(shù) 當(dāng) 運(yùn)算類型為 加法 時(shí) 調(diào)用加法服務(wù) 當(dāng)運(yùn)算類型為 減法 時(shí) 調(diào)用減法服務(wù) 看到這里 讀者可能會(huì)想 直接寫一個(gè) Java 程序 調(diào)用者兩個(gè) Web Service 不就可 以了嗎 筆者的回答是 直接用 Java 編程當(dāng)然可以 事實(shí)上現(xiàn)在大家就是這么做的 但 是 Java 本質(zhì)上是一種具體的程序語(yǔ)言 只能運(yùn) 行于 JVM 的 Java 運(yùn)行環(huán)境 不是一種抽 象性的通用的標(biāo)準(zhǔn)語(yǔ)言 而 BPEL 是一種標(biāo)準(zhǔn)化的執(zhí)行語(yǔ)言 如何能夠真正運(yùn)行 BPEL 不是 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 8 頁(yè) 它所關(guān)心的事情 它還 需要各個(gè)廠商去開(kāi)發(fā)自己的 BPEL 運(yùn)行環(huán)境 盡管各個(gè)廠商所開(kāi)發(fā) 的 BPEL 的運(yùn)行環(huán)境可能會(huì)不一樣 但是同一個(gè) BPEL 所開(kāi)發(fā)的程序 應(yīng)該可以運(yùn)行于這些 不同的 BPEL 運(yùn)行環(huán)境 得到的結(jié)果應(yīng)該是一樣的 就像 Web Service 的 WSDL 文件一樣 它只管如何定義服務(wù) 服務(wù)接口 服務(wù)操作 服務(wù)參數(shù)等 如何具體實(shí)現(xiàn) Web Service 不 是 WSDL 所要關(guān)心的事情 下面繼續(xù)前面的實(shí)例 兩個(gè) Service 都會(huì)有自己的 WSDL 定義 下面用實(shí)際的 Java 語(yǔ) 言來(lái)類似地描述一下 以便于理解 下面的 AddService java 相當(dāng)于 AddService wsdl 用 Java 的 Interface 可能更貼 切一點(diǎn) 用 Java 的 class 可以說(shuō)明得更詳細(xì)一點(diǎn) Public class AddService Public double add double addParameter1 double addParameter2 Double addResposne addResposne addParameter1 addParameter2 WSDL 不會(huì)定義具體如何實(shí)現(xiàn) 此處只是說(shuō)明如何實(shí)現(xiàn)操作 Return addResponse 下面的 SubstractService java 相當(dāng) SubstractService wsdl Public class SubstractService Public double substract double substractParameter1 double substractParameter2 Double substractResposne substractParameter1 substractParameter2 Return substractResposne 下面用 Java 模擬 BPEL 的創(chuàng)建過(guò)程 首先需要?jiǎng)?chuàng)建 BPEL 的接口 下面用 CaculatorBPELInterface java 來(lái)說(shuō)明 它將有 3 個(gè)參數(shù) 其中 paramter1 和 paramter2 是需要運(yùn)算的兩個(gè)數(shù) 第 3 個(gè)參數(shù) processType 表示運(yùn)算的類型 Public Interface CaculatorBPELInterface Public double caculatorProcess double parameter1 double parameter2 String processType 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 9 頁(yè) 下面將創(chuàng)建一個(gè) Java 實(shí)現(xiàn)類 說(shuō)明如何對(duì)應(yīng)于 BPEL 的創(chuàng)建過(guò)程 許多語(yǔ)句 如一些 變量定義和賦值定義 對(duì) Java 來(lái)說(shuō)是不必要的 為了模擬 BPEL 的創(chuàng)建過(guò)程 讓 Java 開(kāi) 發(fā)人員更好地把握 BPEL 的創(chuàng)建過(guò)程 相應(yīng)地加入了這些程序語(yǔ)句 Public class CaculatorBPELImple implements CaculatorBPELInterface Public double caculatorProcess double parameter1 double parameter2 String processType 步驟 1 定義所要調(diào)用的外部類 相當(dāng)于定義 BPEL 里面 partnerLink AddService addServer new AddService SubstractService substractSevice new SubstractService 步驟 2 定義輸入和輸出變量 相當(dāng)于定義 BPEL 里面變量 variable 定義的變量如下 BPEL 接口的輸入和輸出變量 所要調(diào)用的外部類的接口方法的輸入和輸出變量 定義 BPEL 接口的輸入變量 Double caculatorProcessParameter1Request Double caculatorProcessParameter2Request Double caculatorProcessTypeRequest 定義 BPEL 接口的輸出變量 Double caculatorProcessResponse 定義加法服務(wù)的輸入變量 Double addParameter1Request Double addParameter2Request 定義加法服務(wù)的輸出變量 Double addResponse 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 10 頁(yè) 定義減法服務(wù)的輸入變量 Double substractParameter1Request Double substractParameter2Request 定義減法服務(wù)的輸出變量 Double substractParameter1Response 將請(qǐng)求參數(shù)賦值給 BPEL 接口的輸入變量 相當(dāng)于 BPEL 的 receive caculatorProcessParameter1Request parameter1 caculatorProcessParameter2Request parameter2 Double caculatorProcessTypeRequest processType 步驟 3 定義條件 并調(diào)用外部接口 If caculatorProcessTypeRequest equals add 相當(dāng)于 BPEL 的 switch condition case 下面將調(diào)用加法服務(wù) 將接口請(qǐng)求變量傳給加法服務(wù)的請(qǐng)求變量 相當(dāng)于 BPEL 的 assign copy addParameter1Request caculatorProcessParameter1Request addParameter2Request caculatorProcessParameter2Request 調(diào)用 addService 的接口 相當(dāng)于 BPEL 的 Invoke addResponse addServer add addParameter1Request addParameter2Request 將 addResponse 賦值給 BPEL 接口的輸出變量 相當(dāng)于 BPEL 的 assign copy caculatorProcessResponse addResponse else 相當(dāng)于 BPEL 的 condition otherwise 將接口請(qǐng)求變量傳給減法服務(wù)的請(qǐng)求變量 相當(dāng)于 BPEL 的 assign copy substractParameter1Request caculatorProcessParameter1Request 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 11 頁(yè) substractParameter2Request caculatorProcessParameter2Request 調(diào)用 substractService 的接口 相當(dāng)于 BPEL 的 invoke substractResponse substractServer substract substractParameter1Request substractParameter2Request 將 substractResponse 賦值給 BPEL 接口的輸出變量 相當(dāng)于 BPEL 的 assign copy caculatorProcessResponse substractResponse Return caculatorProcessResponse 相當(dāng)于 BPEL 的 reply 4 2 用實(shí)例概述用實(shí)例概述 BPEL 的創(chuàng)建過(guò)程的創(chuàng)建過(guò)程 上面已經(jīng)用 Java 模擬了 BPEL 的創(chuàng)建過(guò)程 下面將基于同樣的實(shí)例 用描述性的 WSDL 和 BPEL 來(lái)實(shí)現(xiàn)其創(chuàng)建過(guò)程 使讀者對(duì) BPEL 能有一個(gè)整體性的掌握 假設(shè)已經(jīng)有了前面的加法服務(wù)和減法服務(wù)的 WSDL 文件 加法服務(wù)為 AddService wsdl 減法服務(wù)為 Substract wsdl 它們的主要內(nèi)容如下所示 AddService wsdl getRequest 請(qǐng)求消息 addParameter1 double addParameter2 double getResponse 返回消息 addResponse double 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 12 頁(yè) addServcie portType 接口 add operation 接口操作 AddService service 服務(wù)名稱 substractService wsdl getRequest 請(qǐng)求消息 subtractParameter1 double subtractParameter2 double getResponse 返回消息 substractResponse double substractService portType 接口 substract operation 接口操作 SubstractService 服務(wù)名稱 下面需要為 BPEL 創(chuàng)建一個(gè)服務(wù)接口 caculator wsdl 如下 caculatorService wsdl getRequest 請(qǐng)求消息 parameter1 double parameter2 double processType String getResponse 返回消息 caculatorProcessResponse double 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 13 頁(yè) caculatorService portType 接口 caculatorPorcess operation 接口操作 CaculatorService service 服務(wù)名稱 下面介紹創(chuàng)建 BPEL 的基本過(guò)程 即 caculatorServiceProcess bpel 下面只是說(shuō)明 BPEL 的創(chuàng)建過(guò)程 沒(méi)有完全按照 BPEL 的語(yǔ)法 具體的 BPEL 語(yǔ)法和 BPEL 編程實(shí)例后面會(huì) 詳細(xì)介紹 1 創(chuàng)建變量 bpel variables 所定義的變量包括 1 BPEL 接口的輸入和輸出變量 2 所要調(diào)用的外部服務(wù) partnerLink 的接口操作的輸入和輸出變量 bpel variables BPEL 流程的請(qǐng)求變量和返回變量 variable name request bpel messageType 采用 caculatorService getRequest variable name response bpel messageType 采用 caculatorService getResponse 加法服務(wù)的請(qǐng)求變量和返回變量 variable name request add messageType 采用 addService getRequest variable name response add messageType 采用 addService getResponse 減法服務(wù)請(qǐng)求變量和返回變量 variable name request substract messageType 采用 substractService getRequest variable name response substract messageType 采用 substractService getResponse bpel variables BPEL 定義變量的方式與 Java 是不一樣的 主要因?yàn)?BPEL 所調(diào)用的 WSDL 是 XML 語(yǔ)言 上面的所定義的變量并不是對(duì)應(yīng)一個(gè)具體的值 它實(shí)際上對(duì)應(yīng)的是一個(gè)數(shù)據(jù)結(jié)構(gòu) 如 caculatorService getRequest 對(duì)應(yīng)的是 caculatorService wsdl 下面的 getRequest 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 14 頁(yè) parameter1 double parameter2 double processType String 也就是說(shuō) getRequest 下面的所有參數(shù)都包含進(jìn)去了 2 創(chuàng)建接收 bpel receive bpel receive name request partnerLink CaculatorService portType caculatorService operation caculatorPorcess variable request bpel Receive 是整個(gè) BPEL 的起點(diǎn) 所定義的變量 request bpel 從服務(wù)請(qǐng)求中得到賦值 整個(gè)后面的業(yè)務(wù)過(guò)程將以這個(gè)請(qǐng)求變量作為觸發(fā)點(diǎn) 3 創(chuàng)建條件 bpel switch case 程序?qū)⒏鶕?jù)不同的條件調(diào)用不同的服務(wù) 所以先要設(shè)立各種條件 bpel switch bpel case condition getVariableData request bpel payload getRequest processType add 調(diào)用加法服務(wù) bpel case 上面的程序表示在 request bpel 的變量中取出路徑為 getRequest processType 所 對(duì)應(yīng)的變量值 如果滿足這個(gè)值為 add 的條件時(shí) 可以在里面加入程序 完成相應(yīng)的 任務(wù) bpel otherwise 調(diào)用減法服務(wù) bpel otherwise 如果上面的所有條件都不滿足時(shí) 可以在里面加入程序 完成默認(rèn)的任務(wù) 4 給所要調(diào)用的服務(wù)的請(qǐng)求變量賦值 bpel assign copy 為了調(diào)用外部服務(wù) 先要給外部服務(wù)賦值 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 15 頁(yè) bpel assign bpel copy bpel from variable request bpel part payload query getRequest parameter1 bpel to variable request add part payload query getRequest addParameter1 bpel copy bpel assign 上面表示將 BPEL 過(guò)程所收到的初始變量賦給加法服務(wù)的請(qǐng)求變量 5 調(diào)用外部服務(wù) bpel invoke bpel invoke name addService partnerLink AddService portType addService operation add inputVariable request add outputVariable response add 上面將會(huì)調(diào)用加法服務(wù) AddSerivce 其中 request add 為輸入變量 6 將服務(wù)的結(jié)果賦給 BPEL 的返回變量 bpel assign copy 在完成了外部服務(wù)的調(diào)用之后 就可以將外部服務(wù)的輸出結(jié)果賦給 BPEL 流程的返回 變量 文法同步驟 4 7 調(diào)用 bpel reply 調(diào)用 BPEL 的 reply 命令 將 BPEL 流程的返回變量返回給服務(wù)請(qǐng)求者 bpel reply name response partnerLink CaculatorService portType caculatorService operation caculatorPorcess variable response bpel 這里比較一下步驟 2 的 bpel receive 和步驟 6 的 bpel reply 可以看到它 們的 partnerLink 的名字 portType 的名字 operation 的名字都是一樣的 它們是調(diào) 用的同一個(gè)服務(wù)下面的同一個(gè)接口操作 只是兩個(gè)命令的變量不一樣 bpel receive 是收到請(qǐng)求消息的變量值 bpel reply 是將響應(yīng)變量的結(jié)果返回給服務(wù)請(qǐng) 求者 事實(shí)上 BPEL 運(yùn)行環(huán)境執(zhí)行 bpel receive 后 就在等待 bpel reply 的返回 結(jié)果 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 16 頁(yè) 上面通過(guò)實(shí)例介紹了 BPEL 的基本創(chuàng)建過(guò)程 有了這些基本的 BPEL 整體創(chuàng)建思路后 就可以為更好地理解一些具體的語(yǔ)法打下了基礎(chǔ) 5 BPEL 模型基礎(chǔ)模型基礎(chǔ) BPEL 模型可以幫助我們更好地理解如何使用 BPEL 描述的業(yè)務(wù)流程 如圖 1 所示 流程 Process 由一系列 活動(dòng) Activity 組成 流程通過(guò)伙伴鏈接 Partner Link 來(lái)定義與流 程交互的其他服務(wù) 服務(wù)中可以定義一些變量 Variable 在 BPEL4WS 中被稱為 Container 流程可以是有狀態(tài)的 長(zhǎng)時(shí)間運(yùn)行過(guò)程 流程引擎可以通過(guò)關(guān)聯(lián)集合 Correlation Set 將 一條消息關(guān)聯(lián)到特定的流程實(shí)例 圖 1 BPEL 模型示意 1 伙伴 Partner 在 BPEL 中 一個(gè)流程可以調(diào)用其他服務(wù) 也可以響應(yīng)來(lái)自客戶端的請(qǐng)求 也就是說(shuō) BEPL 流程實(shí)例既可以作為服務(wù)的請(qǐng)求者 也可以扮演服務(wù)的提 供者 BPEL 把與流程交互 的其他服務(wù)稱為伙伴 partner 在異步通信環(huán)境中 流程與伙伴之間的會(huì)話可能是雙向 的 這在復(fù)雜的商務(wù)流程中非常常 見(jiàn) 在流程與伙伴的通信過(guò)程中 它們會(huì)扮演不同的角色 比如當(dāng)訂單流程被外部服務(wù)調(diào) 用的時(shí)候 它作為 PurchaseOrderProcess 角色來(lái)提供服務(wù) 然而當(dāng)它請(qǐng)求發(fā)貨服務(wù) 的時(shí)候 它則扮演 InvoicecClient 角色 如圖 2 所示 由于在流程執(zhí)行過(guò)程中 一個(gè) 流程可能會(huì)調(diào)用多 個(gè)伙伴服務(wù) 又可能接收多個(gè)伙伴的請(qǐng)求 因此為了消除在通信過(guò)程 中的多義性 我們需要明確服務(wù)和流程所扮演的角色 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 17 頁(yè) 圖 2 訂單流程示意 在 BPEL 中 這種流程與伙伴的合作關(guān)系是通過(guò)元素來(lái)定義的 這樣如果在流程的活 動(dòng)中需要指定與特定伙伴的交互 只 需要引用 partnerLink 的名稱即可 而且通過(guò) partner links 的抽象 在流程建模時(shí) 我們不必指定具體的服務(wù)端點(diǎn) 而將流程與具體 服務(wù)的綁定推遲到組裝或運(yùn)行時(shí)來(lái)完成 這種動(dòng)態(tài)伙伴關(guān)系為流程帶來(lái)了極大的 靈活性 也增強(qiáng)了流程的可復(fù)用性 比如 我們?cè)陂_(kāi)發(fā)環(huán)境中使用的偽服務(wù)實(shí)現(xiàn) 在生產(chǎn)環(huán)境中無(wú) 需須修改流程就可以將服務(wù)端點(diǎn)替換為主機(jī)應(yīng)用 在 PARTNERLINK 元素中 可以通過(guò) myRole 和 partnerRole 屬性來(lái)定義流程 和伙伴的角色 如果流程作為服務(wù)的提供者 需要使用 myRole 屬性 而當(dāng)流程作為服務(wù) 的請(qǐng)求者時(shí) 則使用 partnerRole 屬性 partnerLink 通過(guò)引用 partnerLinkType 來(lái)定義流程與伙伴服務(wù)之間的通信接口 實(shí) 際上是 WSDL 文檔中的 Port Type 伙伴鏈接類型聲明了兩個(gè) 也可能是多個(gè) 服務(wù)之間的 關(guān)系 服務(wù)鏈接類型定義了一組角色 其中每個(gè)角色指明一組 Port Type 即明確了該角 色所提供的服務(wù)接口 partnerLinkType 通常被定義在 WSDL 文檔中 被 BPEL 流程所引用 下面的代碼片段顯示了如何利用 partnerLink 和 partnerLinkType 定義流程與伙伴的 合作關(guān)系 我們實(shí)現(xiàn)了一個(gè)股票購(gòu)買流程 在這個(gè)流程中需要通過(guò)伙伴 StockQuote 獲取 當(dāng)前股票信息 bpws partnerLinks bpws partnerLink myRole StockServiceRole name StockService partnerLinkType ns StockServicePLT bpws partnerLink name StockQuote partnerLinkType ns PartnerPLT partnerRole partnerRole 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 18 頁(yè) bpws partnerLinks 我們還需要在流程對(duì)應(yīng)的 WSDL 文檔中定義 partnerLinkType definitions xmlns http schemas xmlsoap org wsdl xmlns plnk http schemas xmlsoap org ws 2004 03 partner link plnk partnerLinkType name StockServicePLT plnk role name StockServiceRole plnk portType name wsdl0 StockService plnk role plnk partnerLinkType plnk partnerLinkType name PartnerPLT plnk role name partnerRole plnk portType name ns net xmethods services stockquote StockQuotePortType plnk role plnk partnerLinkType import location urn xmethods delayed quotes wsdl namespace http www StockQuote definitions 2 變量 variables 在 BPEL 中 我們可以使用變量來(lái)保存和傳遞流程的狀態(tài)信息 變量的數(shù)據(jù)類型由 WSDL 定義 既可以是 XML Schema 內(nèi)置的簡(jiǎn)單類型 又可以是自定義的復(fù)雜數(shù)據(jù)類型 bpws variables bpws variable name symbol type xsd string bpws variable name UserInfo type ns1 UserInfoBO 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 19 頁(yè) bpws variables 上面的代碼 展示了如何在 BPEL 中使用元素來(lái)定義變量 值得注意的是 與常見(jiàn)的 編程語(yǔ)言類似 BPEL 中的變量是有作用域的 每個(gè)變量只有在定義它的作用域和所包含的 作用域內(nèi)才是可見(jiàn)的 在下面的章節(jié)中 我們將介紹如何使用 BPEL 來(lái)操縱和傳遞數(shù)據(jù) 此外 WS BPEL 提供了一些內(nèi)置的函數(shù)來(lái)支持變量?jī)?nèi)容的處理 1 getVariableProperty variableName propertyName 為獲取變量屬性函數(shù) 輸入 參數(shù)為變量名稱和屬性名稱 結(jié)果為屬性值 2 getVariableData variableName partName locationPath 為獲取變量數(shù)據(jù)函 數(shù) 輸入?yún)?shù)為變量名稱 part 名稱 以及 XPath 表達(dá)式 其中 partName 和 locationPath 為可選參數(shù) 輸出結(jié)果為指定變量的全部或部分的數(shù)據(jù)內(nèi)容 3 活動(dòng) Activity BEPL 流程是由一系列步驟所組成的 它們被稱為活動(dòng) WS BPEL 定義了豐富的活動(dòng)類 型 一般來(lái)說(shuō)可以把它們劃分為兩大類 基本活動(dòng)和結(jié)構(gòu) 化活動(dòng) 基本活動(dòng)描述了流程 內(nèi)的一個(gè)具體步驟 比如接收請(qǐng)求 調(diào)用伙伴服務(wù) 變量賦值等 而結(jié)構(gòu)化活動(dòng)則描述了 如何組織和管理流程的控制流 在下面的章節(jié) 中 我們將對(duì)活動(dòng)進(jìn)行詳細(xì)講解 4 關(guān)聯(lián)集合 Correlation Set BPEL 提供了聲明性機(jī)制 以指定服務(wù)實(shí)例中相關(guān)聯(lián)的操作組 一組相關(guān)標(biāo)記可定義 為相關(guān)聯(lián)的組中所有消息共享的一組特性 這樣的一組特性稱為關(guān) 聯(lián)集合 每個(gè)關(guān)聯(lián)集 都在一個(gè)作用域中進(jìn)行聲明并屬于該作用域 屬于全局流程作用域的關(guān)聯(lián)集稱為全局關(guān)聯(lián) 集 屬于局部作用域的關(guān)聯(lián)集稱為局部關(guān)聯(lián)集 在流程 開(kāi)始時(shí) 全局關(guān)聯(lián)集處于未初始化 的狀態(tài) 在其所屬的作用域的執(zhí)行開(kāi)始時(shí) 局部關(guān)聯(lián)集處于未初始化的狀態(tài) 相關(guān)集在其語(yǔ)義上類似于延遲綁定的常數(shù) 相關(guān)集的綁定由特別標(biāo)記的消息發(fā)送或接 收操作來(lái)觸發(fā) 相關(guān)集在其所屬的作用域的生存期中只能初始化一 次 在初始化之后 它的值就可被認(rèn)為是業(yè)務(wù)流程實(shí)例的標(biāo)識(shí)別名 在多方業(yè)務(wù)協(xié)議中 相關(guān)集合非常有用 初始者流程發(fā)送啟動(dòng)會(huì)話的第一個(gè)消息 從而定義了標(biāo) 記該對(duì)話的相關(guān)集中的特性值 所有其他參與者通過(guò)接收提供相關(guān)集中的特性值的傳入消息來(lái)綁定會(huì)話中的相關(guān)集 比如 一個(gè)旅行社訂票流程 當(dāng)該流程啟動(dòng)之后 用戶需要能夠查詢?cè)摿鞒虪顟B(tài) 并能取消該 流程 這就需要相關(guān)集的支持來(lái)確保后續(xù)的請(qǐng)求消息綁定到相同的流程實(shí)例中 6 BPEL 的基本活動(dòng)介紹的基本活動(dòng)介紹 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 20 頁(yè) 6 1 Receive 接收接收 Reply 回答回答 receive 活動(dòng)從流程的外部伙伴那獲取數(shù)據(jù) 并將其保存到流程變量 通常一個(gè) Receive 是一個(gè)流程的初始點(diǎn) 它會(huì)阻塞執(zhí)行直到匹配的消息的到達(dá) reply 活動(dòng)發(fā)送消息給伙伴來(lái)應(yīng)答通過(guò) receive 活動(dòng)所接收到的消息 receive 和 reply 的組合對(duì)應(yīng)著 WSDL portType 上定義的一個(gè)請(qǐng)求 響應(yīng)操作 如果 receive 活動(dòng) 對(duì)應(yīng)著一個(gè)單向 one way 操作 則不能在流程中定義對(duì)應(yīng)的 reply 活動(dòng) bpws receive createInstance yes name Receive operation buy partnerLink StockService portType ns0 StockService bpws reply name Reply operation buy partnerLink StockService portType ns0 StockService 上面就是 BPEL 中包含 receive 和 reply 活動(dòng)的片段 值得注意的是 receive 和 reply 活動(dòng)中都是通過(guò) partnerLink 來(lái) 引用預(yù)定義伙伴關(guān)系的 而且需要設(shè)置 portType 和 operation 屬性來(lái)聲明流程實(shí)現(xiàn)的 WSDL portType 和操作 此外 如 果將 receive 活動(dòng)作為流程的起始點(diǎn) 則需要將 receive 活動(dòng)的 createInstance 屬性設(shè) 置為 yes 它指明了當(dāng)流程接收到匹配的消息時(shí)會(huì)創(chuàng)建新的流程實(shí)例來(lái)處理該請(qǐng)求 在 BPEL 流程中我們還可以定義更為復(fù)雜的消息響應(yīng)機(jī)制 可以將特定的消 息關(guān)聯(lián)到相應(yīng) 的流程實(shí)例中 CorrelationSet 關(guān)聯(lián)集合 就是為了解決上述問(wèn)題而出現(xiàn)的 6 2 Invoke 請(qǐng)求請(qǐng)求 invoke 活動(dòng)允許業(yè)務(wù)流程同步或異步調(diào)用由合作伙伴提供的服務(wù) 服務(wù)實(shí)現(xiàn)可以 是單向或請(qǐng)求 響應(yīng)操作 Invoke 活動(dòng)使用 partnerLink 來(lái)引用伙伴服務(wù) 同過(guò) portType 和 operation 指定相應(yīng)的 WSDL 接口和操作 bpws invoke name GetStockQuote operation getQuote partnerLink StockQuote portType ns2 net xmethods services stockquote StockQuotePortType bpws invoke 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 21 頁(yè) 如果在請(qǐng)求服務(wù)的過(guò)程中發(fā)生異常 則可以通過(guò)錯(cuò)誤響應(yīng)和補(bǔ)償機(jī)制來(lái)加以處理 這 對(duì)業(yè)務(wù)流程 特別是長(zhǎng)時(shí)間運(yùn)行的流程是非常重要的 我們將在后面的章節(jié)進(jìn)行講解 6 3 Assign 賦值賦值 assign 活動(dòng)的作用是用新的數(shù)據(jù)來(lái)更新變量的值 Assign 活動(dòng)可以包括任意數(shù) 量的基本復(fù)制操作 bpws assign name Assign bpws copy bpws from China bpws from bpws to variable country bpws copy bpws assign assign 活動(dòng)還可把端點(diǎn)引用復(fù)制到合作伙伴鏈接 或把合作伙伴鏈接復(fù)制到端點(diǎn)引 用 以實(shí)現(xiàn)服務(wù)的動(dòng)態(tài)綁定 6 4 Wait 等待等待 wait 活動(dòng)會(huì)暫停流程執(zhí)行 等待一段給定的時(shí)間或等到某一時(shí)刻才繼續(xù)運(yùn)行 在 WebSphere Process Server 6 0 中 開(kāi)發(fā)者可以非常靈活地指定 wait 中的到期條件 比 如等待多少秒 等到特定的一個(gè)日期 或是使用內(nèi)置的日期表現(xiàn)法 也可以使用 Java 代 碼來(lái)動(dòng) 態(tài)指定等待時(shí)間 BPEL 也提供了豐富的結(jié)構(gòu)化活動(dòng) 可以靈活地控制流程執(zhí)行 6 5 Sequence 順序順序 文檔編號(hào) 文檔名稱 保密級(jí)別 國(guó)信朗訊科技網(wǎng)絡(luò)技術(shù)有限公司 2002 第 22 頁(yè) sequence 活動(dòng)定義一組按順序先后執(zhí)行的活動(dòng) 執(zhí)行順序是 sequence 活動(dòng)中嵌 套活動(dòng)的先后順序 當(dāng) sequence 中的最后一個(gè)活動(dòng)完成后 該 sequence 活動(dòng)也就完成了 6 6 Flow 流程流程 flow 活動(dòng)可以描述更為復(fù)雜的活動(dòng)執(zhí)行順序 我們可以利用 flow 指定一個(gè)或多 個(gè)并行執(zhí)行的活動(dòng) 為了定義任意的控制結(jié)構(gòu) 可以在并行的活動(dòng)中使用鏈接 flow 能進(jìn)一步表達(dá)直接或間接嵌套在其中的活動(dòng)之間的同步相關(guān)性 link 鏈接 用 來(lái)表達(dá)這種同步相關(guān)性 flow 活動(dòng)出現(xiàn)的所有 link 必須在 flow 活動(dòng)中分開(kāi)定義 并通過(guò)名稱進(jìn)行標(biāo)識(shí) flow 活動(dòng)中嵌套的活動(dòng)需要通過(guò) source 或 target 屬性來(lái)標(biāo)明該活動(dòng)為哪個(gè)鏈接的源或 目標(biāo)活動(dòng) 在 flow 活動(dòng)中 對(duì)于每一個(gè) link 必須有且僅有一個(gè)活動(dòng)作為它的源活動(dòng) 同 樣有且僅有一個(gè)活 動(dòng)作為它的目標(biāo)活動(dòng) 目標(biāo)活動(dòng)會(huì)在源活動(dòng)完成之后執(zhí)行 這樣 flow 內(nèi)部的活動(dòng)就可以通過(guò)活動(dòng)構(gòu)成一個(gè)有向圖 我們還可以在 link 的源上定義 transition 變遷 條
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 我的小花園我的生活樂(lè)趣寫物(8篇)
- ××超市監(jiān)控系統(tǒng)細(xì)則
- 移動(dòng)支付業(yè)務(wù)合作協(xié)議附風(fēng)險(xiǎn)控制措施條款
- 財(cái)務(wù)成本控制與預(yù)算分析練習(xí)題
- 信息技術(shù)支持農(nóng)業(yè)發(fā)展的合作協(xié)議
- 新聞版權(quán)與報(bào)道協(xié)議
- 2025年無(wú)縫管熱連軋機(jī)項(xiàng)目申請(qǐng)報(bào)告
- 農(nóng)業(yè)種植技術(shù)與知識(shí)產(chǎn)權(quán)共享協(xié)議
- 小學(xué)生作文捅馬蜂窩(15篇)
- 2025年ACCA國(guó)際注冊(cè)會(huì)計(jì)師考試真題卷(金融風(fēng)險(xiǎn)管理篇)
- 標(biāo)本采集錯(cuò)誤警示教育
- 2025年人教版小學(xué)四年級(jí)下冊(cè)數(shù)學(xué)期末提升測(cè)試試題(含答案和解析)
- 2025年高等自學(xué)教育考試馬克思主義基本原理概論全真模擬試卷及答案(共四套)
- 2025年安徽省高考物理真題(解析版)
- 2025年新疆中考數(shù)學(xué)真題試卷及答案
- 2025-2030年中國(guó)茶具行業(yè)深度分析及發(fā)展前景與發(fā)展戰(zhàn)略研究報(bào)告
- 2025至2030年中國(guó)月子中心行業(yè)競(jìng)爭(zhēng)格局分析及市場(chǎng)前景趨勢(shì)報(bào)告
- 2025年中國(guó)螢石行業(yè)市場(chǎng)全景調(diào)查研究報(bào)告
- 知不足而奮進(jìn) 望遠(yuǎn)山而前行課件-2026屆高三一輪復(fù)習(xí)總動(dòng)員會(huì)
- 2025年山煤國(guó)際招聘筆試沖刺題(帶答案解析)
- 2024-2025學(xué)年七年級(jí)英語(yǔ)下學(xué)期期末模擬試卷(外研版2024)
評(píng)論
0/150
提交評(píng)論