Java의 규칙 엔진 목록

Sheeraz Gul 2023년10월12일
Java의 규칙 엔진 목록

규칙 엔진은 비즈니스 로직을 소스 코드와 분리합니다. 이 튜토리얼에서는 Java의 가장 인기 있는 몇 가지 규칙 엔진에 대해 설명합니다.

Java의 규칙 엔진 목록

규칙 엔진을 사용하면 코드에서 비즈니스 로직을 쉽게 분리할 수 있습니다. Java에서 널리 사용되는 대부분의 규칙 엔진은 JSR94를 구현합니다.

규칙 엔진은 정교한 if/then 문으로 볼 수 있습니다. 다음은 Java의 규칙 엔진의 몇 가지 장점입니다.

  1. 규칙 엔진은 분리하여 보관할 때 재사용성이 뛰어납니다.
  2. 규칙 엔진은 소스 코드를 개발할 필요가 없기 때문에 복잡성을 줄입니다.
  3. 규칙 엔진은 소스 코드를 변경하지 않고 규칙을 변경할 수 있는 유연성을 제공합니다.

다음은 Java의 몇 가지 유명한 규칙 엔진입니다.

Drools

비즈니스 규칙 관리 시스템 BRMS로도 알려진 Drools는 웹 저작 및 규칙 관리 애플리케이션과 함께 핵심 비즈니스 규칙 엔진을 제공합니다. 또한 표기법(DMN)이 있는 의사결정 모델과 Eclipse IDE용 플러그인에 대한 완전한 런타임 지원을 제공합니다.

Rule Book

Rule Book은 유연한 간단한 DSL을 제공합니다. 더 큰 규칙 모음이 있는 경우 주석이 달린 POJO로 빌드할 수 있으며 Rule Book은 패키지를 규칙 책으로 변환합니다. 람다 지원 특정 언어를 사용하기 쉽습니다.

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는 작업 및 조건을 기반으로 규칙을 생성하기 위한 규칙 추상화를 제공합니다. Easy Rule RulesEngine API는 일련의 규칙을 통해 실행되어 작업 및 테스트 조건을 실행합니다.

또한 주석이며 POJO 기반은 복합 규칙 구성도 지원합니다. SpEL 및 MVEL과 같은 표현 언어를 지원합니다. 다음은 Easy Rule의 예입니다.

메이븐 의존성;

<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 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, 웹 서비스, 규칙 저장소 및 비즈니스 규칙 엔진이 포함됩니다.

예를 들어 보겠습니다.

OpenL Tablets에 대한 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. Rule Book
  3. Easy Rules
  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