wf架構編程-基礎部分

來源:互聯網
上載者:User

1編程模型

從消化系統講起,口腔、腸道、胃…等消化器官組成了消化系統,每個器官又是由更微觀的物質構成,比如細胞。細胞又可以細分。細胞可以分類,白細胞,紅細胞等等。這裡細胞可以認為是消化系統的基本組成元素。這種組成結構非常像物件導向的思維,因為它們都要解決同一個問題:現實世界複雜性。類可以認為是最基本的組成元素,類可以組成組件(構件) ,構件組成服務。知道了消化系統的組成,我們來看如何?吃這個功能,吃的功能完成需要食物通過各種消化器官,使用消化器官的功能完成。這個過程是面向過程的,是一個流程。再看我們程式的實現,Staitc Main是程式的入口,C#中功能的實現也是通過調用相互關聯的類中的方法實現的。C#本身就提供了豐富的控制結構(if else,while等等) 。

分析:從最簡單的語句到類到組件,到子系統。代碼結構的最佳化組織方式採用物件導向,可以更好複用,使用設計模式後可以更好控制變化。但是運行時邏輯往往是面向過程的。比如Main{}中的邏輯。就象細胞構成嘴、腸胃,這些器官又構成了消化系統,但是吃飯這個功能的完成是利用各個器官的功能,按照某種控制流程程完成的。

結論:程式的目標之一是功能實現,其中實現方式是基於過程的,組織圖是物件導向的。

1.1過程式控制制模型

常見的過程式控制制模型有:1、C#語句控制流程;2、XAML;3、資料庫表;4、DSL(領域描述語言) ,圖形(專用的圖形工具) 。資料庫表中可以預存程序的調度邏輯,領域模式語言這幾年也非常流行。過程的描述可以用任何一種方法實現。

1.2C#控制流程程的問題

看一看互動式過程:在流轉的過程中需要外部訊息的響應的過程。可能某個處理會等待幾天甚至幾周。如果使用C#控制流程實現,應該怎麼實現。一般的做法是建立一個線程異布執行某個流程,而主線程持續運行(類似Windows服務) ,如果流程停滯,線程會被阻塞,如果阻塞的線程一多,整個系統的效能就會有很大影響,畢竟線程池等系統資源有限。這種設計可以實現,但是可擴充性和延展性都存在問題。Wf處理這類問題的思路是書籤機制,線上程停滯的地方加上書籤,並且書籤可以持久化儲存到介質上,節約CLR中記憶體資源。管理器接收到訊息後會繼續流程的運轉。書籤可以結合Observe模式和Delegate實現。第二講中我們可以進一步的瞭解到,wf的執行緒模式是天然的非同步呼叫機制,可以非常好的解決這類情況。而工作流程本身對過程模型的支援也強於目前的進階語言,下面的參考部分常見的工作流程模式。

1.3工作流程模式

工作流程的概念起源於生產組織和辦公自動化領域,提出的目的是通過將工作分解成定義良好的任務、角色,按照一定的規則和過程來執行這些任務並對它們進行監控,達到提高工作效率、降低生產成本、提高企業生產經營管理水平和企業競爭力的目標。工作流程從更高的層次上提供了實現物料流、資金流、資訊流及其涉及的相關過程與應用的整合機制,從而使得企業能夠實現業務過程整合、業務過程自動化與業務過程的管理。通過定義不同任務之間相互關係的工作流程模型, 無論是具體的操作動作,還是抽象的資訊處理動作與決策過程,都可以用工作流程的基本組成元素——活動來統一地進行描述。不同活動之間的關係,無論是具體的車間中零件加工循序關聯性、辦公自動化中的檔案批轉、還是抽象的決策流之間的關係都可以用工作流程的基本組成元素——串連弧來統一的進行描述。

基於Petri網原理研究了21種工作流程模式。

基本模式(5個)

順序模式 – 按照順序執行各項活動

解釋:工作流程流程中的一個活動只有當另一個活動完成後才能進行。

例子:當訂單登記活動完成後,客戶通知才可以進行。

平行分支模式 – 同時運行兩個活動

解釋:在流程中的一點一個控制線程分成可以並存執行的兩個控制線程,允許兩個活動可以同時運行。

例子:

同步模式 – 同步兩個並行的執行線程

單選模式 – 從多條路徑中選擇一個執行

簡單合并模式 – 合并兩個二選一路徑

進階分支與同步模式(5個)

多選模式  –從多條執行路徑中選出幾條

同步合并模式 – 合并多條路徑,如果有多條路徑被選擇,則進行同步;如果只有一條路徑被選擇,則進行簡單合并

多合并模式 – 合并多條路徑

鑒別器模式 – 合并多條路徑而不進行同步,只執行一次後續活動

M中的N模式 – 合并多條路徑,進行部分同步,只執行一次後續活動

結構模式(2個)

任意迴圈模式 – 沒有任何限制的執行工作流程   

隱含終斷模式 – 如果沒有事情可做,就結束

多執行個體模式(4個)

基於狀態的模式(3個)

延遲選擇模式 – 執行兩個可選線程中的一個,那個線程將被執行是隱含的

交替並行模式 – 兩個活動可以以任何順序執行,但不能並行進行

裡程碑模式 – 當一個裡程碑到達時,激發一個活動

取消模式(2個)

取消活動 – 取消當前活動

取消過程 – 取消該過程

參考:http://blog.csdn.net/tobeand/archive/2004/11/26/195106.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.