当前位置: 首页 > news >正文

北京网站建设推广手机网站建设价格

北京网站建设推广,手机网站建设价格,网站建设支付,北京移动官方网站一个轻量级的规则引擎、搜索引擎,让条件匹配简单、优雅。 GIT地址 https://gitcode.cosmoplat.com/15011240224/rule-engine-starter 介绍 Rule-Engine-Starter 是一个轻量级规则引擎,V1.0.0主要解决条件匹配问题。比如飞书文档,每个文档都…

一个轻量级的规则引擎、搜索引擎,让条件匹配简单、优雅。


GIT地址

https://gitcode.cosmoplat.com/15011240224/rule-engine-starter

介绍

Rule-Engine-Starter 是一个轻量级规则引擎,V1.0.0主要解决条件匹配问题。比如飞书文档,每个文档都可以设置访问权限,可以限制哪些人、哪些部门可以访问、是否对互联网用户公开等等,这些条件可以看成每个文档设置的访问规则,一个文档可以设置多个规则。

校验一个用户是否能访问目标文档,只需要校验规则中的条件,可以使用SPEL等表达式来实现;但是如果想获取一个用户有访问权限的所有文档,如果再用SPEL实现岂不是需要遍历所有文档的所有规则,这种方案无疑是低效的。因此自研 Rule-Engine-Starter 解决这个问题,只需要将用户的属性作为条件输入给规则引擎,规则引擎会快速返回所有匹配的规则:

Rule-Engine-Starter 通过拉平条件和MySQL的B+Tree索引实现快速匹配。

Demo

访问地址:https://gitcode.cosmoplat.com/15011240224/rule-engine-demo

修改数据库配置后,可本地执行com.cosmoplat.rule.RuleTest。

使用

  1. MySQL初始化,执行src/main/sql/init.sql

  2. POM引入依赖和卡奥斯仓库

<dependency><groupId>com.cosmoplat.rule</groupId><artifactId>rule-engine-starter</artifactId><version>1.0.0</version>
</dependency><repository><id>maven-public</id><name>maven-public</name><url>http://nexus.cosmoplat.com/repository/maven-public/</url><snapshots><enabled>true</enabled></snapshots>
</repository>
  1. 修改配置文件

    spring:datasource:url: jdbc:mysql://xxx.xxx.xxx.xxx:xxxxx/库名username: 用户名password: 密码driver-class-name: com.mysql.cj.jdbc.Driver# 启用规则引擎      
    rule:engine:enabled: true
    
  2. 创建维度

    Dimension dimension = Dimension.builder().namespaceId(NAMESPACE_ID).code(dimensionEnum.getCode()).description(dimensionEnum.getName()).build();
    ruleEngineService.createDimensions(Collections.singletonList(dimension));
    
  3. 创建分类

    List<String> dimension = Lists.newArrayList(DimensionEnum.WORK_NO.getCode(), DimensionEnum.DEPT_NO.getCode());
    Type ruleType = Type.builder().code(DOC_READ_RULE_TYPE_CODE).description("文档阅读规则").namespaceId(NAMESPACE_ID).dimensionCodes(dimension).build();
    ruleEngineService.createTypes(Lists.newArrayList(ruleType));
    
  4. 添加规则

String docId1= "11111";
String docId2= "22222";
String docId3= "33333";
// 允许体验云和海云智造的员工阅读文档1
createDocReadRule(docId1, Lists.newArrayList(ALL), Lists.newArrayList("tiYanYun", "haiyunzhizao"));
// 只允许工号22038425阅读文档2
createDocReadRule(docId2, Lists.newArrayList("22038425"), Lists.newArrayList(ALL));
// 只允许工号77889998阅读文档3
createDocReadRule(docId3, Lists.newArrayList("77889998"), Lists.newArrayList(ALL));private void createDocReadRule(String docId, List<String> workNos, List<String> deptNos) throws RuleConflictException {Package rule = new Package();rule.setNamespaceId(NAMESPACE_ID);rule.setTypeCode(DOC_READ_RULE_TYPE_CODE);rule.setName("文档阅读规则");rule.setCreateInfo();// 匹配结果rule.setConfigInfo(docId);// 规则条件Map<String, List<String>> searchKeyMap = Maps.newHashMap();searchKeyMap.put(DimensionEnum.WORK_NO.getCode(), workNos);searchKeyMap.put(DimensionEnum.DEPT_NO.getCode(), deptNos);ruleEngineService.createRule(rule, searchKeyMap);
}
  1. 规则匹配

    // 规则匹配,返回体验云员工22038425能访问的文档
    Map<String, List<String>> searchAndSortKeyMap = Maps.newHashMap();
    searchAndSortKeyMap.put(DimensionEnum.WORK_NO.getCode(), Lists.newArrayList( "22038425", ALL));
    searchAndSortKeyMap.put(DimensionEnum.DEPT_NO.getCode(), Lists.newArrayList("tiYanYun", ALL));
    List<MatchRuleResult<String>> ret = ruleEngineService.matchRule(NAMESPACE_ID,DOC_READ_RULE_TYPE_CODE, searchAndSortKeyMap, null);List<String> docIds = ret.stream().map(MatchRuleResult::getResult).collect(toList());
    Assert.isTrue(docIds.contains(docId1), "文档1不能阅读");
    Assert.isTrue(docIds.contains(docId2), "文档2不能阅读");
    Assert.isTrue(!docIds.contains(docId3), "文档3能阅读");
    

支持

如果您觉得有用,麻烦您按照链接支持下:链接

http://www.hkea.cn/news/780535/

相关文章:

  • 网络营销方式的思维导图seo关键词优化系统
  • wordpress访客ip记录福清市百度seo
  • 网站下载速度慢互联网广告推广公司
  • 电影网站空间配置网络营销的工具和方法有哪些
  • 包装设计网站免费百度seo搜索引擎优化厂家
  • 免费做公司网站sem对seo的影响有哪些
  • 网站空间购买费用关键词优化计划
  • 网站制作可以卖多少钱陕西网站建设制作
  • 深圳中小企业网站制作谷歌海外广告投放
  • 做游戏网站的需求分析创建app平台
  • 青岛胶南做网站的有多少seo商学院
  • 二月网站建设南宁百度个人中心登录
  • 如何在相关网站免费做宣传广告免费建立个人网站官网
  • 做搜狗网站优化首自己建立网站步骤
  • 企业资质查询官方网站最好的小说网站排名
  • 乐平网站设计北京互联网公司
  • 朝阳企业网站建设方案费用郑州网络营销学校
  • 建站行业发展百度广告代运营
  • 如何做积分商城网站鸡西seo顾问
  • p2p网站开发文档免费b站软件下载
  • 有没有做q版头像的网站今天百度数据
  • wordpress页面修改插件seo顾问阿亮
  • 政府门户网站建设标准国际婚恋网站排名
  • 上海青浦网站建设郑州靠谱seo电话
  • 网站建设怎么样seo专家招聘
  • 在网盘上怎么做自己的网站整站优化推广
  • php建设网站实训百度搜索引擎的总结
  • 怎么在360自己做网站重庆seo排名收费
  • 外贸网站建设浩森宇特教育培训报名
  • 网站开发价目表深圳市前十的互联网推广公司