欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

淺談?dòng)肧QL實(shí)現(xiàn)工作流的并發(fā)控制

admin
2011年3月3日 16:37 本文熱度 3169
  論文關(guān)鍵詞:工作流 并發(fā)控制 SQL 數(shù)據(jù)約束 任務(wù)約束
  論文摘要:工作流技術(shù)在信息系統(tǒng)的應(yīng)用中,并發(fā)控制機(jī)制的設(shè)計(jì)是經(jīng)常要面臨的問題。給出一種基于將工作流中數(shù)據(jù)和任務(wù)分離的工作流并發(fā)控制機(jī)制,在保證工作流正確性的前提下,引入“數(shù)據(jù)約束”和“任務(wù)約束”的概念來提高工作流的工作性能和降低工作流設(shè)計(jì)的復(fù)雜性,并用數(shù)據(jù)庫中sQL語言強(qiáng)有力的約束控制加以實(shí)現(xiàn)。
  1引言
  工作流是針對工作中具有固定程序的常規(guī)活動(dòng)而提出的一個(gè)概念。通過將工作活動(dòng)分解成定義良好的任務(wù)、角色、規(guī)則和過程來進(jìn)行執(zhí)行和監(jiān)控,達(dá)到提高生產(chǎn)組織水平和工作效率的目的。一個(gè)工作流包括一組活動(dòng)及它們的相互順序關(guān)系,還包括過程及活動(dòng)的啟動(dòng)和終止條件,以及對每個(gè)活動(dòng)的描述川。工作流模型建立的目的是為了實(shí)現(xiàn)業(yè)務(wù)過程自動(dòng)化和用計(jì)算機(jī)來執(zhí)行,這就要求工作流模型不僅能夠描述活動(dòng)及其他們之間的相互連接關(guān)系,而且需要定義其他許多的信息,如組織、數(shù)據(jù)、資源等,同時(shí)對工作流模型的準(zhǔn)確性有很高的要求。
  目前的工作流業(yè)務(wù)系統(tǒng)對系統(tǒng)運(yùn)行過程中出現(xiàn)的并發(fā)訪問和異常錯(cuò)誤的解決還存在一定的缺陷。工作流實(shí)例在運(yùn)行過程中,有可能出現(xiàn)多個(gè)活動(dòng)同時(shí)訪問共享資源的情況,多個(gè)活動(dòng)在數(shù)據(jù)操作上會(huì)相互重疊。為了保證系統(tǒng)能夠正常運(yùn)行,必須進(jìn)行并發(fā)控制(ConcurreneyControl),防止出現(xiàn)“臟數(shù)據(jù)”,等現(xiàn)象。
  在本文中,我們將主要討論如何用SQL來實(shí)現(xiàn)工作流的并發(fā)控制,防止出現(xiàn)“臟數(shù)據(jù)”等現(xiàn)象。解決這個(gè)問題的核心是如何讓這些獨(dú)立的活動(dòng)能夠擁有自己獨(dú)立的數(shù)據(jù),而在某個(gè)活動(dòng)需要訪問共享資源而又正被其他活動(dòng)所擁有時(shí),讓其等待。并發(fā)控制的實(shí)現(xiàn)必須有兩個(gè)最基本的條件限制:①每個(gè)活動(dòng)擁有共享資源的時(shí)間應(yīng)該最短;②每個(gè)活動(dòng)應(yīng)該擁有盡可能少的共享資源[4l。同時(shí),我們在尋找解決方法時(shí)還應(yīng)考慮以下兩個(gè)方面:①不能過多地增加工作流設(shè)計(jì)的難度;②盡可能地利用現(xiàn)有數(shù)據(jù)庫系統(tǒng)所提供的服務(wù)功能來實(shí)現(xiàn)。
  為了達(dá)到以上的要求,我們引入類似傳統(tǒng)“鎖”機(jī)制的“約束”機(jī)制來實(shí)現(xiàn)。這里的“約束”是一種臨時(shí)的、強(qiáng)加在數(shù)據(jù)項(xiàng)(數(shù)據(jù)約束)或者任務(wù)狀態(tài)信息(任務(wù)約束)上的一致性限制。數(shù)據(jù)約束主要控制數(shù)據(jù)項(xiàng)的修改,而任務(wù)約束主要控制任務(wù)中各個(gè)活動(dòng)間的執(zhí)行順序,因而工作流中各活動(dòng)間的相互關(guān)系可以通過控制對數(shù)據(jù)庫的訪問和限制各個(gè)活動(dòng)的執(zhí)行順序來體現(xiàn),而這兩者的限制均能通過數(shù)據(jù)庫管理系統(tǒng)(DBMs)中的SQL查詢語言來實(shí)現(xiàn)。
  2一個(gè)工作流實(shí)例
  工作流根據(jù)所實(shí)現(xiàn)的業(yè)務(wù)過程可以分為管理型工作流(AdillinistrativeW rkflow)、設(shè)定型工作流(AdhoeWOrkflow)、協(xié)作型工作流(CollaborativeW6rkflow)和生產(chǎn)型工作流(ProduetionWbrkflow)!,,。在本文中,我們所討論的工作流是基于生產(chǎn)型工作流,它應(yīng)用在一個(gè)大規(guī)模、復(fù)雜和異構(gòu)的環(huán)境下,包括一個(gè)周期重復(fù)的、可預(yù)測的復(fù)雜過程,同時(shí),它還要接受和處理來自各個(gè)層次和各個(gè)方面的數(shù)據(jù)。下面我們簡單介紹一下這一工作流的情況。
  在圖1中所示的工作流是基于一個(gè)供電系統(tǒng)內(nèi)部的物資領(lǐng)料過程。當(dāng)一份領(lǐng)料單到來時(shí),這一工作流開始啟動(dòng)。領(lǐng)料開票人將領(lǐng)料單中信息輸入電子表格同時(shí)產(chǎn)生一條新的紀(jì)錄,接著兩個(gè)并行任務(wù)將被執(zhí)行:庫存檢查—檢查庫中物資種類和數(shù)量是否能夠滿足需要;計(jì)劃審批驗(yàn)證—驗(yàn)證該張領(lǐng)料單是否經(jīng)過相關(guān)部門審批。如果上述兩個(gè)驗(yàn)證均能通過,則確認(rèn)領(lǐng)料、產(chǎn)生銷售清單、結(jié)賬,最后從倉庫中發(fā)料。其中每個(gè)任務(wù)都要涉及到對數(shù)據(jù)庫的讀和寫操作。
  
  3工作流分解—數(shù)據(jù)和任務(wù)的分離
  在圖1中所提到的領(lǐng)料工作流中,有兩種典型的情況必須加以說明:①在物資管理系統(tǒng)中經(jīng)常出現(xiàn)多個(gè)工作流同時(shí)啟動(dòng),因而開票員將信息輸入電子表格的同時(shí)必須為每條紀(jì)錄提供一個(gè)唯一且沒有沖突的領(lǐng)料編號,但是在這個(gè)任務(wù)沒有結(jié)束前,開票員可能會(huì)取消操作或者出現(xiàn)其他異常情況,導(dǎo)致工作流沒法正常結(jié)束。為了保證其領(lǐng)料編號的唯一且不沖突只能采用串行化操作;②假定一領(lǐng)料單己經(jīng)執(zhí)行庫存檢查和計(jì)劃審批驗(yàn)證兩個(gè)任務(wù),而且己經(jīng)完成結(jié)賬,但是單子中的物資還沒有從庫中領(lǐng)走,而此時(shí)有另一單子也要求領(lǐng)與上一單子相同的物資,但是庫中的物資數(shù)量只能滿足一張單子的要求,如何解決他們兩者之間的沖突,從而不至于違反數(shù)據(jù)庫的一致性約束,又不得不要求工作流只能采用串行化操作。
  如果不能有效地解決以上的問題,那這一工作流的系統(tǒng)性能將大打折扣,而且根本沒法滿足現(xiàn)代業(yè)務(wù)管理系統(tǒng)的要求。典型的解決方法有ATM(AdvancedTransaetionModel)方法、TransaetionalTaskInte腳tion、語義鎖(SemantieLoeking)和沖突說明(ConflietSPeeifieation),但是工作流的形式過于多種多樣,單一的一種解決方法沒法滿足具體的某一工作流的需要,因而我們在項(xiàng)目開發(fā)的實(shí)際過程中采用了一種基于將數(shù)據(jù)和任務(wù)分開的方法,類似于操作系統(tǒng)中進(jìn)程主體與系統(tǒng)資源分開,而進(jìn)程主體應(yīng)獲得其最小資源的思想。它綜合考慮了以下3個(gè)因素:①工作流執(zhí)行的正確性;②工作流的系統(tǒng)性能;③一工作流模型建立和管理的復(fù)雜度。
  我們分析前面兩種需要串行化操作才能完成的情況,整個(gè)過程基本上都是通過不停地訪問數(shù)據(jù)庫來實(shí)現(xiàn)的,其中最主要的就是對數(shù)據(jù)庫的讀寫操作。我們把一組不可分割的數(shù)據(jù)庫操作視為一個(gè)原子操作,同時(shí)我們把任務(wù)或活動(dòng)主體完成這一操作需要訪問的共享資源視為臨界資源。多個(gè)任務(wù)訪問和擁有這些資源必須滿足“空閑占有,忙則等待”的原則。
  為了將數(shù)據(jù)和任務(wù)分開,同時(shí)能保證數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和一致性,并且能滿足數(shù)據(jù)庫中自定義的各種完整性約束規(guī)則,我們引入了“數(shù)據(jù)約束”和“任務(wù)約束”。我們的思想是運(yùn)用類似于典型的并發(fā)控制中的“鎖”約束來實(shí)現(xiàn)數(shù)據(jù)庫的完整性和一致性約束,但是它又不同于“鎖”約束。我們引入的“數(shù)據(jù)約束”和“任務(wù)約束”是一個(gè)短時(shí)間的約束控制,他們隨著工作流實(shí)例的啟動(dòng)而創(chuàng)建,隨著工作流的結(jié)束而撤銷。另一方面,“數(shù)據(jù)約束”隨工作流或者任務(wù)實(shí)例的輸入?yún)?shù)的不同而不同,不同的實(shí)例將建立不同的“數(shù)據(jù)約束”和“任務(wù)約束”。“數(shù)據(jù)約束”主要是為了保證正確的數(shù)據(jù)輸入能夠得到正確的數(shù)據(jù)輸出,同時(shí)實(shí)現(xiàn)數(shù)據(jù)庫中的各種靜態(tài)約束、動(dòng)態(tài)約束和自定義約束,而“任務(wù)約束”是為了保證工作流中各個(gè)任務(wù)能夠按照他們之間的相互關(guān)系、前后順序正確地執(zhí)行。在上述工作流中,我們將實(shí)現(xiàn)某一活動(dòng)執(zhí)行的正確性和控制多個(gè)活動(dòng)間的執(zhí)行順序作為兩個(gè)目標(biāo)來分開處理。譬如在庫存檢查中,“數(shù)據(jù)約束”是為了保證滿足庫中的物資數(shù)量不能低于最低數(shù)量的限制,而“任務(wù)約束”是為了保證領(lǐng)料單只有在執(zhí)行完庫存檢查和計(jì)劃審批驗(yàn)證后才能執(zhí)行領(lǐng)料操作。
  “數(shù)據(jù)約束”和“任務(wù)約束”都在工作流模型設(shè)計(jì)說明中指定。一個(gè)工作流實(shí)例通過設(shè)定約束和撤銷約束來合理調(diào)度并發(fā)事務(wù),避免并發(fā)事務(wù)之間的互相干擾造成數(shù)據(jù)的不一致性,從而提高系統(tǒng)的性能。
  4并發(fā)控制的實(shí)現(xiàn)
  4.1數(shù)據(jù)約束的實(shí)現(xiàn)
  SQL查詢語言作為數(shù)據(jù)庫管理系統(tǒng)中的一個(gè)重要組成部分,它提供了極其強(qiáng)大的約束限制實(shí)現(xiàn)功能,其中包括關(guān)鍵值約束、域約束、實(shí)體完整性約束和參照完整性約束以及各種用戶自定義的約束。數(shù)據(jù)庫中的存儲過程是經(jīng)預(yù)編譯和優(yōu)化后的SQL語句和流程控制語句的集合。利用它以下的幾個(gè)特點(diǎn)可以用來實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯:①接受輸入的參數(shù)后返回結(jié)果給調(diào)用的過程;②可以調(diào)用其他的過程;③可以返回一個(gè)狀態(tài)字,指出調(diào)用的成果與失敗;④比一般的SQL程序運(yùn)行速度更快、更簡單,使得存儲過程更快、更可行。
  觸發(fā)器是一種特殊的存儲過程,只要表格的數(shù)據(jù)改變,它會(huì)在任何時(shí)刻自動(dòng)調(diào)用。其作用體現(xiàn)在以下3個(gè)方面:①觸發(fā)器可以不允許違反參考完整性的操作,這樣可取消企圖修改數(shù)據(jù)的事務(wù);②觸發(fā)器可以執(zhí)行比用CHECK定義復(fù)雜的約束;③觸發(fā)器可發(fā)現(xiàn)數(shù)據(jù)改變前后的不同,然后基于這個(gè)不同進(jìn)行動(dòng)作。正是因?yàn)榇鎯^程和觸發(fā)器能夠提供這么強(qiáng)大的功能,我們在實(shí)現(xiàn)“數(shù)據(jù)約束”和“任務(wù)約束”的過程中使用了比較多的存儲過程和觸發(fā)器。現(xiàn)在我們考慮解決圖l中兩張領(lǐng)料單領(lǐng)用相同物資的問題。
  在圖2中當(dāng)領(lǐng)料單輸入時(shí)開始整個(gè)任務(wù)過程,根據(jù)領(lǐng)料單中的信息建立相關(guān)的約束,保證下面活動(dòng)能夠進(jìn)行串行化操作,接著檢查種類和數(shù)量,確認(rèn)能夠滿足需要時(shí)從倉庫里發(fā)料,減掉相應(yīng)的數(shù)量,最后撤銷約束,允許其他任務(wù)繼續(xù)執(zhí)行。圖2中設(shè)定領(lǐng)料約束的實(shí)現(xiàn)如下:
  
  CREAT JEPROCEDURESetReeeiveCheck
  @P一ReeeiveNumberChar(10),
  @P一MaterialNumberChar(10)
  AS
  Begin
  Deelare
  @P一Amountint
  Seleet@p一Amount=Count(*)
  FrornAetiveReee計(jì)e WhereMateria Numbe二@P一Materia1Number
  ff@P一Alnotlnt==0
  Begin
  InsertIntoAetiveReeeive
  Values(@P一ReeeiveNumber,@P一MaterialNumber
  Efid
  Else
  Return(l)
  End

  存儲過程一開始,在表l中查找是否存在@P一MaterialNumber所對應(yīng)的領(lǐng)料單編號,如果對應(yīng)的某一領(lǐng)料單編號己經(jīng)在表中存在,則存儲過程返回1—表示該領(lǐng)料單中的這一物資已經(jīng)被另一領(lǐng)料單鎖定,此次鎖定操作失敗。如果表中還沒有存在所對應(yīng)的領(lǐng)料單編號,則向表中插入一紀(jì)錄,表示該物資將被這一領(lǐng)料單鎖定。一張領(lǐng)料單中可能存在多種物資,當(dāng)所有物資均能被鎖定時(shí),整個(gè)領(lǐng)料約束完成,可以進(jìn)入下一步。如果在設(shè)定過程中有一物資不能被鎖定,則解除對所有領(lǐng)料物資的鎖定,這一領(lǐng)料單必須等待。當(dāng)然在整個(gè)并發(fā)控制過程中我們也同時(shí)引入了任務(wù)調(diào)度機(jī)制,從而保證每個(gè)任務(wù)都能順利完成。
  
  撤銷約束的實(shí)現(xiàn)如下:
  CRE戶L1,EPROCEDUREUnsetReeeiveCheek
  @P一ReeeiveNumberChar(lo)
  AS
  Begin
  DelCteFromAetiveReeeive
  WllereReceiv Number @P一ReceiveNumber
  End
  設(shè)定約束和撤銷約束保證了這一任務(wù)能夠正確地執(zhí)行,而檢查種類和數(shù)量這一過程執(zhí)行的時(shí)間很短,它的串行化操作對系統(tǒng)的性能影響不大,從而能提高整個(gè)工作流的性能。
  4.2任務(wù)約束的實(shí)現(xiàn)
  “任務(wù)約束”是為了保證整個(gè)工作流中各個(gè)任務(wù)的正確執(zhí)行,它依照工作流中各個(gè)任務(wù)之間存在的任務(wù)關(guān)聯(lián)來設(shè)定,而任務(wù)關(guān)聯(lián)是根據(jù)工作流面向的相關(guān)物理模型來抽取的。
  在圖3中我們抽取了一個(gè)典型的工作流模型,它描述了各個(gè)任務(wù)之間的前趨關(guān)系。任務(wù)TZ、T3必須在任務(wù)Tl完成的前提下才能執(zhí)行,而T4、TS只能在T3完成的前提下才能執(zhí)行,最后任務(wù)T6在TZ、T4、TS全部完成的情況下才能啟動(dòng)。為了保證上述任務(wù)能夠正確地按序執(zhí)行,我們在每個(gè)任務(wù)啟動(dòng)前加上一定的約束條件,只有當(dāng)這些條件滿足時(shí)任務(wù)才能執(zhí)行,而在條件未滿足前必須等待。這些約束包括靜態(tài)約束和動(dòng)態(tài)約束。靜態(tài)約束是在工作流設(shè)計(jì)階段,設(shè)計(jì)者根據(jù)各個(gè)任務(wù)間存在的關(guān)聯(lián)制定的,而動(dòng)態(tài)約束則是工作流在運(yùn)行時(shí),根據(jù)任務(wù)內(nèi)部數(shù)據(jù)間存在的邏輯性而動(dòng)態(tài)設(shè)定和撤銷。
   
  在圖4中我們抽取了計(jì)劃單審批過程中的一個(gè)工作流模型,對于一計(jì)劃單,由于它所屬計(jì)劃的類別和其他一些特殊因素,對不同的計(jì)劃單可能會(huì)采取不同的審批流程,因而我們采取動(dòng)態(tài)約束來實(shí)現(xiàn)對它的任務(wù)約束。不管靜態(tài)約束還是動(dòng)態(tài)約束,它們均能通過存儲過程和觸發(fā)器來實(shí)現(xiàn)。其具體的實(shí)現(xiàn)過程類似上節(jié)所述數(shù)據(jù)約束的實(shí)現(xiàn)。
  5結(jié)束語
  工作流的并發(fā)控制主要應(yīng)該考慮3個(gè)方面的因素:①正確性:并發(fā)執(zhí)行的任務(wù)之間不能互相干擾:②性能:并發(fā)執(zhí)行的各個(gè)任務(wù)應(yīng)占用最少的系統(tǒng)資源;③復(fù)雜性:工作流的建立和管理必須簡單易行。我們正是從以上3個(gè)方面考慮,引入了“數(shù)據(jù)約束”和“任務(wù)約束”來提高工作流的性能和保證工作流的正確執(zhí)行,同時(shí)利用數(shù)據(jù)庫中SQL語言強(qiáng)有力的約束控制實(shí)現(xiàn)能力,使得我們的解決方法更加簡單和高效。
  參考文獻(xiàn):
  [1]范玉順,等.工作流管理技術(shù)基礎(chǔ)LM].北京:清華大學(xué)出版社,2001.
  [2]BernsteinPHadZilaeosGoodmanVConeurreneyControlandReeoinDatabaseSystems[M].Addison一slev,On-tario,Canada,1987.
  [3]JuhaPuustjarvi.WOrkflowConeurreneyContr01[J].TheComPuterJournal,2001,44(l).
  [4]AViSilbersehatPeterBaerGalvinGregGagne.OPeratingsystemConeePtSixthEditiontMI.Johnwil&Sons,2001.
  [5]BobakAR.DistributedandMulli一databaseSystems[M]J.teehHouse,199622.

該文章在 2011/3/3 16:37:32 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved