영어로 읽기

다음을 통해 공유


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

 

게시 날짜: 2016년 11월

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

소스 코드에 액세스하지 못하거나 관리 코드를 사용하여 변경할 권한이 없는 웹 응용 프로그램을 향상시키고 수정하려는 경우 웹 응용 프로그램 어댑터를 만들 수 있습니다.Microsoft Dynamics 365는 웹 응용 프로그램 어댑터를 만들 수 있는 Microsoft Visual Studio 템플릿을 제공합니다. 템플릿은 웹 응용 프로그램 어댑터 만들기를 시작할 수 있는 주석으로 기본 코드를 제공합니다.

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

이 항목의 내용

필수 조건

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

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

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

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

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

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

필수 조건

  • 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 패키지(.exe)를 다운로드합니다.

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

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

  4. F5 키를 누르거나 디버그 > 디버깅 시작을 선택하여 컴퓨터에서 샘플 웹 응용 프로그램을 호스팅합니다. 응용 프로그램은 https://localhost:2627/에서 호스팅됩니다.

    Visual Studio의 웹 앱

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

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

  2. 설정 > Unified Service Desk로 이동합니다.

  3. 호스팅된 컨트롤을 선택합니다.

  4. 새로 만들기를 선택합니다.

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

    필드

    이름

    QsWebApplication

    USD 구성 요소 유형

    CCA 호스트형 응용 프로그램

    호스트형 응용 프로그램

    웹 호스트형 응용 프로그램

    응용 프로그램이 전역임

    선택됨

    표시 그룹

    MainPanel

    어댑터

    어댑터 사용 안 함

    응용 프로그램이 동적임

    아니요

    응용 프로그램 호스팅

    SetParent 사용

    URL

    웹 응용 프로그램이 호스팅되는 위치를 지정합니다. 이 경우 https://localhost:2627/입니다.

    Dynamics 365의 웹 앱 구성 스크린샷

  6. 저장을 선택합니다.

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

  1. 1단계에서 작성한 샘플 웹 응용 프로그램이 실행되는지 확인합니다.

  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. WebAppAdapter.cs를 선택하고 NotifyContextChange의 정의를 다음 코드로 업데이트하여 컨텍스트 정보의 텍스트 필드를 채웁니다.추가 정보:NotifyContextChange

      public override bool NotifyContextChange(Context context)
              {
                  // Populating text fields from context information.
      
                  HTMLDocument htmlDoc = Browser.Document as HTMLDocument;
                  if (htmlDoc != null)
                  {
                      IHTMLElementCollection htmlElementCollection = htmlDoc.all;
                      IHTMLElement htmlFirstName = htmlElementCollection.item("txtFirstName", 0) as IHTMLElement;
                      htmlFirstName.setAttribute("value", context["firstname"], 0);
                      IHTMLElement htmlLastName = htmlElementCollection.item("txtLastName", 0) as IHTMLElement;
                      htmlLastName.setAttribute("value", context["lastname"], 0);
                      IHTMLElement htmlAddress = htmlElementCollection.item("txtAddress", 0) as IHTMLElement;
                      htmlAddress.setAttribute("value", context["address1_line1"], 0);
                      IHTMLElement htmlID = htmlElementCollection.item("txtID", 0) as IHTMLElement;
                      htmlID.setAttribute("value", context["CustomerID"], 0);
                  }
                  return base.NotifyContextChange(context);
              }
      
    4. 다음 코드를 DoAction의 다시 정의에 추가하여 Unified Service Desk의 값으로 응용 프로그램을 업데이트합니다.

      public override bool DoAction(HostedWebApplication.WebAction action, ref string data)
              {
                  Trace.WriteLine(string.Format("{0}>>>>> RECEIVED (WebAction) Action : {1} ", this.Name, action.Name));
      
                  // Check to see if the browser is working on something before allowing the system to do 'normal' behavior.
                  if (Browser.WebBrowser.ReadyState != tagREADYSTATE.READYSTATE_COMPLETE)
                  {
                      // Browser is not in a state to process this request,  Queue it for when the browser is ready to handle it. 
                      Trace.WriteLine(string.Format("{0}>>>>> Browser Busy,({2}) Queuing Action : {1} ", this.Name, action.Name, Browser.WebBrowser.ReadyState.ToString()));
                      qReqActionList.Enqueue(new BrowserActionData(action, data));
                      return false;
                  }
                Trace.WriteLine(string.Format("{0}>>>>>>>>>>> Action:Name={1} Action:Url={2} Action:Query={3} Action:Init={4}", this.Name, action.Name, action.Url, action.QueryString, action.Initialization));
      
                  // Get browser DOM and element collection.
                  // Create an XML Document to load the passed in data to.
                  HTMLDocument htmlDoc = Browser.Document as HTMLDocument;
                  IHTMLElementCollection htmlElementCollection = htmlDoc.all;
      
                  // Check action name for something we know how to process.
                  switch (action.Name)
                  {
                      case "UpdateFirstName":
                          IHTMLElement htmlFirstName = htmlElementCollection.item("txtFirstName", 0) as IHTMLElement;
                          htmlFirstName.setAttribute("value", data, 0);
                          break;
                      case "UpdateLastName":
                          IHTMLElement htmlLastName = htmlElementCollection.item("txtLastName", 0) as IHTMLElement;
                          htmlLastName.setAttribute("value", data, 0);
                          break;
                      case "UpdateAddress":
                          IHTMLElement htmlAddress = htmlElementCollection.item("txtAddress", 0) as IHTMLElement;
                          htmlAddress.setAttribute("value", data, 0);
                          break;
                      case "UpdateID":
                          IHTMLElement htmlID = htmlElementCollection.item("txtID", 0) as IHTMLElement;
                          htmlID.setAttribute("value", data, 0);
                          break;
                  }
                  return false;
              }
      
    5. 프로젝트를 저장하고 빌드(빌드 > 솔루션 빌드)합니다. 프로젝트가 성공적으로 작성된 후에 프로젝트 폴더의 \bin\debug 폴더에 어셈블리(MyWebApplicationAdapter.dll)가 생성됩니다. 웹 응용 프로그램 어댑터를 테스트하고 사용하기 위해 나중에 이 어셈블리가 필요합니다.

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

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

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

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

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

    Dynamics 365의 호스팅된 컨트롤 목록

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

    필드

    어댑터

    어댑터 사용

    URI

    MyWebApplicationAdapter

    유형

    MyWebApplicationAdapter.WebAppAdapter

    Dynamics 365에서 웹 어댑터 구성

    참고

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

  6. 저장을선택하여 변경 내용을 저장합니다.

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

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

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

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

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

    연락처 목록의 스크린샷

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

    WebApp 어댑터 스크린샷 테스트

참고

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

참고 항목

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

Unified Service Desk 2.0

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