刚接的一个项目需要进行流程化的处理,我现在一直在挣扎是用现成的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、这个流程有多个入口,但主要的入口只有一个,其它的入口必须在流程走到一个特定的环节才能进入。如图中的次入口,只有当流程处于处理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文件。十万分感谢!
解决方案 »
- C#如何把一byte[] 加载入XmlDocument,或是创建一个Stream
- 如何在console下输出图像?
- 一个奇怪的小问题
- 智能客户端发布后的问题 发布以后我修改应用程序的配置文件,客户端连接的时候报错 应用程序验证未成功,无法继续
- C#中插入方法的配置 急,在线等!!
- 求文档写法!
- 我的Msdn for 2005无法打开了提示"应为指定的 帮助集合"ms-help ://ms.msdnqtr.v80.chs"无效
- 请问如何让一个splitter始终在两个PANEL的中间,例如最大化和最小化后!!!
- 如何在c#中实现串口接收一个字节就触发事件处理函数一次?
- C#的垃圾回收,时机、大小 如何确定?能手动配置吗?
- C#调C++写的DLL的结构体参数问题
- 16进制转浮点数
http://hi.csdn.net/attachment/201110/29/54508_1319894238Wp11.jpg
我是想说,一个流控组件通用肯定很难,但只对整个项目进行抽象,应该不会太难吧。毕竟有针对性的写组件比使用通用组件要灵活很多。