비즈니스 규칙 Hello World2(BizTalk Server 샘플)
비즈니스 규칙 Hello World2 샘플은 XML 규칙 집합을 공유 SQL 규칙 저장소에 버전 지정, 게시 및 배포하는 방법과 비즈니스 규칙 프레임워크에서 제공하는 정책 개체를 사용하여 정책을 실행하는 방법을 보여 줌으로써 비즈니스 규칙 Hello World1 샘플을 확장합니다. 또한 작업에서 동적 정책 업데이트를 수행하는 방법도 보여 줍니다.
참고
이 샘플에서는 제품을 설치하는 동안 사용자가 규칙 엔진 업데이트 서비스 및 비즈니스 규칙 구성 요소("추가 소프트웨어" 노드에 있음)를 설치했다고 가정합니다.
참고
Policy 개체를 사용하여 규칙 엔진을 독립 실행형 애플리케이션에 통합합니다. Policy 개체는 여러 규칙 엔진 인스턴스가 관리되고, 규칙 집합이 공유 SQL 저장소에서 검색 및 인스턴스화되고, 정책에 대한 업데이트가 검색되어 호스팅 애플리케이션에 게시되는 추상화입니다.
정의된 규칙 집합 및 이 샘플에서 생성된 샘플 팩트에 대한 기본 정보는 비즈니스 규칙 Hello World1을 참조하세요.
이 샘플의 용도
이 샘플은 다음과 같은 단계를 수행하는 실행 파일을 만듭니다.
CreateRuleset 메서드를 호출하여 주의 섹션에 설명된 규칙 집합을 빌드합니다.
SaveToFile 메서드를 호출하여 규칙 집합을 파일에 저장하는 방법을 보여 줍니다.
LoadFromFile 메서드를 호출하여 파일에서 규칙 집합을 로드하는 방법을 보여 줍니다.
규칙 집합을 공유 SQL 규칙 저장소에 배포합니다.
Policy 개체를 사용하고 비즈니스 규칙 Hello World1 샘플에 사용된 것과 동일한 샘플 팩트 집합을 사용하여 규칙 집합을 실행합니다.
일시 중지하여 특정 방식으로 규칙 집합 파일 SampleRuleStore.xml 수정할 수 있습니다.
정책 개체, 이제 수정된 규칙 집합을 사용하여 규칙 집합을 다시 실행하고 비즈니스 규칙 Hello World1 샘플에 사용된 것과 동일한 샘플 팩트 집합을 사용하여 다시 실행합니다.
샘플의 후속 실행을 준비하는 과정에서 규칙 집합 파일과 배포된 규칙 집합 레코드를 삭제하여 정리합니다.
참고
이 SDK의 모든 샘플에 대한 중요한 정보는 샘플을 참조 하세요.
이 샘플이 있는 위치
<샘플 경로>\비즈니스 규칙\비즈니스 규칙 Hello World2\
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
파일 | Description |
---|---|
App.ico, AssemblyInfo.cs, BusinessRulesHelloWorld2.csproj, BusinessRulesHelloWorld2.sln | 규칙 집합을 만들고 저장하며 로드하고 배포하며 실행하는 이 샘플 부분에 대한 프로젝트, 솔루션 및 관련 파일입니다. |
HelloWorld2.cs | 규칙 집합을 만들고, 규칙 집합을 파일에 저장하고, 파일에서 규칙 집합을 로드하고, 규칙 집합을 공유 Microsoft SQL Server 규칙 저장소에 배포한 다음, Policy 개체를 사용하여 규칙 집합을 실행하는 방법을 보여 주는 메서드가 포함된 Visual C# 파일입니다. |
Cleanup.bat | 어셈블리의 배포를 취소하고 GAC(전역 어셈블리 캐시)에서 어셈블리를 제거하는 데 사용됩니다. 송신 및 수신 포트를 제거합니다. 필요한 경우 Microsoft IIS(인터넷 정보 서비스) 가상 디렉터리를 제거합니다. |
SampleDocumentInstance.xml | SampleSchema.xsd 파일에 정의된 스키마를 준수하는 샘플 입력 파일입니다. |
SampleSchema.xsd | Visual C# 파일 Class1.cs에서 만든 규칙 집합에서 참조하는 요소로 간단한 스키마를 정의하는 스키마 파일입니다. |
Setup.bat | 이 샘플을 빌드 및 초기화하는 데 사용됩니다. |
\HelloWorld2Library 폴더: AssemblyInfo.cs, HelloWorld2Library.csproj, HelloWorld2Library.sln |
만들어진 규칙 집합에서 참조하는 개체를 정의하는 클래스를 제공하는 이 샘플 부분에 대한 프로젝트, 솔루션 및 관련 파일입니다. |
\HelloWorld2Library 폴더: HelloWorld2LibraryClass.cs |
만든 규칙의 IF 부분에서 참조되는 속성과 생성된 규칙의 THEN 부분에서 호출될 수 있는 메서드를 포함하는 Visual C# 파일입니다. |
Business Rules Hello World2 샘플을 빌드하고 초기화하려면
명령 창에서 다음 폴더로 이동합니다.
<샘플 경로>\비즈니스 규칙\비즈니스 규칙 Hello World2\
다음 작업을 수행하는 Setup.bat 파일을 실행합니다.
- 이 샘플에 대한 Visual Studio 프로젝트를 컴파일하고 배포합니다.
참고
이 샘플을 실행하기 전에 BizTalk Server가 빌드 및 초기화 프로세스 동안 오류를 보고하지 않았는지 확인해야 합니다.
참고
Setup.bat 파일을 실행하지 않은 채 이 샘플에서 프로젝트를 열고 빌드하려는 경우 먼저 .NET Framework Strong Name 유틸리티(sn.exe)를 사용하여 강력한 이름 키 쌍을 만들어야 합니다. 이 키 쌍을 사용하여 결과 어셈블리를 등록합니다.
참고
Setup.bat가 변경한 내용을 실행 취소하려면 Cleanup.bat를 실행합니다. Setup.bat를 두 번째로 실행하기 전에 Cleanup.bat를 실행해야 합니다.
Business Rules Hello World2 샘플을 실행하려면
명령 창에서 다음 폴더로 이동합니다.
<샘플 경로>\비즈니스 규칙\비즈니스 규칙 Hello World2\bin\Debug\
명령 창에서 이 샘플의 파일 이름(BusinessRulesHelloWorld2.exe)을 입력한 다음 Enter 키를 누릅니다.
Hello World2 출력
비즈니스 규칙 Hello World1의 설명 섹션에 설명된 생성된 규칙 집합의 특성에 따라 제공된 샘플 입력 파일 SampleDocumentInstance.xml 함께 이 샘플을 실행하는 경우 ID 요소에 대해 1의 값이 정의되어 있으면 다음 출력이 표시됩니다.
Creating a new ruleset ...
Saving ruleset to SampleRuleStore.xml ...
Loading ruleset ...
Deploying the ruleset ...
Sleeping for 60 seconds (so that the deployed ruleset becomes effective) ...
Grabbing the policy ...
Executing the policy...
MySampleBusinessObject Class -- MySampleMethod executed for object 2 with parameter 5
MySampleBusinessObject Class -- MySampleMethod executed for object 3 with parameter 5
The major version of the policy was: 1
The minor version of the policy was: 0
Press the ENTER to continue after updating the policy...
참고
굵게 표시된 출력은 규칙 집합이 참조하는 HelloWorld2Library 폴더의 파일에 의해 정의된 샘플 비즈니스 개체에 의해 생성된 출력입니다. 이렇게 하면 응용 프로그램이 여전히 이 상태로 대기하게 됩니다.
샘플을 실행하는 다음 부분에는 비즈니스 규칙 작성기를 사용하여 비즈니스 규칙을 변경하는 것이 포함됩니다.
비즈니스 규칙 작성기를 사용하여 비즈니스 규칙을 변경하려면
비즈니스 규칙 작성기를 열려면 시작, 모든 프로그램, Microsoft BizTalk Server 20xx, 비즈니스 규칙 작성기를 차례로 클릭합니다.
참고
UAC(사용자 계정 컨트롤)를 지원하는 시스템에서는 관리 권한을 사용하여 도구를 실행해야 할 수 있습니다. 이렇게 하려면 애플리케이션을 마우스 오른쪽 단추로 클릭한 다음 관리자 권한으로 실행을 선택합니다.
SQL Server 실행하는 컴퓨터에 SQL Server 대화 상자가 나타나면 확인을 클릭하여 규칙 저장소에 연결합니다.
정책 ExplorerSampleRuleSet 노드 아래에서 버전 1.0 – 배포됨 노드를 마우스 오른쪽 단추로 클릭한 다음 복사를 클릭합니다.
SampleRuleSet을 마우스 오른쪽 단추로 클릭한 다음 붙여넣기(정책 버전)를 클릭합니다.
요구에 맞게 규칙 조건 및 작업을 변경할 수 있습니다. 이 절차의 경우 버전 1.1 에서 rule1(저장되지 않음)을 클릭합니다. 오른쪽 창에서 조건을 마우스 오른쪽 단추로 클릭한 다음 논리 NOT 추가를 클릭합니다. 조건자에서 Logical NOT 연산을 같지 않음 으로 추가하는 것은 등 조건자를 사용하는 것과 같습니다.
노드 버전 1.1(저장되지 않음)을 마우스 오른쪽 단추로 클릭한 다음 저장을 클릭합니다. 다시 마우스 오른쪽 단추로 클릭한 다음 게시를 클릭합니다. 세 번째 를 마우스 오른쪽 단추로 클릭하고 배포를 클릭합니다.
일시 중지된 명령 창에 정책을 업데이트한 후 계속하려면 아무 키나 누르라는 메시지가 표시되면 아무 키나 누릅니다.
논리적 Not을 추가하여 규칙을 변경했다고 가정했을 때 BusinessRulesHelloWorld2.exe 실행 파일의 출력에서는 다음과 같이 진행합니다.
Sleeping for 60 seconds (so that the deployed ruleset becomes effective) ...
Grabbing the policy ...
Executing the policy...
MySampleBusinessObject Class -- MySampleMethod executed for object 1 with parameter 5
The major version of the policy was: 1
The minor version of the policy was: 1
Press ENTER to continue after updating the policy...
출력이 어떻게 변경되었는지 확인합니다.
MySampleMethod 메서드의 출력 줄은 MyValue 속성이 1이 아닌 경우 인쇄의 이전 규칙이 아니라 MyValue 속성이 1인 MySampleBusinessObject 클래스의 instance 대해 지금 한 번만 인쇄합니다.
정책의 부 버전 번호는 이제 1입니다.