activiti如何集成规则引擎drools呢

三个步骤:

1、pom加入依赖,activiti引擎集成部署器

1、首先进行drools规则编写、然后挂到流程图节点上

2、进行规则文件和bpmn流程文件的部署

例以下:

规则引擎部署器集成activiti

pom加入依赖:

<dependency><groupId>org.drools</groupId><artifactId>drools-core</artifactId><version>7.0.0.Final</version></dependency><dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>7.0.0.Final</version></dependency><dependency><groupId>org.drools</groupId><artifactId>knowledge-api</artifactId><version>6.5.0.Final</version></dependency>

2、activiti引擎配置集成

List<> list=new ArrayList();
list.add(org.activiti.engine.impl.rules.RulesDeployer);
processEngineConfiguration.setCustomPostDeployers(list);

3、bpmn文件配置规则节点

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath"targetNamespace="http://www.activiti.org/test"><process id="leave" name="请假审批" isExecutable="true"><startEvent id="startevent1" name="Start"></startEvent><endEvent id="endevent1" name="End"></endEvent><userTask id="usertask1" name="部门经理审批"></userTask><businessRuleTask id="businessruletask1" name="天数判断" activiti:ruleVariablesInput="${leave}" activiti:rules="leave1,leave2" activiti:resultVariable="reason"></businessRuleTask><serviceTask id="servicetask1" name="获取变量" activiti:class="com.1json.service.DroolsService"></serviceTask><userTask id="usertask2" name="HR审批"></userTask><sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow><sequenceFlow id="flow2" sourceRef="usertask1" targetRef="businessruletask1"></sequenceFlow><sequenceFlow id="flow3" sourceRef="businessruletask1" targetRef="servicetask1"></sequenceFlow><userTask id="usertask3" name="总经理审批"></userTask><sequenceFlow id="flow4" sourceRef="servicetask1" targetRef="usertask3"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${reason[0].total >= 10}]]></conditionExpression></sequenceFlow><sequenceFlow id="flow5" sourceRef="servicetask1" targetRef="usertask2"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${reason[0].total < 10}]]></conditionExpression></sequenceFlow><sequenceFlow id="flow6" sourceRef="usertask3" targetRef="usertask2"></sequenceFlow><sequenceFlow id="flow7" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow></process>
</definitions>

其中

<businessRuleTask id="businessruletask1" name="天数判断" activiti:ruleVariablesInput="${leave}" activiti:rules="leave1,leave2" activiti:resultVariable="reason"></businessRuleTask>

配置了规则引擎节点的参数:输入参数变量${leave},规则集合activiti:rules="leave1,leave2". 规则计算结果值保存到reason变量里

4、drl规则文件代码

package com.1json;
import com.1json.model.Leave;
rule "leave1"whenu : Leave(day < 3);thenu.setTotal(u.getDay() + 2);
end
rule "leave2"whenu : Leave(day >= 3);thenu.setTotal(u.getDay() + 5);
end

5.部署并访问

@RequestMapping("/drl")public void drl() {/*** 注意这里:必须要把drl文件一起deploy*/DeploymentBuilder deploy = repositoryService.createDeployment();deploy.addClasspathResource("leave.bpmn").addClasspathResource("leave.drl");deploy.deploy();ProcessInstance pi = runtimeService.startProcessInstanceByKey("leave");Map<String, Object> vars = new HashMap<String, Object>();  vars.put("leave", new Leave("1json", 12));/*** 当前任务*/List<Task> tasks = taskService.createTaskQuery().processInstanceId(pi.getId()).list();for(Task task : tasks){System.out.println(task.getId() + " , " + task.getName());taskService.complete(task.getId(), vars);}/*** 下一步任务*/tasks = taskService.createTaskQuery().processInstanceId(pi.getId()).list();for(Task task : tasks){System.out.println(task.getId() + " , " + task.getName());}}

Activiti社区交流群:839915498

更多activiti系列教程:activiti教程

activiti入门系列文章14 - 集成规则引擎drools相关推荐

  1. drools规则引擎可视化_Springboot2(60)集成规则引擎Drools

    核心pom.xml 文件: <parent> <groupId>org.springframework.boot</groupId> <artifactId& ...

  2. 崛起于Springboot2.X之集成规则引擎Drools(41)

    为什么80%的码农都做不了架构师?>>>    1.创建Springboot项目,勾选Web模块和lombok插件 2.添加pom其他依赖 <dependency>< ...

  3. activiti入门系列文章9 - 委派与转办

    委派与转办 1.委派 委派:是将任务节点分给其他人处理,等其他人处理好之后,委派任务会自动回到委派人的任务中 将hr的任务进行委派: taskService.delegateTask(taskId, ...

  4. 规则引擎drools系列(一)

    规则引擎 Drools 1. 问题引出 现有一个在线申请信用卡的业务场景,用户需要录入个人信息,如下图所示: //此处为伪代码 ​ //检查用户信息合法性,返回true表示检查通过,返回false表示 ...

  5. Oracle APEX 系列文章14:Oracle APEX 18.1 Docker 镜像

    本文是钢哥的 Oracle APEX 系列文章的第14篇,完整文章目录如下: - Oracle APEX 系列文章01:Oracle APEX, 让你秒变全栈开发的黑科技 - Oracle APEX ...

  6. 三、美团大众点评CAT监控系列文章---Springboot集成CAT并实现邮件告警

    文章目录 一.配置过程 二.相关的参考文档 三.系列文章 一.配置过程 登录自己的cat服务端 默认登录用户名和密码都是 catadmin添加一个监控规则: 如下面的监控规则就是说,如果在一分钟以内访 ...

  7. saltstack之基础入门系列文章简介

    使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结. saltstack的前六篇 ...

  8. 规则引擎 Drools

    规则引擎 Drools 文章目录 规则引擎 Drools 1. 问题引出 2. 规则引擎概述 2.1 什么是规则引擎 2.2 使用规则引擎的优势 2.3 规则引擎应用场景 2.4 Drools介绍 3 ...

  9. 别再说你不会,规则引擎Drools了

    一.为什么要使用规则引擎 有一天运营想弄一个积分策略,计算额外积分金额 ,规则如下: 订单原价金额 100以下, 不加分: 100-500 加100分: 500-1000 加500分: 1000 以上 ...

最新文章

  1. CentOS下创建配置RAID1
  2. 数据结构---判断一棵树是否是二叉搜索树
  3. LAMP平台架构浅析
  4. Poj 1936,3302 Subsequence(LCS)
  5. 数据结构线性表的三个属性
  6. wsimport 的使用问题
  7. 线程同步 互斥量(mutex) Linux函数
  8. 面试官常问的web前端问题大全(10道面试真题祝你旗开得胜)
  9. css字体浏览(转)
  10. leetcode题解持续更新
  11. 移植 μC/OS-III 到 STM32
  12. 井下各种压力概念及相互关系
  13. 基于帕累托最优的多目标SNP选择
  14. 凸优化1——仿射集、凸集、锥
  15. TestCenter测试管理工具安装和卸载(B)
  16. qt 子线程(多线程)更新gui的几种方法
  17. 2021年中国马铃薯种植生产情况及机械化程度分析:单产面积不断扩大,四川省产量居全国首位[图]
  18. 【代码审计-JAVA】javaweb代码审计思路
  19. The Lion and the Unicorn: Socialism and the English Genius--PartⅠ
  20. 简单制作一个网页需要注意的

热门文章

  1. 为什么三进制计算机没有商业化?
  2. ST-Norm: Spatial and Temporal Normalization for Multi-variate Time Series Forecasting(KDD2021)
  3. stm32 独立看门狗时钟配置
  4. 微信4月份最新封号新规(重要)
  5. 生意参谋2019-01-22日之后指数该怎么还原?
  6. 免费erp到底能不能用?
  7. matlab中进行太阳能电池模型,基于Matlab╱Simulink的太阳能电池特性仿真
  8. DropDownList详解
  9. Linux下载及配置
  10. 2018年云南省三校生计算机考试大纲,云南省2018年三校生高考铁道运输类专业技能考核大纲...