Microsoft 규칙 작성기를 사용하여 규칙 만들기(미리 보기)
적용 대상: Azure Logic Apps(표준)
Important
이 기능은 미리 보기로 제공되고 Microsoft Azure 미리 보기의 추가 사용 약관이 적용됩니다.
규칙은 비즈니스 프로세스 작동 방식에 대한 비즈니스 논리를 제어합니다. Azure Logic Apps 규칙 엔진 프로젝트에서 사용할 이러한 규칙을 만들 수 있도록 Microsoft 규칙 작성기는 규칙 집합 및 어휘를 작성하고 버전 관리하기 위한 시각적 도구를 제공합니다.
이 방법 가이드에서는 규칙이 작동하는 방식과 Microsoft 규칙 작성기를 사용하여 규칙을 만드는 방법에 대한 개요를 제공합니다.
필수 조건
Microsoft 규칙 작성기를 다운로드하여 설치합니다.
작업하려는 기존 규칙 집합이 있는 경우 해당 규칙 집합이 포함된 XML 파일이 필요합니다. 그렇지 않으면 이 가이드에서는 XML 파일로 저장하는 새 규칙 집합을 만드는 방법을 보여줍니다.
Important
기존 XML 파일이 .NET 어셈블리에 종속되거나 팩트를 추가하는 데 사용하는 어셈블리에 다른 종속성이 있는 경우 이러한 모든 파일을 동일한 폴더와 Microsoft 규칙 작성기 로컬 디렉터리에 유지해야 합니다.
규칙이란?
규칙은 조건이 평가되는 조건 및 작업을 포함하는 선언적 문입니다. 결과가 true이면 규칙 엔진은 하나 이상의 작업을 수행합니다. 다음 형식은 Azure Logic Apps 규칙 엔진의 규칙에 대한 구문을 정의합니다.
IF <조건> THEN <작업>
다음 예제 규칙은 트랜잭션을 수행할지 여부를 결정하고 두 통화 값을 트랜잭션 금액 및 할인 형식을 사용하는 데이터 또는 팩트와 비교하여 비즈니스 논리를 적용합니다.
구매한 금액이 수량보다 크면 고객에게 추가 할인을 제공합니다.
조건: 팩트에서 적용되는 하나 이상의 조건자를 포함하는 true 또는 false 부울 식입니다. 조건자는 동사를 포함하고 제목에 대해 뭔가를 명시하는 절입니다. 이 예제에서 조건자는 구매한 팩트 금액보다 큽니다. 이 조건은 항상 true 또는 false로 평가됩니다. 조건자를 논리 연산자 AND, OR 및 NOT과 결합하여 잠재적으로 긴 논리 식을 형성할 수 있지만 항상 true 또는 false로 평가됩니다.
작업: 작업은 조건 평가의 기능적 결과입니다. 규칙 조건이 충족되면 해당 작업 또는 작업이 시작됩니다. 이 예제 에서 추가 할인 은 조건이 true일 때만 발생하는 작업입니다. 즉 , 구매한 금액이 $1,000보다 큰 경우입니다. 작업은 메서드를 호출하거나, 개체에 속성을 설정하거나, XML 문서에 대해 설정 작업을 수행하여 Azure Logic Apps 규칙 엔진에 표시됩니다.
사실: 사실은 규칙이 작동하는 세계에 대한 개별적인 정보입니다. 이 예제에서 양 과 수량은 팩트 입니다. 팩트는 이벤트 시스템, 하이브리드 애플리케이션의 개체 등과 같은 많은 원본에서 발생할 수 있으며 다음 요소 중 하나를 사용하여 Azure Logic Apps의 규칙 엔진에 공급되어야 합니다.
- 메서드, 속성 및 필드와 같은 .NET 개체입니다.
- 요소, 특성 및 문서 하위 섹션과 같은 XML 문서입니다.
어휘: 조건 및 작업에 사용되는 사실에 대한 친숙한 이름입니다. 자세한 내용은 어휘 만들기 및 관리를 참조 하세요.
다음 다이어그램 및 섹션에서는 조건, 작업 및 팩트를 함께 맞추는 방법을 설명합니다.
Microsoft 규칙 작성기
Microsoft 규칙 작성기를 사용하여 규칙을 만들고, 수정하고, 버전을 지정하고, 저장할 수 있습니다. 또는 프로그래밍 방식으로 이러한 작업을 수행할 수 있습니다. 규칙 작성기는 다음 UI 요소를 포함합니다.
창 | 설명 |
---|---|
RuleSet 탐색기 | 하나 이상의 규칙을 포함하는 규칙 집합을 만듭니다. |
조건 편집기 | 규칙에 대한 조건을 빌드합니다. |
작업 편집기 | 조건이 true로 평가되면 실행되는 작업을 빌드합니다. |
팩트 탐색기 | XML 및 .NET 팩트를 찾은 다음 해당 팩트를 조건 편집기 또는 작업 편집기로 끌어옵니다. |
규칙 집합 만들기 및 관리
규칙 집합은 도메인, 제한된 컨텍스트 또는 비즈니스 경계에 따라 함께 그룹화되는 규칙 집합입니다. 규칙 저장소에서 규칙 집합 및 규칙을 관리하려면 RuleSet 탐색기를 사용합니다. 규칙 집합 및 해당 규칙을 만들거나 수정, 테스트 또는 삭제할 수 있습니다.
Microsoft 규칙 작성기에서 규칙 저장소 메뉴를 열고 로드를 선택합니다.
열려는 규칙 저장소가 포함된 XML 파일을 찾아 선택합니다.
RuleSet 탐색기 창에서 RuleSets 바로 가기 메뉴를 열고 새 규칙 집합 추가를 선택합니다.
Microsoft 규칙 작성기는 규칙 집합 버전 번호 가 1.0 인 새 빈 규칙 집합을 기본 버전으로 만듭니다.
규칙 집합을 저장합니다. 규칙 저장소 메뉴에서 저장을 선택하여 규칙 집합에 대한 XML 파일을 만듭니다.
다음 표에서는 규칙 집합을 사용하는 데 사용할 수 있는 다른 RuleSet 탐색기 명령에 대해 설명합니다.
작업 | Command |
---|---|
새 규칙 집합을 만듭니다. | 새 규칙 집합 추가 |
선택한 규칙 집합의 빈 새 버전을 만듭니다. 다른 버전의 규칙을 복사하여 새 버전에 붙여넣을 수 있습니다. | 새 버전 추가 |
선택한 규칙 집합 버전을 클립보드에 복사합니다. | 복사 |
규칙 집합 버전 및 해당 내용을 선택한 규칙 집합에 붙여넣습니다. | 붙여넣기 |
선택한 규칙 집합 버전을 삭제합니다. | Delete |
선택한 규칙 집합 및 모든 해당 버전을 삭제합니다. | 부모 규칙 집합 수준에서 삭제 |
선택한 규칙 집합 버전 및 해당 규칙을 해당 버전의 현재 변경 내용을 취소하고 규칙 저장소에서 콘텐츠를 복원하는 옵션을 사용하여 다시 로드합니다. | 새로고침 |
선택한 버전 및 해당 규칙에 대한 변경 내용을 저장합니다. | 저장 |
규칙 엔진 프로젝트에서 사용하기 전에 선택한 규칙 집합 버전을 테스트합니다. | 테스트 규칙 집합 |
다음 표에서는 규칙 집합 버전의 속성을 설명합니다.
속성 | 값 |
---|---|
이름 | 규칙 집합의 이름입니다. 참고: 규칙 집합 버전이 아닌 규칙 집합의 Name 속성을 업데이트해야만 이 값을 변경할 수 있습니다. |
현재 버전 | RuleSet 탐색기에서 현재 선택된 규칙 집합의 버전입니다. |
팩트 리트리버 | 규칙 집합 버전에 팩트를 제공하는 데 사용할 팩트 검색기입니다. Microsoft 규칙 작성기는 기능 빌드를 지원하고 팩트 검색기를 사용하여 사실을 제공합니다. 자세한 내용은 다음 설명서를 참조하세요. - 규칙 집합에서 고급 작업 수행 - 팩트 작성자 및 검색기 빌드 |
최대 실행 루프 깊이 | 실행 루프 예외가 throw되기 전에 전달 체인 알고리즘의 최대 깊이입니다. 기본 루프 수는 65,536입니다. |
번역 기간 | 변환 제한 시간 예외가 throw되기 전에 규칙을 번역할 최대 시간입니다. 기본 기간은 60,000밀리초입니다. |
Translator | 규칙을 번역하는 데 사용할 번역기입니다. Microsoft 규칙 작성기는 현재 기본 제공 번역기만 지원하지만 더 많은 번역기를 추가할 수 있는 확장성도 지원합니다. |
버전 설명 | 현재 버전에 대한 설명입니다. |
규칙 집합 작업에 대한 자세한 내용은 규칙 집합에 대한 고급 작업 수행을 참조 하세요.
규칙 만들기 및 관리
Microsoft 규칙 작성기에서 규칙 저장소 메뉴에서 로드를 선택합니다.
작업하려는 규칙 저장소가 포함된 XML 파일을 찾아 선택합니다.
RuleSet 탐색기 창에서 규칙을 추가할 규칙 집합 버전을 찾습니다.
규칙 집합 버전의 바로 가기 메뉴를 열고 새 규칙 추가를 선택합니다.
다음 목록에서는 규칙을 변경할 수 있는 방법을 설명합니다.
규칙 집합의 새 버전을 만듭니다.
기존 규칙 집합 버전을 직접 편집합니다. 개별 규칙을 변경하거나, 새 규칙을 추가하거나, 기존 규칙을 삭제할 수 있습니다.
다음 표에서는 규칙을 사용하는 데 사용할 수 있는 모든 RuleSet 탐색기 바로 가기 명령을 설명합니다.
작업 | 바로 가기 명령 |
---|---|
선택한 규칙 집합 버전에서 새 규칙을 만듭니다. | 새 규칙 추가 |
선택한 규칙을 클립보드에 복사합니다. | 복사 |
선택한 규칙을 클립보드에 복사하고 규칙을 삭제합니다. | 잘라내기 |
선택한 규칙 집합 버전에 규칙을 붙여넣습니다. | 붙여넣기 |
선택한 규칙을 삭제합니다. | Delete |
다음 표에서는 규칙의 속성을 설명합니다.
속성 | 값 |
---|---|
이름 | 규칙의 이름입니다. |
Active | 규칙을 사용할지 여부를 나타냅니다. |
우선 순위 | 규칙 집합 내 규칙의 우선 순위입니다. 인덱스가 높을수록 규칙 우선 순위가 높습니다. 우선 순위가 높은 규칙에 대한 작업이 먼저 실행됩니다. 기본값은 0이며 중간 우선 순위를 나타냅니다. 값을 양수 또는 음수로 만들 수 있습니다. 자세한 내용은 규칙 엔진 최적화를 참조 하세요. |
규칙 사용 안 함 또는 사용
규칙 집합이 실행될 때 규칙이 실행되지 않도록 규칙을 비활성으로 설정하거나 비활성화된 규칙을 다시 활성화할 수 있습니다.
RuleSet 탐색기에서 규칙을 선택합니다.
속성 창에서 Active 속성을 다음 값 중 하나에 설정합니다.
- False: 사용 안 함
- True: 사용
규칙 우선 순위 설정
다른 우선 순위를 가진 다른 규칙의 작업 전후에 작업이 실행되도록 규칙의 우선 순위를 설정할 수 있습니다. 우선 순위는 상대적이므로 특정 우선 순위가 있는 규칙의 모든 작업은 우선 순위가 낮은 규칙의 작업보다 순서대로 실행됩니다.
RuleSet 탐색기에서 규칙을 선택합니다.
속성 창에서 우선 순위를 원하는 정수 값으로 설정합니다.
조건 만들기 또는 편집
규칙을 트리거하는 조건을 빌드, 편집 또는 보려면 규칙 편집기의 일부인 조건 편집기를 사용합니다. 조건을 빌드하려면 다음 작업을 수행할 수 있습니다.
기본 제공 또는 사용자 정의 조건자(있는 경우)를 추가합니다.
팩트 탐색기 창에서 항목을 끌어 조건자의 인수를 정의합니다.
인수 링크를 선택하여 인수 값을 인라인으로 입력합니다.
조건자 및 논리 연산자를 조건자 내에서 이동합니다.
참고 항목
조건자와 논리 연산자가 나타나는 순서는 평가 순서를 결정하지 않습니다.
조건자 및 논리 연산자를 조건에서 삭제합니다.
조건에 조건자 추가
RuleSet 탐색기에서 규칙을 선택합니다.
조건 편집기인 IF 창에서 조건 바로 가기 메뉴를 열고 다음 중 하나를 선택합니다.
논리 연산자를 선택합니다. 연산자의 바로 가기 메뉴에서 평가하려는 조건자 또는 중첩된 논리 연산자를 추가합니다.
논리 연산자 설정에 대한 자세한 내용은 규칙에 산술 및 논리 연산자 추가를 참조 하세요.
조건자 바로 가기 메뉴에서 기본 제공 조건자 또는 사용자 정의 조건자가 있는 경우 선택합니다.
다음 표에서는 조건자 바로 가기 메뉴에서 선택할 수 있는 사용 가능한 조건자 식을 설명합니다.
기본 제공 조건자 설명 이후 "time1이 time2 이후 시간순인가요?" 질문에 대답하는 임시 조건자입니다. 이전 "time1이 time2 이전인가요?" 질문에 대답하는 임시 조건자입니다. 사이 "time1이 time2와 time3 사이에 시간순인가요?" 질문에 대답하는 임시 조건자입니다. Equal 관계형 같음 연산자입니다. Exists "지정된 XML 요소 또는 특성이 있나요?" 질문에 대답하는 존재 조건자입니다. GreaterThan 보다 큰 관계형 연산자입니다. GreaterThanEqual 연산자보다 크거나 같은 관계형입니다. LessThan 관계형보다 작음 연산자입니다. LessThanEqual 연산자보다 작거나 같은 관계형입니다. 성냥 정규식이 지정된 입력 문자열에 있는지 여부를 확인합니다. NotEqual 관계형 같지 않음 연산자입니다. 범위 범위 내에 값이 있는지 여부를 확인합니다.
조건에서 조건자의 인수 지정
작업의 함수에 대해 동일한 다음 단계를 수행합니다.
조건에서 논리 연산자 또는 조건자 이동
조건 편집기에서 다음 단계 중 하나를 수행합니다.
논리 연산자 또는 조건자를 다른 논리 연산자 또는 조건자 노드로 끌어다 놓습니다.
논리 연산자 또는 조건자에 대한 바로 가기 메뉴를 열고 위로 이동 또는 아래로 이동을 선택하여 항목을 각각 한 위치 또는 수준으로 이동합니다.
작업 만들기 또는 편집
조건이 충족되면 실행되는 작업을 빌드, 편집 또는 보려면 규칙 편집기의 일부인 작업 편집기를 사용합니다. 작업을 빌드하려면 다음 작업을 수행할 수 있습니다.
- 기본 제공 또는 사용자 정의 함수(있는 경우)를 추가합니다.
- 팩트 탐색기 창에서 항목을 끌어 함수의 인수를 정의합니다.
- 인수 링크를 선택하여 인수 값을 인라인으로 입력합니다.
- 작업 내에서 함수를 이동합니다.
‘함수 추가’
RuleSet 탐색기에서 규칙을 선택합니다.
작업 편집기인 THEN 창에서 작업 바로 가기 메뉴를 열고 기본 제공 함수를 선택하여 작업 및 인수를 추가합니다.
다음 표에서는 작업 바로 가기 메뉴에서 선택할 수 있는 함수에 대해 설명합니다.
함수 설명 Assert 규칙 엔진 인스턴스의 작업 메모리에 새 팩트를 추가합니다. 지우기 규칙 엔진 인스턴스의 작업 메모리 및 안건을 다시 설정합니다. 작업 메모리 및 의제에 대한 자세한 내용은 규칙 엔진 최적화를 참조 하세요. Halt 규칙 처리를 종료합니다. Retract 규칙 엔진 인스턴스의 작업 메모리에서 팩트를 제거합니다. RetractByType 규칙 엔진 인스턴스의 작업 메모리에서 지정된 형식의 팩트를 제거합니다. Update 규칙 엔진 인스턴스의 작업 메모리에서 팩트를 업데이트합니다.
자세한 내용은 컨트롤 함수를 사용하여 규칙 최적화를 참조 하세요.
작업에서 함수에 대한 인수 지정
조건자의 조건과 동일한 다음 단계를 수행합니다.
작업에서 함수 이동
규칙의 작업은 다음 다른 작업을 실행하는 규칙 엔진 제어 함수를 제외하고 지정된 순서에 따라 실행됩니다.
- 작업 편집기에서 작업의 바로 가기 메뉴를 열고 위로 이동 또는 아래로 이동을 선택하여 작업을 각각 한 위치 또는 수준으로 이동합니다.
조건자의 인수 또는 동작의 함수 지정
그에 따라 조건 편집기 또는 작업 편집기에서 다음 단계 중 하나를 수행합니다.
조건자 또는 함수에서 기본 인수를 선택하고 원하는 값을 입력하거나 목록에서 선택할 수 있는 경우 적절한 경우 선택합니다.
팩트 탐색기 창에서 인수로 사용할 용어가 있는 탭을 선택하고 해당 용어를 해당 편집기의 조건자 또는 함수에 있는 인수로 끌어옵니다.
용어는 조건자 또는 함수가 예상하는 형식이어야 합니다. 그렇지 않으면 오류가 발생합니다.
인수를 빈 문자열 값으로 바꾸려면 인수의 바로 가기 메뉴를 열고 빈 문자열로 설정을 선택합니다.
인수를 null 상수 정의로 바꾸려면 인수의 바로 가기 메뉴를 열고 null로 설정을 선택합니다.
참고 항목
인수 형식이 null로 설정할 수 있는 형식이 아니면 이 옵션이 표시되지 않을 수 있습니다.
인수에 산술 연산자 또는 논리 연산자를 추가하려면 규칙에 산술 연산자 및 논리 연산자 추가를 참조하세요.
조건 또는 작업에서 항목 원본 찾기
그에 따라 조건 또는 작업 편집기에서 다음 단계 중 하나를 수행합니다.
조건자, 동작의 함수 또는 인수를 만드는 데 사용한 팩트 탐색기에서 어휘 정의를 찾으려면 조건자, 함수 또는 인수의 바로 가기 메뉴를 열고 어휘로 이동을 선택합니다.
조건자, 작업의 함수 또는 인수 중 하나에서 조건자를 만드는 데 사용한 팩트 탐색기에서 .NET 멤버 또는 XML 요소를 찾으려면 조건자, 함수 또는 인수의 바로 가기 메뉴를 열고 원본 팩트로 이동을 선택합니다.
조건자, 논리 연산자 또는 작업 삭제
조건 편집기에서 다음 단계 중 하나를 수행합니다.
항목을 선택한 다음 Delete 키를 누릅니다.
조건자, 논리 연산자 또는 작업과 같은 항목을 선택하고 항목 유형> 삭제<를 선택합니다.
인수와 중첩된 인수를 삭제하고 기본 정의를 복원하려면 인수의 바로 가기 메뉴를 열고 인수 재설정을 선택합니다.
규칙에 팩트 추가
나중에 규칙 및 어휘에 팩트로 사용하기 위해 규칙 저장소에 저장할 수 있는 데이터 원본 참조를 지정할 수 있습니다. XML 문서 요소와 특성이 있는 클래스 및 클래스 멤버 또는 XSD 스키마가 있는 .NET 어셈블리를 지정할 수 있습니다.
.NET 어셈블리, XSD 스키마 또는 어휘 정의에서 이미 추가한 데이터를 찾아보려면 팩트 탐색기 창에서 원하는 데이터가 있는 위치에 따라 어휘 탭, XML 스키마 탭 또는 .NET 클래스 탭을 선택합니다.
해당 탭의 데이터를 조건 편집기의 조건 내부 또는 작업 편집기의 작업 내부로 끌어다 놓습니다.
.NET 팩트의 데이터 원본으로 .NET 어셈블리 추가
팩트 탐색기 창에서 .NET 클래스 탭을 선택합니다.
.NET 어셈블리 노드의 바로 가기 메뉴를 열고 찾아보기를 선택합니다.
사용할 .NET 어셈블리를 찾아 엽니다.
.NET 어셈블리 아래에는 선택한 어셈블리가 해당 클래스 및 멤버와 함께 표시됩니다. 예를 들면 다음과 같습니다.
Important
로컬 디렉터리에서 .NET 어셈블리를 업데이트하는 경우 Microsoft 규칙 작성기는 .NET 어셈블리를 자동으로 새로 고치지 않습니다. 업데이트된 어셈블리에 대한 참조를 새로 고치는 단계는 .NET 어셈블리 참조 업데이트를 참조 하세요.
.NET 어셈블리 참조 업데이트
다른 이름 또는 버전으로 새 .NET 어셈블리를 추가하는 경우 새 어셈블리를 참조하도록 규칙 집합을 업데이트해야 합니다. 이 작업의 경우 Microsoft 규칙 작성기에서 새 규칙 집합 버전을 만들고 클래스, 메서드 등을 포함하여 새 어셈블리에 대한 참조를 업데이트해야 합니다. 업데이트된 어셈블리를 로드하려면 Microsoft 규칙 작성기를 다시 시작해야 합니다.
업데이트된 .NET 어셈블리에서 동일한 이름, 버전 번호 등을 사용하는 경우 Azure Logic Apps 규칙 엔진 함수 프로젝트에 새 어셈블리를 추가하기만 하면 됩니다.
.NET 어셈블리를 데이터 원본으로 제거
팩트 탐색기 창에서 .NET 클래스 탭을 선택합니다.
.NET 어셈블리에서 어셈블리의 바로 가기 메뉴를 열고 제거를 선택합니다.
XML 팩트의 데이터 원본으로 XML 스키마 추가
팩트 탐색기 창에서 XML 스키마 탭을 선택합니다.
스키마 노드의 바로 가기 메뉴를 열고 찾아보기를 선택합니다.
스키마 파일 상자에서 XML 스키마(.xsd) 파일을 찾아 선택하고 열기를 선택합니다.
스키마 아래에 XML 스키마가 XML 요소와 함께 표시됩니다. 예를 들면 다음과 같습니다.
인수에 사용되는 XML 요소에 대한 바인딩
비즈니스 규칙 프레임워크에서 TypedXmlDocument 클래스는 Microsoft입니다. XML 문서 형식을 나타내고 ITypedFact 인터페이스를 구현하는 클래스 중 하나인 NET 규격 클래스 라이브러리입니다. 이러한 클래스를 형식화된 팩트라고 합니다.
XML 문서의 노드를 규칙의 인수로 사용하는 경우 두 개의 XPath 식이 만들어집니다. 선택기 바인딩과 필드 바인딩은 사용하도록 선택한 노드에 따라 생성됩니다.
노드에 자식 노드가 있는 경우 XmlDocument 바인딩이라고도 하는 선택기 바인딩이 노드에 생성되지만 필드 바인딩은 만들어지지 않습니다.
노드에 자식 노드가 없으면 XmlDocument 바인딩이라고도 하는 선택기 바인딩이 노드의 부모 노드에 만들어집니다. XmlDocumentMember 바인딩이라고도 하는 필드 바인딩이 노드 자체에 만들어집니다. 이 필드 바인딩은 선택기 바인딩을 기준으로 합니다.
XML 노드를 규칙 인수로 끌어다 놓기 전에 XML 노드에 대한 기본 XPath 식을 변경할 수 있으며 새 바인딩 정보가 규칙 집합에 배치됩니다.
참고 항목
Microsoft 규칙 작성기에서 스키마를 다시 로드하는 경우 Microsoft 규칙 작성기에서 XPath 식에 적용한 모든 편집 내용을 다시 입력해야 합니다.
예를 들어 다음과 같은 XML 스키마가 있다고 가정합니다.
인수에 Income 노드를 사용하는 경우 노드에 자식 노드가 있기 때문에 선택기 바인딩만 만들어집니다.
속성 창에서 노드의 XPath 선택기 속성에는 다음과 같은 기본 XPath 식이 포함됩니다.
/*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']/*[local-name()='Income' and namespace-uri()='']
인수에 Name 노드를 사용하는 경우 선택기 바인딩과 필드 바인딩이 모두 만들어집니다.
속성 창에서 노드의 바인딩 정보는 다음과 같이 표시됩니다.
속성 값 XPath 필드 *[local-name()='Name' and namespace-uri()='']
XPath 선택기 /*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']