成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡(jiǎn)單對(duì)比微軟WorkFlow3.5與4.0的差異

開(kāi)發(fā) 后端
本文將討論的是微軟WorkFlow 3.5與4.0的差異,其中也提到了工作流在思想方面的一些改進(jìn),更加貼合實(shí)際情況。

最近要研究下WF4.0的相關(guān)內(nèi)容,將自己認(rèn)識(shí)的、理解的寫(xiě)下來(lái)與大家共勉,有興趣的朋友可以一起探討一下。

相對(duì)于之前的3.0、3.5中的WorkFlow來(lái)說(shuō),4.0進(jìn)行了很大的變動(dòng),包括流程設(shè)計(jì)工具、支持的活動(dòng)的類(lèi)型集合、工作流的內(nèi)部的模型、執(zhí)行引擎等等。對(duì)于其中的活動(dòng)模型、執(zhí)行引擎等內(nèi)容,屬于比較理論而且深入的內(nèi)容,我會(huì)在研究到一定程度之后與大家分享,希望通過(guò)本系列文章能夠和大家一起對(duì)WF3.0和4.0的區(qū)別和聯(lián)系有個(gè)全面細(xì)致深入的理解。

本文主要是對(duì)3.0和4.0之間的區(qū)別做了下簡(jiǎn)單的介紹,熟悉或者精通WF的可以跳過(guò)。

既然3.0、3.5中的WorkFlow和4.0不同,那么我們首先來(lái)對(duì)比一下。首先從設(shè)計(jì)工具說(shuō)起,分別用3.5(圖1)和4.0(圖2)創(chuàng)建一個(gè)順序工作流,我們可以看到下面的流程設(shè)計(jì)界面:

 

圖1(3.5中的流程設(shè)計(jì)界面)

 

圖2(4.0中的流程設(shè)計(jì)界面)

從圖中我們不難看出區(qū)別,3.5中順序工作流初始化默認(rèn)有個(gè)開(kāi)始和結(jié)束節(jié)點(diǎn),4.0默認(rèn)則是一片空白。個(gè)人感覺(jué)這是一種觀(guān)念的改變,工作流始于開(kāi)始、終于結(jié)束是我們傳統(tǒng)思維,然而開(kāi)始結(jié)束本身就是一個(gè)虛活動(dòng),更像是邊界的限定,開(kāi)發(fā)人員了解,用戶(hù)卻不了解;4.0所給人的信息更符合用戶(hù)思維,一個(gè)流程始于活動(dòng)而終于活動(dòng)。基于設(shè)計(jì)出的流程,讓開(kāi)發(fā)者、業(yè)務(wù)建模人員、用戶(hù)之間能夠相互交流,分析師能夠?qū)α鞒踢M(jìn)行優(yōu)化,決策者能夠更好的決策是一種趨勢(shì),而這種趨勢(shì)必然要跨出的一步就是流程設(shè)計(jì)的可被大眾理解化。

呵呵,有點(diǎn)扯遠(yuǎn)了。我們接著看看3.5(圖3)和4.0(圖4)支持的活動(dòng)類(lèi)型:

 

圖3(3.5支持的活動(dòng)類(lèi)型)

 

圖4(4.0支持的活動(dòng)類(lèi)型)

可以看到4.0支持的活動(dòng)類(lèi)型不僅更多,而且分類(lèi)更細(xì)致。不僅在controlFlow和原始類(lèi)型中提供了基礎(chǔ)的活動(dòng),用來(lái)定制基本的流程,而且在FlowChart里面提供了能更加靈活的定制流程的活動(dòng)類(lèi)型,同時(shí)還提供用于消息、事務(wù)、錯(cuò)誤處理等功能的活動(dòng)

接下來(lái)看看引用的類(lèi)庫(kù)以及項(xiàng)目文件的目錄結(jié)構(gòu):

.NET 3.5中引用了以下類(lèi)庫(kù):

System.Workflow.Activities:定義了工作流可以創(chuàng)建、允許的活動(dòng)集合

System.Workflow.ComponentModel:提供創(chuàng)建活動(dòng)、工作流的基類(lèi)、接口以及核心建模構(gòu)造

System.Workflow.Runtime:提供一些類(lèi)和接口可以控制工作流運(yùn)行時(shí)引擎以及流程實(shí)例的執(zhí)行

默認(rèn)創(chuàng)建的工作流是Workflow1.cs,對(duì)于設(shè)計(jì)完的流程是用類(lèi)文件的形式進(jìn)行描述,即Workflow1.designer.cs,執(zhí)行代碼放到Workflow1.cs中。

通過(guò)ViewCode可以看到兩個(gè)類(lèi)的代碼為:

  1. //Workflow1.cs  
  2. public sealed partial class Workflow1 : SequentialWorkflowActivity  
  3. {  
  4. public Workflow1()  
  5. {  
  6. InitializeComponent();  
  7. }  
  8. }  
  9. //Workflow1.designer.cs  
  10. partial class Workflow1  
  11. {  
  12. #region Designer generated code  
  13. /// <summary>  
  14. /// Required method for Designer support - do not modify  
  15. /// the contents of this method with the code editor.  
  16. /// </summary>  
  17. [System.Diagnostics.DebuggerNonUserCode]  
  18. [System.CodeDom.Compiler.GeneratedCode("""")]  
  19. private void InitializeComponent()  
  20. {  
  21. this.Name = "Workflow1";  
  22. }  
  23. #endregion  

.NET4.0中WorkFlow引用了以下類(lèi)庫(kù):

System.Activities:包含創(chuàng)建和使用活動(dòng)所需的所有類(lèi)。使用此命名空間中的類(lèi)可以定義活動(dòng)、輸入輸出數(shù)據(jù)和變量

System.ServiceModel:包含用于生成服務(wù)和客戶(hù)端應(yīng)用程序所需的類(lèi)、枚舉和接口,這些類(lèi)、枚舉和接口可以用于生成大范圍的分布式程序

System.ServiceModel.Activities:使用此命名空間中的類(lèi)可以從工作流接受消息,或者向工作流發(fā)送消息,定義工作流服務(wù)的時(shí)候可以使用這些活動(dòng)

默認(rèn)創(chuàng)建的是Workflow1.xaml,定義完的流程是用xml的方式進(jìn)行描述。

通過(guò)ViewCode,我們可以看到WorkFlow1.xaml中的內(nèi)容:

  1. <Activity mc:Ignorable="sap" 
  2. x:Class="WFConsoleAppTest.Workflow1" 
  3. sap:VirtualizedContainerService.HintSize="240,240" 
  4. mva:VisualBasic.Settings="Assembly references and imported namespaces for internal implementation" 
  5. xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
  6. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  7. xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System" 
  8. xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" 
  9. xmlns:s="clr-namespace:System;assembly=mscorlib" 
  10. xmlns:s1="clr-namespace:System;assembly=System" 
  11. xmlns:s2="clr-namespace:System;assembly=System.Xml" 
  12. xmlns:s3="clr-namespace:System;assembly=System.Core" 
  13. xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
  14. xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" 
  15. xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System" 
  16. xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel" 
  17. xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core" 
  18. xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib" 
  19. xmlns:sd="clr-namespace:System.Data;assembly=System.Data" 
  20. xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" 
  21. xmlns:st="clr-namespace:System.Text;assembly=mscorlib" 
  22. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" /> 

可以看到,對(duì)于類(lèi)文件、命名空間的引用,xml使用的schema限定等都在WorkFlow1.xaml中進(jìn)行了描述。

.NET3.5中Program.cs中代碼如下:

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())  
  6. {  
  7. AutoResetEvent waitHandle = new AutoResetEvent(false);  
  8. workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };  
  9. workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)  
  10. {  
  11. Console.WriteLine(e.Exception.Message);  
  12. waitHandle.Set();  
  13. };  
  14. WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WFSequenceTest.Workflow1));  
  15. instance.Start();  
  16. waitHandle.WaitOne();  
  17. }  
  18. }  

代碼中對(duì)流程實(shí)例完成、流程實(shí)例終止進(jìn)行了事件的處理,然后通過(guò)用戶(hù)定義的Workflow1創(chuàng)建WorkflowInstance,調(diào)用instance.Start()開(kāi)始執(zhí)行流程。

.NET4.0中Program.cs代碼如下:

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. WorkflowInvoker.Invoke(new Workflow1());  
  6. }  

代碼中創(chuàng)建了一個(gè)Workflow1的實(shí)例,然后通過(guò)WorkflowInvoker.Invoke來(lái)開(kāi)始執(zhí)行流程。

通過(guò)對(duì)比不難發(fā)現(xiàn),4.0的流程創(chuàng)建執(zhí)行更簡(jiǎn)潔,也更符合思維習(xí)慣。以請(qǐng)假流程為例,請(qǐng)假人首先會(huì)填寫(xiě)個(gè)請(qǐng)假條,然后報(bào)領(lǐng)導(dǎo)審批就是;用工作流來(lái)描述這個(gè)過(guò)程就是,首先定義個(gè)請(qǐng)假流程,包括請(qǐng)假發(fā)起環(huán)節(jié)和請(qǐng)假審批環(huán)節(jié),流程定義好之后,誰(shuí)想請(qǐng)假了,填寫(xiě)請(qǐng)假表單,提交到領(lǐng)導(dǎo)審批環(huán)節(jié)即可;如果用程序來(lái)描述那就是設(shè)計(jì)一個(gè)請(qǐng)假流程(類(lèi)、xaml等),創(chuàng)建實(shí)例并執(zhí)行。我們很有可能會(huì)忘記一些事件的定制,然而有些情況下這往往會(huì)導(dǎo)致流程出現(xiàn)一些問(wèn)題,例如3.5中我們需要定制兩個(gè)事件,創(chuàng)建并開(kāi)始流程實(shí)例的代碼也比較繁瑣。

總起來(lái)說(shuō)4.0更靈活,更全面,更符合發(fā)展趨勢(shì)。

文章比較淺,希望大家能通過(guò)這篇文章對(duì)3.0和4.0Workflow之間的不同有個(gè)感性的認(rèn)識(shí)。

原文標(biāo)題:WF3.0和4.0區(qū)別介紹

鏈接:http://www.cnblogs.com/jingtao/archive/2010/08/05/1792982.html

【編輯推薦】

  1. 微軟MVP初探WF 4.0 beta1 嶄新面貌讓人吃驚
  2. 詳解在Workflow工作流中如何使用角色
  3. 使用Silverlight構(gòu)建工作流即服務(wù)平臺(tái)
  4. 詳解工作流架構(gòu)與實(shí)現(xiàn)
  5. 解析UML工作流管理系統(tǒng)

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2025-02-03 16:58:39

2010-05-12 13:50:04

2009-03-10 18:54:51

微軟VMWARE桌面虛擬化

2010-06-21 10:35:30

LinuxDeepin

2019-07-10 10:00:42

PHPPython語(yǔ)法

2009-12-02 09:07:45

ASP.NET 4.0

2018-03-30 12:40:10

潤(rùn)乾差異數(shù)據(jù)

2011-02-21 13:21:20

.NET Workfl

2009-09-01 13:07:23

雪豹蘋(píng)果操作系統(tǒng)

2012-02-08 10:14:01

Android 4.0Chrome

2018-08-15 12:43:52

iOSAndroid設(shè)計(jì)差異

2011-07-03 23:22:31

網(wǎng)站優(yōu)化

2022-01-22 20:45:26

ExcelOffice微軟

2023-12-20 22:04:17

Linux二進(jìn)制文件

2020-10-15 11:22:34

PyTorchTensorFlow機(jī)器學(xué)習(xí)

2018-05-21 09:03:00

NASSAN案例

2010-01-04 13:44:41

SQL

2024-01-31 09:41:14

微軟生成式AI人工智能

2024-07-31 20:39:49

前端文本JavaScrip

2025-02-26 08:16:38

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美一区二区视频 | 久久精品亚洲 | 久久综合一区 | 午夜精品视频在线观看 | 亚洲综合字幕 | 在线观看国产视频 | 亚洲理论在线观看电影 | 日韩在线播放一区 | av国产精品| 99视频网 | 国产丝袜一区二区三区免费视频 | 一本大道久久a久久精二百 欧洲一区二区三区 | 日韩一区二区精品 | 精品99久久 | 夜夜久久 | 日韩一级免费大片 | 成人在线一级片 | 免费午夜电影 | 午夜在线小视频 | 欧美久久免费观看 | m豆传媒在线链接观看 | 久久综合激情 | 夜夜精品浪潮av一区二区三区 | 久久国产美女视频 | 天天干成人网 | 99re国产精品| 亚洲第一天堂 | 超碰免费在线观看 | 中文字幕第十五页 | 日韩中文电影 | www.亚洲| 99视频免费看 | 国产日韩精品在线 | 亚洲国产精品久久久久久 | 精品国产乱码久久久久久丨区2区 | 在线国产精品一区 | 成人高潮片免费视频欧美 | 综合久久99| 精品欧美一区二区三区久久久 | 亚洲国产成人在线视频 | 国产成人综合在线 |