WF和管理系统流程的差异以及实现

BlueTrees 2009-07-03 11:17:32
微软的WF为我们实现各种流程提供了一个稳定的异步执行环境和完整的API,是一个非常不错的基础平台。但是在微软WF基础上实现业务活动所需的流程时往往带来一些问题,一些不太熟悉WF模型的开发人员经常摸不着头脑。

我总结了WF和业务流程的一些差异
1、WF的流程驻留在内存中,只有在需要的时候才持久化到数据库中,而业务相关的流程,决定流程走向的业务数据通常是共享的,并且需要实时的持久化到数据库中。
2、WF的流程从直观的视角来看是面向设备的,就是数据流驱动的,而业务流程通常的视角是面向操作人员的,它的出发点是操作驱动的。当然数据驱动和操作驱动在本质上无差别。
3、最关键的一点,WF的顺序工作流的拓扑结构是树状的,而业务流程的拓扑结构是网状的,技术人员需要将业务人员用网状拓扑表达的业务流程转换为树状拓扑来适应WF的需要。从网状拓扑向WF树状拓扑进行转换是需要程序员的分析能力的,并且网状拓扑结构的小变动会导致树状结构的大变动。网状拓扑的转换过程需要能够对网状结构的流向逻辑关系进行细致的归纳并且转换为确定的树状逻辑分支。在某些极端情况下,在设计期将无法确定有限树状逻辑分支,这导致了著名的会签模式(我不知道谁发明的,很有才,也很土)和子流程模式,一个递归的子流程实际上是可以适应这种不确定范围的逻辑分支的情况。

使用好WF工作流并不是我们从表面上看到的那样,如何简单的让WF适应管理系统的流程需要,你必须换一个角度。这个角度就是全递归。我们必须设计一个WF的树状模型,这个工作流模型是反复的递归调用自身或者是另一个全递归的工作流模型。这种方式使用WF工作流才能满足管理系统流程的要求。而工作流模型本身中的步骤并不是为了对业务系统的流程关系映射而是为了满足非直接的业务需求,例如日志等等。

总而言之,请不要用WF来直接映射管理系统的流程拓扑,WF实现的是非业务需求,它满足数据交换、日志、鉴权等等抽象的非业务需求。

有何感想,请跟贴。谢谢
...全文
29 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
heguo 2011-05-12
  • 打赏
  • 举报
回复
膜拜!!!!!

还请再指教,盼详解!

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧