在Sequence模式中思考流程资源(数据)问题
Sequence模式是工作流模式中的基本模式,我在实现该模式时,意外遇到一个问题:
Sequence模式中两个活动之间是无条件流转的;如果你在活动中定义了该活动所需的资源就会遇到资源是否被满足的问题。
如果资源不被满足,该活动便无法进行,这样流程实例就会处于dead token了。
这个问题可以通过定义gateway来判断,但是在每个活动前加上gateway也太麻烦了吧?
另一个方法是当资源不被满足时定前一段活动执行失败,这样是不是太独断了?而且很可能上一活动的输出是满足的,这是流程设计的缺陷。
由此,我考虑这个问题可能没有完美的解,只能看实际情况变化,我总结一下我自己的实践:
1. 在流程engine中加入output和input资源(数据)的零界限判断,即它们必须>0;
2. 在流程设计器中加入流程资源View,以便用户观察流程的连续性并能判断出流程中哪些点可能出现资源不满足的情况;
3. 建议用户使用重要的业务资源(数据)时使用gateway;
Sequence模式中两个活动之间是无条件流转的;如果你在活动中定义了该活动所需的资源就会遇到资源是否被满足的问题。
如果资源不被满足,该活动便无法进行,这样流程实例就会处于dead token了。
这个问题可以通过定义gateway来判断,但是在每个活动前加上gateway也太麻烦了吧?
另一个方法是当资源不被满足时定前一段活动执行失败,这样是不是太独断了?而且很可能上一活动的输出是满足的,这是流程设计的缺陷。
由此,我考虑这个问题可能没有完美的解,只能看实际情况变化,我总结一下我自己的实践:
1. 在流程engine中加入output和input资源(数据)的零界限判断,即它们必须>0;
2. 在流程设计器中加入流程资源View,以便用户观察流程的连续性并能判断出流程中哪些点可能出现资源不满足的情况;
3. 建议用户使用重要的业务资源(数据)时使用gateway;