转载:Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二

2023-11-19

关于工作流设计器

即使是很简单的工作流设计,你可能都很难去观看整个工作流图形。幸运的是,设计器有一些非常有用的工具区帮助我们在一个大的工作流上去工作。在设计器的右上角,点击Collapse(收缩)链接。工作流图会如图Figure1-20所示。

 

这可以让你非常快速的看到最顶层的活动。点击Expand All(展开所有)按钮。这时会展开所有的活动,但是现在你只可以看到工作流图的一部分。点击右下角的Overview按钮,这时会出现一个展示整个工作流图的窗口。你可以拖放到你喜欢的地方。关闭overview窗口,然后点击Fit to screen按钮。这时设计器会很快地变焦,使工作流图适应屏幕的大小,展示整个工作流图。根据你显示器的大小,它可能太小了,这时你可以点击右下角的下拉列表来缩放工作流图的大小。最后你点击“放大”按钮(也是在右下角),这时工作流图会变回原来的100%的状态。

双击“Sound Bell”活动。“Sound Bell”会展开自己和它的子活动。为了帮助你知道焦点处于工作流的哪个位置,设计器为我们提供了一个导航条,如图Figure1-21所示。

 

你可以点击导航条的任何一个链接。点击Workflow1链接会展示整个工作流图。

 

让我们看得更深入

让我们主要看一下我们做了什么。首先,我之前提到过工作流是用xaml文件定义的。到目前为止,你已经用图形化的方式来定义工作流。现在我们会看一下设计器实际上是怎么生成工作流设计的。在Solution Explorer(解决方案)中,右击Sequence.xaml文件,选择Code View(代码视图)。你会看到一个警告:文件已经打开。点击Yes,让它关闭设计器窗口。.xaml代码将会如Listing1-2所示。

 

 

 

 

 

 

 

 

我让一些行粗体显示是为了帮你找到最顶层的活动。首先,Variables节点定义了两个variables(变量)。接着是一个WriteLine活动,名叫“Hello”,和一个If活动名叫“Adjust for PM”。接着是一个While活动名叫“Sound Bells”,一个WriteLine活动名叫“Display Time”,和一个If活动叫“Greeting”。

其中一个重点我想你知道的是这里没有一句执行的代码。这个文件只是一个属性的集合。例如,去递增counter,你可能希望看到下面一句代码:

 

counter = counter + 1

 

而这里用了一个Assign来包含一个counter和一个counter + 1。把counter = counter + 1放在Assign的活动中去完成。代码只在活动的类中执行,而在工作流的定义中是没有可执行的代码的。

 

与之前版本的不同

如果你使用过之前工作流的版本(version 3.0 或者3.5),你可能想知道到底现在有什么不同。WF 4.0跟原来的版本是完全不同的。过去的版本的程序可以很好的在.Net4.0中运行,因为之前的活动和服务基本上没什么改变。而WF 4.0却是完全新的设计。WF 4.0的活动和服务是不可以在之前的版本运行的。所以你可以使用WF 3.5又或者使用WF 4.0来设计。但是你不可以来回切换,除了一小部分脚本,我们将在后面讨论。

WF 3.5中,有一个代码类和一个设计视图类。代码类包含了为CodeActivity(活动事件)服务的应用、包含了对类成员的定义和事件委托的定义。在WF 4.0中是没有代码类的。可能最值得关注的是WF 4.0中没有CodeActivety。为了去弥补这个功能,WF 4.0提供了活动去实现之前在CodeActivity实现的功能。WriteLineAssign就是两个这样的活动。如果预定义的活动不足够去满足需求,你可以去创建一个用户活动,在用户活动中你可以使用CodeActivity来实现所需的功能。

另一个不同点是WF 4.0明确使用variables(变量)和arguments(参数)。因为这里是没有代码文件的,你不可以简单的添加类成员来应付你程序开发的需要,在这里,你需要使用工作流特有的方式来定义variablesarguments(具体的定义已述,不懂的,请看回前面的论述)。

最后,你可能注意到在Program.cs中是没有工作流运行时的,在之前的版本,你会创建一个工作流运行时类,然后调用它的CreateWorkflow()方法。在WF 4.0中,只需调用以下代码:

 

WorkflowInvoker.Invoke(new Workflow1());

 

已经讲了很多的不同点,还有其他,例如已经没有状态机工作流。我不详细的说,是因为这本书的目的不是为了讲述WF 4.0的不同点。我不想去讲述一些明显的改变,你应该发动你的大脑去思考。

 

原文地址: http://www.cnblogs.com/kukafeiso/archive/2010/06/13/1757592.html

感谢[苦-咖啡]的分享,让大家一起学习进步。

转载于:https://www.cnblogs.com/Tim_Liu/archive/2010/10/18/1854472.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转载:Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二 的相关文章

  • 通俗讲解c++ future/shared_future

    目录 future介绍 std future对象只有在有效的 valid 情况下才有用 useful 查询future对象是否有效 future的拷贝构造函数是被禁用的 对future的处理 四种方式 获取future的状态 future
  • Qt 提升窗口部件 没有效果

    1 新建一个控件的子类 然后再控件上右键点击提升 没有效果 原因1 查看提升的控件的类型是否正确 原因2 查看提升的子类的路径是否正确 如果C 文件跟 pro文件在同一级目录下 直接写头文件 如果在子目录下要写子目录 前面要加 原因3 如果
  • Qt笔记28:QJsonObject和QByteArray的相互转换

    brief 字节数组转Json param byteArray return QJsonObject getJsonFromByteArray const QByteArray byteArray QJsonParseError jsonP
  • 2023年我国网络安全人才市场状况

    网络安全人才市场状况 本章以智联招聘多年来形成的丰富的招聘 求职信息大数据为基础 结合了奇安信集团 在网络安全领域多年来的专业研究经验 相关研究成果具有很强的代表性 对涉及安全人才 的全平台招聘需求与求职简历进行分析 注 本章中的需求指数采
  • Android Studio虚拟机启动后没有开机问题解决

    这里使用的是Android Studio 3 2版本 在Win 10系统上运行 其他环境可能会有所不同 目录 一 新增虚拟机 二 有报错提示时的可能解决办法 三 无报错提示时的可能解决办法 一 新增虚拟机 1 打开AVD Manager A
  • datax导入hive动态分区

    配置hive支持动态分区
  • pandas数据提取

    pandas是一个python数据分析库 提供了多种方法提取数据 一种常用的方法是使用索引和列标签 例如 import pandas as pddf pd read csv data csv 获取特定行 row df loc 0 获取特定列
  • vuepc端实现数据加载_【项目实战经验】vuecli3,实现PC端分辨率适配

    vue cli3 根据屏幕大小适配样式 最近做了一个大屏 考虑到要在不同的显示器上 显示同一套代码 所以我就想到了 阿里的 lib flexible 干货非常多 千万不要错过细节哦 废话不说 直接干 1 安装需要响应的包 npm i lib
  • 【AI实战】大语言模型(LLM)有多强?还需要做传统NLP任务吗(分词、词性标注、NER、情感分类、知识图谱、多伦对话管理等)

    AI实战 大语言模型 LLM 有多强 还需要做传统NLP任务吗 分词 词性标注 NER 情感分类 多伦对话管理等 大语言模型 大语言模型有多强 分词 词性标注 NER 情感分类 多伦对话管理 知识图谱 总结 大语言模型 大语言模型 LLM
  • IDEA 配置aliyunmaven 仓库地址无法下载依赖jar 包

    由于Mavn 默认公共仓库地址是国外的导致下载jar 包比较慢 所以推荐使用aliyun maven 仓库镜像 编辑setting xml 文件 在mirrors节点下 新增如下内容 我按照百度检索的结果 在maven 的setting x
  • 接口测试八(压缩解压)

    转自 http www 360doc com content 16 0128 15 30056680 531241550 shtml 一 什么是HTTP压缩 HTTP压缩采用通用的压缩算法如gzip等压缩HTML JavaScript或CS
  • Vue项目创建

    1 创建项目 在终端中输入命令 vue create 项目名称用以创建项目 在命令输入前会有命名提示符 提示当前所在目录是哪里 输入命令之后 等待片刻 会出现选择vue版本 选择vue2项目 2 配置路由 配置路由 需要下载依赖库 要通过c
  • 常见脚本命令

    1 taskkill是Windows命令行里终止指定程序 进程 的命令 f 表示强制终止 im 表示指定的进程名称 例如 explor exe 2 start C Program Files erwin Data Modeler r9 er
  • MVC发展历程及思想

    两种web应用程序的开发模式 model 1 JSP JavaBean JSP负责 页面显示 页面跳转 调用Javabean处理数据 处理请求 JavaBean负责 数据封装保存 数据处理逻辑 适用场景 model 1 方式适合开发业务逻辑
  • android开发:jd-gui的下载和使用

    参考 jd gui的下载和使用
  • 常见JS动画效果

    作为一名前端开发人员 想要的大多都是 在开发过程中 看着自己制作的动画的炫酷以及困难的解决 开发结束后 自己的项目 成果可以被他人认可接受 人们浏览网页时 若一个网页动画效果丰富炫酷 性能良好 体验度良好 自然会受到吸引去打来浏览 吸引用户
  • 为什么模板不能模板分离编译(模板的定义与声明分离)

    目录 一 什么是分离编译 二 为什么不能 三 解决方案 1 模板定义的位置显式实例化 2 将声明和定义放到同一个文件里 不让定义和声明分离 一 什么是分离编译 一个程序 项目 由若干个源文件共同实现 而每个源文件单独编译生成目标文件 最后将
  • qt sql 查询 正序,倒序

    QString str QString SELECT Date Time People Event FROM TB LOG WHERE People 1 order by Date desc limit 0 2000 arg 模式 orde
  • 请你介绍一下map的分类和常见的情况

    java为数据结构中的映射定义了一个接口java util Map 它有四个实现类 分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对 根据键得到值 因此不允许键重复 重复了覆盖
  • 机器学习-线性回归总结

    最近学习了线性回归的模型 也是机器学习中最基础的一种模型 在此 总结一下线性回归的模型介绍 梯度下降以及正规方程 回归问题 线性回归 顾名思义 属于回归问题 既然是回归问题 那必然属于监督学习 在这里简单再介绍一下什么是回归问题 回归用于预

随机推荐