• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      用自我隔離工作流解決并發(fā)問題的探討

      2012-06-10 06:22:32李飛躍
      關(guān)鍵詞:斷言實例約束

      李飛躍,張 敏,王 偉

      (成都工業(yè)學(xué)院 計算機(jī)工程系,成都 610031)

      工作流概念起源于JCL(Job Control Language,作業(yè)控制語言),其目的是讓用戶定義一組由工作步驟組成的工作流程。隨著信息技術(shù)的發(fā)展,要求考慮工作流執(zhí)行原子性和工作流隔離問題,即與工作流事務(wù)屬性相關(guān)的問題。為解決這一問題,重點放在工作流隔離請求描述以及如何在工作流管理系統(tǒng)中強(qiáng)制執(zhí)行這些請求。改進(jìn)并行控制方法,該方法的指導(dǎo)思想是:1)不過分加重工作流設(shè)計者的負(fù)擔(dān);2)用現(xiàn)有數(shù)據(jù)庫系統(tǒng)的服務(wù)就可以實現(xiàn)。

      為此,筆者提出了自我隔離工作流概念。這種工作流采用與傳統(tǒng)事務(wù)獲得和釋放鎖相似的方法來設(shè)置和取消約束。數(shù)據(jù)約束用來控制對數(shù)據(jù)項的修改,任務(wù)約束用來控制任務(wù)背后程序的執(zhí)行。這2種類型的約束都能用SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)的斷言表示,而且還能用數(shù)據(jù)庫系統(tǒng)中的服務(wù)強(qiáng)制執(zhí)行。通過控制對數(shù)據(jù)庫的接入實現(xiàn)工作流的交替執(zhí)行與限制任務(wù)的執(zhí)行。

      1 自我隔離工作流

      制造工作流包含重復(fù)、可預(yù)期和復(fù)雜處理。衡量工作流隔離好壞的標(biāo)準(zhǔn)是工作流的順序執(zhí)行,但對執(zhí)行時間很長的活動來說,順序執(zhí)行要求過分限制了系統(tǒng)的性能。顯然,工作流隔離(原子執(zhí)行性)應(yīng)是在下述之間的折衷:1)工作流執(zhí)行的正確性;2)工作流系統(tǒng)的性能;3)工作流規(guī)范和定義的簡單性。

      在工作流并發(fā)控制中,充分的隔離請求包含如下條件:1)保證某個屬性的值在一定的范圍;2)不能刪除某元組;3)某類型的元組數(shù)量是受限制的。

      本文采用與傳統(tǒng)并發(fā)控制中的鎖同樣的方法來進(jìn)行一致性約束。當(dāng)在并發(fā)控制中使用一致性約束時,稱為數(shù)據(jù)約束。數(shù)據(jù)約束是由工作流實例創(chuàng)建和刪除的,數(shù)據(jù)約束特定于某個實例,由工作流或任務(wù)實例的輸入?yún)?shù)時產(chǎn)生。因此,一個給定工作流的不同實例可能會設(shè)置不同類型的數(shù)據(jù)約束,這種特點使得自由數(shù)據(jù)約束成為可能。

      獨(dú)立于對象自身的約束,控制程序執(zhí)行的約束稱為任務(wù)約束。數(shù)據(jù)和任務(wù)約束都在工作流描述中給出,工作流實例依據(jù)描述設(shè)置約束和刪除約束。具有這種特點的工作流即為自我隔離工作流。

      1.1 斷言

      SQL將斷言描述成由程序員指定的事件觸發(fā),使用斷言能在屬性的值、整個關(guān)系、幾個關(guān)系間的關(guān)聯(lián)上定義約束。斷言創(chuàng)建格式為:CREATE ASSERTION <name>CHECK <condition>。

      本文中工作流隔離請求使用斷言表示,1個工作流實例傳送1個斷言請求給SQL系統(tǒng),系統(tǒng)接受或拒絕該請求。

      1.2 已隔離工作流單元

      自我隔離工作流設(shè)置和取消數(shù)據(jù)與任務(wù)約束。每個約束依附于1個工作流單元,即1個工作流、子工作流或1個任務(wù)。在特定的任務(wù)中設(shè)置附屬于1個工作流單元的全部約束稱為設(shè)置隔離,相應(yīng)地在取消隔離任務(wù)中取消全部約束。含有這種額外任務(wù)的工作流單元稱為已隔離工作流單元。在圖1中用大寫字母U來表示這種已隔離工作流單元。

      圖1 已隔離工作流單元U

      1.3 數(shù)據(jù)約束

      1.3.1 表達(dá)數(shù)據(jù)約束

      設(shè)置隔離任務(wù)是設(shè)置一個或者多個約束的事務(wù)。如果斷言在數(shù)據(jù)庫中是無效的,則設(shè)置斷言失敗。通常,每個斷言生成一個關(guān)系且只有該關(guān)系為空時斷言才是有效的。

      為演示數(shù)據(jù)約束的使用,考慮貸款請求工作流的隔離問題,筆者將演示使用任務(wù)約束如何解決該隔離問題。

      貸款請求工作流隔離問題是指依據(jù)在貸款檢查約束中取得客戶已有貸款的情況下決定要不要放款。設(shè)置隔離和請求隔離任務(wù)使用貸款請求工作流的輸入?yún)?shù),假定貸款請求有3個輸入?yún)?shù):W_CNO,W_CNM,W_LA。因此,激活貸款請求工作流可以通過調(diào)用函數(shù)Loan_request(12345,LFY,100000)實現(xiàn)。

      現(xiàn)在設(shè)置隔離任務(wù)包含名為LoanIsolation(載入隔離)的事務(wù)。

      圖2 貸款請求處理工作流

      表1 活動貸款請求關(guān)系

      Proagam SetLoanIsolation(W_CNO,W_CNM,W_LA)

      Begin Transaction

      INSERT INTO ActiveLoanRequest

      VALUES(:W_CNO,:W_CNM,:W_LA)

      CREATE ASSERTION <system generated name>

      CHECK1=(SELECT COUNT(*)FROM ActiveRequest WHERE cno=:W_CNO);

      End Transaction

      首先,載入隔離事務(wù)試圖插入一個元組到關(guān)系A(chǔ)ctiveLoanRequest(活動貸款請求)中(如表1所示)。如果客戶已經(jīng)有一個活動貸款請求存在的話,則存在一活動斷言使得在ActiveLoanRequest中的插入失敗,這反過來意味著設(shè)置隔離失敗,否則,創(chuàng)建斷言成功。

      取消隔離事務(wù)如下:

      Proagam UnSetLoanIsolation(W_RequestNumber)

      Begin Transaction

      DROP ASSERTION <system generated name>

      DELETE FROM ActiveLoanRequest

      WHERE RequestNumber=:W_RequestNumber;

      End Transaction

      在上面的例子中,筆者強(qiáng)制執(zhí)行斷言限制特定類型的元組數(shù)量。

      1.3.2 管理數(shù)據(jù)約束

      比起傳統(tǒng)的鎖來講,在調(diào)度自我隔離工作流時,每個工作流有一個它自己的正確性準(zhǔn)則,不需考慮數(shù)據(jù)約束之間是否有沖突。在管理數(shù)據(jù)約束[2]中,有必要檢查被請求的數(shù)據(jù)約束是否與數(shù)據(jù)庫的狀態(tài)存在沖突,如果請求(斷言)與數(shù)據(jù)庫狀態(tài)沖突則拒絕該請求;否則接受該請求。接受一個數(shù)據(jù)約束請求意味著該約束從接受它的時候開始生效,同時,在數(shù)據(jù)約束廢棄前數(shù)據(jù)庫系統(tǒng)將強(qiáng)制執(zhí)行它的有效性。

      系統(tǒng)不用考慮數(shù)據(jù)約束之間是否有沖突的事實,簡化了執(zhí)行,減輕了工作流系統(tǒng)的負(fù)擔(dān)。

      1.4 任務(wù)約束

      工作流系統(tǒng)存儲有關(guān)工作流實例能否繼續(xù)執(zhí)行的狀態(tài)信息。通過在狀態(tài)信息(關(guān)系)上設(shè)置約束來控制工作流實例的隔離,在狀態(tài)關(guān)系上設(shè)置約束意味著不允許有某特定執(zhí)行狀態(tài),將這種約束稱為任務(wù)約束。

      靜態(tài)任務(wù)約束與動態(tài)任務(wù)約束的區(qū)別是:1)靜態(tài)任務(wù)約束由工作流設(shè)計者建立;2)動態(tài)任務(wù)約束由工作流實例建立和刪除。

      設(shè)對每個工作流單元都存在一個稱為任務(wù)關(guān)系[3]的關(guān)系。任務(wù)關(guān)系的名字與工作流單元的名字相同,屬性由工作流單元的全部或部分輸入?yún)?shù)組成。任務(wù)約束的創(chuàng)建和刪除分別在設(shè)置隔離任務(wù)和取消隔離任務(wù)中進(jìn)行。如果任務(wù)約束與任務(wù)關(guān)系中的狀態(tài)沖突的話,創(chuàng)建任務(wù)約束就會失敗。與數(shù)據(jù)約束管理相似,接不接受任務(wù)約束是與其他任務(wù)約束無關(guān)的。

      筆者采用任務(wù)約束解決貸款請求工作流隔離問題。貸款請求工作流參數(shù)有客戶的名字、客戶的編號、貸款的數(shù)據(jù)。假定存在一個貸款請求任務(wù)關(guān)系實例(如表2所示)。關(guān)系實例表明李四有2個活動貸款請求,而張三和王五各有1個活動貸款請求。

      接下來在貸款請求關(guān)系中設(shè)置靜態(tài)與動態(tài)任務(wù)約束。如設(shè)置一個靜態(tài)任務(wù)約束,不允許2個元組具有相同的客戶編號來解決貸款請求并發(fā)問題。用下面的SQL語句實現(xiàn):

      使用動態(tài)任務(wù)約束[4-5]能描述更精細(xì)的隔離請求,例如,在開始處理王五的貸款請求時可能會在與貸款檢查子工作流相應(yīng)的任務(wù)關(guān)系上設(shè)置任務(wù)約束,該約束限定客戶編號屬性為12的元組最多只能有1個??捎萌缦抡Z句實現(xiàn):

      表2 貸款請求關(guān)系

      2 結(jié)語

      自我隔離工作流在數(shù)據(jù)庫的數(shù)據(jù)項或任務(wù)狀態(tài)信息上設(shè)置約束來實現(xiàn)工作流并發(fā)控制。數(shù)據(jù)約束與任務(wù)約束都能用SQL語言的斷言進(jìn)行表示。通過SQL斷言的表達(dá)能力能指明隔離工作流隔離請求,減輕了工作流設(shè)計者描寫選項和約束的負(fù)擔(dān),實現(xiàn)起來也很容易。

      [1]JEFFREY D U.?dāng)?shù)據(jù)庫系統(tǒng)基礎(chǔ)教程[M].3版.北京:機(jī)械工業(yè)出版社,2009.

      [2]劉慧,王寧,劉元元,等.一種基于約束的事務(wù)工作流并發(fā)控制方法[J].計算機(jī)系統(tǒng)應(yīng)用,2011(12):181-184.

      [3]劉兵兵.一類帶延遲策略的庫存優(yōu)化模型及其仿真[J].計算機(jī)應(yīng)用,2009,29(10):2762-2765.

      [4]胡國玲.分布式移動代理系統(tǒng)的事務(wù)管理及死鎖檢測研究[J].微電子學(xué)與計算機(jī),2007,24(10):146-149.

      [5]郝麗波,李建華.基于隔離域的事務(wù)工作流并發(fā)控制[J].計算機(jī)工程與設(shè)計,2008(1):199-202.

      猜你喜歡
      斷言實例約束
      von Neumann 代數(shù)上保持混合三重η-*-積的非線性映射
      C3-和C4-臨界連通圖的結(jié)構(gòu)
      “碳中和”約束下的路徑選擇
      特征為2的素*-代數(shù)上強(qiáng)保持2-新積
      約束離散KP方程族的完全Virasoro對稱
      Top Republic of Korea's animal rights group slammed for destroying dogs
      適當(dāng)放手能讓孩子更好地自我約束
      人生十六七(2015年6期)2015-02-28 13:08:38
      完形填空Ⅱ
      完形填空Ⅰ
      不等式約束下AXA*=B的Hermite最小二乘解
      湘西| 凯里市| 高清| 石家庄市| 都安| 卢龙县| 铁岭县| 永丰县| 巢湖市| 景德镇市| 荥阳市| 东港市| 象山县| 磐安县| 怀远县| 东海县| 木兰县| 健康| 夏河县| 贡嘎县| 清原| 清水县| 峨眉山市| 金山区| 肃宁县| 铜川市| 南充市| 平潭县| 托克逊县| 青海省| 清水县| 开封市| 安达市| 博白县| 长垣县| 额敏县| 和政县| 南靖县| 遵义市| 华安县| 井冈山市|