zoukankan      html  css  js  c++  java
  • Windows Workflow Foundation实验——安装与准备

    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 Master
       2:  Go
       3:  IF EXISTS (SELECT * 
       4:         FROM   master..sysdatabases 
       5:         WHERE  name = N'TrackingStore')
       6:      DROP DATABASE TrackingStore
       7:  GO
       8:  CREATE DATABASE TrackingStore
       9:  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:  GO
       4:   
       5:   
       6:   
       7:  CREATE DATABASE Bank
       8:   
       9:  GO
      10:   
      11:  USE  Bank
      12:   
      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:  GO
      18:   
      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:  GO
      24:   
      25:  /****** Object:  Table [dbo].[ChequeAccount]    ******/
      26:   
      27:  CREATE TABLE [dbo].[ChequeAccount] (
      28:      [ChequeAccountId] [int] IDENTITY (1, 1) NOT NULL ,
      29:      [Balance] [money] NOT NULL 
      30:  ) ON [PRIMARY]
      31:  GO
      32:   
      33:  /****** Object:  Table [dbo].[SavingsAccount]    ******/
      34:  CREATE TABLE [dbo].[SavingsAccount] (
      35:      [SavingsAccountId] [int] IDENTITY (1, 1) NOT NULL ,
      36:      [Balance] [money] NOT NULL 
      37:  ) ON [PRIMARY]
      38:  GO
      39:   
      40:  ALTER TABLE [dbo].[ChequeAccount] ADD 
      41:      CONSTRAINT [DF_ChequeAccount_Balance] DEFAULT (0) FOR [Balance]
      42:  GO
      43:   
      44:  ALTER TABLE [dbo].[SavingsAccount] ADD 
      45:      CONSTRAINT [DF_SavingsAccount_Balance] DEFAULT (0) FOR [Balance]
      46:  GO
      47:   
      48:  INSERT INTO [dbo].[SavingsAccount] values(100)
      49:   
      50:  GO
      51:   
      52:  INSERT INTO [dbo].[ChequeAccount] values(100)

    dumptables.sql的脚本如下:

       1:  use bank
       2:  go
       3:  select Balance [Checking balance]  from ChequeAccount
       4:   
       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 Master
       2:  Go
       3:  IF EXISTS (SELECT * 
       4:         FROM   master..sysdatabases 
       5:         WHERE  name = N'WorkflowStore')
       6:      DROP DATABASE WorkflowStore
       7:  GO
       8:  CREATE DATABASE WorkflowStore
       9:  GO
      10:   
      11:   
      12:  Use WorkflowStore
      13:  Go

    注意:这里的脚本使用的是本地系统中的默认SQLEXPRESS实例。如果你的实例不是.\SQLEXPRESS,你需要修改代码中的相应位置。

    安装SMTP服务:

    1. 单击开始菜单 
    2. 选择控制面板
    3. 双击添加/删除程序
    4. 单击添加/删除Windows组件
    5. 单击应用程序服务器
    6. 单击详细信息
    7. 选中Internet信息服务器(IIS)clip_image002[11]
    8. 单击详细信息
    9. 选中SMTP服务clip_image001[4]
    10. 点击OK两次
    11. 点击下一步
    12. 等待安装过程
    13. 单击完成。

    配置SMTP服务:

    1. 单击开始菜单。
    2. 选择控制面板。
    3. 打开管理工具
    4. 双击Internet信息服务器(IIS)管理器
    5. 展开当前主机的+号节点
    6. 你可以看到SMTP的虚拟服务器
    7. 展开默认SMTP虚拟服务器节点
    8. 单击域名。image
    9. 此时域名会出现在右边的容器中。
    10. 右键点击默认SMTP虚拟服务器。
    11. 选择属性
    12. 在弹出的窗口上选择Enable logging。image
    13. 单击Access选项卡
    14. 单击Relay…image
    15. 在中继限制对话框中单击添加…
    16. 输入IP地址:127.0.0.1
    17. 连续点击三次OK。
    18. 关闭Internet信息服务器(IIS)管理器。

    ASP.NET SQL Server 安装

    1. 单击开始菜单,用运行打开命令行
    2. 输入aspnet_regsql。
    3. 下面的界面会出现clip_image001[5]
    4. 选择配置SQL Server应用程序服务,然后点击下一步。clip_image001[7]
    5. 在服务器字段中,输入(local)\SQLExpress,然后点击下一步。
    6. 点击下一步直到完成。
  • 相关阅读:
    数据结构与算法_20 _ 散列表(下):为什么散列表和链表经常会一起使用?
    数据结构与算法_19 _ 散列表(中):如何打造一个工业级水平的散列表?
    数据结构与算法_17 _ 跳表:为什么Redis一定要用跳表来实现有序集合?
    数据结构与算法_18 _ 散列表(上):Word文档中的单词拼写检查功能是如何实现的?
    数据结构与算法_16 _ 二分查找(下):如何快速定位IP对应的省份地址
    数据结构与算法_15 _ 二分查找(上):如何用最省内存的方式实现快速查找功能
    线程池ThreadPoolExecutor源码详解
    用信鸽来解释 HTTPS
    并发集合类之图解CopyOnWriteArrayList
    认识RabbitMQ从这篇文章开始
  • 原文地址:https://www.cnblogs.com/zhangdong/p/1646506.html
Copyright © 2011-2022 走看看