首页 / 软件开发 / C# / wf框架编程-基础部分
wf框架编程-基础部分2009-10-14 cnblogs lodestar1编程模型从消化系统讲起,口腔、肠道、胃…等消化器官组成了消化系统,每个器官又是由更微观的物质构成,比如细胞。细胞又可以细分。细胞可以分类,白细胞,红细胞等等。这里细胞可以认为是消化系统的基本组成元素。这种组成结构非常像面向对象的思维,因为它们都要解决同一个问题:现实世界复杂性。类可以认为是最基本的组成元素,类可以组成组件(构件) ,构件组成服务。知道了消化系统的组成,我们来看如何实现吃这个功能,吃的功能完成需要食物通过各种消化器官,使用消化器官的功能完成。这个过程是面向过程的,是一个流程。再看我们程序的实现,Staitc Main是程序的入口,C#中功能的实现也是通过调用相互关联的类中的方法实现的。C#本身就提供了丰富的控制结构(if else,while等等) 。分析:从最简单的语句到类到组件,到子系统。代码结构的最优化组织方式采用面向对象,可以更好复用,使用设计模式后可以更好控制变化。但是运行时逻辑往往是面向过程的。比如Main{}中的逻辑。就象细胞构成嘴、肠胃,这些器官又构成了消化系统,但是吃饭这个功能的完成是利用各个器官的功能,按照某种控制流程完成的。结论:程序的目标之一是功能实现,其中实现方式是基于过程的,组织结构是面向对象的。1.1过程控制模型常见的过程控制模型有:1、C#语句控制流;2、XAML;3、数据库表;4、DSL(领域描述语言) ,图形(专用的图形工具) 。数据库表中可以存储过程的调度逻辑,领域模式语言这几年也非常流行。过程的描述可以用任何一种方法实现。1.2C#控制流程的问题看一看交互式过程:在流转的过程中需要外部消息的响应的过程。可能某个处理会等待几天甚至几周。如果使用C#控制流实现,应该怎么实现。一般的做法是新建一个线程异布执行某个流程,而主线程持续运行(类似Windows服务) ,如果流程停滞,线程会被阻塞,如果阻塞的线程一多,整个系统的性能就会有很大影响,毕竟线程池等系统资源有限。这种设计可以实现,但是可扩展性和可伸缩性都存在问题。Wf处理这类问题的思路是书签机制,在线程停滞的地方加上书签,并且书签可以持久化保存到介质上,节约CLR中内存资源。管理器接收到消息后会继续流程的运转。书签可以结合Observe模式和Delegate实现。第二讲中我们可以进一步的了解到,wf的线程模型是天然的异步调用机制,可以非常好的解决这类情况。而工作流本身对过程模型的支持也强于目前的高级语言,下面的参考部分常见的工作流模式。1.3工作流模式工作流的概念起源于生产组织和办公自动化领域,提出的目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高工作效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标。工作流从更高的层次上提供了实现物料流、资金流、信息流及其涉及的相关过程与应用的集成机制,从而使得企业能够实现业务过程集成、业务过程自动化与业务过程的管理。通过定义不同任务之间相互关系的工作流模型, 无论是具体的操作动作,还是抽象的信息处理动作与决策过程,都可以用工作流的基本组成元素——活动来统一地进行描述。不同活动之间的关系,无论是具体的车间中零件加工顺序关系、办公自动化中的文件批转、还是抽象的决策流之间的关系都可以用工作流的基本组成元素——连接弧来统一的进行描述。基于Petri网原理研究了21种工作流模式。基本模式(5个)顺序模式 – 按照顺序执行各项活动解释:工作流流程中的一个活动只有当另一个活动完成后才能进行。例子:当订单登记活动完成后,客户通知才可以进行。并行分支模式 – 同时运行两个活动解释:在流程中的一点一个控制线程分成可以并行执行的两个控制线程,允许两个活动可以同时运行。例子:同步模式 – 同步两个并行的执行线程单选模式 – 从多条路径中选择一个执行简单合并模式 – 合并两个二选一路径高级分支与同步模式(5个)多选模式 –从多条执行路径中选出几条同步合并模式 – 合并多条路径,如果有多条路径被选择,则进行同步;如果只有一条路径被选择,则进行简单合并多合并模式 – 合并多条路径鉴别器模式 – 合并多条路径而不进行同步,只执行一次后续活动M中的N模式 – 合并多条路径,进行部分同步,只执行一次后续活动结构模式(2个)任意循环模式 – 没有任何限制的执行工作流 隐含终断模式 – 如果没有事情可做,就结束多实例模式(4个)略基于状态的模式(3个)推迟选择模式 – 执行两个可选线程中的一个,那个线程将被执行是隐含的交替并行模式 – 两个活动可以以任何顺序执行,但不能并行进行里程碑模式 – 当一个里程碑到达时,激发一个活动取消模式(2个)取消活动 – 取消当前活动取消过程 – 取消该过程参考:http://blog.csdn.net/tobeand/archive/2004/11/26/195106.aspx