1

저는 BREW를 처음 사용하고 BizTalk에 대해 처음부터 완전히 익숙하므로 매우 간단하고 회피 할 수 있습니다..csv, xml 등의 값 목록을 확인하는 BizTalk 비즈니스 규칙

내가하고 싶은 일은 BRE에서 들어오는 메시지를 입력으로 받아들이고 메시지에 포함 된 값이 지정된 값 집합 내의 값과 일치하는지 확인하는 비즈니스 규칙을 만듭니다. 샘플 메시지는 다음과 같습니다. 그러면 <isFound> 필드가 그에 따라 업데이트됩니다.

<n1:DocumentTemplate xmlns:n1="mynamespace"> 
    <rootOid>2.16.840.1.113883.3.51.60.2.5</rootOid> 
    <isFound>false</isFound> 
</n1:DocumentTemplate> 

기본적으로 <rootOid> 노드를 값 목록과 대조하고 싶습니다. 비즈니스 규칙 조건의 하드 코드 된 값에 대해 <rootOid>과 일치하는 비즈니스를 이미 만들었습니다 ... BRE를 사용하고 오케스트레이션에서 규칙을 호출하는 방법에 대한 기본 사항을 배우는 개념 증명입니다.

비즈니스 규칙의 "조건"에서 하드 코딩 된 OR 목록을 거치지 않고 값 목록과 비교하는 방법을 찾지 못했습니다. 허용 된 값의 목록은 충분히 많은 OR을 수행하면 효과가 없을 것입니다.

이상적으로는 비즈니스 규칙 내에서 확인하기 위해 허용 가능한 <rootOid> 값으로 가득 찬 유지 보수 가능한 XML 파일을 갖고 싶습니다.

또한 데이터베이스를 호출하고 일치시키기 위해 테이블 ​​/ 열의 값을 읽는 방법이 있다는 것을 알았지 만 SQL을 방정식에서 벗어나지 않으므로 좀 더 자급적일 수 있습니다 .

답변

1

하나의 "동일"표현으로 충분합니다. RHS 사실은 다른 어휘 항목이어야합니다. XML 형식의 경우 적절한 경로는 모든 값을 하나씩 가져오고 여러 개의 평가가 발생하고 일치하는 경우 작업을 실행합니다. 기억해야 할 열쇠 : BRE는 패턴 매칭 엔진입니다.

어휘는 사실 정의에 대한 편리한 별칭입니다. 의는 다음과 같은 구조를 갖는 XML 파일을 생성한다고 가정 해 봅시다 :

<options> 
    <value>A</value> 
    <value>B</value> 
    <value>C</value> 
</options> 

가 이름으로이 사실에 대한 용어를 정의 PossibleValues ​​ XPath를 선택기 :/옵션/값 의 XPath 필드 :.

그런 다음 규칙을 IF currentValue == PossibleValues로 정의하면 RHS가 작업 메모리에 세 가지 사실을 산출하므로 세 가지 조건 평가가 발생합니다. 결과적으로 사실 인 규칙 만 규칙을 실행합니다 (작업).

XPath를 선택기 :/옵션/ 의 XPath 필드 :

(네임 스페이스가 생략 값은 하나의 (첫번째) 사실을 주장 할 XML 스키마에서 노드를 선택하면 BRE가 생성하는 기본 정의에이 비교 간결함)

런타임시이 XML 문서를 BRE 호출 컨텍스트에 따라 오케스트레이션 또는 .Net 구성 요소에 있는지 여부에 관계없이 BRE에 대한 인수로 전달합니다. 테스트를위한 디자인 타임에 필수 인수의 인스턴스를 제공하기 위해 Fact Creator 구성 요소 (IFactCreator 구현)를 구현해야합니다.

장기간의 사실 (질문에있는 것과 마찬가지)은 맞춤형 사실 검색기를 사용하면 더 잘 관리됩니다. 팩트 리트리버는 IFactRetriever를 구현하는 .Net 구성 요소입니다. 자세한 내용은 documentation을 참조하십시오. 내부 리트 리버 구현은 디스크에서 XML을로드하고이를 TypedXmlDocument로 작업 메모리에 어설 션합니다.

+0

나는 당신이하는 말을 잘 모르겠다. 어디에서 어휘를 추가 할 수 있는지 알 수 있지만 허용되는 값 목록이 포함 된 XML 또는 CSV 파일을 제공 할 수있는 위치는 아닙니다. – Bensonius

+0

추가 설명이 추가되었습니다. –

+0

폴, 내가하고 싶은 바를 정확하게 말하고있다. 나는 당신이하는 말을 이해하고 있으며, BRE Composer에서 엔진을 실제로 가리키는 방법을 제외한 모든 것을 할 곳을 ''목록과 함께 찾았다. . 파일이 있고, 스키마가 있고, 어휘와 규칙이 있지만 실제 XML 파일을 어휘와 규칙을 연결하고 Xpath를 적용하는 방법을 파악할 수 없습니다. 옵션 목록에 "소스"를 추가 할 곳이 없습니다. – Bensonius