K2 blackpearl 中的业务规则(Rules)
在K2流程系统中,流程中的任何一个执行节点(一个节点可以包含多个事件)都可能包含客户端事件,服务器端事件,以及子流程(IPC,Inter Process Communication)事件,或者其他事件。通常情况下,我们需要在流程节点中包含大量的业务逻辑,比如:流程节点的执行者是谁?在执行者启动流程节点任务之前哪些前提条件必须要满足,等等。流程节点是流程中的关键元素,任务执行者在流程节点做出审批、输入数据或者提取数据。
为了实现各种复杂的业务逻辑,K2提供了以下的业务规则:
1. Preceding Rule(前置规则)
Preceding Rule是一种逻辑表达式,当表达式为真时,一个流程节点才可以开始执行。换句话说:什么条件为真的情况下,流程任务才可以产生。K2提供了And,Or和Xor等3种逻辑判断符,能够实现逻辑组合。
2. Start Rule(开始规则)
Start Rule是一个时间规则,代表一个流程任务什么时候开始。比如,可以在流程发起后等待2小时再开始这个流程任务,或者当某个流程变量为真的情况下,再等待2小时开始流程任务。
3. Destination Rule(执行人规则)
用于指定谁来执行任务。默认情况下,K2的用户信息来自于Active Directory,因此,它可以非常方便地将任务提交给用户的Manager。如果有多个可能的任务执行者,我们可以先把所有可能的执行者添加到Destination Rule中,然后对每个Rule设定条件,比如:当A为真,发送给Originator的Manager,当B为真,发送给GeneralManager;或者可以预先定义一个Destination Queue,把这个Destination Queue直接指定任务执行者。
4. Escalation Rule(过期规则)
如果希望某些任务必须在一定时间内完成,比如8小时,如果超过8小时任务依然没有被执行,我们必须执行一定的操作(比如:强制本任务过期,或者强制本任务过期并且将流程流转到某一个流程节点,等等),这样的情形下,我们就可以定义任务的过期规则。过期规则用于指定什么时候和如何执行这样的操作。
5. Succeeding Rule(后置规则)
Succeeding Rule是一个逻辑表达式,当它为真时,某个流程节点才可以完成。换句话说就是:什么情况下流程节点才可以结束。比如:有一个审批任务,需要同时发给5个部门经理作审批,我们希望:只要他们中的一个不同意,流程就执行下一步操作(否决后的操作);至少有3个部门经理同意,流程就流转到下一步操作(同意后的操作)。这是K2一个非常好的规则,因为每个部门经理的审批意见都会保存在各自的Slot中,流程中的变量值不会互相覆盖,这样就可以非常方便地查询各个经理的审批意见,而不需要为每个经理都定义变量。K2提供了And,Or和Xor等3种逻辑判断符,能够实现逻辑组合。
欢迎大家扫描下面二维码成为我的客户,扶你上云
![](https://images.cnblogs.com/cnblogs_com/shanyou/57459/o_220125090408_%E9%82%80%E8%AF%B7%E4%BA%8C%E7%BB%B4%E7%A0%81-258px.jpeg)