返回首页


更新与quot; Silverlight的FAQ部分,Partnbsp; 2nbsp;和部分3quot;链接
quot更新; WCF的部分1quot;链接
quot更新;状态机工作流Discussionquo​​t;链接
更新"一对多和一对一的关系使用LINQ到SQLquot;链接Windows Workflow Foundation的常见问题 {A}{A3}{A4}{A5}{A6}{A7}{A8}{A9}{A10}
在这个常见问题,我们将更快地运行,并得到世界自然基金会(Windows Workflow Foundation的)将如何帮助您在您的项目自定义工作流的感觉。
我已经写作和录制视频架构。 {A11}我有一些示例视频设计模式,UML,功能点上传和下载PDF涵盖SOA中,UML,设计模式,TOGAF,哎呀等完整的体系结构的面试问题
如果你还没有读过我以前快速的FAQ部分,你总是可以从下面读取:第1部分设计模式的面试问题{A12}第3部分设计模式的面试问题{A13}第4部分设计模式的面试问题{A14}UML的第1部分面试问题{A15}UML的第2部分面试问题{A16}依赖注入{A17}Silverlight的FAQ部分1: - {A18}Silverlight的FAQ部分2: - {A19} Silverlight的FAQ部分: - {A20}Windows通信框架{A21}Windows通信框架{A22}Windows演示框架{A23}状态机工作流的讨论{A24}一对多和一对一的关系使用LINQ到SQL {A25}
快乐求职......{A26}
世界自然基金会是建设启用工作流的应用程序在Windows的编程模型。系统。工作流命名空间开发任何类型的工作流的所有必要的模块。{A27}
工作流的活动,这是模型和存储为他们描绘一个过程。下图描绘了明确的工作流和活动之间的差异。每一个任务,就是一个活动,活动组描绘了一个完整的工作流程。工作流是由工作流运行时引擎。{S0}图1: - 工作流基础架构
工作流模型可以写在纯NET代码,纯的XAML或XAML的组合。NET代码。编译工作流模型,并可以在Windows下,ASP.NET,Web服务或Windows服务应用程序执行。{A28}?
有两个基本的顺序工作流工作流顺序工作流和状态机工作流。
类型有明确的开始和结束边界。工作流控制执行顺序工作流。在顺序执行,一个任务后,其他执行。顺序工作流是在格式刚性和执行路径有一个确定性的性质。
状态机工作流更多的动态性。工作流程有国家和国家的等待事件,以帮助它移动到下一个状态。状态机的执行路径是undeterministic性质。
下图显示了视觉概念化的基本面。你可以看到在顺序工作流的执行路径是非常determent。希夫执行整个任务的顺序,而这些任务都非常determent。现在看看在第二个工作流程。每一个国家去其他国家,当它接收到某些外部事件。例如,当希夫是看到"星际迷航"有一个闪烁的消息,触发他看到闪烁的新的事件。图2: - 顺序和状态机工作流{A29}
如果工作流是非常刚性的,然后你去的顺序工作流和工作流是动态的状态机工作流。比如你下了订单,直到您的主管批准是刚性流动的秩序将无法通过。因为您的订单,监事批准,否则将不被批准。但是,如果您的订单从一个地方移动到其他地方。例如,它的动作从审批等待,然后澄清一个状态机工作流模型是比较合适的。
下面是一个简单的代码片段,实际上显示了如何使用顺序工作流。让我们尝试由图中标示的一步一步了解: -
1 - 首先,你需要选择系统。工作流命名空间
2,3,4 - 在这三个步骤,我们创建的代码对象和活动联系在一起
5,6,7和8 - 我们启动工作流,创建工作流实例对象来运行顺序工作流。 8,你可以看到输出。取决于如何添加在第3节的活动,它按顺序执行。因为我们有添加codeactivity1,首先它首先执行的第一项活动。你如何添加活动的活动的集合序列的活动运行。{S2}图: - 3工作流代码片段
注: - 上面的代码片断,开发出使用设计师。整点是让你了解幕后发生的事情。在实际项目中,您将会对设计师的依赖,而不是编码手动。你可以找到在上面的代码SimpleWorkFlowSampleManual文件夹。{A30}
正如先前所说,这是非常容易使用设计师的设计工作流程。因此,我们将回答这个问题,实际上做了一个小样本。以下是代码片段和图像快照,展示了我们如何可以使用设计器来创建工作流。因此让我们了解以下编号的快照。首先选择一个顺序工作流项目。在这种情况下,我们已选定的顺序工作流控制台应用程序,以保持样品的简单。当您完成创建项目在第二个快照所示,你会看到解决方案资源管理器。有两个文件之一WorkFlow1.cs和其他Workflow1.designer.cs.If您单击快照3所示,你会得到一个设计师的窗格上WorkFlow1.cs。如果你双击Workflow1.designer.cs,你会得到后面的代码快照4所示。因此,让我们拖放一个工作流设计器的代码活动和准这项活动作为MyActivity1称为方法。该协会执行代码属性的输入方法的名称。 MyActivity1,我们刚才在控制台中显示,这是我的第一项活动。同样,我们增加了更多的代码的活动,这点MyActivity2。如果你看到设计师的窗格中,我们有测序CODE1第一和代码2下。因此,在短,CODE1将首先执行的代码2。从下面显示的输出,这是明确的。这是工作流的代码隐藏。{S3}图4使用Designer的顺序工作流{A31}
是的,你可以使用conditionedActivitygroup定义工作流条件。下面是编号的快照,它展示了如何使用conditionedActivitygroup。你可以看到在此,我们定义了两个条件,一个conditionedActivitygroup快照。本集团内的两个箱子定义两个条件。您可以选择一个条件框和使用时的财产条件定义的条件。如果这种情况是真实的,你需要指定在执行代码的方法来执行。举例来说,在当前的快照中,我们已经说过old1方法应该执行,如果年龄GT; 21。同样的过程,我们需要遵循的第二个条件中。在第二个条件中,我们已经指定执行young1方法,如果年龄LT; 21。目前,第二个条件是在下面的快照中不可见。工作流编辑器还提供了一个清爽的界面规则条件编辑器,可用于指定条件。年龄在后面的代码是公共财产。您也可以在规则条件编辑器的智能时代。这两个条件将执行内部条件的活动组。我们还需要指定时,应退出本conditionactivitygroup。因此,我们已为退出调用的函数。如果用户输入的年龄为-1将退出循环,否则将采取从用户的输入和继续评估取决于两个条件。{S4}的图5: - 与条件的顺序工作流
工作流程中的异常处理是我们如何做到在正常有所不同。NET应用程序。下面是我们如何处理工作流程中的异常编号快照。我们有小标签,它说,视图例外。如果你点击查看异常,你将被重定向到一个只为例外,因为在编号快照2所示的工作流设计。这是的工作流程,将执行柜面,我们有例外。我们已经把代码的活动,这点称为作为提高异常的方法。柜面的工作流程中的异常之后,将路径。{五}图6: - 异常处理流程{A33}?
捻度: - 我们如何序列化的工作流程?
的Windows Workflow Foundation为开发人员提供了一个声明的方式使用XAML创建工作流。有关XAML的更多细节,请参阅WPF章。这些标记文件存储的XOML(可扩展对象标记语言)的延伸。在下面的快照,你可以看到Workflow1.xoml设计师创建的文件。标记文件也可以有后面的代码。整体概念的XOML文件后面的代码是分别从逻辑文件简报。
在下面的代码快照,我们有一个简单的XOML样本。下面是解释数明智的:为了创造一个XOML文件,您需要添加顺序工作流与分离。这意味着,XOML文件将被后面的代码创建。目前我们有两个活动code3和CODE1。下面是XOML文件的内容:

<?Mapping XmlNamespace="ComponentModel" 

    ClrNamespace="System.Workflow.ComponentModel" 

    Assembly="System.Workflow.ComponentModel" ?>

<?Mapping XmlNamespace="Compiler" 

    ClrNamespace="System.Workflow.ComponentModel.Compiler" 

    Assembly="System.Workflow.ComponentModel" ?>

<?Mapping XmlNamespace="Activities" 

    ClrNamespace="System.Workflow.Activities" 

    Assembly="System.Workflow.Activities" ?>

<?Mapping XmlNamespace="RuleConditions" 

    ClrNamespace="System.Workflow.Activities.Rules" 

    Assembly="System.Workflow.Activities" ?>

<SequentialWorkflow x:Class="WorkflowSeq.Workflow1" 

    x:CompileWith="Workflow1.xoml.cs" ID="Workflow1" 

    xmlns:x="Definition" xmlns="Activities">

<Code ExecuteCode="Mycode3" ID="code3" />

<Code ExecuteCode="Mycode1" ID="code1" />

</SequentialWorkflow> 

的XOML文件,请参阅上面的代码片段。你可以看到后面的代码是如何使用属性编译链接。代码形式的顺序工作流标记的元素。带有标​​记的最好的事情之一,是我们可以改变,只是通过改变我们不需要重新编译整个应用程序的XOML文件的顺序。{中六}图7: - 行动的XOML
在上面的快照的事情到现在是3,4,和5个编号的部分之一。这些部分不与样品。但只是为了让你知道你可以创建任何工作流序列化和反序列化再使用文字Writer对象。{A34}
当你调用的启动工作流功能,您可以通过使用Dictionary对象的名称/值对。{七}图8: - 传递到工作流程的价值| Shivprasad柯伊拉腊

回答

评论会员:非常不错的文章 时间:2011/12/27
!李汉弗莱斯
评论会员:游客 时间:2011/12/27
这是一个很好的文章,但我的感觉是,它会好当你有很好的例子解释
柯伊拉腊Shivprasad
评论会员:游客 时间:2011/12/27
我要创建一个ASP.NET以及Windows服务将所谓的工作流。能否请您指导我如何创建它
misaxi
评论会员:游客 时间:2011/12/27
?大文章-但我给你四,因为我觉得你可以做一个更好的状态机例如工作流程已经存在了几十年,但任何人真的要正视它,我建议你寻找{A35}深刻,因为它是试图构造一个完整的工作流程定义。我爱考拉-他们去培根的伟大
Donsw
评论会员:游客 时间:2011/12/27
感谢投票4。我已经写了statemachines文章和我的FAQ链接也。不想混淆状态机的初学者。我用了一个电子学习和教学firms.If你真的问我没有发誓我的船载小艇。它有一些缺陷,从而导致巨大的问题,而UAT感谢您的输入。在沙滩上的脚印不是坐在岸边
。h_CodeProject
评论会员:游客 时间:2011/12/27
感谢的人。搞好。{S8}
马塞洛洛佩兹
评论会员:游客 时间:2011/12/27
我有一个BPEL类,这似乎非常相似。设计员似乎比我在BPEL中使用一个更好。欢呼声中,Donsw我最近的一篇文章:AJAX日历控件
ThaoP
评论会员:游客 时间:2011/12/27
我使用VS2005当我参考。NET选项卡中,我没有看到Windows.Workflow你能告诉我吗?感谢ThaoP
亚历克斯Koshelev
评论会员:游客 时间:2011/12/27
@h_CodeProject:支持的WindowsWorkflowFoundation(及此事时,WCF)没来(开箱)在VS2005。他们扩展的一部分,你需要单独安装。从经验中,我将进行如下操作,并为了单独安装--------{BR}VS2005的NET3.0Framework可再发行组件SDK搜索,然后安装VisualStudio2005中的WindowsWorkflowFoundation(ZH)EXE扩展。一旦你已经完成,你会看到了一些新的类别项目下,当你选择File-GT;新GT;项目。将有WCF和WF项目的模板,并从那里开始。好运气。我已经与WF的开发工作流程为一年多来的一个位,并设置这些东西有些松动后,我可以告诉你,一旦你"开窍了",你才能真正明白什么是可能的。我会建议从思想的"活"向外概念。想想行动,或atomical操作活动。然后,您可以通过依赖属性(在VS2005不是一件容易的任务,但在VS2008容易)和条件,链接内的工作流程活动。好运气。"那些不会冒险,不能赢"-约翰保罗琼斯
。chaiguy1337
评论会员:游客 时间:2011/12/27
感谢您的指令我设置和看到的WCFVSNet我会尽力去实践。请告诉我,如果我不明白。ThaoP
。StockportJambo
评论会员:游客 时间:2011/12/27
好文章,感谢你会写一些有关的工作流程和SharePoint集成
?chaiguy1337
评论会员:游客 时间:2011/12/27
喜。我没有看到整篇文章,这是不是由于它的判断,但我想知道,如果你可以回答一个问题,我的WF点:在我看来,工作流仅仅是一个图形/视觉表示代码已经为年龄做的方式。像什么是您的第一张照片和这之间的区别:无效TakeOrder(订购订购){如果(!order.Product.InStock){EmailUser(顺序); }否则{SendToCustomer(order.Customer);}}什么WF的架构是什么上面?",时间和空间可以是一个bitch.rdquo;ndash;Gushie,飞跃{O,O}OO(看看我的博客!)|)""???{A36}-??????{BR}
chaiguy1337
评论会员:游客 时间:2011/12/27
chaiguy1337写道:什么WF的架构是什么上面?颇多,实际上。从我所看到和使用的主要好处是,工作流声明,并存在了一套业务规则从您的代码独立。他们也可以改变你的代码,而无需重新编译或重新分配整个应用程序。业务规则的改变所有的时间-软件使用WF的有效具有潜在的维护成本低得多。,因为他们的声明,他们可以流很容易。还有更深奥的功能,如持久性数据存储,以及......这是有用的,如果你有一个长期运行的过程,我想,可能会中断
。paillave
评论会员:游客 时间:2011/12/27
引人入胜。因此,在理论上,这是可能的,使用一个应用程序的可扩展性模型声明永丰定义?例如,如果我写了我的程序的插件架构(轴承WF的定义的组件接口的意图)第三方提供的算法定义做变换RSS或XML,这样的事情,而不必定义代码?永丰仍然需要一些原始代码的水平,WF组件接口?基本上,我想知道如何"万能"的工作流的概念是,是否可以用来做什么,比方说,一个委托,或者如果它需要一个被预先设定的基础设施,像排序数据库模式?由于信息。洛根",时间和空间可以是一个bitch.rdquo;ndash;Gushie,飞跃{O,O}OO(看看我的博客!)|)""???{A36}-??????{BR}
马丁Lercher
评论会员:游客 时间:2011/12/27
也许我应该开始阅读整篇文章。:P",时间和空间可以是一个bitch.rdquo;ndash;Gushie,飞跃{O,O}OO(看看我的博客!)|)""???{A36}-??????{BR}
chaiguy1337
评论会员:游客 时间:2011/12/27
chaiguy1337,在开始的时候,我虽然WF没有带来了很多。最喜欢的开发商,我没有意识到WF将多么令人惊讶的重要。我只是觉得它看起来不错的发展graphicaly...但WF的点其实并没有使算法在所有声明!WF的真正的问题是发展断开连接applictions。我的意思是WF的第一个目的是开发SOA或Web架构。你要知道之间的工作流程的每一步,做一个书签,和工作流程的可采空,脱水在一个文件或数据库中,并从内存中删除。一个dehydratation意味着节省了工作流实例的书签。此书签定义工作流中的位置,和包含的工作流程中的范围中定义的每个变量的价值。当你补充水分一个恢复它的工作流程:工作流程管理,创建工作流实例,与脱水流程的书签定义的值的每一个变量的值,并开始在此书签定义的位置{BR}这一切事情的意义呢???试想想你会管理GUI和Web服务之间的对话进程的方式。WF实际上是持续时间长的交易,不能停留在内存。然后,您就可以开始一个工作流程,停止它,每当,并重新启动它...几个月后!这就是为什么在VisualStudio2008中,有一个项目模板,可以创建一个WCFWF的应用程序。您的信息,在VisualStudio2010,WF和WCF之间的联系将变得更加强大和更加明显。希望我的回答是明确的。Paillave
sleupold
评论会员:游客 时间:2011/12/27
我同意你的看法。我认为每个人都应该阅读上述信息
。Shivprasad柯伊拉腊
评论会员:游客 时间:2011/12/27
喜一个优点是你能坚持在任何时候,工作流程的状态和幕后的工作,使这一复杂问题的存在是一个复杂的框架。所以,你可以在会中断你的主机进程,并在以后的时间恢复他们失去的执行状态。马丁
LastZolex
评论会员:游客 时间:2011/12/27
有趣。也许我会照顾到所有。{S9}",时间和空间可以是一个bitch.rdquo;ndash;Gushie,飞跃{O,O}OO(看看我的博客!)|)""???{A36}-??????{BR}
Santhapur
评论会员:游客 时间:2011/12/27
我不明白,为什么这篇文章是ASP.Net节(网站开发)catagorized
Shivprasad柯伊拉腊
评论会员:游客 时间:2011/12/27
。NET框架是一种固有的一部分ASP.NET的。很多时候,我们最终creasting与自定义工作流出来知道的框架内的权力。当我死了我死的编程