规则引擎的功能和特点是在不改变流程,不重新部署工程的情况下,动态的配置策略信息,修改策略逻辑.达到动态的业务配置目的。
举一个简单的例子.一个销售机构销售一种商品,当该商品的数量小于100的时候不需要运输部门负责运输,则不需要通知运输部门。但是当大于100的时候则需要运输部门负责运输,但有的时候这个100的数量是可变的,有的时候是150,有的时候甚至是200。但是这个数量如果写在了Code里,就写死了。这个时候我们就可以通过业务规则引擎来帮助我们在流程外配置这个属性。
实现业务规则引擎DEMO:
这里的schValue代表的是货物的数量, 业务规则引擎会根据这个数量来判transportDEP的动作,确认该订单是否达到了需要运输部门运输的标准。然后建立订单计划这个规则包以供其他外部程序调用。
在这个例子中我们需要用到的规则元素就是schValue和transportDEP,规则元素添加完成后,我们就可以进行业务规则的配置了。
设置以下3中情况:
1:当schValue(货物数量)为90时,发送给运输部门的信息。
2:当schValue(货物数量)为200时,发送给运输部门的信息。
2:当schValue(货物数量)为300时,发送给运输部门的信息。
当决策变为:货物数量大于200的时候,那么需要运输部门参与,规则配置如下
当决策变为:货物数量大于300的时候,那么需要运输部门参与,规则配置如下
从上面的规则配置中我们可以看出,如果在某个流程的节点上,我们的决策发生了变化,那我们只需要灵活调整相应的业务规则即可,而不需要去改Code。
使用Java类调用规则包
首先在eclipse的java工程中,点击属性设置其路径。在其属性窗口的Java Build Path中设置Libraries,通过Add External JARs…加入VisualRules安装目录的lib下的engine.jar、jakarta.jar,在通过Add External Class Folder…加入VisualRules安装目录下的rules目录。如下所示:
添加Java测试类
在java工程中添加一个java类,名为TestHello.java,其内容编辑如下:
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineFactory;
public class TestHello {
public static void main(String[] args) {
try {
RuleEngine engine = RuleEngineFactory.newInstance().getRuleEngine();
engine.put("schValue", "200");传入参数
engine.excute("订单计划"); //规则包名称 System.out.println(engine.getString("transportDEP"));传出参数
} catch (Exception e) {
e.printStackTrace() ;
}
}
}
从上述代码中可以看出,只需加入上述的代码,即可完成调用规则包的工作。而流程和节点中的业务人员只需要维护业务规则即可,任何业务决策的改变都不需要来改动代码
相关推荐
Activiti12流程跟踪任务节点和线高亮显示,能标记流程所走过节点和线为红色,未走过的节点和线不标记,支持驳回和子流程。
使用activiti工作流引擎显示流程图时高亮显示流程图中已执行节点和已执行路径方法源代码
在上一个版本的基础上做了优化: 1、可以在选中的节点前或者节点后插入新节点;上一个版本是只能在最后插入新节点; 2、对插入节点的图标增加了气泡提示。
泛微OA流程操作组中条件sql查询,查询流程中所有设置过的条件:(字段名包括:流程名称 节点名称 类型名称 协办人条件 批次);
删除流程节点用到的SQL语句,简单实用。
flowable高亮流程已执行节点及连线,包含6.4.1版本以及6.4.1之前版本的不同处理方法
已完成节点高亮显示、当前执行中节点红色显示 支持一个节点多条流出线,包括通过、不通过、驳回、退回,按照已执行操作正确显示高亮流程线
该引擎支持串行节点,IF节点,SWITCH节点,分支节点,子流程,最近才写完,如果需要数据库配置,
选择要恢复到的节点,输入流程状态(可在流程监控中查看此流程的当前状况),userID(要恢复到的节点操作者的id),节点操作人、接收日期和时间,点击【执行】,即
JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...
任意增加的工作流程节点,待办节点等。相关技术css,h5,js
此时又有新玩法:在流程图中,根据节点状态为其标记不同颜色。例如:已完成:黄色,正在进行:绿色,本次我们通过两种方式来实现该需求。效果: 方式1:modeling.setColor modeling.setColor接受两个参数:参数1:...
easy-flow 基于VUE+ElementUI+JsPlumb的流程设计器,通过 vuedraggable 插件来实现节点拖拽。支持拖拽添加节点。点击线进行设置条件。支持给定数据加载流程图。支持画布拖拽。支持连线样式、锚点、类型自定义覆盖。...
jQuery循环流程图表代码是一款可以非常轻松的生成一个可以动态添加流程图中的节点的循环流程图系统。
在Vue项目中使用AntV X6组件库绘制流程图,需要实现以下需求: 需求1:左侧菜单中的模块可以拖拽进入画布中生成对应的流程图模块 需求2:流程图中的节点之间可以进行连线交互 需求3:点击对应的节点后可以进行操作...
Activiti 学习笔记十:开始活动节点(判断流程是否结束及查询历史)
TC中流程发起后跳过编制节点,无需编制节点确认,直接跳转到审核节点。
流程追踪 点击节点展示对应的内容,节点颜色默认绿色,还没有执行的流程显示灰色并且不可点击,点击已完成的节点颜色变为橘黄色
软件实施节点流程、天数参考、所需要准备或者签收的文件文档