Windows Workflow Foundation学习笔记(一)
最近读了些文章,发现学习、研究Windows Workflow Foundation的人越来越多,公司指派我对wwf也进行研究,新建的blog没有什么可写的,就把自己学习的WWF的笔记给大家分享一下,大家互相学习,也可以丰富一下我的blog,呵呵。
WWF作为WinFX API的支柱之一,提供给开发者一个普通框架-在其上开发过程驱动的和以工作流为中心的工作流程序。
一、什么是工作流,工作流做什么用呢?
一个工作流本质是一种方法-用来归档包含在完成一个单元的工作中的活动。典型地,在处理过程中,工作"流"流过一项或更多活动。这些活动可以通过机器或人工来实现,并且有可能象在一个互联网应用程序定义页面顺序一样得简单,也有可能象管理必须为任何数目的人都要看到、更改并同意的文件或产品一样得复杂。
二、WWF是什么呢?它的整体框架?
WWF说到底也是一个程序,只不过它是一个专门控制工作流的程序,它为开发工作流提供了框架、模型、以及工作流的工作引擎(即WorkflowRuntime),让开发人员快速的建立工作流。
WWF框架:(我贴了2次图都不行,干脆就不贴图了,凑合看吧)
1、Activities(活动)
工作流的组成部分,一个工作流由若干个activity组成,每个activity都包含特定的功能,去完成一件工作。
2、Serivices(服务)
当一个工作流实例运行时,可以伴随运行许多个Serivices,这些Services都是采用可插式调用的,即这些Serivices是为了满足不同的工作流的运行实例的需求,伴随实例而运行的。如:在一个工作流的运行实例中,我们可以同时加载与宿主程序通信的Service,监听和跟踪工作流实例运行的Service等等。
3、WWF与宿主程序的通信和关系。
宿主程序能够与工作流通讯交换数据通过通信Service服务,同时,宿主程序也可以与WWF中一些特殊的Activiy活动通过定义一些接口,采用事件传递参数的形式进行通信,交换数据。
4、WWF持久化(“钝化”)
WWF工作流程序可以长时间的运行,而且当WWF运行时所在的计算机重新启动后,这些实例仍然可以正常准确的运行,是由WWF的“钝化”机制来实现的。在WWF内部包含了一个非常有用的Service服务,用来把这些运行的数据保存到SQlServer中。
5、WWF跟踪
WWF中在工作流运行的同时,能够监视工作流的操作,而其这些操作可记录在数据库中或文件里。
6、WWF序列化
WWF的activity活动是可以被序列化的,通过序列化可将自定义的Activity的自定义样式进行保存。
7、WWF动态更新
WWF工作流允许工作流在运行的状态中,动态的更新工作的状态,或动态的控制工作流的流向,更改预期的流程。