业务工作流平台设计(四)
自定义活动(一)
这一小节要讲的东西,目前我认为是最重要的东西。这是业务工作流平台中非常重要的一部分;;也是模板的重要组成部分。我们将从以下几个方面讲述自定义活动:
l 尽可能减少占有时间
l 数据交换
l 锁定处理
l 保持状态的一致性及完整性
l 中止活动的运行
以下是针对自定义审核活动特有的设计
l 功能逻辑的设计
l 回退与重新递交
l 跨审的实现
尽可能减少占有时间
在WWF的一些技术细节与应用体会(一)中我讲过持久化的相关描述,该节虽然不讲技术化的问题,但却与锁定时间有关。所以不得不提SqlWorkflowPersistenceService,它的构造函数里面有一个参数instanceOwnershipDuration用来指定占有的时间。占有的时间过长对于时效性处理是很有害处的。所以我们应当尽量减少instanceOwnershipDuration的值。
在现实生活时每个人的处理速度是不一样的,有的处理的快,有的处理的慢。有的人在处理过程中会去打点水,上个厕所什么的……那么我们究竟要将instanceOwnershipDuration设置为多少才合适?可能很多人会比较难以选择。
其时,我这里是在故意误导大家!一开始的时候我也这么想过。那么有什么方法可以设置到一个比较小的范围(如10s)就可以让所有的处理都可以满足要求。这里有一个现象我得说一下。一个处理过程中计算机所要做的工作有两方面的内容:一是收集用户输入的信息;二是提交数据并进行相应的自动化处理。对于第一点来讲,占用的时间是不可准确估计的,但对于第二点来讲,占用的时间是极其有限的(一般情况下10s足够了)。我想大家可能知道我在说什么了。那就是我们在工作流运行期间不负责处理用户信息的收集。
那么如何做到这一点呢?请看下面的小节。待续