由于规则不是程序化的代码,你不能使用vs的调试器来调试,如果我们要调试有规则的工作流程序,我们可以开启规则引擎的Tracing功能。我们下面以一个例子来说明。我们需要建立一个顺序型工作流项目,在工作流设计器中放入一个PolicyActivity活动,然后设置其RuleSetReference属性,我们建立以下规则集。如下表所示:
Rule | Conditon | ThenAction | ElseAction |
RuleC | this.D < 100 | this.B = this.B - 12 | |
RuleB | this.B > 50 | this.C = "Preferred" | this.C = "Normal" |
RuleA | this.A > 10 | this.B = 60 | this.B = 40 |
规则编辑器如下图:
然后我们在项目中添加App.config文件,在配置文件开始规则的跟踪功能,代码如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <switches> <add name="System.Workflow.Activities.Rules" value="ALL" /> <add name="System.Workflow LogToFile" value="1" /> </switches> </system.diagnostics> </configuration>
在此示例中,第二行添加节点启用文件的日志记录。该文件使用名称 WorkflowTrace.log 在宿主应用程序目录中创建。第一行中的TraceLevel属性值ALL表示所有可以预测到log信息都会被记录,如果你想过滤到一些log,你也可以指定Information和Verbose等,该选项通过将名称参数设置为等于“System.Workflow LogToTraceListener”来启用 TraceListener 的日志记录。这样设置后,Windows Workflow Foundation 将会枚举在宿主应用程序中创建的每个 TraceListener,并向它们发送所有日志记录信息。值属性的可能值包括:
值 | 说明 |
All | 记录接收到的所有消息 |
Off | 不记录任何消息 |
Critical | 仅记录关键消息 |
Error | 记录关键消息和错误消息 |
Warning | 记录关键、错误和警告消息 |
Information | 记录关键、错误、警告和提示消息 |
Verbose | 记录关键、错误、警告、提示和详细消息 |
工作流中赋响应初始值如下:
private int A = 12; private int D = 99; private int B = 0; private string C = "";
下面为宿主程序代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; namespace CaryRuleTracing { class Program { static void Main(string[] args) { using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender,
WorkflowCompletedEventArgs e){waitHandle.Set();}; workflowRuntime.WorkflowTerminated += delegate(object sender,
WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); waitHandle.Set(); }; WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof
(CaryRuleTracing.Workflow1)); instance.Start(); waitHandle.WaitOne(); } } } }
我们现在完成项目来运行程序,得到结果如下:
我们打开WorkflowTrace.log看看里面都记录了什么,下面只是log中部分的记录,你可以打开该文件查看详细记录:
规则“RuleA”条件 依赖项:“this/A/” |
1.Log的第一部分记录了各个规则的依赖项,当某个规则修改的时候会引擎哪些规则的重算。
2.从log我们可以看出规则的执行顺序并不是规则编辑器中设置的顺序,而是在优先级一样的情况下,按字母顺序来执行。我们例子中是RuleC,RuleB,RuleA,执行的顺序就不是了。
3.通过log我们也可以证实WF规则引擎的正向链接的特性,例子中RuleC引起了RuleB的重算。
这些只是WF中跟踪的一部分功能,我们后面后专门来学习WF中的跟踪的相关知识。
发表评论
-
平淡的2007
2007-12-24 08:04 816早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1414今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 891[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 638[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 783[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1147[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 928当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 835Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 844在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 695我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1187MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 704本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 836本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 760WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1060由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 799[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 691[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 735[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1106一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 950首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
坚持学习WF(22):跟踪规则 坚持学习WF(23):以代码的方式构造和执行RuleSet WF提供了非常灵活,强大和简单易懂的规则引擎。这几篇文章介绍了WF中规则引擎的相关知识。 坚持学习WF(24):WF中的异常处理 坚持学习WF...
坚持学习WF(1):从HelloWorld开始 本文主要通过实现了一个可以接受参数的HelloWorld程序来了解WF。 坚持学习WF(2):WF创作模式和设计时工具 坚持学习WF(3):WF框架概览 2.3两篇主要全面的阐述了WF框架和Visual ...
坚持学习WF(20):规则引擎中的活动条件 坚持学习WF(21):规则引擎中的RuleSet 坚持学习WF(22):跟踪规则 坚持学习WF(23):以代码的方式构造和执行RuleSet WF提供了非常灵活,强大和简单易懂的规则引擎。这几篇文章介绍...
在本篇“坚持学习WF(1):从HelloWorld开始”的源码分析中,我们将深入理解WF的基础知识和创建第一个工作流的步骤。 首先,让我们了解WF的基本概念。WF提供了一种模型化业务流程的方式,通过活动(Activities)来表示...
在Windows Workflow Foundation (WF)中,自定义活动(CustomActivity)是开发人员根据特定业务需求创建的自定义...通过对`CaryActivity`源码的学习和分析,我们可以更好地理解WF的工作原理,提高我们的工作流开发能力。
在标题“C# 利用 WF 实现规则引擎”中,我们可以推断出,这个项目是利用WWF的活动和工作流概念来构建一个规则引擎。规则引擎的核心在于能够定义、存储和执行一系列规则,这些规则可以影响应用程序的行为。通过使用...
通过学习WF的workflow跟踪源码,你可以了解到如何自定义跟踪定义以满足特定需求,如何实现自定义跟踪参与者以扩展跟踪功能,以及如何调整跟踪配置以优化性能和日志记录。此外,源码分析还能帮助你在遇到问题时快速...
通过学习和实践这个项目,开发者可以深入理解WF规则引擎的工作原理,提升在业务流程自动化和规则管理方面的能力。同时,理解如何将WF规则引擎与C#应用程序无缝集成,为企业的业务流程提供更加灵活、可扩展的解决方案...
通过学习这一章,开发者将能够更好地理解和利用WF的策略和规则功能,设计出更符合业务需求的流程应用。深入研究源码,可以帮助开发者掌握WF的内在机制,提升开发效率和代码质量。同时,了解规则和策略的动态管理,...
WF工作流(Windows Workflow Foundation,简称WF)是微软.NET Framework的一部分,它提供了一种用于构建应用程序的模型,这种应用程序能够根据预定义的规则和步骤自动执行业务流程。WF结合了业务流程管理(BPM)和...
- **第13章:跟踪**:讲解如何在工作流执行过程中进行跟踪和监控。 - **第14章:事务**:探讨如何在工作流中使用事务来保证数据完整性。 - **第15章:带有持久性的事务**:介绍如何结合事务和持久化机制来增强...
7. **工作流跟踪和诊断**:讲解了如何使用WF内置的跟踪和日志功能,以及如何通过自定义跟踪参与程序来增强监控和诊断能力。 8. **工作流版本管理和迁移**:讨论了如何处理工作流的版本升级,以及如何在不中断服务的...
接着,"坚持学习WF(2):WF创作模式和设计时工具"会深入到WF的设计环境,比如Visual Studio中的工作流设计器,讲解如何利用这些工具来创建和编辑工作流。此外,还会介绍几种常见的工作流模式,如顺序工作流、并行工作...
8. **跟踪与诊断**:WF提供了跟踪和诊断功能,可以帮助开发者监控工作流执行,定位问题并优化性能。 9. **版本控制**:WF支持版本升级,允许更新已部署的工作流,而不会中断正在运行的实例。 10. **源码分析**:...
Beginning WF: Windows Workflow in .NET 4.0 By Mark Collins Publisher: Apress 2010 | 500 Pages | ISBN: 1430224851 | PDF | 4 MB Windows Workflow Foundation is a ground-breaking addition to the core ...
"WF学习从入门到提高"的主题涵盖了从基础知识到高级技巧的全面学习路径,适合对WF感兴趣或需要在工作中应用WF技术的初学者和进阶者。 在WF的学习过程中,首先要理解的是WF的基本概念。WF提供了一种模型化的方式来...
Web WF(Workflow)设计器是一种基于Web的工具,用于创建、编辑和管理工作流流程。它允许用户通过图形化界面设计复杂的业务流程,而无需编写大量的代码。在本篇中,我们将深入探讨Web WF设计器的核心概念、功能以及...
### C# WF从入门到精通 #### 第一章:WF简介 **1.... - **工作流(Workflow)定义**:...通过以上章节的学习,读者可以全面掌握C# WF从基础到高级的各种技术要点和应用场景,从而能够有效地利用WF技术来解决实际问题。