WF(WWF) + MOSS WF 工作流设计与开发总结

 

本文适合已有基础学习WF,有基础概念理解或看过3个Webcast以上读者

原文: http://www.cnblogs.com/JacksonLin/archive/2009/01/12/1374055.html

 

希望读者看完文章给点意见,共同进步.

开发背景:MOSS+Nav+DataCenter(VS2008)

Tech: WCF+WF+LinQtoSQL+Map+Quickpart+WS

 

WF基本由:RuntimeService,Instance,Activity,其它Service(Tracking,沟通服务, 持久化服务..)

"自带"流程包括:顺序流,状态机

 

基础概念总结:

  • 顺序流SQF:函数式,一个过程处理好所有任务
  • 状态机STF:多个入口,利用状态(setState)区别现在执行到那
  • 当然两种都可以通过自定义任务和数据写在Activity内来控件一切,至使顺序流和状态机互实现,代价是实现另一种时花费的code!!
  • 一般做法WF自定持久化的时候存取一次DB,业务数据也存取一次DB,
  • TrackService又要再访问一次DB,建议做Track自己实现可结合业务更好 

流程设计:

  • SQF:处理有向图任务优先;外部在createWorkflow返回instance通过dic绑定输入到Workflow类的public属性;
  • STF:处理没向图,环形任务优先;事件驱动节点;
  • 无论是那一种,WF对应开发人员用,不是对应业务人员用,要改变流程,基本是靠开发人员定义好的方式改变,否则必需改代码,或把嵌套的Activity调来调去

 Activity设计:

  • Activity基本包括:  顺序Activity,状态Activity,基Actitity;     ifelseA, 并行A, 自定义A, EventDriverA+ListenA 事件驱动, CallA+HandlerA 处理外部互调,SendA,ReceiveA,InvokeWebServiceA,Input/OutputA
  • Activity设计要求:  并行, 顺流, 条件rule(设计时改变)/code(设计时不能改变), 可动态改变, 在xoml方式显示时设计工具改变, 嵌套A,
  • Activity设计开发:  Enable, 可重用A, 重用的范围,

 

Instance 开发: 一个Runtime跑n个Instance,一个Instance对应一个线程, Instance不会在可控制下立即执行完,但可监控.

 

 总体设计:

  • 必流程时,界面如何代码变化最小,例如用字典,
  • 流程状态可依赖WF的持久化来决定走向,但业务数据就需要放回DB,
  • 方案A, WF及Activity只用来得出流程,不处理数据->集中执行优化,数据存取一次性,Activity过于依赖WF,但只用到界面控制流程,没真正发挥WF功能
  • 方案B, 当且工作流出现复杂的循环或者并列(顺序流),多指向(状态机)操作时,这时WF的架构真正发挥作用,方案A不适应如此变化.
  • WCF自带的WF架构,这个模板工程绑得太死,只一一对应一个WF的类.适合发速开发WCF
  •  MOSS WF是产品,WWF是架构, 但MOSS的WF功能很少,主要是包围在List关联到MOSS site之间的操作,当复杂的关系型(关系型数据库特性)应用时就根本应用不了.方法只有用 <SharePoint Solution Generator 2008>或者<SharePoint Solution Generator>导出vs2008/vs2005 进行Extender开发, 但打开会发MOSS的WF全是XML,有部分MOSS函数,无法调试,可能全XML也是一个point.结果就是两头不到岸了.

 

 

个人备忘:  

  • VS2008的bug,如果你在一个WF的应用程序新建了Activity和Workflow,你想把它搬到另一工程或应用程序,目标工程或app必需也是WF工程,否则没法调试或者调试时抛错,不抛错也跑到一半一些应该执行的不执行.(花3小时发现...) 09-1-16
  • 原来Asp.net Site不支持WCF的dll或者直接连WCF通信(花1.5小时...k) 09-1-18

 

 

 

posted @ 2009-01-16 10:19  JacksonLin  阅读(2269)  评论(6编辑  收藏  举报