다음을 통해 공유


연습: UII 응용 프로그램 어댑터 만들기

 

게시 날짜: 2016년 11월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

외부 응용 프로그램을 Unified Service Desk에 통합하려는 경우 응용 프로그램 어댑터를 만들 수 있습니다.Microsoft Dynamics 365는 응용 프로그램 어댑터를 만드는 Microsoft Visual Studio 템플릿을 제공합니다. 템플릿은 응용 프로그램 어댑터 만들기를 시작할 수 있는 주석으로 기본 코드를 제공합니다.

이 연습에서는 외부 응용 프로그램 QsExternalApp을 작성하고 Unified Service Desk에서 호스팅합니다. 그런 다음 Unified Service Desk와 상호 작용하기 위해 외부 응용 프로그램용 어댑터 ExternalApplicationAdapter를 만들고 구성합니다. 외부 응용 프로그램에는 고객의 이름, 성, 주소 및 ID에 하나씩 4개의 레이블과 Unified Service Desk의 값을 표시하기 위한 4개의 해당 텍스트 상자가 있습니다.

이 섹션의 내용

필수 조건

1단계: 샘플 외부 응용 프로그램 구축

2단계: Microsoft Dynamics 365에서 외부 응용 프로그램 구성

3단계: 외부 응용 프로그램 테스트

4단계: 응용 프로그램 어댑터 만들기

4단계: Dynamics 365에서 응용 프로그램 어댑터 구성

5단계: 응용 프로그램 어댑터 테스트

필수 조건

  • Microsoft .NET Framework 4.5.2

  • Unified Service Desk 클라이언트 응용 프로그램; 호스팅된 컨트롤을 테스트하는 데 필요합니다.

  • Microsoft Visual Studio 2012, Visual Studio 2013 또는 Visual Studio 2015

  • Visual Studio 2012, Visual Studio 2013 또는 Visual Studio 2015용 NuGet 패키지 관리자

  • UII 호스팅된 컨트롤 프로젝트 템플릿을 포함하는 Visual Studio용 Microsoft Dynamics 365 SDK 템플릿입니다. 다음 방법 중 하나로 얻을 수 있습니다.

1단계: 샘플 외부 응용 프로그램 구축

  1. UII SDK 패키지를 다운로드합니다.

  2. 패키지를 두 번 클릭하면 압축이 풀립니다.

  3. <ExtractedFolder>\UII\SampleCode\UII\AIF\QsExternalApp 폴더로 이동하고 Visual Studio에서 Microsoft.Uii.QuickStarts.QsExternalApp.csproj 파일을 엽니다.

  4. F5 키를 누르거나 디버그 > 디버깅 시작을 선택하여 샘플 외부 응용 프로그램을 만듭니다. 응용 프로그램(Microsoft.Uii.QuickStarts.QsExternalApp.exe)이 프로젝트의 /bin/debug 폴더에 만들어집니다.

    샘플 외부 앱

2단계: Microsoft Dynamics 365에서 외부 응용 프로그램 구성

이 단계에서 외부 호스트형 응용 프로그램 유형의 호스팅된 컨트롤을 만들어 Windows 양식 응용 프로그램을 표시합니다.

  1. Microsoft Dynamics 365에 로그인합니다.

  2. 탐색 모음에서 Microsoft Dynamics 365를 클릭하거나 탭한 다음 설정을 선택합니다.

  3. 설정 > Unified Service Desk > 호스팅된 컨트롤을 클릭하거나 탭합니다.

  4. 새로 만들기를 클릭합니다.

  5. 새 호스팅된 컨트롤 페이지에서 다음 값을 지정합니다.

    필드

    이름

    QsExternalApp

    USD 구성 요소

    CCA 호스트형 응용 프로그램

    호스트형 응용 프로그램

    외부 호스트형 응용 프로그램

    응용 프로그램이 전역임

    선택됨

    표시 그룹

    MainPanel

    어댑터

    어댑터 사용 안 함

    응용 프로그램이 동적임

    아니요

    외부 앱 URI

    Microsoft.Uii.QuickStarts.QsExternalApp.exe

    응용 프로그램 어댑터 구성 화면

    Unified Service Desk 외부 앱 호스팅 설정

  6. 저장을 클릭합니다.

3단계: 외부 응용 프로그램 테스트

  1. Visual Studio 프로젝트 출력 폴더(<ProjectFolder>\bin\debug)에서 Unified Service Desk 응용 프로그램 디렉터리로 응용 프로그램을 복사합니다. 이 경우 Microsoft.Uii.QuickStarts.QsExternalApp.exefile 파일을 C:\Program Files\Microsoft Dynamics CRM USD\USD 디렉터리에 복사합니다.

  2. Unified Service Desk 클라이언트를 실행하여 Microsoft Dynamics 365 서버에 연결합니다.

  3. 성공적으로 로그인하면 바탕 화면에 샘플 외부 응용 프로그램 단추가 나타납니다.

  4. 샘플 외부 응용 프로그램을 선택하여 Unified Service Desk 내에서 호스팅되는 외부 응용 프로그램을 확인합니다.

Unified Service Desk의 샘플 외부 앱

참고

이 때 Unified Service Desk에서 응용 프로그램을 호스팅만 하고 있으므로 필드는 비어 있습니다.Unified Service Desk의 값으로 채우려면 다음 단계에서 설명하는 대로 응용 프로그램 어댑터를 만들어야 합니다.

4단계: 응용 프로그램 어댑터 만들기

  1. Microsoft Visual Studio를 시작하고 새 프로젝트를 만듭니다.

  2. 새 프로젝트 대화 상자에서:

    1. 설치된 템플릿 목록에서 Visual C#을 확장하고 Dynamics 365 SDK 템플릿 > Unified Service Desk > UII 응용 프로그램 어댑터를 선택합니다.

    2. 프로젝트의 위치와 이름을 지정하고 확인을 클릭하여 새 프로젝트를 만듭니다.

      Visual Studio의 외부 응용 프로그램 어댑터

  3. 솔루션 탐색기에서 참조 섹션을 확장하여 모든 어셈블리 참조가 올바르게 해결되었는지 확인합니다.

  4. AppAdapter.cs 파일을 열고 다음 코드 줄을 추가하여 클래스 정의의 페이지에 있는 각 구성 요소에 대한 위치를 설정합니다.

    // Set up your locations for each component on the page.
            // If you wish, you could use Spy++ to get the actual names as well.
            // First Name text box
            int intFirstNameCoordX = 47;
            int intFirstNameCoordY = 32;
            // Last Name text box
            int intLastNameCoordX = 223;
            int intLastNameCoordY = 32;
            // Address Text box
            int intAddressCoordX = 47;
            int intAddressCoordY = 81;
            // Customer ID text box
            int intIDCoordX = 47;
            int intIDCoordY = 126;
    
  5. NotifyContextChange의 정의에 다음 코드를 추가하여 컨텍스트가 변경되었음을 응용 프로그램에 알립니다. 자세한 내용은 NotifyContextChange을 참조하십시오.

    public override bool NotifyContextChange(Context context)
            {
                IntPtr ptr = MainWindowHandle;
                // Find the control (first name) by position
                IntPtr childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intFirstNameCoordX, intFirstNameCoordY));
                // Fill data out
                Win32API.SetWindowTextAny(childHwnd, context["firstname"]);
                // Find the control (last name) by position
                childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intLastNameCoordX, intLastNameCoordY));
                // Fill out the data
                Win32API.SetWindowTextAny(childHwnd, context["lastname"]);
                childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intAddressCoordX, intAddressCoordY));
                Win32API.SetWindowTextAny(childHwnd, context["address1_line1"]);
                childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intIDCoordX, intIDCoordY));
                Win32API.SetWindowTextAny(childHwnd, context["CustomerID"]);
                // Hands control back over to the base class to notify next app of context change.
                return base.NotifyContextChange(context);
    
            }
    
  6. 다음 코드를 DoAction의 다시 정의에 추가하여 Unified Service Desk의 값으로 양식 필드를 업데이트합니다.

    public override bool DoAction(Microsoft.Uii.Csr.Action action, RequestActionEventArgs args)
            {
                IntPtr ptr;
                IntPtr childHwnd;
                switch (args.Action)
                {
                    case "UpdateFirstName":
                        // Get locations of what you want to update and handles
                        ptr = MainWindowHandle;
                        childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intFirstNameCoordX, intFirstNameCoordY));
                        // Populate data into fields
                        Win32API.SetWindowTextAny(childHwnd, args.Data);
                        break;
                    case "UpdateLastName":
                        // Get locations of what you want to update and handles
                        ptr = MainWindowHandle;
                        childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intLastNameCoordX, intLastNameCoordY));
                        // Populate data into fields
                        Win32API.SetWindowTextAny(childHwnd, args.Data);
                        break;
                }
                return base.DoAction(action, args);
            }
    
  7. 프로젝트를 저장하고 빌드(빌드 > 솔루션 빌드)합니다. 프로젝트가 성공적으로 작성된 후에 프로젝트 폴더의 \bin\debug 폴더에 어셈블리(ExternalApplicationAdapter.dll)가 생성됩니다. 응용 프로그램 어댑터를 테스트하고 사용하기 위해 나중에 이 어셈블리가 필요합니다.

4단계: Dynamics 365에서 응용 프로그램 어댑터 구성

  1. Microsoft Dynamics 365에 로그인합니다.

  2. 탐색 모음에서 Microsoft Dynamics 365를 선택한 다음 설정을 선택합니다.

  3. 설정 > Unified Service Desk > 호스팅된 컨트롤을 선택합니다.

  4. 호스팅된 컨트롤의 목록에서 QsExternalApp 호스팅된 컨트롤을 선택합니다.

    Unified Service Desk의 호스팅된 컨트롤

  5. 어댑터 구성 섹션에서 다음 값을 지정합니다.

    필드

    어댑터

    어댑터 사용

    URI

    ExternalApplicationAdapter

    유형

    ExternalApplicationAdapter.AppAdapter

    Dynamics 365에서 외부 어댑터 구성

    참고

    URI는 어셈블리의 이름이고 유형은 어셈블리의 이름(dll)이며, 점(.)이 뒤에 붙습니다.Visual Studio 프로젝트의 클래스 이름이 뒤에 붙습니다. 이 예제에서 어셈블리의 이름은 ExternalApplicationAdapter이고 클래스 이름은 AppAdapter이며, 이는 응용 프로그램 어댑터를 만들 때 기본 클래스 이름입니다.

  6. 변경 내용을 저장하려면 저장을 클릭합니다.

5단계: 응용 프로그램 어댑터 테스트

  1. Visual Studio 프로젝트 출력 폴더((<ProjectFolder>\bin\debug)에서 Unified Service Desk 응용 프로그램 디렉터리로 응용 프로그램 어댑터 정의를 포함하는 어셈블리를 복사합니다. 이 경우 ExternalApplicationAdapter.dll 파일을 c:\Program Files\Microsoft Dynamics CRM USD\USD 디렉터리에 복사합니다.

  2. Unified Service Desk 클라이언트를 실행하여 Microsoft Dynamics 365 서버에 연결합니다.

  3. 성공적으로 로그인하면 바탕 화면에 샘플 외부 응용 프로그램이 나타납니다.

  4. 검색을 선택한 다음 연락처를 선택하고 한 연락처를 선택합니다. 여기에서는 Patrick Sands를 선택합니다.

    Unified Service Desk의 연락처 목록

  5. 샘플 외부 응용 프로그램을 클릭하면 고객의 이름, 성, 주소 및 ID가 채워집니다.

    외부 응용 프로그램의 고객 정보

참고

이 연습에서는 외부 응용 프로그램에서 Unified Service Desk의 데이터를 표시하고 읽는 방법을 보여 줍니다. 외부 응용 프로그램에서 Unified Service Desk의 데이터를 업데이트하는 방법을 이해하려면 연습: UII Windows Forms 호스팅된 컨트롤 만들기를 참조하십시오.

참고 항목

UII 어댑터를 사용하여 외부 및 웹 응용 프로그램과 상호 작용

Unified Service Desk 2.0

© 2017 Microsoft. All rights reserved. 저작권 정보