要调研WF,但现在还不知道是做什么用的。
找了一些资料也不行,还没弄懂。有知道的说说
它是做什么用的,用在哪,怎么用,有什么好处
急。
在线等 。

解决方案 »

  1.   

    WF不是业务工作流平台,是一个面向流程设计的架构
    WF是程序员的平台,不是业务用户的直接平台
    可以用WF设计业务工作流,参考
    http://www.cnblogs.com/cancanwyq/archive/2008/12/17/1356467.html
    http://www.cnblogs.com/cancanwyq/articles/343325.html
    http://www.cnblogs.com/BpLoveGcy/archive/2005/07/05/186627.html
      

  2.   

    WF具体的说netframework中用来开发工作流的一套类库,封装了一些基本的流程节点组件和流程组件。
    它支持工作流概念里的顺序工作流和状态机工作流。你可以用它来开发工作流系统,包括bpm(业务处理流程管理)。但这些系统要在它的基础上封装包括人员机构、角色配置的管理平台以及人员分配规则管理平台等,还要封装与外界交互的接口等,做好这些才算一个工作流系统。WF是非常基础的东西,它有很多工作流理念里的东西不支持的,比如forkjoin节点,它就不支持,而这种节点在业务流程里非常普遍。
      

  3.   

    WorkFlow,工作流技术,适用于开发办公自动化系统
      

  4.   

    1楼不是说了么...WF是程序员的平台,不是业务用户的直接平台...也就是说业务流程模型需要你自己的创建...fork join节点都实现不了WF还混什么混啊...
      

  5.   

    是谁在说MS的坏话,搜索了一下fork join概念,WF完全可以实现.
      

  6.   

    不知道我说的forkjoin是否是前面几位楼主理解的情况,就是流程出现多个分支,然后做合并,合并的条件是所有分支都已经到达合并节点,因为之前我开发的时候,发现sequenceactivity中没有这样的节点,好像由一个conditionsactivity 类似,但它只要由一个分支到达就立即会往下面走,后来没办法就自己开发了一个activity实现的,不知道楼上的说是否是和说的一样的,如果有,麻烦发给资料看看,正好我想了解下,谢谢!
      

  7.   

    fork join类似的东西,WF是可以实现的Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流解决方案。作为 Microsoft WinFX 的组成部分,Windows Workflow Foundation 同时提供了 API 和一些工具,用于开发和执行基于工作流的应用程序。Windows Workflow Foundation 提供单个统一的模型,以便创建跨越多个类别应用程序的端到端解决方案,包括人力工作流和系统工作流。 Windows Workflow Foundation 是一个广泛且通用的工作流框架,并且从下到上、在每个级别都针对可扩展性进行了设计。基于 Windows Workflow Foundation 的解决方案,由得到 Microsoft .NET 代码支持且在宿主应用程序中运行的互连组件组成。就像在定制的环境中以可视方式创建 Web 页一样,您需要在可视设计器中制订特定工作流的步骤,并且添加代码隐藏工作流组件以实现规则并定义业务过程。 Windows Workflow Foundation 提供一个工作流引擎、一个 .NET 托管 API、运行库服务以及与 Microsoft Visual Studio 2005 集成的可视化设计器和调试器。可使用 Windows Workflow Foundation 来生成并执行同时跨越客户端和服务器的工作流,以及可在所有类型的 .NET 应用程序内部执行的工作流。 工作流指的是:是以活动示意图形式定义的人力或系统过程模型。活动 是工作流中的一个步骤,并且是工作流的执行、重用和创作单位。活动示意图表达规则、操作、状态以及它们的关系。Windows Workflow Foundation 工作流通过安排活动而设计,然后它编译为 .NET 程序集,且在工作流运行库和公共语言运行库 (CLR) 中执行。 
    http://www.cnblogs.com/kilxy/archive/2006/12/15/593359.html
      

  8.   

    刚刚特意打开了wf项目,应该是conditionedActivityGroup 与我说的情况类似,但好像无法做到等待分支都到达后流程才开始往下走,虽然有一个UtilCondition属性配置,但业务上往往对于fork的个数不会确定,比如流程里定义了4个fork,但实际某笔业务只需要走其中任意2个fork,这个时候就不好用这个条件来定义了,因为往下走的条件是动态的。另外wf对于子流程调用,好像无法等待子流程走完了父流程再继续往下面,也就是wf的子流程只能是与父流程并行的,但业务上经常会出现几个流程可以公用一个子流程,比如某个审批子流程,这时候父流程需要审批子流程审批后得到结果后才决定走向。不知道楼上的两位wf高手是否用wf实现了这样的业务需求,正好lz发了这个帖子,大家讨论分享下,呵呵。
      

  9.   

    难道你不知道有WhileActivity、IfElseBranchActivity这样条件活动,还有ReplicatorActivity、ParallelActivity...更别提EventDrivenActivity、CallExternalMethodActivity...WF是给程序员用的...程序员是设计流程的...
      

  10.   

    呵呵,看来楼上的没做过bpm,用whileactivty和ifelsebranchactivity组合起来是可以实现我刚刚说的那种场景,但你知道它是以牺牲多少性能作为代价的不?在我自定义actvity之前已经用过了。呵呵,很遗憾是在大量业务请求的情况下,其性能并不理想。而且whileactivty也是定义的一个条件,它无法知道有多少实际产生的分支节点,因此这个条件的组合就会太多了。
    另外你列了那么多activity,很遗憾没有一个可以实现我说的业务场景的,这些我都已经尝试过了。EventDrivenActivity、CallExternalMethodActivity这个是状态机工作流用的,状态机不可能会让你走fork,它的targetactivity不管你定义多少过,最后只会走一个。
      

  11.   

    而且像工作流一般都会考虑做成一个engine或者一个platform,这样有利于将定义业务流程的过程简单化,甚至可以让业务人员来画流程。这样能大大加快开发速度,比如一个银行的业务,不但流程多(记得我做过的有一个项目超过了1000个吧,具体数目不记得了),而且非常复杂,而且很多都是我上面说到的两种情况,如果每个都要开发人员去直接画去组合whileactivity,然后直接定义join的条件,比如一个fork产生了10个分支节点,能否往下走的条件就有可能就是10的一个次方了。这样由开发人员去定义,太不现实了。
      

  12.   

    性能?WhileActivity不是while语句...如果不是长延时循环CodeActivity就足够了...“状态机不可能会让你走fork”?笑话...另外,谁说过状态机不可以和顺序工作流组合?我做过的项目有每天上万job很多fork,join的多个workflow联合工作的大型系统...好好研究一下吧...WF也不好举例...我只能说你对WF的了解还不够...
      

  13.   

    还有一点...你可以好好利用WebServiceInputActivity,WebServiceOutputActivity及SendActivity,ReceiveActivity...把业务封装在WebService或Wcf中...workflow engine只管流程控制...
      

  14.   

    呵呵,楼上的看来很牛,能不能给一个我刚刚说的那两种情况的实例代码呢?这个东西确实不好举例,可以做一个简单的例子,也给大家学习学习。甚至于你还可以写上篇博客什么的吗,呵呵
    状态机如果能走fork,你不妨给个例子嘛,不要一副冷嘲热讽的样子吗,说服人不一定要这个态度,反倒让人觉得浅薄了,虽然可能你是个技术高手,你说呢?
      

  15.   

    有钱就用K2,用wwf开发复杂的流程是很麻烦的,管理更麻烦
      

  16.   


    是的,所以要封装,最好封装到普通的业务人员也能开发流程,然后发布流程后,就可以使用了,这样就不需要关系细节的技术实现,而只要关心业务的流程逻辑。其实现在的工作流平台系统市面已经有不少了。
    WF因为出来的还不是太久,除了一个k2.net,不知道还有没有其他类似的产品,不过我听我一个以前的同事说,他们在做一个工作流平台的东西,目前使用的是k2.net,好像也很麻烦,而且开发业务流程也很搞。
      

  17.   

    lz可能是想做一个工作流平台之类的东西?是不是在选择用什么引擎来开发,所以在调研wf。wf其实封装的好话,也很好用的。
    本人自己利用wf写过一个很基础的引擎,就是我上面说的那两个情况,自定义的activity已经实现了。本来还想把它封装成用viso来实现的那种比较友好的可视化流程设计工具的,可以一直没时间做了。
    说这个看能否给lz提供一个思路,把它封装成可视化的设计工具后,能提供流程设计,规则定义、外部通讯接口配置定义等功能,还可以把人员分配模块也集成进来,把这些东西配置好后,一发布,就可以应用到使用流程的系统中,这个算一个平台级系统的想法吧,可惜一直没时间去做,呵呵。
      

  18.   

    至于如何去封装,既然说了这么多了,在这里再啰嗦几句。目前我的做法是用状态机工作流来做workflowactivity,但状态机只能实现单向的流程流转,就是说一次流转只能由一个状态产生另外一个状态,无法同时产生两个状态,刚开始封装的时候,我认为可以同时产生两个状态的,就是以为能分支,结果发现不行,一看源代码,发现一个stateactivity只有一个nextstepname属性,不管你在它里面定义了多少个targetstepactivity,最后只会有一个流转方向,很郁闷,没办法只能在状态机的节点嵌入sequenceworkflowactivity了,但发现没有我上面说的两个情况的处理的节点,所以又重新自己写了activity。
    经过这个封装,一般的开发人员稍微遵循下我定义的规则,开发流程变得简单多了。
    进一步的封装只能以后再做了,如果lz有兴趣,我可以share给你,大家交流学习下。
      

  19.   

    哈哈,谢谢tmxk2002(天马行空)
      

  20.   

    但状态机只能实现单向的流程流转,就是说一次流转只能由一个状态产生另外一个状态,无法同时产生两个状态
    -----------------------
    说你武断你还不承认...随便画了个简单例子...
    http://album.hi.csdn.net/app_uploads/vrhero/20081226/180209162.p.jpg?d=20081226180252739
    http://album.hi.csdn.net/app_uploads/vrhero/20081226/180209178.p.jpg?d=20081226180327988
    http://album.hi.csdn.net/app_uploads/vrhero/20081226/180209350.p.jpg?d=20081226180349409
      

  21.   

    另外wf对于子流程调用,好像无法等待子流程走完了父流程再继续往下面,也就是wf的子流程只能是与父流程并行的,但业务上经常会出现几个流程可以公用一个子流程,比如某个审批子流程,这时候父流程需要审批子流程审批后得到结果后才决定走向。
    ------------
    吃完饭再来说说这个问题...还是花几分钟画个简单例子...这个例子中子流程没有结束父流程绝对不会结束...
      

  22.   

    这些都是WF很基础的东西...基础都没搞明白就谈什么engine、platform,结果可想而知...
      

  23.   

    原来已经顶了这么多了.
    我对WF也是初学了一下,感觉相当强大,能用代码编程实现的逻辑,WF中几乎都抽象了,而且更丰富.
    楼上3组图,
    分别类似于"设计模式中状态模式",
    多线程并行及WaitHandle.WaitAll(WaitHandle[])同步控制
    子函数调用
      

  24.   

    呵呵,由于有点事情好几天没有上csdn了,今天来看,发现已经结贴了,看了看前面那位仁兄发的帖子,想想还是回下帖子。
    那位仁兄写的两个例子,都没有真正理解我所说的。
    对于第一个例子,不知道这位仁兄有没有测试过,会同时到bossaprove和financialapprove吗?没有明白他人的意思,不要乱在这里狂;
    对于第二个例子,实现一个子流程回调操作,一定要画流程图的人在主流程后面放上一个recieve节点,然后在子流程里放一个send节点,你觉得这样的设计很好吗?做做oa还可以,你去做bpm,不累死你才怪。而且还要通过一个wcf的调用来实现,你不觉得那是在走弯路吗?在bpm里这是一个非常基本的要求,你要搞出这么多东西才能实现一个基本的功能,你知道会有多少性能损耗不,你知道bpm里的终端是多少,一秒钟会产生多少次请求不?
    我所说的wf不行,是说它没有独立实现这些功能,必须要开发人员自己去通过组装才能实现。
    设计东西只求实现功能,觉得这样可取么?
    另外说一句,不光是这个帖,这位仁兄一副自以为除了他知道,其他人都是无知的态度,还狡辩称一贯如此,且不是一贯如此浅薄?人不但要有iq,最好有点eq。