Java のルールエンジンのリスト

Sheeraz Gul 2023年10月12日
Java のルールエンジンのリスト

ルールエンジンは、ビジネスロジックをソースコードから分離します。このチュートリアルでは、Java の最も一般的なルールエンジンのいくつかについて説明します。

Java のルールエンジンのリスト

ルールエンジンを使用すると、ビジネスロジックをコードから簡単に分離できます。Java で人気のあるルールエンジンのほとんどは、JSR94 を実装しています。

ルールエンジンは、洗練された if/then ステートメントと見なすことができます。Java のルールエンジンのいくつかの利点は次のとおりです。

  1. ルールエンジンは、それらを分離しておくと、優れた再利用性を提供します。
  2. ソースコードを開発する必要がないため、ルールエンジンは複雑さを軽減します。
  3. ルールエンジンは、ソースコードを変更せずにルールを変更できる柔軟性を提供します。

Java の有名なルールエンジンは次のとおりです。

Drools

Drools は、ビジネスルール管理システム BRMS とも呼ばれ、コアビジネスルールエンジンに Web オーサリングおよびルール管理アプリケーションを提供します。また、表記法(DMN)を使用した決定モデルの完全なランタイムサポートと EclipseIDE のプラグインも提供します。

ルールブック

RuleBook は、柔軟なシンプルな DSL を提供します。より多くのルールのコレクションがある場合は、それらを注釈付きの POJO に組み込むことができ、RuleBook はパッケージをルールブックに変換します。ラムダ対応の特定の言語を使用するのは簡単です。

RuleBook を使用して簡単なルール定義を試してみましょう。

ルールブックの maven 依存関係は次のとおりです。

<dependency>
    <groupId>com.deliveredtechnologies</groupId>
    <artifactId>rulebook-core</artifactId>
    <version>${version}</version>
</dependency>

次に、ルールブックの例を見てみましょう。まず、ルールを作成しましょう。

public class DelftstackRule {
  public RuleBook<Object> defineDelftstackRules() {
    return RuleBookBuilder.create()
        .addRule(rule -> rule.withNoSpecifiedFactType().then(f -> System.out.print("Delftstack")))
        .addRule(rule
            -> rule.withNoSpecifiedFactType().then(
                f -> System.out.println("The Best Tutorial Site")))
        .build();
  }
}

上記のルールの主な方法は次のとおりです。

public static void main(String[] args) {
  DelftstackRule ruleBook = new DelftstackRule();
  ruleBook.defineDelftstackRules().run(new FactMap<>());
}

Easy Rules

軽量のルールエンジン API である Easy Rules は、アクションと条件に基づいてルールを作成するためのルール抽象化を提供します。EasyRule RulesEngine API は、一連のルールを実行して、アクションとテスト条件を実行します。

これは注釈でもあり、POJO ベースは複合ルール構築もサポートします。SpEL や MVEL などの表現言語をサポートしています。EasyRule の例を次に示します。

Maven の依存関係;

<dependency>
    <groupId>org.jeasy</groupId>
    <artifactId>easy-rules-core</artifactId>
    <version>3.3.0</version>
</dependency>

例は次のとおりです。

@Rule(name = "Delftstack rule", description = "Always say Delftstack The Best Tutorial Site")
public class DelftstackRule {
  @Condition
  public boolean when() {
    return true;
  }

  @Action
  public void then() throws Exception {
    System.out.println("Delftstack The Best Tutorial Site");
  }
}

上記のコードは、Delftstack The Best Tutorial Site を印刷するたびにルールを作成します。このコードを起動するには、main 関数で以下のコードを使用します。

public class Launch {
  public static void main(String... args) {
    Facts facts = new Facts();

    // create rules
    Rules rules = new Rules();
    rules.register(new DelftstackRule());

    // create a rules engine and fire rules on known facts
    RulesEngine Rules_Engine = new DefaultRulesEngine();
    Rules_Engine.fire(rules, facts);
  }
}

OpenL Tablets

OpenL Tablets は、ビジネスルールエンジンおよびビジネスルール管理システムです。これには、Webstudio、Web サービス、ルールリポジトリ、およびビジネスルールエンジンが含まれています。

例を見てみましょう:

OpenL タブレットの Maven 依存関係:

<dependency>
    <groupId>org.openl</groupId>
    <artifactId>org.openl.core</artifactId>
    <version>${version}</version>
</dependency>
<dependency>
    <groupId>org.openl.rules</groupId>
    <artifactId>org.openl.rules</artifactId>
    <version>${version}</version>
</dependency>

例は次のとおりです。

public class Main {
  private DelftstackRules instance;

  public static void main(String[] args) {
    Main rules = new Main();

    rules.process(aCase);
  }

  public void process(Case aCase) {
    EngineFactory Engine_Factory = new RulesEngineFactory(
        getClass().getClassLoader().getResource("rules.xls"), DelftstackRules.class);
    instance = Engine_Factory.newEngineInstance();
    instance.executePromotion(aCase, new Response());
  }
}

上記のコードは、Xls ファイルから delftstack ルールを作成します。

これらはいくつかの人気のあるルールエンジンでした。ダウンロードまたは詳細については、以下のリンクにアクセスしてください。

  1. Drools
  2. ルールブック
  3. 簡単なルール
  4. OpenL Tablets
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook