如何正确使用drools的类型声明(Type declarations)?

2026-05-25 12:120阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1067个文字,预计阅读时间需要5分钟。

如何正确使用drools的类型声明(Type declarations)?

一、背景+编写drl规则的时间,有时需要自行声明一些类别,用于辅助后续规则的运行。如果需要用到的类别还需要在Java中预先声明,这样就会显得不够灵活。那么,这是否可行?

一、背景

在我们编写drl规则的时候,有些时候需要自己声明一些类,用于辅助之后的规则运行,如果需要用到的类还需要在java中预先声明出来,这样就不灵活了,那么是否可以在drl文件中声明一个类呢?可以使用drools的 Type declaration来实现。

二、前置知识 1、Type declaration语法结构

2、java代码中获取drl声明的类型 1、非枚举类型

KieBase kieBase = kieContainer.getKieBase("type-kabse"); // 规则文件的包名 声明的类型名 FactType productOrderFactType = kieBase.getFactType("rules", "ProductOrder"); Object instance = productOrderFactType.newInstance(); productOrderFactType.set(instance, "orderId", 20220517121212001L); 2、获取枚举类型的值

需要通过反射来获取到。

阅读全文

本文共计1067个文字,预计阅读时间需要5分钟。

如何正确使用drools的类型声明(Type declarations)?

一、背景+编写drl规则的时间,有时需要自行声明一些类别,用于辅助后续规则的运行。如果需要用到的类别还需要在Java中预先声明,这样就会显得不够灵活。那么,这是否可行?

一、背景

在我们编写drl规则的时候,有些时候需要自己声明一些类,用于辅助之后的规则运行,如果需要用到的类还需要在java中预先声明出来,这样就不灵活了,那么是否可以在drl文件中声明一个类呢?可以使用drools的 Type declaration来实现。

二、前置知识 1、Type declaration语法结构

2、java代码中获取drl声明的类型 1、非枚举类型

KieBase kieBase = kieContainer.getKieBase("type-kabse"); // 规则文件的包名 声明的类型名 FactType productOrderFactType = kieBase.getFactType("rules", "ProductOrder"); Object instance = productOrderFactType.newInstance(); productOrderFactType.set(instance, "orderId", 20220517121212001L); 2、获取枚举类型的值

需要通过反射来获取到。

阅读全文