坚持学习WF(1):从HelloWorld开始
本文主要通过实现了一个可以接受参数的HelloWorld程序来了解WF。
坚持学习WF(2):WF创作模式和设计时工具
坚持学习WF(3):WF框架概览
2.3两篇主要全面的阐述了WF框架和Visual Studio对开发WF的一些设计时的工具。
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
坚持学习WF(5):自定义活动(CustomActivity)
4.5两篇对主要对活动(Actibity)的介绍和依赖属性(DependencyObject)和DependencyProperty事件的使用。
坚持学习WF(6):开发可复用的宿主程序
主要实现两个类来对WorkflowInstance和WorkflowRuntime进行简单的封装。
坚持学习WF(7):流程控制(Flow Control)
主要说了WF中和流程相关的活动,主要包括以下这些活动:IfElseActivity,WhileActivity,ParallelActivity,ReplicatorActivity,ConditionedActivityGroup,InvokeWorkflowActivity,TerminateActivity,SuspendActivity等。
坚持学习WF(8):本地服务之调用外部方法
坚持学习WF(9):本地服务之事件处理
工作流能够使用方法和事件通过消息与宿主程序交互。 事件用于将数据发送到工作流,而工作流使用方法将数据发送到主机应用程序,8.9两篇主要说了本地服务如何调用外部方法和接收事件。
坚持学习WF(10):在工作流中使用关联
当工作流实例在本地服务接口上侦听相同事件的不同实例时,就无法确定该响应哪个事件。如何解决这个问题呢,我们就需要在工作流中使用关联。
坚持学习WF(11):工作流通信与队列
WF 提供的通信模型是构建于队列系统的基础之上,我们可以使用自定义活动来注册以接收关于队列的消息,而宿主应用程序中的服务则发送关于队列的消息。自定义活动可以使用此模型来处理外部事件,也可以传递异步活动执行的完成。这样,您的活动可以先执行到某一点,然后等待激发因素的到来以便继续执行。
坚持学习WF(12):使用EventHandlingScopeActivity活动
EventHandlingScopeActivity活动包含一个主线子活动和一组事件处理活动(EventHandlersActivity),它的主线子活动中只能包含一个子活动。它会执行其主子活动比如SequenceActivity。 同时,可能会执行每个EventDrivenActivity,也可能不执行它们,这取决于在SequenceActivity 活动执行时是否发生了它们的事件,当主线活动执行完了整个EventHandlingScopeActivity活动也就结束了。
坚持学习WF(13):WF中的持久化服务
主要介绍了如何使用WF中提供的SqlWorkflowPersistenceService来进行持久化存储。
坚持学习WF(14):自定义持久化服务
我们除了使用WF提供的SqlWorkflowPersistenceService外,还可以自定义持久化服务。因为有的时候你可能不想使用Sql Server数据库,我们就可以通过自定义持久化服务来使用其他的数据库,文件等来进行持久化存储。
坚持学习WF(15):状态机工作流
本文主要介绍WF中状态机工作流的基础知识,状态机工作流和顺序型工作流不同。顺序型工作流一般是比较固定的,可预测的,和系统交互的时候比较多。而状态机工作流一般是不可预测,和人的交互会比较多一些,一般有回退流程的时候使用状态机工作流会比较好一点,如何正确的选择顺序型工作流还是状态机工作流是十分重要的。
坚持学习WF(16):WF中的事务
在关系型数据库中支持事务已经有10几年了,事务用来解决数据的完整性、一致性等等问题。在WF中提供了TransactionScopeActivity活动用来支持事务,当该活动执行时一个System.Transactions.Transaction实例就被创建了,如果TransactionScopeActivity中的子活动有一个有异常,就会执行回滚操作。
坚持学习WF(17):WF中的补偿
事务是你在做一组更新时要不成功,要不失败,不可能只部分更新。事务最经典的使用场合就是在关系型数据库中。补偿是取消之前已经成功的操作,在我们的工作流中我们可能完成一项任务有很多活动组成,比如我们的活动都使用了TransactionScopeActivity,我们在之后发现错误了,想要取消之前成功的操作,这个和事务就没有关系了,因为事务已经成功了。这个时候我们就可以使用补偿。
坚持学习WF(18):使用IPendingWork接口
WF会定期在各个持久性点(Persistence Point)检查并将工作流实例保存到持久化存储中,这样如果工作流出现错误或是异常终止时相关的信息就会被存储,下次加载工作流实例时就会从此做为开始点。这个主要是针对工作内置的服务。工作流的外部服务使用工作批次来保留状态信息。 这些服务对其工作项进行批处理并共享与工作流的事务相同的事务。 如果工作流尚未提交事务,则服务仍可以在持久点期间对某些工作项进行批处理。WF提供 IWorkBatch 和 IPendingWork 以帮助服务和工作流实例保留状态信息。
坚持学习WF(19):工作流线程
WF中提供了很多内置的服务,其中工作流计划服务是用来管理工作流实例线程的。默认情况下WF会自动使用DefaultWorkflowSchedulerService服务,我们还可以手动去加载ManualWorkflowSchedulerService服务。本文利用MSDN中的一个例子来说明工作流中的线程以及如何使用DefaultWorkflowSchedulerService和ManualWorkflowSchedulerService服务。
坚持学习WF(20):规则引擎中的活动条件
坚持学习WF(21):规则引擎中的RuleSet
坚持学习WF(22):跟踪规则
坚持学习WF(23):以代码的方式构造和执行RuleSet
WF提供了非常灵活,强大和简单易懂的规则引擎。这几篇文章介绍了WF中规则引擎的相关知识。
坚持学习WF(24):WF中的异常处理
坚持学习WF(25):取消容器(CancellationHandlerActivity)
说明了WF如果捕获和处理异常,并介绍了CancellationHandlerActivity活动的基本使用。
广告:邀请大家加入WF技术研究团队。 团队地址:http://mswf.cnblogs.com/
更新:今天弄了下skydrive,把最新的Pro WF Windows Workflow in .NET3.5的随书代码放了上去,文中部分例子来源此书。大家去下面的地址下载吧。