惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
V
V2EX
WordPress大学
WordPress大学
博客园 - Franky
Last Week in AI
Last Week in AI
博客园 - 司徒正美
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
Attack and Defense Labs
Attack and Defense Labs
腾讯CDC
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
A
Arctic Wolf
量子位
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
雷峰网
雷峰网
博客园_首页
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
罗磊的独立博客
H
Hacker News: Front Page
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
IT之家
IT之家
The Cloudflare Blog
爱范儿
爱范儿
博客园 - 叶小钗
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - wellgo

卡耐基成功之道浓缩版 [转贴 2007-02-25 16:32:29 ] WF结构随想 Caché在.net中的开发模式 使用Matrix生成动态列报表 人生的转折 我军军事物流标准化的现状分析及对策 军用仓库物流与信息流协同的数据模型研究 基于供应链的航材库存管理 航空兵场站油料库存控制策略研究 军队物资采购供应商的开发 关于测试人员定位的想法 Microsoft Windows Workflow Foundation 入门:开发人员演练 IoC 容器和Dependency Injection 模式 用户自定义WWF的流程 windows workflow学习笔记(一) 如何为java程序创建快捷方式 SqlBulkCopy与Insert触发器的应用问题 泛型类声明中的静态变量,在相同封闭构造类型所有实例中被共享,但在不同封闭构造类型的实例中,是不被共享的。 ADO.NET 2.0 功能一览
windows workflow学习笔记(二)
wellgo · 2006-01-06 · via 博客园 - wellgo
 

在工作流中注册HOST的事件:

            //

            // EventDrive加入到Listen中,由Listen负责监听Host事件并通知EventDrive

            //

            this.listenApproveReject.Activities.Add(this.approveEventDriven);

            this.listenApproveReject.ID = "listenApproveReject";

            //

            // EventSinkActivity加入到EventDrive中,以接收事件数据

            //

            this.approveEventDriven.Activities.Add(this.approveEvent);

            this.approveEventDriven.ID = "approveEventDriven";

            //

            // 声明EventSinkActivity要注册的Host事件

            //

            this.approveEvent.EventName = "ExpenseReportApproved";

            this.approveEvent.ID = "approveEvent";

            this.approveEvent.InterfaceType = typeof(IExpenseReportService);

            this.approveEvent.Roles = null;

            this.approveEvent.Invoked += new System.EventHandler(this.approveEvent_Invoked)

如何进行条件分支

一个ElseIf中包含了两个IfElseBranch,在IfElseBranch中通过Condition指定计算是否进行本分支的条件对象CodeCondition,并将CodeConditionCondition加入到ConditionalExpression代理中执行业务逻辑。当工作流运行时就会据此确定是否要进行该IfElseBranch

this.ifNeedsLeadApproval.Activities.Add(this.invokeGetLeadApproval);

            this.ifNeedsLeadApproval.Condition = ifElseLogicStatement;

ifElseLogicStatement.Condition += new System.Workflow.Activities.ConditionalExpression(this.DetermineApprovalContact);

            this.ifNeedsLeadApproval.ID = "ifNeedsLeadApproval";

需要注意的是这两个IfElseBranch是有先后次序的,也就是我们希望的先if条件后else if

            this.EvaluateExpenseReportAmount.Activities.Add(this.ifNeedsLeadApproval);

            this.EvaluateExpenseReportAmount.Activities.Add(this.elseNeedsManagerApproval);

如果将上面两名换个位置,编译时就在报错: Activity 'elseNeedsManagerApproval' validation failed: Property 'Condition' is not set.

同样的道理,在顺序工作流中Activitie的执行次序都是由其加入主Activitie的先后次序决定的,这点也要注意。