坚持学习WF(2):WF创作模式和设计时工具

简介:

[置顶]坚持学习WF文章索引

Visual Sudio提供了一系列的WF设计工具,这些可以让你更方便更高效的开发你的工作流应用,主要包括以下几部分:

1.Visual Studio项目模板

2.可视化的工作流和活动设计器

3.规则条件设计器

4.工作流调试器

5.命令行编译工具(wfc.exe)

在说这些之前,我们先来说说工作流的类型和创作模式

顺序工作流按逐个顺序执行一组包含的活动,它有明确的开始和结束点,从始至终,一步接一步,沿着一条可能的线路执行,这种工作流适合于重复的,相对固定的操作。而在状态机工作流中,工作流本身由一组状态组成。 将一个状态指示为初始状态。 每个状态都可以接收一组特定事件。 视事件而定,可以转换到另一个状态。 状态机工作流可以有最终状态。 当对最终状态进行转换时,工作流将完成。我们需要根据不同的情景选择不同的工作流。

WF中的工作流有三种创作模式:仅限代码代码分离无代码

仅限代码:这种是默认的创作模式。

代码分离:这种方式的工作流序列化后保存在一个的以.xoml为扩展名的文件中,它的代码保存在.xoml.cs中。.xoml是workflow的一种标记语言,和.xaml有着同样的句法,有人可能会问既然是一样的为什么还要有两个文件名,其实最开始的时候.xoml使用自己的句法,后来才和.xaml一样的,由于历史的原因就接着使用.xoml了,在wpf中是使用的是.xaml,你添加不同类型的文件它会去调用不用的设计器,代码分离的工作流必须进行编译,并且无法直接加载到工作流运行时引擎。

无代码:通过使用可扩展应用程序标记语言 (XAML) 创建标记源文件从而创建工作流的声明性方式,这种方式不被Visual Studio直接支持,你可以将代码部分(.xoml.cs)删除或直接建立xml文件并更改扩展名为.xoml。这种方式可以让你在运行期间直接加载到工作流运行时引擎中,增加了灵活性。这种方式可以使用 x:Code 指令元素在工作流标记文件中插入过程代码。 代码必须位于 CDATA 节中,以使编译器可以编译代码而非将其视为声明性 XAML 标记。如下例:

< SequentialWorkflowActivity  x:Class ="HelloWorkflow.Workflow2"  x:Name ="Workflow2"  xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/workflow > 

   < CodeActivity  x:Name ="codeActivity1"  ExecuteCode ="methodName1" > 
     < x:Code > 
       <![CDATA[  
      void methodName1(object sender, EventArgs e) 
      { 
        System.Console.WriteLine("HelloWorld"); 
      } 
  
]]> 
     </ x:Code > 
   </ CodeActivity > 

</ SequentialWorkflowActivity >

然后我们开始说我们的设计时工具

1.Visual Studio项目模板

类型

说明

顺序工作流控制台应用程序 (Sequential Workflow Console Application) 创建用于生成工作流的项目,该工作流包含一个默认的顺序工作流和一个控制台测试宿主应用程序。
顺序工作流库 (Sequential Workflow Library)

创建用于以库的形式生成顺序工作流的项目。

工作流活动库 (Workflow Activity Library) 创建一个用来创建活动的库的项目,以后可以将其作为工作流应用程序中的构造块重用。
状态机控制台应用程序 (State Machine Console Application) 创建用于生成状态机工作流和控制台宿主应用程序的项目。
状态机工作流库 (State Machine Workflow Library) 创建用于以库的形式生成状态机工作流的项目。
空工作流 (Empty Workflow) 创建可以包含工作流和活动的空项目。

2.可视化的工作流和活动设计器

主要有顺序型工作流,状态机工作流设计器。每种都有设计视图,错误处理视图,取消处理视图.

3.规则条件设计器

在 WF 中,通过两种主要方式公开规则技术:一种是作为活动上的条件,另一种是作为策略活动中的正向链接 RuleSet。IfElseBranchActivity、ConditionedActivityGroup、WhileActivity 和 ReplicatorActivity 活动使用条件来控制活动的执行。 条件可以声明方式表示,也可以在代码中定义。 声明性条件以代码 DOM 语句的形式在规则的 XML 文件中创建。 基于代码的条件可引用工作流的代码文件中的一个方法,该方法通过 Result 属性返回其结果。

与条件一样,规则以代码 DOM 语句的形式表示,并收集到规则的 XML 文件中。 规则包含一个条件语句和一些操作集合,这些集合中的操作是根据条件的结果来执行的。 规则将会收集到规则集中,规则集既支持规则的简单依序执行,也支持规则的复杂正向链接。 规则集由 PolicyActivity 活动执行(摘自MSDN)。看下下面的截图:

8

有智能感知的,下面这张图是规则集的设计器

9

4.工作流调试器

调试工作流应用程序也很容易,我们只需要放置断点,你可以在工作的任何一个活动上设置断点,一旦代码流到达设置了断点的活动,Visual Studio 就会将控制权移交给工作流调试器,如何下图:

10

5.命令行编译工具(wfc.exe)

WF提供一个名为 wfc.exe 的命令行工作流编译器可以用来编译工作流,我们也可以使用WorkflowCompiler 类来编译,具体参数什么可以查阅MSDN。

上一篇:坚持学习WF(1):从HelloWorld开始 
下一篇:坚持学习WF(3):WF框架概览


本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2008/04/05/WFDesign.html,如需转载请自行联系原作者

目录
相关文章
|
10月前
|
数据采集 前端开发 JavaScript
虎扑APP数据采集:JavaScript与AJAX的结合使用
虎扑APP数据采集:JavaScript与AJAX的结合使用
|
10月前
|
数据采集 前端开发 JavaScript
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
本文介绍了如何使用 Puppeteer 结合 CSS 选择器抓取动态网页中的关键元素,以亚航网站的特价机票信息为例,通过设置代理 IP、User-Agent 和 Cookie 等技术手段,有效提升爬虫策略,实现高效、稳定的爬取。
296 5
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
|
存储 JavaScript 容器
TS,添加注释,//,ctrl + /,shift + alt + a,输出语句,console.log(“Hello Ts‘),变量和数据类型导读,变量就是用来存储数据的容器,变量的使用,TS
TS,添加注释,//,ctrl + /,shift + alt + a,输出语句,console.log(“Hello Ts‘),变量和数据类型导读,变量就是用来存储数据的容器,变量的使用,TS
|
分布式计算 大数据 Hadoop
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
从事数仓工作,在工作学习过程也看了很多数据仓库方面的数据,此处整理了数仓中经典的,或者值得阅读的书籍,推荐给大家一下,希望能帮助到大家。建议收藏起来,后续有新的书籍清单会更新到这里。
955 2
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
|
搜索推荐 Docker 容器
生信分析代码之前还好好的,怎么就报错了 Error in Ops. data. frame(guide_loc, panel_loc) :'==' only defined for equally-sized data frames
执行 `DimPlot` 函数时遇到错误 `;Error in Ops. data. frame(g guides_loc, panel_loc) : &#39;==&#39; only defined for equally-sized data frames`。解决方案和办法
2198 0
生信分析代码之前还好好的,怎么就报错了 Error in Ops. data. frame(guide_loc, panel_loc) :'==' only defined for equally-sized data frames
|
Prometheus Kubernetes 监控
揭秘Kubernetes的秘密武器库:十大工具让你的容器编排如虎添翼!探索这些神秘而强大的工具,它们将如何彻底改变你的Kubernetes体验?
【8月更文挑战第19天】在容器世界里,Kubernetes是部署与管理容器化应用的首选平台。为了增强其功能,本文精选了十大必备工具:Helm简化复杂应用部署;Prometheus监控系统与应用指标;Grafana提供数据可视化;Fluentd统一日志管理;Envoy实现服务间通信与控制;Calico确保网络连接安全;CoreDNS提升DNS服务性能;Velero保障数据安全与迁移;Argo Workflows执行复杂工作流;Istio强化服务网格功能。这些工具覆盖部署、监控、日志等多个方面,助力提升Kubernetes的效率与稳定性。
192 3
|
Java Linux Docker
CentOS7 Docker 安装,配置国内镜像
CentOS7 Docker 安装,配置国内镜像
2103 2
|
搜索推荐 Java Maven
使用Idea打开Maven项目的正确姿势
使用Idea打开Maven项目的正确姿势
3160 0
|
数据库 索引
左前缀原则
左前缀原则(Left-Prefix Principle)是数据库索引设计中的一个重要原则,它指出在创建索引时,应该优先考虑最常用的查询,并使用最左边的列作为索引的前缀。下面我将详细介绍左前缀原则的定义、作用以及实际应用场景。
328 0