실행 패턴

Rule Execution Server는 JMS(Java™ Message Service) API를 통해 동기 실행 패턴과 비동기 메시징을 지원합니다.

동기 실행 패턴은 Stateless 및 Stateful 규칙 세션을 포함합니다. 메시지 리스너를 사용하는 경우 비동기 메시징을 설정할 수 있습니다.

Rule Execution Server는 다음과 같은 실행 패턴을 지원합니다.
  • Java EE 컨테이너 외부의 로컬 액세스: Java SE 규칙 세션을 사용하며 <InstallDir>/executionserver/lib/jrules-res-execution.jar 파일을 애플리케이션 내부에 패키징합니다.
  • 트랜잭션 제어가 있거나 없는 로컬 액세스: POJO(Plain Old Java Objects)를 사용합니다.

    클라이언트 모듈은 XU를 참조하는 데 사용되는 실행 컴포넌트를 임베드해야 합니다. <InstallDir> /executionserver/lib/jrules-res-session-java.jar

  • 규칙 세션 레벨에서 트랜잭션 제어를 하는 로컬 액세스: Stateful 또는 Stateless EJB 규칙 세션의 로컬 인터페이스를 사용합니다.

    클라이언트 모듈은 XU를 참조하는 데 사용되는 실행 컴포넌트를 임베드해야 합니다. <InstallDir>/executionserver/applicationservers/<appserver>/jrules-res-session-ejb3-<appserver>.jar

  • 규칙 세션 레벨에서 트랜잭션 제어를 하는 원격 액세스: Stateful 또는 Stateless EJB 규칙 세션의 원격 인터페이스를 사용합니다.

    클라이언트 모듈은 XU를 참조하는 데 사용되는 실행 컴포넌트를 임베드해야 합니다. <InstallDir>/executionserver/applicationservers/<appserver>/jrules-res-session-ejb3-<appserver>.jar

  • 비동기 호출(원격 또는 로컬): MBD(Message-driven Rule Bean)를 사용합니다.

    클라이언트 모듈은 XU를 참조하는 데 사용되는 실행 컴포넌트를 임베드해야 합니다. <InstallDir>/executionserver/applicationservers/<appserver>/jrules-res-session-ejb3-<appserver>.jar

동기 실행 패턴

동기 실행 패턴은 Stateless 규칙 세션과 Stateful 규칙 세션에서 다르게 작동합니다. 자세한 내용은 규칙 세션의 내용을 참조하십시오.

Stateless 규칙 세션

Stateless 규칙 세션에서는 입력(in) 매개변수를 설정하고 출력(out) 매개변수를 가져올 수 있습니다. IlrStatelessSession의 내용을 참조하십시오.

Stateless 규칙 세션은 입력 매개변수로 오브젝트를 전달한 다음, 규칙 태스크 초기 조치를 사용하여 오브젝트를 작업 메모리에 추가할 수 있습니다. 마찬가지로, Stateless 규칙 세션은 최종 조치에서 오브젝트를 작업 메모리에서 검색하여 출력 매개변수로서 전달할 수 있습니다. 실행 종료 시에 작업 메모리의 컨텐츠가 수정됩니다.

Stateful 규칙 세션

Stateful 규칙 세션에서는 입력(in) 매개변수를 설정하고, 출력(out) 매개변수를 가져오며, 작업 메모리에 액세스할 수 있습니다. IlrStatefulSession의 내용을 참조하십시오.

작업 메모리에서 오브젝트를 삽입하고 업데이트하거나 취소하여 Java SE, POJO 또는 EJB 컴포넌트의 상태를 변경할 수 있습니다. 이렇게 하려면 Stateful 세션에서 작업해야 합니다.
참고: IRL 내부에서 IlrContext API를 사용하여 매개변수값을 설정하고 작업 메모리를 업데이트할 수도 있습니다.

Java Message Service API를 사용하여 비동기 메시징

세션 Bean을 사용하여 JMS(Java Message Service) 메시지를 동기적으로 보내고 받을 수 있지만, 비동기적으로 보내고 받을 수는 없습니다. 비동기적으로 메시지를 받으려면 메시지 리스너를 사용하십시오. 메시지 드리븐 Bean은 메시지 리스너의 한 예입니다.

참고: Message-Driven Rule Bean은 Stateful하지 않으며 클라이언트 측에는 공용 API가 없습니다.

요청자의 관점에서 비동기 메시징은 한 프로세스 또는 스레드가 메시지를 대상에 보내고 어떤 응답도 기대하지 않음을 의미합니다.

이용자의 관점에서 비동기 메시징은 "메시지를 받고 발신인에게 즉시 응답을 보내지 않음"을 의미합니다. 발신인은 메시지가 확실하게 도달하도록 하기 위해 책임 배송(guaranteed delivery)과 같은 기능을 사용할 수 있습니다.

다음 그림은 JMS 큐 또는 토픽을 사용하여 입력 매개변수를 설정하는 방법을 보여줍니다.

JMS 큐 또는 토픽을 사용하여 입력 매개변수를 설정하는 방법을 보여줍니다.

다음 그림은 JMS 큐 또는 토픽을 사용하여 출력 매개변수를 가져오는 방법을 보여줍니다.

JMS 큐 또는 토픽을 사용하여 출력 매개변수를 가져오는 방법을 보여줍니다.

JMS API를 사용하여 메시징 시스템의 다양한 구현 중에서 선택할 수 있습니다. 이 API는 Publish-and-Subscribe Model과 Point-to-Point Model을 둘 다 제공하므로 벤더는 이제 일반적으로 표준을 둘 다 구현합니다. 표준을 둘 다 사용할 수 있으므로 사용자의 경우에 가장 적합한 메시징 솔루션을 더 쉽게 구현할 수 있습니다. 무엇이 동기 또는 비동기인지를 구분하는 것이 항상 분명하지는 않으므로 이 선택은 필수입니다.