슬롯 블로그 | 슬롯 철저한 활용 내비게이션No.10 무료 슬롯의 [Extension Operator] 및 [Service Callout]를 사용하여 규칙을 구현하는 방법

BRMS 철저한 무료 슬롯 블로그

No.10 무료 슬롯의 [Extension Operator] 및 [Service Callout]를 사용하여 규칙을 구현하는 방법

2016.12.22 Progress 무료 슬롯

이 항목은 Assist Co., Ltd. (https : //www.ashisuto.co.jp/product/category/brms/progress_무료 슬롯/column/detail/brmstech10.html)의 재 인쇄입니다.

No.10 무료 슬롯의 [Extension Operator] 및 [Service Callout]를 사용하여 무료 슬롯을 구현하는 방법

무료 슬롯뿐만 아니라 BRMS 제품에서 규칙이 구현 될 때, 의사 결정 테이블 형식으로 작성하기 어려운 프로세스가 있으며, 작성할 수없는 기능이나 기능이 없기 때문에 실현할 수없는 프로세스가 있습니다. 예를 들어, 데이터가 처리되는 순서, 문자열 처리 및 일본에 고유 한 순서, 외부 리소스에 대한 입력 및 출력 및 OS에 대한 명령 실행을 의식하는 알고리즘 및 배열 처리가 있습니다. 일반적으로 이러한 처리는 데이터를 BRMS로 전달하기 전에 또는 BRMS가 데이터를 처리 한 후에 수행되지만 실제로는 잘라낼 수 없습니다. 무료 슬롯은 의사 결정 서비스가 처리되는 동안 Java 프로그램을 실행할 수있는 "확장 연산자"및 "서비스 콜 아웃"기능을 가지고 있습니다.

[확장 연산자] 및 [서비스 콜 아웃]

[Extension Operator] 및 [Service Callout]의 공통적 인 기능은 모두 Eclipse 플러그인으로 항아리를 생성하고 무료 슬롯 Studio의 플러그인 폴더에 통합한다는 것입니다. 둘 다 Java 프로그램을 구현할 수 있지만 무료 슬롯과의 통합의 일부인 인수 및 반환 값에 대한 Eclipse 플러그인 및 제약 조건이 있습니다. 무료 슬롯 Server에서 생성 된 [Extension Operator] 및 [Service Callout]를 실행하려면 Application Server의 Web-Inf/Lib 폴더 (Tomcat의 예)에있는 Eclipse 플러그인으로 작성된 JAR을 배치하십시오.

각 생성 방법과 같은 세부 사항은 제품 매뉴얼 "무료 슬롯 Studio : Extensions Guide"에서 찾을 수 있습니다.

[Extension Operator] 및 [Service Callout]의 무료 슬롯의 특정 예제

■ 확장 연산자

샘플로서, 우리는 날짜 데이터에서 휴일과 휴일을 결정하는 [확장 연산자]를 만들었습니다.
[Extension Operator]의 소스 코드 "GetJapaneseHolidayName"은 다음과 같습니다.

패키지 com.acme.extended.operators;
import java.util.date;
/**
/**
// 새해 휴가가 추가되었습니다
// 인수 결정
개인 정적 클래스 Newyear emplements offprovider.off

이 프로그램은 일본의 공휴일을 계산하는 "AJD4JP"라는 오픈 소스 라이브러리를 사용합니다. 따라서이 소스 코드를 Eclipse 플러그인으로 빌드 할 때는 플러그인 JAR 안에 AJD4JP 라이브러리의 JAR 파일을 포함시켜야합니다. 또한 무료 슬롯 Server에서 실행하려면 생성 된 플러그인 JAR 파일과 AJD4JP 라이브러리 JAR 파일을 무료 슬롯 Server Lib 폴더에 배치해야합니다.

다음,이 [확장 연산자] "getjapaneseholidayName"을 무료 슬롯하여 다음 규칙을 만듭니다. "Attribute_1"은 날짜 유형이며 "Attribute_2"는 문자열 유형 어휘 속성입니다.

이미지 1

아래 그림과 같이 무료 슬롯 Studio Rule Operator Section에서 구현 된 확장 연산자 이름 "getjapaneseholidayName"을 표시하려면 [ExtendedOperators.OperationModel "파일에 필요한 항목을 작성하지만 세부 사항은 생략됩니다. 규칙 연산자 목록에 메소드 이름을 표시하지 않고도 구현 된 [확장 연산자]를 사용할 수 있습니다.

이미지 2

이 규칙을 실행하면 동작은 다음과 같습니다.

이미지 3

이 [확장 연산자]는 "Attribute_1"의 날짜 유형 값 만 필요하므로 다른 규칙 및 기타 어휘의 날짜 유형 속성에 일반적으로 무료 슬롯할 수 있습니다.

또한,이 [확장 연산자]는 코르티콘 외부에 대한 입력/출력이 없지만 [확장 연산자]에서 외부 리소스에 대한 입력/출력을 수행하는 경우 동시에 동시에 실행하지 않도록주의하십시오.

유사한 프로세스는 무료 슬롯 의사 결정 테이블의 규칙에도 서면 할 수 있습니다. 의사 결정 테이블에 규칙으로 작성하는 방법과 [Extension Operator]를 사용하는 방법의 특성을 비교하면 아래를 참조하십시오.

● 규칙적으로 쓰는 방법
► 휴일과 공휴일 결정을 의사 결정 테이블의 규칙으로 결정하십시오.
► 주말과 같은 정규 휴일의 경우 표준 규칙 운영자 "Dayofweek"을 무료 슬롯하여 쉽게 표현할 수 있지만
  휴일을 포괄적으로 작성하고 다소 복잡한 계산을 수행해야합니다.
► 혜택
  holiday 휴가 또는 공휴일이 변경되면 간단히 의사 결정 테이블을 변경할 수 있습니다.
► 단점
  business 비즈니스 규칙 이외의 논리가 의사 결정 테이블에 합류합니다.

● [Extension Operator]로 구현하는 방법
► 이행 휴일과 휴일을 결정하고 규칙에서 [확장 연산자]로 호출하는 Java 프로그램.
 ► 혜택
  ・ 결정 테이블에서 하루가 휴일인지 또는 국경일인지 간단히 설명 할 수 있습니다.
► 단점
  holiday 휴가 또는 공휴일이 변경되면 프로그램이 필요합니다.

장점과 단점은 트레이드 오프이므로 어떤 것이 더 나은지 결정하는 것이 사례 별 시나리오입니다.

■ [서비스 콜 아웃]

샘플로서, 우리는 DB에 연결하는 서비스 콜 아웃을 만들고 모든 SQL (select 문)을 실행하여 얻은 데이터를 어휘로 확장했습니다.

일반적으로 무료 슬롯과 함께 DB에서 데이터를 사용할 때 다음 중 하나를 사용할 수 있습니다.

  • 클라이언트 응용 프로그램에서 DB에 액세스하고 필요한 데이터를 얻은 후 SOAP 요청의 요소로 무료 슬롯으로 보냅니다.
  • 무료 슬롯의 EDC 옵션 (※)을 사용하여 규칙에서 DB 데이터를 검색합니다.

[Service Callout] 함수 이러한 메소드에 의존하지 않고 데이터베이스를 무료 슬롯할 수 있습니다
획득 한 데이터는 무료 슬롯의 의사 결정 서비스 내에서 사용할 수 있습니다.

*EDC 정보
►EDC는 엔터프라이즈 데이터베이스 커넥터의 약자이며 해당 라이센스가 필요한 선택적 코르티콘 제품입니다.
  규칙이 실행되는 동안 데이터에 액세스하고 검색 할 수있는 기능을 제공합니다.

EDC 옵션과 비교하여 이번에 생성 된 서비스 콜 아웃 샘플에는 다음과 같은 기능이 있습니다.

  • EDC가 지원하지 않는 RDBMS (예 :이 샘플의 SQLITE)에 연결할 수 있습니다.
  • 다른 유형의 RDBMS 및 EDC로 설정할 수없는 다중 DB에 대한 연결이 가능합니다.
  • EDC로 작성할 수없는 복잡한 SQL 문을 실행할 수 있습니다.

[Service Callout] "getSqlitetable"의 소스 코드는 다음과 같습니다.

패키지 com.무료 슬롯.operations.extended.examples.servicecallouts;
import java.sql.*;
com.무료 슬롯.services.dataobject.iccdataobject import;
public class executeQueryBysc 무료 슬롯 ICCServiceCalloutextension
/**
for (iccdataobject t : adataobjmgr.getentitiesbyname ( "db_table"))
String ConnectionUrl = (String) t.getAttributeValue ( "ConnectionUrl");
try
while (rs.next ())
resultSmetadata meta = rs.getmetadata ();
C.setattributeValue ( "name", (string) meta.getColumnName (i));
rs.close ();

이 소스 코드를 Eclipse 플러그인으로 빌드 할 때는 항아리의 항아리로 만든 플러그인에 sqlite jdbc 드라이버를 포함시켜야합니다. 또한 무료 슬롯 Server에서 실행하려면 플러그인 JAR 파일과 SQLITE JDBC 드라이버를 서버의 LIB 폴더 및 LIB 폴더에 배치해야합니다. 구현은 SQLite 이외의 RDBM과 거의 같은 방식으로 작동하지만이 경우 각 DB에 대해 JDBC 드라이버를 준비해야합니다.

소스 코드에서 볼 수 있듯이이 [서비스 콜 아웃]은 인수에 의해 주어진 어휘에 따라 다릅니다. 이 [서비스 콜 아웃]을 실행하는 규칙 흐름 어휘 (Ecore File)에서 다음 엔티티, 속성 및 관계가 만들어 졌다고 가정합니다. 어휘에 어휘 (Ecore 파일)에 필요한 엔티티, 속성 또는 연관성이없는 경우 서비스 콜 아웃이 작동하지 않습니다.

이미지 4

전제 어휘 구조는 가능한 한 일반적인 무료 슬롯할 수 있도록 추상적으로 설계되었습니다. 이 구조를 무료 슬롯하면 모든 DB 테이블 데이터가 저장 될 수 있지만 특정 DB 테이블 만 타겟팅되고 특정 규칙 흐름 만 무료 슬롯하여 [서비스 콜 아웃]을 무료 슬롯 할 수 있습니다.

다음,이 어휘와 [서비스 콜 아웃]을 무료 슬롯하여 규칙 흐름을 만듭니다.

이미지 5

무료 슬롯 Studio Rule Flow Screen의 서비스 콜 아웃에 구현 된 서비스 이름을 표시하려면 XML 파일 "ExtendedOperators.operationModel"의 필수 필드를 작성해야하지만 세부 사항은 여기에서 생략됩니다.

예를 들어이 규칙 흐름을 실행하기 위해 다음 표를 SQLITE에서 다음 표를 작성하고 c : /users/progress/documents/test.db에 저장한다고 가정하십시오.

이미지 6

DB_Table의 ConnectionUrl에서 "jdbc : sqlite : c : /users/progress/documents/test.db"및 "t_test에서 선택 *" 입력 값으로 executesQL에서
실행되면 다음과 같습니다. 테이블의 모든 데이터는 행과 열로 확장됩니다 (그림에서 올바른 데이터는 접힌 부품에도 포함되어 있음). [Service Callout] 프로그램 및 무료 슬롯 어휘의 구현으로 인해 DB 테이블의 모든 정수 및 부동 소수점 데이터는 무료 슬롯의 문자열 유형으로 저장됩니다.

이미지 7

executesQL SQL 문을 "T_TEST에서 pkey = 3;"에서 "column3을 선택한"

이미지 8

ConnectionUrl 또는 executesQL 속성의 내용이 잘못된 값으로 설정된 경우, 오류 속성은 런타임에 오류 메시지를 저장하고 결과가 생성되지 않습니다.

이미지 9

실제 데이터베이스 또는 규칙 에이 [서비스 콜 아웃]을 무료 슬롯하면 다음과 같은 점이 있습니다.

  • 무료 슬롯의 어휘 데이터에서 새로운 엔티티를 생성하기위한 처리 속도는 EDC보다 느리기 때문에 SQL에 많은 양의 데이터가 얻어지면 처리 속도에주의해야합니다.
  • 실행할 규칙 흐름의 Ecore 파일을 지원하는 어휘 구조를 만들어야하기 때문에 EDC만큼 다재다능하지 않습니다.
  • SQL에서 DB에서 DB에서 얻은 데이터의 구조는 필연적으로 복잡하므로 [서비스 콜 아웃]을 기반으로하는 규칙도 복잡해질 수 있습니다. 규칙이 아닌 프로그램에서 SQL을 생성하거나 규칙 또는 DB 특정 어휘 구조를 무료 슬롯하는 경우 간단한 의사 결정 테이블을 유지할 수 있지만 서비스 콜 아웃의 다양성이 손상되므로 사례 별 아이디어가 더 좋습니다.
  • 이번에는 선정 된 명세서이므로 문제가 없지만 삽입, 업데이트 및 삭제의 경우 여러 의사 결정 서비스가 동시에 실행되고 충돌 할 수 있으므로 적절한 거래 처리가 무료 슬롯되어야합니다.

■ 요약

이번에는 무료 슬롯의 [Extension Operator]와 [Service Callout]의 샘플을 만들었습니다. [Extension Operator] 및 [Service Callout]의 일반적인 기능은 다음과 같이 요약됩니다.

● 공통 기능
► 이클립스 플러그인으로 만들어냅니다.
► 무료 슬롯 Server의 표준 동작은 스레드 안전이며 현재 처리중인 의사 결정 서비스는 현재 처리중인 다른 의사 결정 서비스에 영향을 미치지 않지만 이러한 기능이 외부 리소스에 대한 입력 및 출력을 수행하는 경우 스레드 안전이 아닐 수 있습니다.

● [Extension Operator]
► 표준 규칙 연산자와 같은 규칙 시트에 작성되었으며 규칙 처리가 설명 위치에 입력 될 때 프로그램이 호출됩니다.
► 프로그램 인수는 어휘가 호출 될 때 어휘의 속성의 가치이며, 프로그램이 의존하는 유일한 것은 해당 속성의 유형이므로 다른 규칙 흐름 (어휘)에서 매우 다재다능하고 재무료 슬롯하기 쉽습니다.
► 무료 슬롯의 다양한 표준 규칙 연산자에서 누락 된 것을 추가 할 때 유용합니다.
► [Extension Operator]를 설명하는 규칙을 통과하는 많은 양의 데이터가 있고 [Extension Operator]가 여러 번 호출되는 경우 처리 속도에주의해야합니다.

● [서비스 콜 아웃]
► 표준 규칙 시트와 마찬가지로 프로그램은 규칙 흐름의 요소로 배치되며 플로우 프로세싱이 배치 위치에 들어갈 때 프로그램이 호출됩니다.
► 프로그램 인수는 [서비스 콜 아웃]을 호출 할 때 흐름 처리 중 전체 어휘 데이터이며, 프로그램은 어휘의 구조에 따라 달라 지므로 일반적인 생성을 어렵게 만듭니다.
► 전체 어휘 데이터에 대한 의사 결정 테이블에서 표현할 수없는 프로세스를 무료 슬롯기위한 대결.
► 유량에서 처리되면 통화 수가 적으며 입력/출력에 대한 데이터가 많으면 처리 속도에주의해야합니다.

무료 슬롯으로 의사 결정 서비스를 처리하는 동안 어떤 종류의 프로그램을 호출하려면 이러한 기능을 고려하여 [Extension Operator] 및 [Service Callout] 기능을 사용하십시오.

저자 소개

Tari Reki

Progress Promotion Department, 제품 관리 부서

이전에 그는 계약 계약 개발 및 기타 활동에서 일하면서 Linux 프로그래머이자 SE였습니다.
그는 또한 IT 잡지와 책에 대한 기사를 작성한 경험이 있습니다.
현재 그는 BRMS Progress 무료 슬롯에 대한 기술 지원 및 교육을 제공합니다.

다운로드 닫기

Close

[Thu, 2 월 16 일]

"Progress 무료 슬롯"실무 세미나

진행을 시각화하고 자동화를 촉진하는