사용자 지정 워크플로 만들기(Master Data Services)

적용 대상:SQL Server - Windows 전용 Azure SQL Managed Instance

Master Data Services는 비즈니스 규칙을 사용하여 사용자가 지정한 조건에 따라 데이터를 자동으로 업데이트하고 유효성을 검사하고 전자 메일 알림을 보내는 것과 같은 기본 워크플로 솔루션을 만듭니다. 기본 제공 워크플로 작업에서 제공하는 것보다 더 복잡한 처리가 필요한 경우 사용자 지정 워크플로를 사용합니다. 사용자 지정 워크플로는 사용자가 만드는 .NET 어셈블리입니다. 사용자 워크플로 어셈블리가 호출되면 상황에 따라 필요한 동작이 코드에 사용될 수 있습니다. 예를 들어 워크플로에 다중 계층 승인 또는 복잡한 의사 결정 트리와 같은 복잡한 이벤트 처리가 필요한 경우 데이터를 분석하고 승인을 위해 보낼 위치를 결정하는 사용자 지정 워크플로를 시작하도록 Master Data Services를 구성할 수 있습니다.

사용자 지정 워크플로가 처리되는 방법

사용자 지정 워크플로를 처리하는 데는 Master Data Manager 웹 애플리케이션, SQL Server MDS 워크플로 통합 서비스 및 워크플로 처리기 어셈블리의 세 가지 주요 구성 요소가 있습니다. 이러한 구성 요소는 다음과 같이 사용자 지정 워크플로를 처리합니다.

  1. Master Data Manager를 사용하여 워크플로를 시작하는 엔터티의 유효성을 검사합니다.

  2. Master Data Manager는 비즈니스 규칙 조건을 충족하는 멤버를 Master Data Services 데이터베이스의 Service Broker 큐로 보냅니다.

  3. SQL Server MDS 워크플로 통합 서비스는 정기적으로 Master Data Services 데이터베이스의 저장 프로시저를 호출합니다.

  4. 이 저장 프로시저는 Service Broker 큐에서 레코드를 찾으면 SQL Server MDS 워크플로 통합 서비스로 반환합니다.

  5. SQL Server MDS 워크플로 Integration Services는 데이터를 워크플로 처리기 어셈블리로 라우팅합니다.

참고 항목

참고: SQL Server MDS 워크플로 통합 서비스는 간단한 프로세스를 트리거하기 위한 것입니다. 사용자 지정 코드에 복잡한 처리가 필요한 경우 별도의 스레드 또는 워크플로 프로세스 외부에서 처리를 완료합니다.

사용자 지정 워크플로에 대한 Master Data Services 구성

사용자 지정 워크플로를 만들려면 일부 사용자 지정 코드를 작성하고 워크플로 처리기에 워크플로 데이터를 전달하도록 Master Data Services를 구성해야 합니다. 사용자 지정 워크플로 처리를 사용하도록 설정하려면 다음 단계를 수행합니다.

  1. Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender를 구현하는 .NET 어셈블리를 만듭니다.

  2. Master Data Services 데이터베이스에 연결하고 태그를 워크플로 처리기와 연결하도록 SQL Server MDS 워크플로 통합 서비스를 구성합니다.

  3. SQL Server MDS 워크플로 통합 서비스를 시작합니다.

  4. Master Data Manager에서 워크플로 처리기의 이름으로 태그가 지정된 워크플로를 시작하는 비즈니스 규칙을 만듭니다.

  5. 사용자 지정 워크플로를 트리거하는 멤버에 비즈니스 규칙을 적용합니다.

워크플로 처리기 어셈블리 만들기

사용자 지정 워크플로는 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 인터페이스를 구현하는 .NET 클래스 라이브러리 어셈블리입니다. SQL Server MDS 워크플로 통합 서비스는 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* 메서드를 호출하여 코드를 실행합니다. Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow*를 구현하는 예제 코드는 사용자 지정 워크플로 예제(Master Data Services)를 참조하세요.

다음 단계에 따라 Visual Studio 2010을 사용하여 SQL Server MDS 워크플로 통합 서비스에서 사용자 지정 워크플로를 처리하기 위해 호출할 수 있는 어셈블리를 만듭니다.

  1. Visual Studio 2010에서 선택한 언어를 사용하는 새 클래스 라이브러리 프로젝트를 만듭니다. C# 클래스 라이브러리를 만들려면 Visual C#\Windows 프로젝트 형식을 선택하고 클래스 라이브러리 템플릿을 선택합니다. 프로젝트 이름(예: MDSWorkflowTest)을 입력하고 확인을 클릭합니다.

  2. Microsoft.MasterDataServices.WorkflowTypeExtender.dll에 대한 참조를 추가합니다. 이 어셈블리는 설치 폴더>\Master Data Services\WebApplication\bin에서 <찾을 수 있습니다.

  3. C# 코드 파일에 'using Microsoft.MasterDataServices.Core.Workflow;'를 추가합니다.

  4. 클래스 선언에서 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 에서 상속합니다. 클래스 선언은 'public 클래스 WorkflowTester: IWorkflowTypeExtender'과 유사해야 합니다.

  5. Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 인터페이스를 구현합니다. Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* 메서드는 SQL Server MDS 워크플로 통합 서비스에서 호출하여 워크플로를 시작합니다.

  6. 설치 폴더>\Master Data Services\WebApplication\bin에 <있는 Microsoft.MasterDataServices.Workflow.exe라는 SQL Server MDS 워크플로 통합 서비스 실행 파일의 위치에 어셈블리를 복사합니다.

SQL Server MDS 워크플로 통합 서비스 구성

Master Data Services 데이터베이스에 대한 연결 정보를 포함하고 다음 단계를 수행하여 태그를 워크플로 처리기 어셈블리와 연결하도록 Master Data Services 구성 파일을 편집합니다.

  1. 설치 폴더>\Master Data Services\WebApplication\bin에서 <Microsoft.MasterDataServices.Workflow.exe.config를 찾습니다.

  2. Master Data Services 데이터베이스 연결 정보를 "ConnectionString" 설정에 추가합니다. SQL Server 설치에서 대/소문자를 구분하는 데이터 정렬을 사용하는 경우 데이터베이스와 동일한 경우에 데이터베이스 이름을 입력해야 합니다. 예를 들어 전체 설정 태그는 다음과 같을 수 있습니다.

    <setting name="ConnectionString" serializeAs="String">  
        <value>Server=myServer;Database=myDatabase;Integrated Security=True</value>  
    </setting>  
    
  3. "ConnectionString" 설정 아래에 "WorkflowTypeExtenders" 설정을 추가하여 사용자 워크플로 처리기 어셈블리에 태그 이름을 연결합니다. 예:

    <setting name="WorkflowTypeExtenders" serializeAs="String">  
        <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value>  
    </setting>  
    

    값 태그의 <내부 텍스트는 워크플로 태그>=<어셈블리 정규화된 워크플로 형식 이름의> 형식<입니다.> <워크플로 태그> 는 Master Data Manager에서 비즈니스 규칙을 만들 때 워크플로 처리기 어셈블리를 식별하는 데 사용하는 이름입니다. <어셈블리 정규화된 워크플로 형식 이름은> 워크플로 클래스의 네임스페이스 정규화된 이름 뒤에 쉼표, 어셈블리의 표시 이름입니다. 어셈블리의 이름이 강력한 경우 버전 정보 및 해당 PublicKeyToken도 포함해야 합니다. 다양한 종류의 워크플로에 대해 여러 워크플로 처리기를 만든 경우 여러 <설정> 태그를 포함할 수 있습니다.

참고 항목

서버 구성에 따라 Microsoft.MasterDataServices.Workflow.exe.config 파일을 저장하려고 할 때 "액세스가 거부되었습니다" 오류가 표시될 수 있습니다. 이 경우 서버에서 UAC(사용자 계정 컨트롤)를 일시적으로 사용하지 않도록 설정합니다. 이렇게 하려면 제어판을 열고 시스템 및 보안을 클릭합니다. 작업 센터에서 사용자 계정 컨트롤 설정 변경을 클릭합니다. 사용자 계정 컨트롤 설정 대화 상자에서 알림을 받지 않도록 막대를 아래쪽으로 밉니다. 컴퓨터를 다시 시작하고 이전 단계를 반복하여 구성 파일을 편집합니다. 파일을 저장한 후 UAC 설정을 기본 수준으로 다시 설정합니다.

SQL Server MDS 워크플로 통합 서비스 시작

기본적으로 SQL Server MDS 워크플로 통합 서비스는 설치되지 않습니다. 서비스를 사용하려면 먼저 서비스를 설치해야 합니다. 보안을 강화하려면 서비스에 대한 로컬 사용자를 만들고 이 사용자에게 워크플로 작업을 수행하는 데 필요한 권한만 부여합니다. 사용자를 만들고, 서비스를 설치하고, 서비스를 시작하려면 다음 단계를 수행하십시오.

  1. 로컬 사용자 및 그룹 관리자를 사용하여 mds_workflow_service 같은 로컬 사용자를 만듭니다.

  2. SQL Server Management Studio를 사용하여 mds_workflow_service 사용자에게 [mdm].[udpExternalActionsGet] 저장 프로시저를 실행하는 데 필요한 사용 권한을 부여합니다. 이렇게 하려면 mds_workflow_service 계정에 대한 새 로그인을 만들고, Master Data Services 데이터베이스에서 새 사용자를 만들고, 이 사용자를 mds_workflow_service 로그인에 매핑하고, [mdm]에 대한 사용자 EXECUTE 권한을 부여합니다. [udpExternalActionsGet] 저장 프로시저.

  3. mds_workflow_service 사용자에게 워크플로 처리기 어셈블리를 실행하기 위한 사용 권한을 부여합니다. 이렇게 하려면 mds_workflow_service 사용자를 워크플로 처리기 어셈블리의 속성에 대한 보안 탭에 추가하고 mds_workflow_service 사용자에게 READ 및 EXECUTE 권한을 부여합니다.

  4. mds_workflow_service 사용자에게 SQL Server MDS 워크플로 통합 서비스 실행 파일을 실행할 수 있는 권한을 부여합니다. 이렇게 하려면 설치 폴더>\Master Data Services\WebApplication\bin에 있는 Microsoft.MasterDataServices.Workflow.exe 속성의 보안 에 <mds_workflow_service 사용자를 추가하고 mds_workflow_service 사용자에게 READ 및 EXECUTE 권한을 부여합니다.

  5. InstallUtil.exe라는 .NET 설치 유틸리티를 사용하여 SQL Server MDS 워크플로 통합 서비스를 설치합니다. InstallUtil.exe는 .NET 설치 폴더(예: C:\Windows\Microsoft.NET\Framework\v4.0.30319\)에서 찾을 수 있습니다. 관리자 권한 명령 프롬프트에 다음을 입력하여 SQL Server MDS 워크플로 통합 서비스를 설치합니다.

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil Microsoft.MasterDataServices.Workflow.exe  
    

    설치하는 동안 메시지가 표시되면 mds_workflow_service 사용자를 지정합니다.

  6. 서비스 스냅인을 사용하여 SQL Server MDS 워크플로 통합 서비스를 시작합니다. 이렇게 하려면 서비스 스냅인에서 SQL Server MDS 워크플로 통합 서비스를 찾아 선택하고 시작 링크를 클릭합니다.

워크플로 비즈니스 규칙 만들기

Master Data Manager를 사용하여 적용할 때 워크플로를 시작하는 비즈니스 규칙을 만들고 게시합니다. 비즈니스 규칙에 특성 값을 변경하는 작업이 포함되어 있어야 하므로 규칙이 한 번 적용된 후 false로 평가됩니다. 예를 들어 Price 특성 값이 500보다 크고 승인된 특성 값이 비어 있는 경우 비즈니스 규칙이 true로 평가될 수 있습니다. 그런 다음, 규칙에는 승인된 특성 값을 보류 중으로 설정하고 다른 하나는 워크플로를 시작하는 두 가지 작업을 포함할 수 있습니다. 또는 "변경됨" 조건을 사용하는 규칙을 만들고 특성을 변경 추적 그룹에 추가할 수 있습니다. 비즈니스 규칙에 대한 자세한 내용은 비즈니스 규칙(Master Data Services)을 참조하세요.

다음 단계에 따라 Master Data Manager에서 사용자 지정 워크플로를 시작하는 비즈니스 규칙을 만듭니다.

  1. Master Data Manager의 비즈니스 규칙 편집기에서 비즈니스 규칙의 조건을 지정한 후 외부 작업 목록에서 THEN 창의 작업 레이블로 워크플로 시작 작업을끌어옵니다.

  2. 작업 편집 창의 워크플로 유형 상자에 워크플로 처리기 어셈블리를 식별하는 태그를 입력합니다. 이 태그는 어셈블리의 구성 파일(예: TEST)에서 지정한 태그입니다.

  3. 필요에 따라 멤버 데이터 포함 확인란을 선택합니다. 워크플로 처리기에 전달되는 XML에 특성 이름 및 값을 포함하려면 이 값을 선택합니다.

  4. 워크플로 사이트 상자에 웹 사이트 이름을 입력합니다. 사용자 지정 워크플로의 경우 적용되지 않을 수 있지만 추가 컨텍스트에 사용할 수 있습니다.

  5. 워크플로 이름 상자에 Visual Studio에서 워크플로의 이름을 입력합니다. 사용자 지정 워크플로의 경우 적용되지 않을 수 있지만 추가 컨텍스트에 사용할 수 있습니다.

  6. 비즈니스 규칙을 저장하고 게시합니다.

비즈니스 규칙을 적용하여 워크플로 시작

워크플로를 시작하려면 데이터에 비즈니스 규칙을 적용해야 합니다. 이렇게 하려면 Master Data Manager를 사용하여 유효성을 검사할 멤버가 포함된 엔터티를 편집합니다. 비즈니스 규칙 적용을 클릭합니다. 비즈니스 규칙에 따라 Master Data Manager는 Master Data Services 데이터베이스의 Service Broker 큐를 채웁니다. SQL Server MDS 워크플로 통합 서비스가 큐를 확인하면 데이터를 지정된 워크플로 처리기 어셈블리로 보내고 큐를 지웁니다. 워크플로 처리기 어셈블리는 코딩한 작업을 수행합니다.

사용자 지정 워크플로 문제 해결

워크플로 처리기 어셈블리가 데이터를 수신하지 않는 경우 SQL Server MDS 워크플로 통합 서비스를 디버깅하거나 Service Broker 큐를 볼 수 있습니다.

SQL Server MDS 워크플로 통합 서비스 디버그

SQL Server 워크플로 통합 서비스를 디버그하려면 다음 단계를 수행합니다.

  1. 서비스 스냅인을 사용하여 서비스를 중지합니다.

  2. 명령 프롬프트를 열고, 서비스의 위치로 이동한 다음, Microsoft.MasterDataServices.Workflow.exe -console을 입력하여 콘솔 모드에서 서비스를 실행합니다.

  3. Master Data Manager에서 구성원을 업데이트하고 비즈니스 규칙을 다시 적용합니다. 콘솔 창에 자세한 로그가 표시됩니다.

Service Broker 큐 보기

워크플로의 일부로 전달된 마스터 데이터를 포함하는 Service Broker 큐는 mdm.microsoft/mdm/queue/externalaction입니다. 큐는 Master Data Services 데이터베이스의 Service Broker 노드 아래에 있는 SQL Management Studio의 개체 탐색기에서 찾을 수 있습니다. 서비스에서 큐를 올바르게 지운 경우 이 큐는 비어 있습니다.

참고 항목

사용자 지정 워크플로 예제(Master Data Services)
사용자 지정 워크플로 XML 설명(Master Data Services)