WF4.0(1)---WorkFlow簡介

編程編的越久就發現本身之前的語文真的沒學好,寫個隨筆取個名字都須要思考半天,之前工做的時候只是據說過工做流,知道的範圍僅限於工做流在OA審批流程中用的比較多,如今本身實實在在的用工做流也作過很多項目,對工做流的理解也比原來更深刻一點,因爲公司一直都是作工做流開發,因此本身在學習的過程當中少走了很多的彎路,本身有的時候時候在網上尋找這方面的文章要麼是零零碎碎的,要麼就是各類Copy換名字去連接之類的文章,實在不敢恭維,先就本身對工做流的理解寫點我的的建議。javascript

工做流(WorkFlow)發展史

WF的全稱是Windows Workflow Foundation,微軟在2004年推出了一個WinFx CTP版的開發包,在WinFX中提供了三個內容: Avalon(阿瓦隆同音), Indigo(英迪格同音), WinOE(注意這裏不是WinPE),05年的時候微軟推出了WinFx  Beta1(VS2005 β2支持winFX開發的擴展),以後微軟又推出了WinFx  Beta2,不過遺憾的在Beta2以後就沒有了而後,WinFX在2006年以Net 3.0 的方式正式發佈了在NET 3.0 中:java

Avalon成爲了Windows Presentation Foundation 簡稱爲WPF;Indigo成爲了 Windows Communication Foundation 簡稱爲WCF;WinOE 成爲了 Windows Workflow Foundation 簡稱爲WWF,以後微軟基於WPF推出了WFP/E, WFP/E就是Silverlight的前身.編程

先來看一個問題,爲何如今你們都說的是WF而不是WWF,首先WWF同名的太多了,其中比較著名的包括世界天然基金會(World Wild Fund for Nature),還有一個以前的世界摔跤聯盟(World Wrestling Federation)不過在微軟推出WWF以前就已經更名WWE(World Wrestling Entertainment),其次還有一個緣由屬於疊字的緣由WWF,一個技術框架的簡稱這麼念老是有點很差(有多是我先入爲主,我的推測). 框架

 

工做流的功能

 WPF,WCF,WWF(簡稱3W),這三個哥們一直在一塊兒也不是沒有道理的,微軟當時想的是WPF(silverlight)用於程序UI的展示,WCF用於程序通訊,WF用於程序的邏輯控制,這種思想在微軟提出WinFX到如今的NET3.x再到NET4.0都獲得了很好的體現。工做流(Workflow)是對工做流程及其各操做步驟之間業務規則的抽象、歸納描述。工做流建模,即將工做流程中的工做如何先後組織在一塊兒的邏輯和規則,能夠經過恰當的模型展示出業務的需求。工做流要解決的主要問題是:爲實現某個業務目標,利用計算機在多個參與者之間按某種預約規則自動傳遞文檔、信息或者任務。應用行業:消費品行業,製造業,電信服務業,銀證險等金融服務業,物流服務業,物業服務業,物業管理,大中型進出口貿易公司,政府事業機構,研究院所及教育服務業等,特別是大的跨國企業和集團公司。(其餘方面還有不少,就簡單描述一下,詳情可搜索之)ide

Demo

首先咱們來看一個簡單的遍歷字符串的代碼: 工具

            string[] strList = new string[3] { "sfm", "keso", "FlyElephant" };
            foreach (var item in strList)
            {
                Console.WriteLine("Name:" + item);
            }
            Console.Read();

經過工做流的方面實現以上代碼(VS2012):學習

1.首先新建一個控制檯項目;this

2.在項目右擊添加新項:spa

3.新建一個集成自CodeActivity名爲PersonNameActivity類:3d

     public sealed class PersonNameActivity : CodeActivity
    {
        public OutArgument<string[]>  personName { get; set; }
        protected override void Execute(CodeActivityContext context)
        {
            string[] strList = new string[3] { "sfm", "keso", "FlyElephant" };
            context.SetValue(this.personName, strList);
        }
    }

4.從新生成一下解決方案,而後打開Foreach.xaml,從工具箱中拖一個Sequence過來,再將PersonNameActivity拖過來:

4.將PersonName的值賦值給list:,而後從工具箱控制流拖一個Foreach過來:

 

5.從基元中拖一個Writeline過來,設置輸出

  

6.控制檯調用:

 WorkflowInvoker.Invoke(new Foreach());

原本想寫工做中用到的工做流的,不過發現公司那一趟要真的寫起來仍是挺費勁的,以前本身學習的時候也看過很多文章,有的理論的,有的是實戰的,寫的有點綜合吧,這篇文章看起來很簡單,不過沒接觸的過應該不算接觸,其中Activity,變量和參數,Sequence可能都不是很瞭解,可能還不是很到位,這個小Demo能夠本身玩下,有時間但願本身能補上一些關於基礎的博客.

相關文章
相關標籤/搜索