刚接的一个项目需要进行流程化的处理,我现在一直在挣扎是用现成的WF来做还是自己写一个专用的流程控制程序。因为WF从来没有用过,不知道WF是否能够满足客户的这些需求,所以发个帖请教一下WF达人。
我画了一个抽象的流程图如下:这个流程只是整个流程中的一小部分,我只是把能想到的几个比较麻烦的地方画出来。具体说明如下:
1、这个流程有多个入口,但主要的入口只有一个,其它的入口必须在流程走到一个特定的环节才能进入。如图中的次入口,只有当流程处于处理2-6的时候才能进入。
2、当用户从次入口介入到流程的执行时,会改变流程上下文的某个属性,从而改变主流程的执行方向。图中如果用户使用了处理9,就会设置条件2的值为true,这样处理7和8的执行方式就发生了变化。
3、处理7和8的执行顺序会依据条件2改变,当条件2的值为true时,先执行处理7再执行处理8,如果值为false时则相反,并且最终进入两个不同的终结点。
4、处理2.1-2.3是三个并行的环节,而处理2.1是否执行则取决于条件1,也就是说,如果条件1的值为false,则处理2.1是不需要执行的。
5、流程的执行要能够回滚,比如当处理6有问题时,要能够让流程退回到处理5。这样的回滚对于串行执行来说要简单些,但对于并行可能会很复杂。
6、无论流程在哪个环节上执行,都要允许用户能够中止或直接完成。
7、客户还提出要对各环节的执行时间进行跟踪,要能够查看到目前正在执行的流程中是否有哪些环节的执行时间过长,以及可以查询已执行完成的流程中时间过长的环节。现在能想到的就这些个问题,本来我想自己写一套流程控制程序,但怕自己做的没有这么好,于是想到用WF。但WF没有用过,不敢轻易碰,请达人帮忙看看这种做法的可行性。如果可以的话,最好能够提供Activity设计的xaml文件。十万分感谢!

解决方案 »

  1.   

    图片太宽有一部分看不到,点击下面的地址查看原图:
    http://hi.csdn.net/attachment/201110/29/54508_1319894238Wp11.jpg
      

  2.   

    这正是WF的强项,自己写的话很多问题不好处理,比如并行处理,比如回退,你图上还没有这样的情况,但建议用vs2010
      

  3.   

    WF没用过,以前为个招标代理公司写过一个包含流程控制的OA。在家憋了两个星期,整出一套流程控制组件,虽然只是对我这个项目的抽象,不会很通用,但是对整个项目却很实用。
    我是想说,一个流控组件通用肯定很难,但只对整个项目进行抽象,应该不会太难吧。毕竟有针对性的写组件比使用通用组件要灵活很多。