次の方法で共有


チュートリアル: UII アプリケーション アダプターの作成

外部アプリケーションを Unified Service Desk と統合する場合は、アプリケーションのアダプターを作成することができます。 Microsoft Dataverse には、アプリケーション アダプターを作成するための Visual Studio テンプレートが用意されています。 このテンプレートでは、アプリケーション アダプターの作成をすぐ開始するために役立つコメントとして、基本コードが用意されています。

このチュートリアルでは、外部アプリケーション QsExternalApp をビルドし、それを Unified Service Desk でホストします。 次に、Unified Service Desk とやり取りする外部アプリケーション用に、アプリケーション アダプター ExternalApplicationAdapter を作成および構成します。 外部アプリケーションには、顧客の名、姓、住所、および ID の 4 つのラベルと、Unified Service Desk からの値を表示する、4 つの対応するテキスト ボックスがあります。

このセクションの内容

前提条件

ステップ 1: サンプル外部アプリケーションの構築

ステップ 2: 外部アプリケーションの構成

ステップ 3: 外部アプリケーションのテスト

ステップ 4: アプリケーション アダプターの作成

ステップ 5:アプリケーション アダプターの構成

ステップ 6: アプリケーション アダプターのテスト

前提条件

  • Microsoft .NET Framework 4.6.2

  • Unified Service Desk クライアント アプリケーション。ホストされたコントロールをテストするために必要です。

  • Visual Studio 2012, Visual Studio 2013、または Visual Studio 2015

  • Visual Studio 2012Visual Studio 2013Visual Studio 2015 の NuGet パッケージ マネージャー

  • UII でホストされたコントロール プロジェクト テンプレートを含む Visual Studio 用 CRM SDK テンプレートCRM SDK テンプレート を Visual Studio ギャラリーから ダウンロード し、CRMSDKTemplates.vsix ファイルをダブルクリックして、Visual Studio でテンプレートをインストールします。

ステップ 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: 外部アプリケーションの構成

このステップでは、外部のホストされたアプリケーションの種類のホストされたアプリケーションを作成し、Windows フォーム アプリケーションを表示します。

  1. Unified Service Desk 管理者にサインインします。

  2. 基本設定で、ホストされたコントロールを選択します。

  3. + 新規を選択します。

  4. 新しいホストされたコントロールページで、次の値を指定します。

    フィールド
    件名 QsExternalApp
    [USD コンポーネント] CCA ホステッド アプリケーション
    ホステッド アプリケーションの種類 外部ホステッド アプリケーション
    アプリケーションはグローバル チェック済み
    表示グループ MainPanel
    アダプター アダプターを使用しない
    アプリケーションは動的 なし
  5. ホスティング タブを選択、外部アプリ URI の価値を Microsoft.Uii.QuickStarts.QsExternalApp.exe として入力します。

  6. 保存を選択します。

ステップ 3: 外部アプリケーションのテスト

  1. Visual Studio プロジェクト出力フォルダー (<ProjectFolder>\bin\debug) から Unified Service Desk アプリケーション ディレクトリにアプリケーションをコピーします。 この場合、Microsoft.Uii.QuickStarts.QsExternalApp.exe ファイルを C:\Program Files\Microsoft Dynamics CRM USD\USD ディレクトリにコピーします。

  2. Unified Service Desk クライアントを使用して Dataverse サーバーに接続します。

  3. サインインに成功すると、デスクトップにサンプルの外部アプリケーションボタンが表示されます。

  4. Unified Service Desk 内でホストされているアプリケーションを表示するには、サンプルの外部アプリケーションをクリックします。

    Unified Service Desk サンプル外部アプリケーション。

注意

この時点では、アプリケーションは Unified Service Desk でのみホストされているため、フィールドは空です。 Unified Service Desk からの値をこれらのフィールドに入力するには、次のステップに示すように、アプリケーション アダプターを作成する必要があります。

ステップ 4: アプリケーション アダプターの作成

  1. Visual Studioを起動し、新しいプロジェクトを作成します。

  2. 新しいプロジェクト ダイアログ ボックスで以下を実行します。

    1. インストール済みテンプレートの一覧から、Visual C# を展開し、CRM SDK のテンプレート > Unified Service Desk> UII アプリケーション アダプターを選択します

    2. プロジェクトの名前と場所を指定し、OK を選択して新しいプロジェクトを作成します。

    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 の定義に追加し、内容が変更されたことをアプリケーションに通知します。 詳細については、コンテキスト を参照してください。

    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:アプリケーション アダプターの構成

  1. Unified Service Desk 管理者にサインインします。

  2. 基本設定で、ホストされたコントロールを選択します。

  3. ホストされたコントロールの一覧から、QsExternalApp のホストされたコントロールを選択します。

  4. [アダプターの構成] セクションで、次の値を指定します。

    フィールド
    アダプター アダプターを使用する
    URI ExternalApplicationAdapter
    ExternalApplicationAdapter.AppAdapter

    外部アダプターの構成。

    注意

    URI はアセンブリ名であり、種類は後ろにドット (.) および Visual Studio プロジェクトのクラス名が付いたアセンブリ (dll) の名前です。 この例では、アセンブリの名前は ExternalApplicationAdapter で、クラスの名前は AppAdapter です。このクラス名は、アプリケーション アダプターを作成するときの既定のクラス名です。

  5. 変更を保存するには 保存 を選択します。

ステップ 5: アプリケーション アダプターのテスト

  1. アプリケーション アダプター定義を含むアセンブリを、Visual Studio のプロジェクト出力フォルダー (<ProjectFolder>\bin\debug) から Unified Service Desk のアプリケーション ディレクトリにコピーします。 この場合は、ExternalApplicationAdapter.dll ファイルを c:\Program Files\Microsoft Dynamics CRM USD\USD ディレクトリにコピーします。

  2. Unified Service Desk クライアントを使用して Dataverse サーバーに接続します。

  3. サインインに成功すると、デスクトップにサンプルの外部アプリケーションが表示されます。

  4. 検索を選択し、次に取引先担当者を選択して取引先担当者を選択します。 ここでは、Patrick Sands を選択します。

    Unified Service Desk での取引先担当者リスト。

  5. サンプルの外部アプリケーションを選択すると、顧客の名、姓、アドレス、および ID が自動的に入力されて表示されます。

    外部アプリケーションの顧客情報。

注意

このチュートリアルでは、外部アプリケーションで、Unified Service Desk のデータを表示または読取る方法を示しました。 外部アプリケーションからの Unified Service Desk 内のデータを更新する方法を理解するには、チュートリアル : UII Windows フォームのホストされたコントロールの作成 を参照してください

関連項目

UII アダプターを使用して外部および Web アプリケーションとやり取りする