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种逻辑判断符,能够实现逻辑组合。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小特工作室

工作流组件示例(全部开源)

1.概述 1.1简介 本文档旨在帮助开发人员快速使用工作流组件,完成OA或审批等涉及到工作流组件的系统开发工作 1.2组件构成 1.2.1组件层次图 ? 组...

803100
来自专栏大内老A

并发与实例上下文模式: WCF服务在不同实例上下文模式下具有怎样的并发表现

通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF...

19460
来自专栏大内老A

ConcurrencyMode.Multiple模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响[上篇]

通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF...

21780
来自专栏大内老A

控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[下篇]

通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF...

22850
来自专栏大内老A

并发与实例上下文模式: WCF服务在不同实例上下文模式下具有怎样的并发表现

通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF...

19360
来自专栏Java架构师学习

如何在ELK中解析各类日志文件

作为一个日志中心,它会收集各种各样的日志,可以用于问题排查,数据监控,统计分析等等。那么对于繁多的日志,它们都有各自的存储格式,我们如何来区分它们,对于不同的日...

2.1K50
来自专栏IT大咖说

VMware vSAN 架构解析及存储策略

摘要 VMware vSAN 通过 vSphere 原生的高性能体系结构支持业界领先的超融合基础架构解决方案。 vSAN是 Software-Defined D...

58330
来自专栏Golang语言社区

[Go语言]一种用于网游服务器的支持多路复用的网络协议处理框架

简介: 本文描述了使用Go语言实现的、适应于Go语言并发模型的一种支持多路复用的网络协议处理框架,并提供了框架的代码实现。作者将这种框架用于网络游戏服务器中的协...

34360
来自专栏程序员的SOD蜜

分布式计算,WCF+JSON+实体对象与WebService+DataSet效率大比拼

最近做公司项目,我们要整合所有业务系统的客户数据,各业务系统的数据库有的Oracle,有的是SQLSERVER,而且表结构也不相同,如何整合不同系统之间的客户数...

244100
来自专栏linux驱动个人学习

CPUFreq驱动

CPUFreq子系统位于 drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DvFS( Dynamic Voltage Fr...

16130

扫码关注云+社区

领取腾讯云代金券