演练:创建 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 中。 然后为外部应用程序创建并配置用程序适配器 ExternalApplicationAdapter,使其与 Unified Service Desk交互。 外部应用程序有四标签:分别为名、姓、地址和 ID 标签,以及四个相应的显示 Unified Service Desk 中的值的文本框。

本节内容

必备条件

步骤 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 2012Visual Studio 2013Visual Studio 2015 的 NuGet Package Manager

  • Microsoft Dynamics 365 SDK 包括 UII 托管控件项目模板的 Visual Studio 的模板。 您可以使用下列方式之一获取模板:

    • 下载 CRM SDK 模板。 双击 CRMSDKTemplates.vsix 文件在 Visual Studio 中安装模板。

    • 下载并提取 CRM SDK 包. 转至 SDK 中的SDK\Templates 文件夹,双击 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:在 Microsoft Dynamics 365 中配置外部应用程序。

在此步骤中,您将创建一个 外部托管应用程序 类型的托管控件,来显示 Windows 表格应用程序。

  1. 登录到 Microsoft Dynamics 365

  2. 在导航栏上,单击或点按 Microsoft Dynamics 365,然后选择“设置”。

  3. 单击或点按“设置” > “统一服务台” > “承载控件”。

  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. 选择 “设置”>“统一服务台”>“托管控件”。

  4. 在托管控制列表中,选择 QsExternalApp 托管控件。

    Unified Service Desk 中的托管控件

  5. 在适配器配置部分指定以下值:

    字段

    适配器

    使用适配器

    URI

    ExternalApplicationAdapter

    类型​​

    ExternalApplicationAdapter.AppAdapter

    Dynamics 365 的外部适配器配置

备注

URI 是指您的程序集名称,而“类型”是指您的程序集 (dll) 名称,后跟点号 (.) 和您的 Visual Studio 项目内的类别名称。 在此示例中,程序集名称为 ExternalApplicationAdapter,类名称为 AppAdapter,该类名是创建应用程序适配器时的默认类名。

  1. 单击“保存”来保存修改。

步骤 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 窗体托管控件

另请参阅

使用 UII 适配器与外部和 Web 应用程序互动

Unified Service Desk 2.0

© 2017 Microsoft。 保留所有权利。 版权