ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:170.49KB ,
资源ID:18984902      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18984902.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(逻辑流活动Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

逻辑流活动Word格式.docx

1、IfElse活动的作用是测试一个条件并根据测试结果执行不同的工作流路径。While活动用来执行一个While循环。而对于for循环,则是使用Replicator活动来完成。现在通过本章的示例应用程序开始我们的学习。备注:在本章你将依靠CodeCondition来进行条件的处理,它(CodeCondition)的意思是你将写下C#代码来处理条件表达式。在12章(“策略和规则”)中,你将使用RuleCondition来对条件表达式的值进行处理,RuleCondition使用了WF的基于规则的处理方式。两种方式都同样有效。使用IfElse活动创建QuestionFlow工作流1.下载本章源代码,打开

2、IfElse Questioner文件夹中的解决方案。2.看看Visual Studio解决方案资源管理器,你会看到解决方案的层次结构和前一章中的相似。主应用程序的文件位置在Questioner项目中,而宿主通信服务文件的位置则在QuestionService项目中。为使你把注意力放到工作流上,我已经创建了服务接口(具体过程参见前一章):IQuestionService,并且使用wca.exe工具(使用方法参见前一章)生成了一个必需的通信活动:SendReponseDataToHost。现在,找到QuestionFlow项目的Workflow1.cs文件并在视图设计器中打开它。3.从工具箱中拖

3、拽一个IfElse活动到设计器界面上。4.你会看到一个内含感叹号(!)标记的红色圆圈,这是提醒你还需要更多的信息才能编译你的工作流。其实,缺少的就是条件表达式!选中ifElseActivity1的左边分支以便在Visual Studio的属性面板上呈现该活动的属性。选中它的Condition属性以激活它的下拉列表框,然后从列表中选择代码条件。你通常有两种方式来对条件表达式进行选择:code(代码)和rules-based(基于规则)。我们这里将使用基于代码的条件表达式,基于规则的技术将保留到第12章(策略活动)进行学习。5.展开显示的Condition属性,输入AskQuestion1,然后按

4、下回车键,Visual Studio这就为你插入了AskQuestion1的事件处理程序并会切换到代码视图下。现在,重新回到工作流视图设计器上,你还要把更多的活动添加到你的工作流中。6.拖拽一个Code活动到设计器界面上,并把它放到ifElseActivity1的右边分支上。7.指定它的ExecuteCode属性值为NegateQ1。当Visual Studio插入了NegateQ1事件出现程序后,重新回工作流视图设计器界面上。8.重复步骤6和步骤7,在ifElseActivity1的左边分支上也添加一个Code活动。指定它的ExecuteCode属性值为AffirmQ1,但是,当Visual

5、 Studio插入了AffirmQ1事件出现程序后,不要切换回工作流视图设计器界面上。相反,我们要添加一些代码。9.我们现在需要为该工作流类添加一些属性,当我们起动工作流进程时可把它们作为参数。在Workflow1的构造器的下面,添加下面的代码,它们包含有工作流将问到的三个问题:private string _questions = null;public string Questionsget return _questions; set _questions = value;10.我们也需要添加一个Dependent属性,它用来告知这些问题彼此是否是相关的。在上面所添加的代码下,添加如下代

6、码:private bool _dependent = true;public bool Dependentget return _dependent;set _dependent = value;11.问题回答的结果是一些Boolean值,在传回给宿主应用程序前需要保存到某些地方。因此,在上面所插入的代码下添加该字段:private bool _response = null;12.该_response字段没有被初始化,因此找到Workflow1的构造器,在里面的InitializeComponent方法下面添加如下的代码:/ Initialize return vector._respon

7、se = new bool3;_response0 = false;_response1 = false;_response2 = false;13.现在找到Visual Studio为你添加的AskQuestion1事件处理程序(event handler)。在该事件处理程序中添加下面的代码:/ Ask the question!DialogResult result = MessageBox.Show(Questions0, Questioner:,MessageBoxButtons.YesNo, MessageBoxIcon.Question);e.Result = (result =

8、DialogResult.Yes);14.对于NegateQ1事件处理程序,则添加下面的代码:/ Negate answer.if (Dependent)/ Negate remaining answers._response1 = false;_response2 = false;15.接下来,在AffirmQ1事件处理程序中添加下面的代码:/ Affirm answer._response0 = true;16.你现在就已为第一个问题的提问添加了对应的工作流组成部分,但是这还有两个问题。对于第二个问题,重复步骤3至步骤8来新添加一个IfElse活动添加到工作流中,把和问题1相关的地方用问题

9、2替换掉,例如插入的事件处理程序就应该是AskQuestion2、NegateQ2和AffirmQ2。工作流视图设计器的界面现在如下所示:17.现在找到AskQuestion2事件处理程序并添加下面的代码:if (_response0 = false & Dependent)/ No need to ask!e.Result = false;else/ Ask the question!DialogResult result = MessageBox.Show(Questions1, MessageBoxButtons.YesNo, MessageBoxIcon.Question);e.Res

10、ult = (result = DialogResult.Yes);18.对于NegateQ2事件出现程序,添加下面的代码:/ Negate answer/ Negate remaining answer19.对于AffirmQ2事件处理程序,添加下面的代码:_response1 = true;20.在一次重复步骤3至步骤8,添加第三个问题,把和问题1相关的内容替换掉(方法和添加第二个问题时一样)。此时,工作流视图设计器的界面如下所示:21.找到AskQuestion3事件处理程序,插入下面的代码:if (_response1 = false &DialogResult result = Me

11、ssageBox.Show(Questions2, 22.对于NegateQ3事件处理程序,添加下面的代码:23.对于AffirmQ3事件处理程序则添加下面的代码:/ Affirm answer_response2 = true;24.现在回到工作流视图设计器。你会在工具箱中找到一个名称为SendResponseDataToHost的自定义活动。(注意:假如工具箱中没有这个SendResponseDataToHost活动,则编译该项目再重新看看。)25.拖拽一个SendResponseDataToHost活动到你的工作流视图设计器界面上,把它放到第三个IfElse活动(ifElseActivi

12、ty3)的下边。26.因为返回的数据是一个简单的Boolean类型的数组,因此这里的处理方式和前一章有点点区别。和你去添加一个容纳该Boolean类型的数组的依赖属性不同,SendResponseDataToHost活动使用一个字段来容纳该数据,创建该字段的用户界面也就和你在第七章中看到的不同。在Visual Studio属性面板上选中responses属性,然后点击浏览(.)按钮。这打开了如下面的Boolean集合编器对话框。27.点击添加按钮,共重复三次,保留这些默认的False值,然后点击确定按钮。Visual Studio就为你把包含三个Boolean元素的数组添加进了你的Workfl

13、ow1.designer.cs文件的代码中。提示:在下面的第28步,你将添加一个CodeActivity,用它来把你在第11步添加的_response字段分配到我们刚刚为SendResponseDataToHost创建的Boolean数组中。但是,你也可直接使用SendResponseDataToHost的一个我们已经创建的response属性(来对它进行访问)。我选择这样做仅仅是因为(从阐述的角度来说)这样更有意义,这可展示出在涉及到宿主通信活动前该Ifelse活动是怎样添加和工作的。28.现在我们需要把保存了问题回答结果的数组的值和将要使用这些值的SendResponseDataToHos

14、t活动联系起来。因此,我们现在就拖拽一个Code活动到工作流视图设计器的界面上,把它放到第三个IfElse活动(ifElseActivity3)和SendResponseDataToHost活动(sendResponseDataToHost1)之间。29.设置该Code活动的ExecuteCode属性为CopyResponse,然后按下回车键。30.在Visual Studio插入的CopyResponse事件处理程序中添加下面的代码:/ Assign outgoing data.sendResponseDataToHost1.responses = _response;31.编译并运行该应用程序。改变问题的Dependency属性,看看在回答这些问题时,作出否定的回答其结果一样吗?

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1