国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WF4.0 Beta1中的規則引擎變化

開發 開發工具
本文將介紹WF4.0 Beta1中的規則引擎變化,在WF3.x時代我們可以使用聲明性的條件和代碼方式的條件,也可以使用支持正向鏈接的RuleSet,WF4.0提供了統一的完全聲明式的表達式(Expression)。

在WF3.x時代我們可以使用聲明性的條件和代碼方式的條件,也可以使用支持正向鏈接的RuleSet。當然我們還可以使用基于CodeDOM的API來用代碼的方式聲明。

在微軟剛剛發布的WF4.0 Beta1中我們已經看不到這些了,WF4.0提供了統一的完全聲明式的表達式(Expression)。現在的版本只支持使用VB來構建表達式(Expression),但是在設計上是可以支持任何語言的,微軟也會在未來的版本中提供對其他語言的支持。

WF4.0中表達式是ValueExpression類型的,我們在VS中構造表達式的窗口是ExpressionTextBox類的實例,它也是可以再外部重新宿主的,只不過只有和VS結合的時候才有智能感知和顏色的支持。在表達式中我們可以引用工作流中的變量和參數。這些信息都會被序列化到XAML中。提供了表達式(Expression)并不是就不要原來的方式,微軟在開發WF4.0一個很重要的部分就是對WF3.x全面兼容。在WF4.0中提供了一個Interop活動可以幫助我們很好的完成現有WF3.x程序的遷移,我們只需要簡單的設置它的Body Type屬性即可,我們可以將WF4.0中的變量和參數綁定到WF3.x中的依賴屬性上,如下圖:  

參數綁定  

在WF4.0 beta1中沒有提供對正向鏈接的RuleSet功能,官方已經聲明會在將來的版本中加大這部分的投入。現在如果我們要想在WF4.0 Beta1使用類似的功能我們可以開發一個自定義活動來完成,下面的例子來源于WF Samples中,首先是活動的代碼部分:

  1. namespace Microsoft.Samples.Rules  
  2. {  
  3.     using System;  
  4.     using System.Activities;  
  5.     using System.ComponentModel;  
  6.     using System.Workflow.Activities.Rules;  
  7.     using System.Workflow.ComponentModel.Compiler;  
  8.  
  9.     [Designer(typeof(Microsoft.Samples.Rules.PolicyDesigner))]  
  10.     public sealed class Policy40Activity : NativeActivity  
  11.     {  
  12.         public RuleSet RuleSet { get; set; }  
  13.  
  14.         [IsRequired]  
  15.         public InOutArgument TargetObject { get; set; }  
  16.         public OutArgument<ValidationErrorCollection> ValidationErrors { get; set; }  
  17.  
  18.         protected override void OnOpen(DeclaredEnvironment environment)  
  19.         {  
  20.             if (this.RuleSet == null)  
  21.             {  
  22.                 throw new System.ArgumentNullException("RuleSet property can't be null");  
  23.             }  
  24.         }  
  25.  
  26.         protected override void Execute(ActivityExecutionContext context)  
  27.         {  
  28.             // validate before running  
  29.             Type targetType = this.TargetObject.Get(context).GetType();  
  30.             RuleValidation validation = new RuleValidation(targetType, null);  
  31.             if (!this.RuleSet.Validate(validation))  
  32.             {  
  33.                 // set the validation error out argument  
  34.                 this.ValidationErrors.Set(context, validation.Errors);  
  35.                 // throw a validation exception  
  36.                 throw new ValidationException(string.Format("The ruleset is not valid. {0} validation errors                   found (check the ValidationErrors property for more information).", validation.Errors.Count));  
  37.             }  
  38.             // execute the ruleset  
  39.             object evaluatedTarget = this.TargetObject.Get(context);  
  40.             RuleEngine engine = new RuleEngine(this.RuleSet, validation);  
  41.             engine.Execute(evaluatedTarget);  
  42.             // update the target object  
  43.             this.TargetObject.Set(context, evaluatedTarget);  
  44.         }  
  45.     }  

下面是活動的設計器部分,在WF4.0中提供了對活動設計器的可視化支持:

  1. <sad:WorkflowElementDesigner x:Class="Microsoft.Samples.Rules.PolicyDesigner" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     xmlns:sad="clr-namespace:System.Activities.Design;assembly=System.Activities.Design" 
  5.     xmlns:sadv="clr-namespace:System.Activities.Design.View;assembly=System.Activities.Design"> 
  6.     <sad:WorkflowElementDesigner.Resources> 
  7.         <sadv:ArgumentToExpressionConverter x:Uid="sadv:ArgumentToExpressionConverter_1"          x:Key="argumentToExpressionConverter" /> 
  8.     </sad:WorkflowElementDesigner.Resources> 
  9.     <Grid> 
  10.         <Grid.RowDefinitions> 
  11.             <RowDefinition x:Uid="RowDefinition_1" /> 
  12.             <RowDefinition x:Uid="RowDefinition_2" /> 
  13.         </Grid.RowDefinitions> 
  14.         <Grid.ColumnDefinitions> 
  15.             <ColumnDefinition x:Uid="ColumnDefinition_1" Width="70*"  /> 
  16.             <ColumnDefinition x:Uid="ColumnDefinition_2" Width="196*" /> 
  17.         </Grid.ColumnDefinitions> 
  18.         <Label Content="Target Object" Name="label1" Margin="0,5,0,7"/> 
  19.         <sadv:ExpressionTextBox   
  20.             x:Uid="ExpressionTextBox_1"   
  21.             Grid.Row="0" Grid.Column="1"   
  22.             AutomationProperties.AutomationId="TargetObject"              
  23.             Width="190" Margin="9,7,9,7" MaxLines="1"   
  24.             VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"   
  25.             Expression="{Binding Path=ModelItem.TargetObject, Mode=TwoWay, Converter={StaticResource                          argumentToExpressionConverter}, ConverterParameter=InOut}" 
  26.             UseLocationExpression="True" 
  27.             OwnerActivity="{Binding Path=ModelItem, Mode=TwoWay}" /> 
  28.         <Button Content="Edit RuleSet" Name="button1" Width="190" Margin="9,9,9,9" Click="button1_Click"          Grid.Row="1" Grid.Column="1" /> 
  29.     </Grid> 
  30. </sad:WorkflowElementDesigner> 

效果如下圖:

運行效果


下面是當點擊按鈕后,會出現RuleSet的編輯器:

  1. using System;  
  2. using System.Activities;  
  3. using System.Windows;  
  4. using System.Windows.Forms;  
  5. using System.Workflow.Activities.Rules;  
  6. using System.Workflow.Activities.Rules.Design;  
  7.  
  8. namespace Microsoft.Samples.Rules  
  9. {  
  10.     // Interaction logic for PolicyDesigner.xaml  
  11.     public partial class PolicyDesigner  
  12.     {  
  13.         public PolicyDesigner()  
  14.         {  
  15.             InitializeComponent();  
  16.         }  
  17.  
  18.         private void button1_Click(object sender, RoutedEventArgs e)  
  19.         {  
  20.             // verifiy that TargetObject property has been configured  
  21.             object targetObject = ModelItem.Properties["TargetObject"].ComputedValue;  
  22.             if (targetObject == null)  
  23.             {  
  24.                 System.Windows.MessageBox.Show("TargetObject needs to be configured before adding the rules");  
  25.                 return;  
  26.             }  
  27.             // verify that target object is correctly configured  
  28.             InOutArgument arg = targetObject as InOutArgument;  
  29.             if (arg == null)  
  30.             {  
  31.                 System.Windows.MessageBox.Show("Invalid target object");  
  32.                 return;  
  33.             }  
  34.             // open the ruleset editor  
  35.             Type targetObjectType = arg.ArgumentType;  
  36.             RuleSet ruleSet = ModelItem.Properties["RuleSet"].ComputedValue as RuleSet;  
  37.             if (ruleSet == null)  
  38.                 ruleSet = new RuleSet();  
  39.             RuleSetDialog ruleSetDialog = new RuleSetDialog(targetObjectType, null, ruleSet);  
  40.             DialogResult result = ruleSetDialog.ShowDialog();  
  41.             // update the model item  
  42.             if (result == DialogResult.OK)             {  
  43.                 ModelItem.Properties["RuleSet"].SetValue(ruleSetDialog.RuleSet);  
  44.             }  
  45.         }  
  46.     }  

這樣我們就可以再WF4.0中使用該活動了,如下圖:

WF4.0中活動

【編輯推薦】

  1. 淺談WF 4.0 Beta1中的跟蹤機制
  2. 微軟MVP初探WF 4.0 beta1 嶄新面貌讓人吃驚
  3. 詳解在Workflow工作流中如何使用角色
  4. 詳解工作流架構與實現
  5. 用UML描述工作流管理
責任編輯:彭凡 來源: cnblogs
相關推薦

2009-06-15 10:20:47

WF 4.0 Beta跟蹤機制

2009-06-22 09:36:06

WF 4.0 beta跟蹤配置

2009-07-16 10:41:40

WF 4.0 beta

2009-10-28 09:23:27

WF4.0 Beta2

2009-05-20 10:26:09

Visual StudWF微軟

2009-07-28 10:00:47

VS2010 beta

2013-02-26 09:42:09

RailsRuby

2010-01-14 09:35:10

WF4.0

2012-04-16 15:18:15

JythonJVM

2010-09-13 10:02:11

Firefox 4.0

2009-05-20 09:20:29

Visual Stud試用WPF

2009-12-01 10:37:45

Hiweed LinuLinuxDeepin

2010-01-14 14:12:14

Visual Stud

2010-02-01 09:19:32

WF 4.0

2021-04-22 10:13:34

鴻蒙HarmonyOS應用

2011-07-06 16:26:32

jQuery Mobi

2018-09-30 11:53:39

開源 操作系統功能

2011-08-25 10:28:51

Ubuntu 11.1

2010-12-10 09:17:50

開源虛擬機Virtua

2009-07-30 13:17:44

STM.NET.NET 4 Beta
點贊
收藏

51CTO技術棧公眾號

久久免费精品日本久久中文字幕| 久久精品国产亚洲精品| 中文字幕电影在线观看| 国产欧美日韩视频在线观看| 日韩免费电影一区二区| 国产在线视频一区二区| 久久综合久久网| 久久久欧美精品sm网站| 男女18免费网站视频| 国产精品午夜电影| 国产精品久久久久久久龚玥菲| 在线看国产一区| 丁香在线视频| 欧美色欧美亚洲另类二区| 男女羞羞视频网站| 欧美色图第一页| 男女视频在线| 国产精品久久久久aaaa九色| 久久久久国产精品一区三寸| 久草热视频在线观看| 欧美亚洲综合另类| 黄色免费在线观看| 精品一区二区在线看| 亚洲一区二区自拍偷拍| 中文在线一区二区| 91精品国产91久久久久游泳池| 久久精品视频在线观看| 日本强好片久久久久久aaa| 蜜桃传媒九九九| 色婷婷久久av| 久久精品国产在热久久| 黑人巨大国产9丨视频| 国产精品视频一二三区| 毛片在线导航| 成人福利网站在线观看| 亚洲欧美福利一区二区| 精品一区二区三区中文字幕| 婷婷视频在线播放| 欧美图区在线视频| 婷婷综合久久| 免费av一级电影| 久久久精品免费视频| 性色av一区二区怡红| 污污网站在线观看| caoporen国产精品| 91福利视频久久久久| 欧美国产美女| av电影在线观看| 91夜夜揉人人捏人人添红杏| 中文字幕在线不卡一区二区三区| 中文字幕区一区二区三| 在线看片地址| 成人av在线亚洲| 五月婷婷欧美视频| 综合精品一区| 国产专区在线| 亚洲精品乱码视频| 北条麻妃久久精品| 成人一区二区三区视频在线观看| 手机看片久久| 美女三级99| 久久精品视频亚洲| 国产成人免费视频一区| 免费成人直播| 99热这里只有精品免费| 日韩在线视频免费观看| 亚洲精品国产a久久久久久| 欧美激情欧美| 肉肉视频在线观看| 日本免费在线视频观看| 欧美亚洲日本网站| 欧美日韩国产系列| 亚洲免费网址| 日本一区二区三区在线视频| 91福利在线导航| 久久深夜福利| 日韩影片中文字幕| 欧美性猛交p30| 欧美一区二视频在线免费观看| 亚洲欧美国产精品| 亚洲一区二区黄色| 国内精品伊人久久久久av一坑| 香蕉视频一区| www.成人在线.com| av每日在线更新| 日本女优北野望在线电影| 韩国成人av| 日韩精品欧美国产精品忘忧草| 亚洲免费在线播放| 97久久精品人人澡人人爽| 风间由美性色一区二区三区四区| 在线影院av| 日韩视频在线视频| yy111111少妇影院日韩夜片 | 污污的网站在线观看| 欧美精品一区免费| 日韩亚洲不卡在线| 国产91亚洲精品| 国产亚洲精品久久久优势| 午夜国产不卡在线观看视频| 2023国产精品| 国产一区二区三区免费看| 爽成人777777婷婷| 中文字幕一区二区三区日韩精品| 亚洲性色av| jizz性欧美10| 在线免费看黄| www.黄在线观看| 日本电影免费看| 污版网站在线观看| 日韩手机在线观看视频| 亚洲熟妇无码一区二区三区导航| 欧美精品123| 亚洲不卡1区| 国产成人生活片| 中文字幕中文字幕一区三区| 日本福利视频导航| 国产日韩视频在线播放| 欧美aaa在线观看| 91久久精品国产91久久性色tv| 久久久久久久爱| 浅井舞香一区二区| 国产精品一区二区三| 国产精品久久久久影院日本| 147欧美人体大胆444| 开心色怡人综合网站| 精品福利一区二区三区| 夜夜亚洲天天久久| 成熟亚洲日本毛茸茸凸凹| 一区二区三区午夜探花| 亚洲天堂日韩在线| 成人污污www网站免费丝瓜| 国产精品日韩精品在线播放| 精品久久ai| 狠狠入ady亚洲精品经典电影| julia一区二区三区中文字幕| 日韩经典av| 日韩欧美另类中文字幕| 欧美gvvideo网站| 蜜臀av性久久久久蜜臀aⅴ | 99在线热播| 久久视频免费在线| 诱人的瑜伽老师3hd中字| 福利视频午夜| 91高清在线观看视频| 国产精品亚洲欧美一级在线| 奇米亚洲欧美| 国产精品羞羞答答在线观看| 国产精品精品| 成人午夜电影小说| 色综合久久中文综合久久97| 日韩在线不卡视频| 爱情岛论坛亚洲入口| 亚洲国产精品一区二区第一页| 理论片播放午夜国外| av软件在线观看| 老司机凹凸av亚洲导航| 精品产国自在拍| 国产精品国产三级国产aⅴ入口| 欧美一区二区精品| 国产第一区电影| 丰满爆乳一区二区三区| 最爽无遮挡行房视频在线| 成人精品一区二区三区电影| 久久在线91| 欧美日韩亚洲综合一区| 国产精品wwwwww| 亚洲视频在线观看一区二区三区| 成人毛片av在线| 亚洲国产1区| 一区二区中文字幕在线| 欧洲中文字幕精品| 国产精品久久综合av爱欲tv| 日韩精品视频一区二区在线观看| 国产美女一区视频| 日日摸夜夜添夜夜添精品视频 | 国产一区二区观看| 精品一区免费| 国产高清亚洲一区| 欧美日韩另类国产亚洲欧美一级| 亚洲欧洲日产国码av系列天堂| 国产91成人video| 黄网免费入口| 亚洲成人黄色| 亚洲日本一区二区| 国产精品久久久久久久久久小说 | 在线观看一级片| 亚洲精品视频一二三区| 免费看亚洲片| 亚洲国产成人高清精品| 日韩视频亚洲视频| 青青视频免费在线| 国产日韩欧美中文在线| 国产美女av一区二区三区| 久久香蕉国产线看观看av| 欧美精品欧美精品| 欧美中文字幕精在线不卡| 久久aⅴ国产欧美74aaa| 欧美在线观看视频一区二区三区| 久久国产精品久久精品国产|