WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用
从本篇开始,将正式讲解WF4.0,本文主要涉及如下内容:Activity介绍, WF4.0 中工作流的结构,通过WriteLine演示InArgument<T>参数的使用
目录
1 Activity介绍及WriteLine Activity的使用 1
1.1 代码下载 1
1.2 什么是Activity 1
1.3 WF4.0 中工作流的结构 2
1.4 WriteLine Activity 3
1.4.1 Text 属性 3
1.4.2 TextWriter 属性 4
1.4.3 在代码中使用WriteLine 5
Activity介绍及WriteLine Activity的使用
代码下载
[WF4.0 基础篇 (一)开始使用WF] 的代码
http://files.cnblogs.com/foundation/helloWorkflow.rar
本文代码
http://files.cnblogs.com/foundation/WriteLineActivitySample.rar
代码结构说明
什么是Activity
Activity在WF中是一个最基本的概念.当谈及Activity时,通常是指如下两个概念Activty Class 或 在 工作流中任意Activity派生类的统称
一.先说一下Activty Class
这个概念比较简单,就是指 [System.Activities.Activity] 这个NET4.0 类库中所带的类
[System.Activities.Activity]是工作流结构的基类,下图是[System.Activities.Activity]与派生类的结构
二.再说一下"工作流中任意Activity派生类的统称"是什么意思
在很多翻译文章中,当其要表述"工作流中任意Activity派生类的统称"这个概念时,会将[Activity]翻译为[活动],其实我更喜欢将其翻译为[节点]
WF4.0的流程结构与我们常用的流程图很象,下面我们看一下一个流程图的例子:
(注:从汉语的角度讲,[节点]与[结点]是不同的,[节点]是指上图中的矩形,[结点]则是指上图中矩形间的连线)
我们再看一下WF4.0流程的例子
我们可以将WF4.0流程中的[活动]理解为流程图的[节点]
(注: WF4.0流程中只有[节点]没有[结点],从数据结构的角度讲上面的两个例子分别是[图结构]和两种描述方式,第一个例子是([节点]+[结点]),第二个例子是([节点]+ [节点关系自描述]) ,这个概念先讲到这里,后面我会专门写一篇从数据结构的角度分析WF4.0流程结构的文章)
WF4.0 中工作流的结构
WF4.0工作流从表现形式上看是图结构,但其实质上仍是树结构,有[根],有鲜明的[层次关系]这些都是树的基本特征.
只不过WF4.0工作流采用了[枝叶树]的方式,并且提供了FlawCahr这个[活动]用以在其内部实现[图结构]
下面我具体说明一下枝叶树结构:
枝叶树是指在树结构上存在两类节点,一类是支节点,一类是叶节点.支节点下可以有支节点也可以有叶节点,叶节点下不能再有任何节点.这与磁盘结构很象.支节点像文件夹,叶节点像文件.
WF4.0的活动也是这样.其中[FlowCahr]与[Sequence]是两个常用的支节点[活动]
[FlowCahr]用于实现一个图结构的[活动]
[Sequence]则用于实现从上到下顺序执行的[活动]
关于这两个[活动]在后面的文章中会有详细介绍,下面我们先学习一个简单的叶节点[活动], WriteLine
WriteLine Activity
WriteLine是一个用于输出字符串的Activity,在[开始使用WF4.0]一文中,我们已经使用它了,在这量我将对WriteLine的功能做具体讲解,并引入一个WF4.0中很重要的概念"表达式"
类名 |
System.Activities.Statements.WriteLine |
文件 |
System.Activities.dll |
结构说明 |
继承 CodeActivity 是一个 sealed类 定义了[InArgument<string> Text属性] 与[InArgument<TextWriter> TextWriter属性] override 了 [CacheMetadata方法] 与 [Execute方法] |
功能说明 |
WriteLine类调用[TextWriter 属性]所指定的[System.IO.TextWriter 对像]输出[Text 属性] 的值 如果没指定[TextWriter 属性],默认为控制台输出[Text 属性] 的值 |
Text 属性
是一个InArgument<string> 类型参数 ,用于接收结果值为[string]的VB表达式
(关于InArgument<T>与WF4.0中的VB表达式会在后面的文章中详细介绍)
流程 |
|
xaml |
<Activity mc:Ignorable="sap" x:Class="WriteLineActivitySample.Workflow1" mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" xmlns:s1="clr-namespace:System;assembly=mscorlib" xmlns:s2="clr-namespace:System;assembly=System" xmlns:s3="clr-namespace:System;assembly=System.Xml" xmlns:s4="clr-namespace:System;assembly=System.Core" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System" xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel" xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core" xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:sd="clr-namespace:System.Data;assembly=System.Data" xmlns:sd1="clr-namespace:System.Data;assembly=System.Data.DataSetExtensions" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:st="clr-namespace:System.Text;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <WriteLine DisplayName="WriteLine的Text属性演示" sad:XamlDebuggerXmlReader.FileName="d:\users\wxd\documents\visual studio 2010\Projects\WriteLineActivitySample\WriteLineActivitySample\Workflow1.xaml" sap:VirtualizedContainerService.HintSize="213,200" Text="[String.Format("{0}:{1}", "wxwinter", System.DateTime.Now.ToString())]" /> </Activity> |
运行工作流 |
class Program { static void Main(string[] args) { //WriteLine的Text属性演示 WorkflowInvoker.Invoke(new Workflow1()); //控制台停屏看效果 System.Console.Read(); } } |
运行结果 |
|
TextWriter 属性
是一个InArgument<TextWriter> 类型参数 ,用于接收结果值为[TextWriter]的VB表达式
自定义 TextWriter |
public class myTextWriter : System.IO.TextWriter { public override Encoding Encoding { get { return Encoding.UTF8; } } public override void WriteLine(string value) { System.Console.WriteLine("wxwinter:" + value); } } |
流程 |
|
xaml |
<Activity ...> <WriteLine DisplayName="WriteLine的TextWriter属性演示" Text="wxd" TextWriter="[New WriteLineActivitySample.myTextWriter()]" /> </Activity> |
运行工作流 |
class Program { static void Main(string[] args) { //WriteLine的TextWriter属性演示 WorkflowInvoker.Invoke(new Workflow2()); //控制台停屏看效果 System.Console.Read(); } } |
运行结果 |
|
在代码中使用WriteLine
class Program { static void Main(string[] args) { WriteLine wxwinterActivity = new WriteLine(); InArgument<string> inArgument = new InArgument<string>(getValue("wxd")); wxwinterActivity.Text = inArgument; WorkflowInvoker.Invoke(wxwinterActivity); System.Console.Read(); } static string getValue(string p) { return "wxwinter:" + p; } } |
|
WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用相关推荐
- WF4.0 基础篇 (二十八) WF调用PowerShell
PowerShell 提供了命令行管理系统的功能,但通常情况下,操作人员要完成某种业务需要多组PowerShell 命令,这样会很烦琐,错误率也比效高.操作人员可以编写powerShell脚本来组织命 ...
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
本节主要介绍Interop调用WF3.X的Activity 本文例子下载: http://files.cnblogs.com/foundation/InteropSample.rar 本文例子说明 I ...
- WF4.0 基础篇 (二十) ActivityWithResult 有返回值Activity
本节主要介绍WF4 中 有返回值Activity的使用 本文例子下载: http://files.cnblogs.com/foundation/ActivityWithResultSample.rar ...
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar WorkflowInspectionS ...
- WF4.0 基础篇 (二十七) WCF Workflow Service 在WCF中使用WF
例子下载: http://files.cnblogs.com/foundation/wcfwfSample.rar 例子说明: WCF Workflow Service 创建启用WF的WCF服务 例1 ...
- WF4.0 基础篇 (三十 完) 对学习WF的一点建议
从09年10月份 NET4.0 Bata 2发布后,我就开始写[WF4.0 基础篇]这个系列,经历了5个多月终于在NET4.0正式发布前将这个系列完成了 这段时间与一些对WF4.0感兴趣的公司与开发人 ...
- [转]WF4.0 基础篇 (一)开始使用WF
本文转自:http://www.cnblogs.com/foundation/archive/2009/10/26/1589993.html 来博客园写WF主题博客已经3年了, 在园子里认识了很多朋友 ...
- WF4.0 基础篇 (十四) Delay 与WF4中的线程
本节主要介绍WF的实例是单线程运行的,Delay并不是Thread.Sleep,Parallel是单线程运行的,WorkflowApplication与WorkflowInvoker在调用流程上的区别 ...
- WF4.0 基础篇 (六) 数据的传递 Arguments 参数
节主要介绍如何在WF4.0中使用参数,以及在流程启动时传入参数据在流程结束时读取参数 本文例子下载: http://files.cnblogs.com/foundation/ArgumentsSamp ...
最新文章
- MapWindow记录
- OS开发UI篇—在UItableview中实现加载更多功能
- (AOSP)repo checkout指定版本
- Java(15) _Runtime类 内存方法
- 虚函数练习:交通工具信息
- 论文投稿新规则,不用跑出SOTA,还能“内定”发论文?!
- Maven高级之archetype(原型/骨架)开发
- 电子科技大学计算机应用技术专科段,2020年电子科技大学成都学院计算机应用技术(专科)专业介绍...
- 7-200 天梯赛的善良 (20 分)
- bat脚本更新本地Git仓库
- 深度学习的未来在单片机身上?
- Asp.net常用的51个代码(非常实用)
- Java前端如何发送date类型的参数给后端
- python爬取景点数据看该去哪里玩——南京篇
- 于仕琪 老师新版本人脸识别 - DLL接口及Python语言案例
- python阈值分割_Python实现otsu阈值分割算法
- 报警c语言程序,PIC单片机警报声C程序
- SQL:with as用法
- 查看linux系统有哪些登陆用户,Linux_linux查看系统登录用户,Last login: Wed Jul 29 17:16:10 2009 fro - phpStudy...
- high charts柱状图更新(将原有柱状图更换为其他柱状图)删除重新绘制,柱状图设置渐变色