java - 使用 Drools 以结构松散的 JSON 实体形式处理事实的优雅方法?

标签 java drools

我正在开发一项服务,该服务可以转换、翻译和规范化以半结构化 json 形式接收的记录。要求如下:

  • 传入相同类型的json实体(类型-人, 地址等)可能不具有相同的属性。
  • 某些属性可能不会出现在给定类型的每个实体中。
  • 属性可以重命名。
  • 传入的 json 实体最初是未类型化的。可以通过分析可用字段来确定传入实体的类型。所以我想需要规则来将实体重新分类到它们的 Drools/Java 类。
  • 可能无法保证给定属性中的数据始终属于同一类型(尽管所有内容都可以默认为字符串)。

当然,这些要求都与Java相反,在other posts中有注释。 (虽然几年前)已经指出很难用 Drools 处理 json。

有没有办法在上述场景中和谐地应用 Drools,或者是否有最小的限制(除了强加强大数据模型的明显解决方案之外)来纠正这种情况?

最佳答案

我可以想到一些可能对您有用的方法:

  1. 将您的 JSON 事实解析为内存结构(使用 Gson 或 Jackson 之类的东西),并将这些结构作为事实插入到 drools 中。然后应该可以用 LHS 编写可以匹配解析的事实的规则。也可以通过 Gson/Jackson API 更新事实。
  2. 通过创建(如果我没记错的话)RuleImpl 类的实例,可以直接用 Java 编写 drools facts。然后,您可以提供一个任意的 LHS,它可以按照您的意愿解析/匹配任意 JSON。

关于java - 使用 Drools 以结构松散的 JSON 实体形式处理事实的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885608/

相关文章:

java - Drools 决策表对象比较给出了相反的结果

java - BufferedReader读取垃圾

java - 是否可以使用其列表项 id 而不是 android 中的列表项位置来选择自定义 ListView 项?

spring-mvc - 如果文件有任何更改,如何扫描 dtable drool 文件并使用 kiescanner drool 版本 7.4..final 再次加载它

java - 如何根据逻辑动态生成前端验证

java - 新版本 Grails 中出现 Drools 异常

java - 返回按钮未正确响应

java - Android SQLite 列.....不是唯一的

java - 如何在 Android/Java 中修改 XML 属性

java - 如何为外部存储序列化 JBoss Drools KieBase 集合?