【引】
流程引擎是诸多业务系统的基础,也是SAAS型云计算体系的基础,目前的流程体系有很多问题,需要建立一个新的理论体系解决它,我无意中找出了这其中的部分端倪,就抛砖引玉的为大家讲讲这些事情,希望有耐心的看客能够有所启发。
目前绝大部分工作流软件都采用了Petrinet作为核心架构机制,而Petrinet很重要的流转环节-“令牌”的生成机制却大有问题。
在Petrinet中,每一次变迁的实施时,都会取走原有的令牌,而产生新的令牌,即使对于高级Petri网(多维染色Petrinet), 试图用在一个流程实例中保有多个令牌的系统,其基础流转仍是令牌的传递而已,具体到系统实现,大多是采用子流程处理。
这种令牌生成的方式,从自然界的现象看,其实并不科学,如果把流程流转比喻为一棵大树的生长过程看,一个嫩芽会形成多少枝杈,并不由嫩芽下面的枝干决定,而是由嫩芽生长过程的环境决定,可能的情况如下:
1)发芽后就掉了,具体到业务就是Token可能会自行消失。
2)长出很多枝杈,一个token经过流转会产生多个token。
3)树枝被刀直接砍断了,一个token的完成有可能使其他token失效。
因此Token的生成方式绝对不应该根据前一Token的流转,而应根据步骤操作的要求而自行生成与消亡。
如果这一层面被突破,那么很多流程设计的概念都可得到简化,包括
分支与合并节点:由于每个步骤都有可能生成与销毁令牌,不再有必要设计分支与合并节点了
状态与活动节点:在实施时,这两个节点总是结对出现的,因此都合并成一种节点即可
将以上两点简化后,我们可以看到由此理论设计的流程体系,更符合人类的思维方式,具有更大的适应性