WF4.0 基础篇 (十八) Flowchar
本节主要介绍WF4 中 Flowchart的使用
本文例子下载:
http://files.cnblogs.com/foundation/FlowcharSample.rar
本文例子说明
Flowchart 说明
Flowchart
类名 |
System.Activities.Statements.Flowchart |
文件 |
System.Activities.dll |
结构说明 |
继承 NativeActivity 是一个 sealed类 override 了 [CacheMetadata方法] 与 [Execute方法] [Variables]属性 的类型为[ Collection<Variable>] [StartNode]属性 的类型为[FlowNode] [Nodes]属性 的类型为[Collection<FlowNode>] |
功能说明 |
FlowDecision
类名 |
System.Activities.Statements.FlowDecision |
文件 |
System.Activities.dll |
结构说明 |
继承 FlowNode 是一个 sealed类 [Condition]属性 的类型为[Activity<bool>] [False]属性 的类型为[FlowNode] [True]属性 的类型为[FlowNode] |
功能说明 |
FlowSwitch
类名 |
System.Activities.Statements.FlowSwitch |
文件 |
System.Activities.dll |
结构说明 |
继承 FlowNode 是一个 sealed类 [Expression]属性 的类型为[Activity<object>] [Default]属性 的类型为[FlowNode] [Cases]属性 的类型为[IDictionary<object, FlowNode>] |
功能说明 |
FlowStep
类名 |
System.Activities.Statements.FlowStep |
文件 |
System.Activities.dll |
结构说明 |
继承 FlowNode 是一个 sealed类 [Action]属性 的类型为[Activity] [Next]属性 的类型为[FlowNode] |
功能说明 |
例
Flowchart基本使用
工作流 |
|
宿主 |
//=================================================== WorkflowApplication instance = null; private void button_triggering_Click(object sender, RoutedEventArgs e) { string bookName = textBox_bookmark.Text; string inputValue = textBox_value.Text; if (instance != null) { if (instance.GetBookmarks().Count(p => p.BookmarkName == bookName) == 1) { instance.ResumeBookmark(bookName, inputValue); } else { foreach (var v in instance.GetBookmarks()) { System.Console.WriteLine("-------请从下面选项中选择一BookmarkName---------------------------"); System.Console.WriteLine("BookmarkName:{0}:,OwnerDisplayName:{1}", v.BookmarkName, v.OwnerDisplayName); System.Console.WriteLine("================================"); } } } else { MessageBox.Show("没有创建实例"); } } void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { instance = null; System.Console.WriteLine("workflowCompleted:{0}", e.CompletionState.ToString()); } void aborted(WorkflowApplicationAbortedEventArgs e) { instance = null; System.Console.WriteLine("aborted ,Reason:{0}", e.Reason.Message); } UnhandledExceptionActionunhandledExceptionl(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException:{0}", e.UnhandledException.Message); return UnhandledExceptionAction.Cancel; } void workflowIdel(WorkflowApplicationIdleEventArgs e) { System.Console.WriteLine("Idle:{0}", e.InstanceId); System.Console.WriteLine("--------BookmarkName---------------------------"); foreach (var item in e.Bookmarks) { System.Console.WriteLine("{0}", item.BookmarkName); } System.Console.WriteLine("================================"); } //================================================== private void button_baseFlowchartWorkflow_Click(object sender, RoutedEventArgs e) { instance = new WorkflowApplication(new FlowcharLibrary.baseFlowchartWorkflow()); instance.Completed = new Action<WorkflowApplicationCompletedEventArgs>(workflowCompleted); instance.OnUnhandledException = unhandledExceptionl; instance.Aborted = aborted; instance.Idle = workflowIdel; instance.Run(); } |
结果 |
FlowDecision 例子
工作流 |
|
bookmark |
public sealed class bookmark<T> : NativeActivity<T> { public InArgument<string> bookmarkName { get; set; } protected override bool CanInduceIdle { get { return true; } } protected override void Execute(NativeActivityContext context) { string bookmark = context.GetValue(bookmarkName); context.CreateBookmark(bookmark, new BookmarkCallback(bookmarkCallback)); System.Console.WriteLine("创建bookmark:{0}", bookmark); } void bookmarkCallback(NativeActivityContext context, Bookmark bookmark, object obj) { if (typeof(T) == typeof(Int32)) { this.Result.Set(context, int.Parse(obj.ToString()) ); return; } if (typeof(T) == typeof(string)) { this.Result.Set(context, obj.ToString()); return; } this.Result.Set(context,obj); } } |
宿主 |
//=================================================== WorkflowApplication instance = null; private void button_triggering_Click(object sender, RoutedEventArgs e) { string bookName = textBox_bookmark.Text; string inputValue = textBox_value.Text; if (instance != null) { if (instance.GetBookmarks().Count(p => p.BookmarkName == bookName) == 1) { instance.ResumeBookmark(bookName, inputValue); } else { foreach (var v in instance.GetBookmarks()) { System.Console.WriteLine("-------请从下面选项中选择一BookmarkName---------------------------"); System.Console.WriteLine("BookmarkName:{0}:,OwnerDisplayName:{1}", v.BookmarkName, v.OwnerDisplayName); System.Console.WriteLine("================================"); } } } else { MessageBox.Show("没有创建实例"); } } void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { instance = null; System.Console.WriteLine("workflowCompleted:{0}", e.CompletionState.ToString()); } void aborted(WorkflowApplicationAbortedEventArgs e) { instance = null; System.Console.WriteLine("aborted ,Reason:{0}", e.Reason.Message); } UnhandledExceptionAction unhandledExceptionl(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException:{0}", e.UnhandledException.Message); return UnhandledExceptionAction.Cancel; } void workflowIdel(WorkflowApplicationIdleEventArgs e) { System.Console.WriteLine("Idle:{0}", e.InstanceId); System.Console.WriteLine("--------BookmarkName---------------------------"); foreach (var item in e.Bookmarks) { System.Console.WriteLine("{0}", item.BookmarkName); } System.Console.WriteLine("================================"); } //================================================== private void button_FlowDecisionWorkflow_Click(object sender, RoutedEventArgs e) { instance = new WorkflowApplication(new FlowcharLibrary.FlowDecisionWorkflow()); instance.Completed = new Action<WorkflowApplicationCompletedEventArgs>(workflowCompleted); instance.OnUnhandledException = unhandledExceptionl; instance.Aborted = aborted; instance.Idle = workflowIdel; instance.Run(); } |
结果 |
FlowSwitch 例子
工作流 |
|
bookmark |
public sealed class bookmark<T> : NativeActivity<T> { public InArgument<string> bookmarkName { get; set; } protected override bool CanInduceIdle { get { return true; } } protected override void Execute(NativeActivityContext context) { string bookmark = context.GetValue(bookmarkName); context.CreateBookmark(bookmark, new BookmarkCallback(bookmarkCallback)); System.Console.WriteLine("创建bookmark:{0}", bookmark); } void bookmarkCallback(NativeActivityContext context, Bookmark bookmark, object obj) { if (typeof(T) == typeof(Int32)) { this.Result.Set(context, int.Parse(obj.ToString()) ); return; } if (typeof(T) == typeof(string)) { this.Result.Set(context, obj.ToString()); return; } this.Result.Set(context,obj); } } |
宿主 |
//=================================================== WorkflowApplication instance = null; private void button_triggering_Click(object sender, RoutedEventArgs e) { string bookName = textBox_bookmark.Text; string inputValue = textBox_value.Text; if (instance != null) { if (instance.GetBookmarks().Count(p => p.BookmarkName == bookName) == 1) { instance.ResumeBookmark(bookName, inputValue); } else { foreach (var v in instance.GetBookmarks()) { System.Console.WriteLine("-------请从下面选项中选择一BookmarkName---------------------------"); System.Console.WriteLine("BookmarkName:{0}:,OwnerDisplayName:{1}", v.BookmarkName, v.OwnerDisplayName); System.Console.WriteLine("================================"); } } } else { MessageBox.Show("没有创建实例"); } } void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { instance = null; System.Console.WriteLine("workflowCompleted:{0}", e.CompletionState.ToString()); } void aborted(WorkflowApplicationAbortedEventArgs e) { instance = null; System.Console.WriteLine("aborted ,Reason:{0}", e.Reason.Message); } UnhandledExceptionAction unhandledExceptionl(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException:{0}", e.UnhandledException.Message); return UnhandledExceptionAction.Cancel; } void workflowIdel(WorkflowApplicationIdleEventArgs e) { System.Console.WriteLine("Idle:{0}", e.InstanceId); System.Console.WriteLine("--------BookmarkName---------------------------"); foreach (var item in e.Bookmarks) { System.Console.WriteLine("{0}", item.BookmarkName); } System.Console.WriteLine("================================"); } //================================================== private void button_FlowSwitchWorkflow_Click(object sender, RoutedEventArgs e) { instance = new WorkflowApplication(new FlowcharLibrary.FlowSwitchWorkflow()); instance.Completed = new Action<WorkflowApplicationCompletedEventArgs>(workflowCompleted); instance.OnUnhandledException = unhandledExceptionl; instance.Aborted = aborted; instance.Idle = workflowIdel; instance.Run(); } |
结果 |
转载于:https://www.cnblogs.com/tiaoshuidenong/p/4018889.html
WF4.0 基础篇 (十八) Flowchar相关推荐
- WF4.0 基础篇 (十四) Delay 与WF4中的线程
本节主要介绍WF的实例是单线程运行的,Delay并不是Thread.Sleep,Parallel是单线程运行的,WorkflowApplication与WorkflowInvoker在调用流程上的区别 ...
- 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 基础篇 (二) Activity介绍及WriteLine Activity的使用
从本篇开始,将正式讲解WF4.0,本文主要涉及如下内容:Activity介绍, WF4.0 中工作流的结构,通过WriteLine演示InArgument<T>参数的使用 目录 1 ...
- WF4.0 基础篇 (二十八) WF调用PowerShell
PowerShell 提供了命令行管理系统的功能,但通常情况下,操作人员要完成某种业务需要多组PowerShell 命令,这样会很烦琐,错误率也比效高.操作人员可以编写powerShell脚本来组织命 ...
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar WorkflowInspectionS ...
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
本节主要介绍Interop调用WF3.X的Activity 本文例子下载: http://files.cnblogs.com/foundation/InteropSample.rar 本文例子说明 I ...
- WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则
通过本节,可以初步了解WF程序的特性,为以后的WF类应用开发提供一个初步的感性认识 目录 1 流程实例WorkflowApplication与设计WF程序的基本原则 1 1.1 流程 ...
- WF4.0 基础篇 (六) 数据的传递 Arguments 参数
节主要介绍如何在WF4.0中使用参数,以及在流程启动时传入参数据在流程结束时读取参数 本文例子下载: http://files.cnblogs.com/foundation/ArgumentsSamp ...
最新文章
- java后端判断用户是否关注公众号
- qdbus 复杂类型
- sepFilter2D函数
- 洛谷 P3332 [ZJOI2013]K大数查询 解题报告
- OpenFileDialog 和 FolderBrowserDialog
- i2c_add_driver函数用法
- ElasticSearch前缀匹配查询(英文检索)
- 消息中间件Kafka与RabbitMQ谁更胜一筹?
- 【Python3网络爬虫开发实战】 3.1.3-解析链接
- tomcat 启动需要java环境吗?_三分钟教你Windows环境下,如何设置Tomcat随机自动启动?...
- 51Nod-1015 水仙花数【进制+查表搜索】
- VUE颜色选择器插件vColorPicker
- 物联网技术在工业领域的主要应用
- 简单复制粘贴个linux红帽6
- Hyper-V虚拟机和虚拟化服务器区别
- word 转html回显至富文本编辑器中(渲染页面)——mammoth.js
- 虚拟机VM安装win7遇到的问题及解决方法
- iphone win7无法识别_小编操作win7系统电脑不能识别iphone苹果设备的设置教程
- mie散射理论方程_A. Mie米散射理论基础知识讲解
- iptables场景一(上)