10个试验的描述:
WF01——Windows Workflow Foundation入门
这是一个关于使用Windows Workflow Foundation进行工作流开发的试验。它是基于Visual Studio 2008,对于首次使用Windows Workflow Foundation开发工作流的指导。这个试验中,你将能够创建和调试一个HelloWorld工作流,并使用参数将数据传递到工作流中。而且你还可以使用If/Else声明条件、自定义活动来创建一个费用报告的工作流。
WF02——使用Windows Workflow Foundation创建一个自定义的活动
活动是工作流执行、重用、组合的基本单位。使用活动设计器创建一个简单的活动,并通过工作流设计器将它加入到一个工作流中。试验中还包括通过代码核设计器两种方式创建活动,并为活动添加属性,创建自定义验证,并创建自定义的活动图标。
WF03——使用Windows Workflow Foundation宿主工作流
要执行工作流,你必须先宿主它。一个宿主进程就是一个宿主了你的工作流类的应用程序。这个试验中,你可以学习如何使用较少的代码来创建一个宿主进程应用程序,并向其中添加服务。试验包括生成一个控制台应用程序宿主,以了解宿主的环境,工作流的启动,并在宿主中使用SqlTrackingService服务。你还可以学习到构建一个自定义的跟踪服务。
WF04——使用Windows Workflow Foundation创建状态机工作流
状态机工作流模型是与顺序工作流结构模型并列的另一种结构。可以使用状态机设计器来创建状态机工作流。试验中包括创建一个订单处理状态的工作流,并使用状态机跟踪服务。
WF05——与Windows Workflow Foundation的宿主应用程序通信
由于工作流的执行细节是由工作流运行时管理,因此所有与工作流之间的通信必须受宿主的控制。本地连接服务允许工作流与宿主环境之间执行方法调用,反之亦然。这个试验逐步的创建一个提供通信机制接口的活动库,关联工作流实例的通信,添加角色以满足通信的安全以及如何应对一个需要长时间运行的操作。
WF06——Windows Workflow Foundation和Web服务
Web服务可以被工作流调用,工作流也可以全部的或部分的在Web服务中抛出让其它软件调用。这个试验包括从工作流中调用Web服务以及如何创建一个使用工作流的Web服务。然后将服务暴露在ASP.NET的Web Service项目中。
WF07——使用Windows Workflow Foundation创建基于角色驱动的工作流
角色应用在许多Windows Workflow Foundation的活动中,包括IfElse。还包括按照条件执行的一系列活动。这个试验中使用一组按照条件执行的活动。
WF08——Windows Workflow Foundation中的事务行为
这个试验检验工作流中的事务处理机制。试验包括工作流中的异常处理,封装活动到快速处理的事务中,以及补偿长时间运行的事务。
WF09——使用Windows Workflow Foundation在运行时修改工作流的模型
通过调用API来暂停工作流并操作工作流模型,是可以在运行时更改工作流的。这个试验包含在工作流内部更新工作流实例的模型以及从宿主进程更新工作流的实例。以及通过if else中的条件改变一个正在运行的工作流的活动。
WF10——嵌入Windows Workflow Foundation的工作流设计器
与在Visual Studio中看到的相同,你的应用程序也可以嵌入工作流设计器。试验中包括在一个Windows窗体应用程序中显示工作流设计器,通过设计器与程序进行互操作,在工作流设计器界面添加一个活动,并实现打开、关闭、编译、运行等操作。
搭建试验环境
软件环境要求:
- Windows Vista,Windows XP SP2 or Windows Server 2003 SP1。
- Office 2007 。
- Visual Studio Team Suite 2008,其中包括Visual C#和SQL Express。
- Windows Workflow Foundation SDK。
安装SQL 数据库:
- 针对试验WF03,运行如下脚本
1: @echo off
2: echo Creating Tracking database...
3: Osql -S %COMPUTERNAME%\SQLExpress -E -n -i "Create_TrackingStore.Sql"4:
5: echo Creating Tracking tables...
6: Osql -S %COMPUTERNAME%\SQLExpress -E -n -d TrackingStore
7: -i "C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN\Tracking_Schema.sql"8:
9: echo creating Tracking stored procedures...
10: Osql -S %COMPUTERNAME%\SQLExpress -E -n -d TrackingStore
11: -i "C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN\Tracking_Logic.sql"12:
13: echo Creating persistence tables...
14: Osql -S %COMPUTERNAME%\SQLExpress -E -n -d TrackingStore
15: -i "C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN\SqlPersistenceService_Schema.sql"16:
17: echo creating persistence stored procedures...
18: Osql -S %COMPUTERNAME%\SQLExpress -E -n -d TrackingStore
19: -i "C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN\SqlPersistenceService_Logic.sql"20:
21: Pause
其中Create_TrackingStore.Sql的脚本为如下所示:
1: Use Master2: Go3: IF EXISTS (SELECT *4: FROM master..sysdatabases5: WHERE name = N'TrackingStore')6: DROP DATABASE TrackingStore7: GO8: CREATE DATABASE TrackingStore9: GO
- 针对试验WF08,运行如下脚本:
1: osql /S %COMPUTERNAME%\SQLEXPRESS /E /i BankScripts.sql
2:
3: osql /S %COMPUTERNAME%\SQLEXPRESS /E /i dumptables.sql
4: pause
其中BankScripts.sql的脚本如下,
1: IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'Bank')2: DROP DATABASE [Bank]3: GO4:
5:
6:
7: CREATE DATABASE Bank8:
9: GO10:
11: USE Bank12:
13: /****** Object: Table [dbo].[ChequeAccount] ******/14: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ChequeAccount]')15: and OBJECTPROPERTY(id, N'IsUserTable') = 1)16: drop table [dbo].[ChequeAccount]17: GO18:
19: /****** Object: Table [dbo].[SavingsAccount] ******/20: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SavingsAccount]')21: and OBJECTPROPERTY(id, N'IsUserTable') = 1)22: drop table [dbo].[SavingsAccount]23: GO24:
25: /****** Object: Table [dbo].[ChequeAccount] ******/26:
27: CREATE TABLE [dbo].[ChequeAccount] (28: [ChequeAccountId] [int] IDENTITY (1, 1) NOT NULL ,29: [Balance] [money] NOT NULL30: ) ON [PRIMARY]31: GO32:
33: /****** Object: Table [dbo].[SavingsAccount] ******/34: CREATE TABLE [dbo].[SavingsAccount] (35: [SavingsAccountId] [int] IDENTITY (1, 1) NOT NULL ,36: [Balance] [money] NOT NULL37: ) ON [PRIMARY]38: GO39:
40: ALTER TABLE [dbo].[ChequeAccount] ADD41: CONSTRAINT [DF_ChequeAccount_Balance] DEFAULT (0) FOR [Balance]42: GO43:
44: ALTER TABLE [dbo].[SavingsAccount] ADD45: CONSTRAINT [DF_SavingsAccount_Balance] DEFAULT (0) FOR [Balance]46: GO47:
48: INSERT INTO [dbo].[SavingsAccount] values(100)49:
50: GO51:
52: INSERT INTO [dbo].[ChequeAccount] values(100)
dumptables.sql的脚本如下:
1: use bank2: go3: select Balance [Checking balance] from ChequeAccount4:
5: select Balance [Savings balance] from [dbo].[SavingsAccount]
然后在执行如下脚本:
1: osql /S %COMPUTERNAME%\SQLEXPRESS /E /i CreateStatePersistenceDB.sql
2: Osql -S %COMPUTERNAME%\SQLExpress -E -n -d WorkflowStore
3: -i "C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN\SqlPersistenceService_Schema.sql"4: Osql -S %COMPUTERNAME%\SQLExpress -E -n -d WorkflowStore
5: -i "C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN\SqlPersistenceService_Logic.sql"6: pause
其中CreateStatePersistenceDB.sql的脚本如下:
1: Use Master2: Go3: IF EXISTS (SELECT *4: FROM master..sysdatabases5: WHERE name = N'WorkflowStore')6: DROP DATABASE WorkflowStore7: GO8: CREATE DATABASE WorkflowStore9: GO10:
11:
12: Use WorkflowStore13: Go
注意:这里的脚本使用的是本地系统中的默认SQLEXPRESS实例。如果你的实例不是.\SQLEXPRESS,你需要修改代码中的相应位置。
安装SMTP服务:
- 单击开始菜单
- 选择控制面板
- 双击添加/删除程序
- 单击添加/删除Windows组件
- 单击应用程序服务器
- 单击详细信息
- 选中Internet信息服务器(IIS)
- 单击详细信息
- 选中SMTP服务
- 点击OK两次
- 点击下一步
- 等待安装过程
- 单击完成。
配置SMTP服务:
ASP.NET SQL Server 安装