1、第十二章 新技术介绍,通过前面几章的学习,我们学会了如何使用ASP.NET技术进行动态网站的开发,我们进行网站开发的目的是为了实现信息的共享,这里的信息指的是网站本身包含的资源,用户可以通过访问我们的网站获得相关的网站资源,但在某些情况下我们的网站需要从其他的应用程序中获取信息,也就是说根据用户的需求,有时我们除了使用ASP.NET开发网站程序外,还需要开发相关联的其他应用程序,以实现相关程序之间的信息访问,这就需要.NET提供的另外一种Windows平台下的面向服务的新的编程模型,即WCF(Windows Communication Foundation),该技术对关联应用程序的开发进行了简
2、化。通过提供分层的体系结构,对多种风格的分布式应用程序提供服务支持。,第十二章 新技术介绍,相对于ASP.NET来说,WCF是一种侧重于程序之间通信的新技术,我们在进行ASP.NET网站应用程序开发时,有时需要用到WCF。 本章既然是介绍.NET的新技术,除了与ASP.NET关系密切的WCF外,.NET平台还提供了另外几种与ASP.NET关系不太密切的新技术:,第十二章 新技术介绍,Silverlight,是一种跨浏览器、跨平台的 .NET Framework 实现,用于为 Web 生成和提供下一代媒体体验和丰富的交互式应用程序 (RIA),也就是.NET平台提供的一种浏览器插件。 WPF,全
3、称是Windows Presentation Foundation,是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序。使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序。,第十二章 新技术介绍,WF(Windows Workflow Foundation),是存储了多个活动单元的一组模型,各活动单元用于描述某一项任务的实际流程。工作流提供了一种方法,将工作流程中的逻辑和规则进行组织和管理,对任务的执行顺序和各模块间的依赖关系进行详细的描述。使工作流中的活动单元可以按预定的流程执行,从头到尾贯穿整个模型。,第十二章 新技术介绍,第十二章 新技术介
4、绍,12.1 WCF 12.2 Silverlight技术与WPF技术 12.3 WF技术,第十二章 新技术介绍,12.1 WCF,12.1.1 一个简单的WCF服务及应用例子,第十二章 新技术介绍,第十二章 新技术介绍,图 122 添加Hello.svc服务项,using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace WcfServic
5、eHello / 注意: 如果更改此处的类名 “Hello“,也必须更新 Web.config 中对 “Hello“ 的引用。,第十二章 新技术介绍,为“Hello.svc”服务项添加如下代码:,public class Hello : IHello /问候/姓名/问候语public string sayHello(string name)string result=“您好“+name+“,欢迎学习WCF!“;return result; ,第十二章 新技术介绍,为该项目的“IHello.cs”接口项,添加如下代码:,第十二章 新技术介绍,第十二章 新技术介绍,在IE 浏览器下浏览该Web服务
6、,效果如图 123所示。,第十二章 新技术介绍,图 123 Hello服务效果,第十二章 新技术介绍,图 124 添加服务引用,第十二章 新技术介绍,该控制台应用程序的代码如下所示:,第十二章 新技术介绍,第十二章 新技术介绍,图 125 执行效果,编译运行该程序,效果如图 125所示。,第十二章 新技术介绍,输入一个姓名并按下回车键后,效果如图 126所示,图 126 输出问候信息,第十二章 新技术介绍,12.1.2 在WCF服务中模拟客户端程序,第十二章 新技术介绍,图 127 添加引用,第十二章 新技术介绍,为该程序创建如下代码:,第十二章 新技术介绍,第十二章 新技术介绍,public
7、 class Hello : iHello/ / 输出调用方信息/ static void DisplayMessage()Console.WriteLine(“t当前线程所运行的帐户:0“,WindowsIdentity.GetCurrent().Name);Console.WriteLine(“t帐户标记:0“,WindowsIdentity.GetCurrent().Token.ToString();Console.WriteLine(“t线程模拟级别 :0“,WindowsIdentity.GetCurrent().ImpersonationLevel);,第十二章 新技术介绍,第十二
8、章 新技术介绍,if (ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel =TokenImpersonationLevel.Impersonation |ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel =TokenImpersonationLevel.Delegation)/从远程方的上下文中提取Windows标识using (ServiceSecurityContext.Current.WindowsIdentity.Imper
9、sonate(),第十二章 新技术介绍,Console.WriteLine(“nn成功模拟“);DisplayMessage();Else /权限不够Console.WriteLine(“nn当前的操作需要更高的权限“);return Message; ,第十二章 新技术介绍,第十二章 新技术介绍,为该程序添加一个配置文件App.config,具体配置如下所示:,第十二章 新技术介绍,第十二章 新技术介绍,第十二章 新技术介绍,图 128 宿主启动成功效果,编译后运行该程序,效果如图 128所示。,using System; using System.Collections.Generic;
10、using System.Linq; using System.Text; namespace Client class Programstatic void Main(string args)ServiceReference1.iHelloClient client = new Client.ServiceReference1.iHelloClient();Console.WriteLine(client.hello().ToString();Console.ReadLine(); ,第十二章 新技术介绍,创建一个控制台应用程序,命名为“Client”,作为WCF服务的客户端程序,首先添加对
11、URL:“http:/localhost:5678/Hello”的服务引用,然后为该程序创建如下所示代码。,第十二章 新技术介绍,图 129 客户端运行效果,确保已经启动了WCF宿主程序,然后启动客户端程序,效果如图 129所示。,第十二章 新技术介绍,此时我们再回来看宿主程序,已经输出了模拟客户端的反馈信息,如图 1210所示。,图 1210 输出模拟反馈信息,分析: 在程序“HostService.service.cs”中,创建一个名为“Hello()”的方法,并在接口中将其暴露以提供服务; 在宿主程序中,首先输出输出当前宿主程序所运行的账户信息,并将宿主的通信对象打开,代码如下所示:,第
12、十二章 新技术介绍,static void DisplayMessage()Console.WriteLine(“t当前线程所运行的帐户:0“,WindowsIdentity.GetCurrent().Name);Console.WriteLine(“t帐户标记:0“,WindowsIdentity.GetCurrent().Token.ToString();Console.WriteLine(“t线程模拟级别 :0“,WindowsIdentity.GetCurrent().ImpersonationLevel);,第十二章 新技术介绍,使用一个“DisplayMessage()”方法,来显
13、示当前模拟方的信息,代码如下所示:,让“Hello()”方法使用OperationBehaviorAttribute来模拟调用方,代码如下所示:,if (ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel =TokenImpersonationLevel.Impersonation |ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel =TokenImpersonationLevel.Delegation),第十二章 新技术介绍,在模拟
14、之前首先进行判断,确定Host是否具有模拟特权,代码如下所示:,如果具有模拟权限,则先从远程方的上下文中提取Windows标识,并输出模拟信息,代码如下所示:,如果不具有模拟权限,则输出提示信息,代码如下所示:,WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。以通信(Communiation)范围而论,它可以跨
15、进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以ASP.NET,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。 WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。,第十二章 新技术介绍,随着Web的深入发展,用户体验在Web项目中的地位变得越来越重要,浏览器已不仅仅局限于提供简
16、单的文档显示和超链接的功能,用户对界面的高质量和易操作性提出了更高要求。 为了让用户通过浏览器访问Internet资源时具有更佳的用户体验,各大厂商纷纷提供了多种解决方案,如ActiveX控件、java Applets、Flash插件以及上一章我们介绍的可以进行Web页面局部刷新的AJAX技术。但是不管是插件还是AJAX都存在自身的局限性:插件实际上就是客户端应用程序,它的运行依赖于操作系统和浏览器的支持,另外插件也为病毒和木马的肆虐提供了可乘之机;而AJAX技术对图形、动画、音视频等多媒体功能的支持存在不足。针对这些问题,Microsoft启动了Web用户体验(UX)战略,主要目的是使Web
17、应用程序既具有网络应用程序的灵活性,又能够提供接近桌面应用程序的用户体验,这时Silverlight应运而生。,第十二章 新技术介绍,12.2 Silverlight技术与WPF技术,WPF技术是一项界面表现层的基础技术,前面章节我们介绍的使用ASP.NET技术开发网站应用程序,在进行表现层处理时是在HTML的基础上,结合不同技术来共同完成对用户界面、文档、媒体等的处理。而WPF技术首先是对用户界面,文档,媒体处理提供了统一方法,使我们开发人员不用再困惑于不同的技术之上,而是用统一的方法解决表现层的问题。其次是基于矢量的图形引擎, WPF技术不仅完全建立在矢量显示技术基础之上,而且更与Wind
18、ows系统底层紧密结合,可以直接利用当今PC强大的GPU技术,使用DirectX直接对矢量渲染进行加速,充分发挥了硬件资源的潜能,提高了应用的性能。再就是WPF技术有自己独特的XAML语言,来对表现界面进行设计编程,其方便程度类似于用HTML来编写网页,而其功能性则更超越了以往所有的界面设计方法,他使得我们设计人员也可以进行一定的界面开发的工作。 也就是说我们可以利用WPF技术提供的统一方法开发出用户体验更佳的应用程序。,第十二章 新技术介绍,Microsoft Silverlight 是一种跨浏览器、跨平台的 .NET Framework 实现,用于为 Web 生成和提供下一代媒体体验和丰富
19、的交互式应用程序 (RIA)。Silverlight 统一了服务器、Web 和桌面的功能,统一了托管代码和动态语言、声明性编程和传统编程以及 Windows Presentation Foundation (WPF) 的功能。 Silverlight 允许您创建具有以下功能的最先进的应用程序: 它是一种跨浏览器、跨平台的技术。它在所有常见的 Web 浏览器中运行,包括 Microsoft Internet Explorer、Mozilla Firefox 和 Apple Safari,并在 Microsoft Windows 和 Apple Mac OS X 上运行。 它由可在数秒内安装的很小
20、的下载程序支持。 它对视频和音频进行流处理。它将视频品质调整到适合各种环境:从移动设备到桌面浏览器以及 720p HDTV 视频模式。 它包括用户可以直接在浏览器中操作(拖动、旋转和缩放)的足够清晰的图形。 它读取数据并更新显示内容,但是不通过刷新整个页面来打断用户。,第十二章 新技术介绍,12.1.2 Silverlignt技术,Silverlight 将多种技术组合到单个开发平台,可以允许您根据需要选择合适的工具和编程语言。Silverlight 提供下列功能: WPF 和 XAML。Silverlight 包含 Windows Presentation Foundation (WPF)
21、技术的一个子集,从而大大扩展了浏览器中用于创建 UI 的元素。WPF 允许您创建沉浸式图形、动画、媒体和其他丰富的客户端功能,使基于浏览器的 UI 远超单独使用 HTML 提供的效果。可扩展应用程序标记语言 (XAML) 提供用于创建元素的声明性标记语法。 对 JavaScript 的扩展。Silverlight 提供对通用浏览器脚本语言的扩展,可以控制浏览器 UI,包括使用 WPF 元素。 跨浏览器、跨平台支持。Silverlight 可以在所有通用浏览器(以及任意平台)上自如运行。您可以设计和开发应用程序而不必担心用户具有何种浏览器或平台。 与现有应用程序集成。Silverlight 可以
22、与现有 JavaScript 和 ASP.NET AJAX 代码无缝集成,以增强您已具有的功能。,第十二章 新技术介绍,2. Silverlight提供的功能:,可以访问 .NET Framework 编程模型和相关工具。可以使用诸如 IronPython 的动态语言以及诸如 C# 和 Visual Basic 的语言创建基于 Silverlight 的应用程序。可以使用诸如 Visual Studio 的开发工具创建基于 Silverlight 的应用程序。 网络支持。Silverlight 包括对 TCP 上的 HTTP 的支持。可以连接到 WCF、SOAP 或 ASP.NET AJAX
23、服务并接收 XML、JSON 或 RSS 数据。 LINQ。Silverlight 包括语言集成查询 (LINQ),这种查询允许您使用直观本机语法和 .NET Framework 语言中的强类型对象来编程进行数据访问。 如果已经使用ASP.NET,可以将SilverLight集成到熟悉的ASP.NET服务器和客户端功能。可以在ASP.NET中创建基于服务器的资源,采用AJAX和服务器端交换数据使Silverlight更加强大,结合了Silverlight丰富的用户界面和AJAX的异步数据传输,用户将得到非常舒适的交互体验。,第十二章 新技术介绍,可以使用已经具有的技能和熟悉的工具来创建基于Si
24、lverlight的应用程序,在Web页面中,既可以使用HTML,也可以使用Silverlight的WPF元素,和HTML一样,在Web应用程序中XAML同样可以使用声明的标记来创建用户界面,不同的是,XAML提供了更强大的元素。 网络要求开发者们必须越来越多地考虑设计和美观问题,对用户的快速响应和直观的界面已经成为开发标准,这需要在开发中同时加入美术设计和用户体验规划。 然而,美术师和程序员使用完全不同的资源和工具。通常情况是,美术师把图片文件或者HTML框架发给开发者以整合应用程序代码,当设计做出更改,整合就没完没了地进行。 Silverlight能提供更好的开发模式。微软提供给Silve
25、rlight的工具包是一系列复杂工具的集合,例如Visual Studio,还有连接设计者的工具,称为Expression Studio。,第十二章 新技术介绍,3.开发工具:,对于Silverlight,主要的设计工具是Expression Blend,它可以按设计者们所熟知的方式创建XAML内容,使用起来和Adobe Illustrator或者Photoshop差不多。但不同之处在于Blend和开发者使用同样的工程项目文件,XAML和JavaScript文件,就像在Visual Studio中那样,Expression Blend能够生成XAML进行输出,当设计完成并修整好,不需要进行中间
26、的整合过程,设计者就可以看到开发人员直接将其作为项目素材加入开发项目。这样做有助于设计者和开发人员更加紧密地协同工作。 在安装完VS2008后,可以通过网络平台安装工具来安装Silverlight Tools。下载地址为: “http:/ 此程序包是为 Microsoft Silverlight 3 提供工具的 Visual Studio 2008 SP1 外接程序。它可以安装在 Visual Studio 2008 SP1 或 Visual Web Developer 2008 速成版 SP1 的基础之上,并提供用于使用 C# 或 Visual Basic 开发Silverlight应用程序
27、的Silverlight 项目系统。,第十二章 新技术介绍,下面我们通过一个演示来看一下如何使用Silverlight 3和 VS 2008创建“Hello World”程序。 启动VS2008,单击“文件”下的“新建|项目”命令,在弹出的新建项目对话框中,左边项目类型中选择“Sliverlight”,右边的模板中选择“Sliverlight应用程序”,新建一个名为“Silverlight Application1”的应用程序项目,如图 1211所示。,第十二章 新技术介绍,图 1211 新建Sliverlight项目,在单击图 1211中的“确定”按钮后,Visual Studio 会显示另
28、外一个对 话框,允许我们选择是否在新网站中承载Selverlight应用程序及新Web 项目类型,这里我们选择“在新网站中承载Selverlight应用程序”,项目 类型选择“ASP.NET网站”,如图 1212所示。,第十二章 新技术介绍,图 1212 新建Silverlight应用程序,单击图 1212中的“确定”按钮后,Visual Studio 会为我们创建一个解 方案,里面包含一个Silverlight 客户端应用和一个ASP.NET web 站点, VS为我们创建的默认的web站点中包含一个名为 “SilverlightApplication1TestPage.aspx”的ASP.
29、NET网页和一个名为 “SilverlightApplication1TestPage.html”的静态的 HTML网页,我们可以用 来运行和测试其中的Silverlight应用,在默认情形下,一个新建的 Silverlight应用项目包含一个MainPage.xaml和一个 App.xaml文件 ,以及与它们相关的后台类文件,整个项目的目录结构如图 1213所示。,第十二章 新技术介绍,图 1213 项目目录结构,编译该项目后,在解决方案资源管理器中的“SilverlightApplication1TestPage.html”文件上右击选择“在浏览器中查看”,这时候我们看到运行结果是显示一个
30、空白网页。 在解决方案资源管理器中双击“MainPage.xaml”文件,切换到其源视图状态,在该文件中添加一些内容,我们改变网格的背景颜色,在其中声明一个Button控件,我们将给按钮一个“x:Name“属性,设置其值为“MyButton”,这会允许我们在后台代码类中用编程的方法引用它。我们还将设置了它的Content, Width 和 Height 属性,具体代码如下所示。,第十二章 新技术介绍,第十二章 新技术介绍,当我们运行应用时,我们的按钮将会在网页的中间出现,内含“请单击我!”的内容文字,如图 1214所示。,第十二章 新技术介绍,图 1214 运行效果, 我们可以给按钮加一个Cl
31、ick事件行为,在“MainPage.xaml”源码视图中输入事件的名称,我们可以输入一个要用的新事件处理方法的名称,或者只要点击回车键,使用默认的命名约定来命名事件处理方法,VS就会自动地在我们的后台代码类文件中创建一个占位的事件处理函数实现。我们可以使用这个事件处理函数在按钮被点击时,用新的消息更新它的内容,该按钮的后台事件委托函数的代码如下所示。,第十二章 新技术介绍,在做完上面的改动后,我们重新生成Silverlight项目,然后重新在浏览器 中查看“SilverlightApplication1TestPage.html”网页,再次单击按钮,现在它 的内容就会被更新为“Hello W
32、orld”的消息,如图 1215所示。,第十二章 新技术介绍,图 1215 单击按钮时的运行效果,WPF全称是Windows Presentation Foundation,是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序。 类似ASP.NET技术的开发,我们可以使用WPF技术提供的可扩展应用程序标记语言(XAML)、控件、布局、二位和三维图形、动画、媒体等创建独立应用程序以及浏览器承载的应用程序。 下面我们通过几个例题来演示一下如何创建WPF应用程序。,第十二章 新技术介绍,12.2.2 WPF技术,本节将实现一个简单的WPF浏览器应用程序,输入一个姓名后,
33、可以向读者问好。 通过VS2008创建一个WPF应用程序,可以通过单击“文件”菜单中的“新建|项目”命令,在打开的“新建项目”对话框中的项目类型中选择“Visual C#”,在右边的模板中列出了相关的项目,其中有几个模板是WPF,如图 1216所示。选择好项目后为该项目输入项目名称和位置,单击“确定”按钮,完成WPF应用程序的创建。,第十二章 新技术介绍,1.一个简单的WPF应用程序,第十二章 新技术介绍,图 1216 创建WPF应用程序项目, WPF的界面是由可扩展应用程序标记语言(xaml)来呈现的,xaml是构建应用程序用户界面的一种新的描述性语言。xaml提供了一种便于扩展和定位的语法
34、来定义和程序逻辑分离的用户界面。该项目对应的XAML代码如下所示:,第十二章 新技术介绍,第十二章 新技术介绍,namespace WpfBrowserApplication1 / / Page1.xaml 的交互逻辑/ public partial class Page1 : Pagepublic Page1()InitializeComponent();private void button1_Click(object sender, RoutedEventArgs e)string name = textBox1.Text;string message = “您好,“ +name+ “n
35、欢迎学习WPF。“;MessageBox.Show(message); ,第十二章 新技术介绍,该项目对应的部分后台逻辑代码如下所示:,第十二章 新技术介绍,图 1217 程序运行效果,编译后运行该程序,效果如图 1217所示,在文本框中输入一个姓名后,单击“问候”按钮,效果如图 1218所示。,第十二章 新技术介绍,分析: 在上述例题中,创建了一个名为“WpfBrowserApplication1”的浏览器应用程序,在页Page1.xaml中定义了一个Label控件、一个TextBox控件和一个Button按钮,并设置了Button按钮的Click事件委托函数“button1_Click”;
36、 在后台逻辑代码中的“button1_Click”事件委托函数中,首先读取文本框中的值,然后通过MessageBox类的Show()方法来弹出问候语。读者可以通过该例题注意比较一下XAML与HTML的区别。,第十二章 新技术介绍,我们在以前要使用绘图功能,只能从专用库中进行使用,现在WPF直接提供了对媒体、动画和图形的支持,开发人员可以轻松地实现绘图功能。 WPF的图形系统中,使用与设备无关的单元来对分辨率进行支持,并且具有设备独立性,即每个与设备无关的像素,都会随系统的分辨率进行自动缩放,可以达到良好的显示效果。 使用InkCanvas控件,可以呈现一个墨水面板,但该控件在默认情况下不会显示
37、在工具箱中,需要在WPF组件中进行添加。 要添加InkCanvas控件,可以使用鼠标在工具箱上右击,在弹出的快捷菜单中执行“选择项”命令,在打开的“选择工具箱项”对话框中,切换到“WPF组件”选项卡,再在下面列出的组件中选择“InkCanvas”项,如图 1219所示,然后单击“确定”按钮,就完成了把该控件添加到工具箱中。,第十二章 新技术介绍,5. 在WPF中实现一个可手写的涂鸦板,第十二章 新技术介绍,图 1219 添加“InkCanvas”控件,第十二章 新技术介绍,第十二章 新技术介绍,第十二章 新技术介绍,From=“Yellow“ To=“LightBlue“ Duration=“
38、0:0:5“/,第十二章 新技术介绍,第十二章 新技术介绍,编译执行该程序,效果如图 1220所示。,图 1220 绘图板执行效果,第十二章 新技术介绍,此时,可以使用鼠标在上面进行涂鸦、绘画,如图 1221所示。,图 1221 涂鸦效果,分析: 在Page1.xaml代码中使用InkCanvas控件创建了一个名为“myInkCanvas”的墨水面板,作为进行涂鸦的画板,并定义了类型为“LinearGradientBrush”的画笔; 接着添加了一个“BeginStoryboard”对象,将其与墨水面板InkCanvas相关联,使用“BeginStoryboard”对象可以开始一个绘图板Ink
39、Canvas的触发器动作; 然后使用“ColorAnimation”元素,通过线性插入法在两个目标值之间对Color属性值进行了3次变换,依次是由“Yellow”变到“LightBlue”、“Green”变到“LightBlue”和“LightBlue”变到“Red”;,第十二章 新技术介绍,第十二章 新技术介绍,6.在WPF中实现一个简单的动画,第十二章 新技术介绍,第十二章 新技术介绍,第十二章 新技术介绍,图 1222 红颜色的动画效果,编译后运行该程序,会看到如图 1222和图 1223所示的动画效果。,第十二章 新技术介绍,图 1223 蓝颜色的动画效果,第十二章 新技术介绍,第十二
40、章 新技术介绍,第十二章 新技术介绍,12.3 WF技术,第十二章 新技术介绍,一个简单的顺序工作流,第十二章 新技术介绍,第十二章 新技术介绍,第十二章 新技术介绍,图 1224 创建工作流,第十二章 新技术介绍,图 1225 添加两个活动,从工具箱中的“Windows Workflow v3.0”选项卡下,向设计界面拖入两个Code控件,以添加两个活动,如图 1225所示。,第十二章 新技术介绍, 在设计界面上依次双击“codeActivity1”和“codeActivity2”,转到代码文件,写入如下功能代码。,第十二章 新技术介绍,第十二章 新技术介绍,图 1226 工作流运行效果,编
41、译后运行该工作流,效果如图 1226所示。,第十二章 新技术介绍,第十二章 新技术介绍,2. 使用IfElseActivity实现工作流的分支,第十二章 新技术介绍,2. 使用IfElseActivity实现工作流的分支,第十二章 新技术介绍,图 1227 实现分支的工作流,下面通过一个演示来看一下如何使用IfElseActivity实现工作流的分支: 按照12.3.1小节介绍,创建一个名为“IfElseWorkflow”的工作流项目; 设计如图 1227所示的工作流;,第十二章 新技术介绍,图 1228 设置Condition属性,在设计界面下选中“IfElseBranchActivity1
42、”,在其属性面板中设置其Condition属性为“代码条件”,如图 1228所示,同样方法设置“IfElseBranchActivity2”的Condition属性为“代码条件”。,第十二章 新技术介绍,按F7转到后台代码文件,写入各分支的条件代码如下所示。,第十二章 新技术介绍,第十二章 新技术介绍,第十二章 新技术介绍,图 1229 设置Condition属性,切换到设计界面,选中“IfElseBranchActivity1”,在其属性面板中点 击其属性Condition前面的加号,指定其Conditon属性的计算方法为 “myCondition”,如图 1229所示,同样方法设置 “If
43、ElseBranchActivity2”的Conditon属性的计算方法“myCondition1”。,第十二章 新技术介绍,在设计界面下依次双击“codeActivity1”、“codeActivity2”、“codeActivity3”和“codeEnd”,分别编写他们的活动执行代码如下所示。,第十二章 新技术介绍,第十二章 新技术介绍,图 1230 运行效果,编译该工作流后执行,程序会首先暂停,要求用户输入,如图 1230所示。,第十二章 新技术介绍,图 1231 执行分支1,用户输入一个值后,程序将依据用户的输入进行判断,以决定执行哪个分支,效果分别如图 1231,图 1232,图 1233所示。,第十二章 新技术介绍,图 1232 执行分支2,第十二章 新技术介绍,图 1233 执行分支3,第十二章 新技术介绍,第十二章 新技术介绍,第十二章 新技术介绍,对第二个IfElseBranchActivity活动,使用myCondition1()方法来进行判断,代码如下所示。,