- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
策略和规则
声明性代码并不会被编译进程序集中,而是在应用程序执行时被解释。ASP.NET2.0
中有许多新的特征就是声明性的,这其中包括数据绑定和改进了的模板控件。它们能够让你
在写ASP.NET应用程序时不使用C#代码就可去执行数据绑定或者其它复杂的控件呈现任
务。
1.知道在工作流处理过程中怎样进行策略和规则的处理
2.理解前向链接以及这是如何影响到基于规则的工作流处理过程的
3.为工作流处理过程创建规则
4.结合Policy活动来使用规则
我敢肯定,我们中的大多数人编写面向过程的代码(imperativecode)都很轻松自在。
过程式代码指通过编程来实现业务处理过程的C#代码,例如,读取一个数据库表,增加这
个表中某些列的值,然后把它们统统都写到另一个数据库的表中。
但在本章,我们将深入规则,规则是对工作流的执行进行控制的一种机制,但它被看作
是声明性的(declarative)。通常,声明性代码并不会被编译进程序集中,而是在应用程序
执行时被解释。ASP.NET2.0中有许多新的特征就是声明性的,这其中包括数据绑定和改
进了的模板控件。它们能够让你在写ASP.NET应用程序时不使用C#代码就可去执行数据
绑定或者其它复杂的控件呈现任务。
WindowsWorkflowFoundation(WF)也具有声明性的能力,但它是对规则和策略进
行绑定而不是数据。你不能使用HTML或者ASP.NET的构造来声明你的规则,当然,涉及
的概念都是相似的。
但是什么是规则,什么又是策略呢?
策略和规则
当我写一个涉及到数据或业务过程的程序时,我都会对数据或业务过程进行理解并把它
转换成计算机去执行的代码。例如,考虑这样一个对帐目进行检查的处理逻辑:假如在“
AvailableBalance列中的值少于要求的值,将抛出一个OverdraftException异常。”这似乎
很简单...下面是表达这个行为的一些伪代码:
IF(requestedValueAvailableBalance)THEN
thrownewOverdraftException(Insufficientfunds.)
但是要是银行客户具有透支保障功能,假如主账户资金不足时能对次账户进行存取又会
怎么样呢?要是客户没有透支保障功能但是可自动设置透支范围的信贷业务又会怎么样呢?
要是客户两样都有呢……我们该使用哪一个呢?
就像你能预见到的,为了对各种情况都进行检查,代码就会变得既复杂又混乱。更糟糕
的是,它不能很方便地移植到其它业务处理过程中,并且它维护起来可能也很困难。
更进一步,我们看到了这些不只是去进行数据处理而且还有数据之间的关系。在代码中,
我们运用过程化的处理方式来对关系进行处理,这些通常都会被翻译成许多嵌套的if语句,
swith语句和循环。假如以前你在处理过程中使用了大量的if语句去对所有可能的条件检查,
你或许应该问问自己是否已经没有更好的方式了。
至少在WF中有更好的方式。我们可以创建声明性规则然后使用规则引擎(rulesengine)
来处理它们。声明性规则对关系进行描述说明,它也适合应用到潜在要进行判断的地方。
WF承载了一个规则引擎(rulesengine)。该规则引擎可使用XML格式编码的规则,
并且能把这些规则应用到你的工作流的方法和字段中。在WF中,你能把面向过程的代码
和声明性规则两者结合在一起形成一个总的解决办法。
WF中主要有两个地方会用到规则处理:条件处理和策略。你将发现条件处理是IfElse、
While、Replicator以及ConditionedActivityGroup这些活动的一部分。假如你回顾一下第9
章逻辑“流活动”和第11章并行“活动”的话,在那些地方介绍和示范的活动中,在每种情况下
我都使用一个代码条件来对处理流程进行判断。当然,代码条件的实现是你工作流处理类中
的一个事件处理程序(它通过WF所提供的一个CodeCondition类被绑定)。但是,在本
章中你将开始使用规则条件进行替换。直到目前在本书中还没有体验过策略的使用,但在本
章中当我介绍Policy活动时将对策略进行演示。
备注:对于WF和基于规则的处理可以写完整地一本甚至是一部系列丛
文档评论(0)