演练:创建 UII Windows 窗体托管控件

 

发布日期: 2016年11月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2013,Dynamics CRM 2015,Dynamics CRM 2016

本演练演示如何构建与 Unified Service Desk 和独立或 Web 外部应用程序进行交互的 Windows FormsUser Interface Integration (UII) 托管控件。

在本演练中,您将:

  • 创建 User Interface Integration (UII) Windows 窗体托管控件、示例 UII Windows 窗体托管控件,当您搜索联系人时,该控件将显示该联系人的名字、姓氏、街道地址和 ID,单击联系人姓名会在 Unified Service Desk 会话中打开该联系人。 这些值从 Unified Service Desk 上下文中显示。

  • 从在我们创建的 UII Windows 窗体托管控件的 Unified Service Desk 中托管的外部应用程序和 Web 应用程序中更改名字、姓氏或街道地址值。 在前面的演练中创建了外部和 Web 应用程序:演练:创建 UII 应用程序适配器演练:创建 UII Web 应用程序适配器

  • 通知对 Unified Service Desk 上下文进行的更改以更新那里的值。

本主题内容

必备条件

步骤 1:使用 Visual Studio 创建 UII Windows Forms 托管控件

步骤 2:在统一服务控制台中定义该托管控件

步骤 3:在统一服务台中为外部应用程序和 Web 应用程序托管控件定义 UII 操作

测试托管控件

必备条件

步骤 1:使用 Visual Studio 创建 UII Windows Forms 托管控件

  1. 启动 Visual Studio 并创建一个新项目。

  2. 在“新项目”对话框中:

    1. 从已安装的模板列表中,展开“Visual C#”,然后选择“Dynamics 365 SDK 模板” > “Unified Service Desk” > “UII Windows 窗体托管控件”。

    2. 指定项目的名称和位置,然后单击“确定”以创建新项目。

      创建 UII Windows 窗体托管控件

  3. 在“解决方案资源管理器” 窗格中,右键单击 UiiWinformControl.cs 文件,然后选择“打开”显示 Windows Forms 设计器。

  4. 在设计器中,从“工具箱”添加以下控件:

    控件类型

    客户

    文本

    标签

    lblFirstName

    标签

    lblLastName

    标签

    lblAddress

    街道地址

    标签

    lblID

    ID

    文本框

    txtFirstName

    文本框

    txtLastName

    文本框

    txtAddress

    文本框

    txtID

    按钮

    btnUpdate

    更新托管应用程序中的值

    按钮

    btnUpdateContext

    更新上下文

    控件就应该以这种方式在设计其中布设。

    UII 托管控件中的控件布局

  5. 双击“更新托管应用程序中的值” 按钮 (btnUpdate),为此按钮的 click 事件添加代码,并且添加以下代码。

    private void btnUpdate_Click(object sender, EventArgs e)
    {
       // This is how you fire an action to other hosted applications. 
       // The DoAction() code in the other application or application adapter 
       // will be called.
       FireRequestAction(new RequestActionEventArgs("QsExternalApp", "UpdateFirstName", txtFirstName.Text)); // For the external application
       FireRequestAction(new RequestActionEventArgs("QsExternalApp", "UpdateLastName", txtLastName.Text)); // For the external application
       FireRequestAction(new RequestActionEventArgs("QsExternalApp", "UpdateAddress", txtAddress.Text)); // For the external application
    
       FireRequestAction(new RequestActionEventArgs("QsWebApplication", "UpdateFirstName", txtFirstName.Text)); // For the external web application
       FireRequestAction(new RequestActionEventArgs("QsWebApplication", "UpdateLastName", txtLastName.Text)); // For the external web application
       FireRequestAction(new RequestActionEventArgs("QsWebApplication", "UpdateAddress", txtAddress.Text)); // For the external web application
    }
    
  6. 前往设计视图,双击 “更新上下文”按钮 (btnUpdateContext) 为此按钮的单击事件添加代码。 添加以下代码。

    private void btnUpdateContext_Click(object sender, EventArgs e)
    {
       // Get the current context and create a new context object from it.
       string temp = Context.GetContext();
       Context updatedContext = new Context(temp);
    
       // Update the new context with the changed information.
       updatedContext["firstname"] = txtFirstName.Text;
       updatedContext["lastname"] = txtLastName.Text;
       updatedContext["address1_line1"] = txtAddress.Text;
    
       // Notify Unified Service Desk of this new context information
       FireChangeContext(new ContextEventArgs(updatedContext));
    
       // Notify this UII hosted control about the change
       NotifyContextChange(updatedContext);
    }
    
  7. 在同一文件 (UiiWinformControl.cs) 中,把 NotifyContextChange 方法的替代定义更新为如下内容:

    public override void NotifyContextChange(Context context)
    {
       // Populating text fields from context information.
       txtFirstName.Text = context["firstname"];
       txtLastName.Text = context["lastname"];
       txtAddress.Text = context["address1_line1"];
       txtID.Text = context["CustomerID"];
    
       base.NotifyContextChange(context);
    }
    
  8. 保存您的项目,并生成项目(“生成”>“生成解决方案”)。 项目构建成功后,在您的 /bin/debug 项目文件夹中生成一个和您的项目名称 (此实例中项目名为 UIIWindowsFormHostedConrol1.dll) 相同的程序集 (.dll 文件)。

  9. 复制此文件到您的 Unified Service Desk 客户端应用程序安装目录 (通常为 C:\Program Files\Microsoft Dynamics CRM USD\USD)。 此文件是进行测试所必需的,并最终从您的客户端应用程序使用此控件。

    提示

    注意在 UiiWinformControl.cs 文件夹中为您构建 UII 托管控件所使用的类的名称。 此实例中类名为 UiiWinformControl。 您将在下一步中需要使用此信息。

步骤 2:在统一服务控制台中定义该托管控件

为了把 UII Windows Forms 托管控件托管在 Unified Service Desk,您必须定义项并配置该控件。

  1. 登录到 Microsoft Dynamics 365。

  2. 在导航栏上,选择”Microsoft Dynamics 365“ > “设置” > “统一服务台”。

  3. 在“统一服务台”页面,单击“托管控件”。

  4. 在“托管控件”页面上,单击“新建”。

  5. 在“新托管控件”页面上,指定以下值:

    字段

    客户

    UIIWindowsFormHostedControl

    显示名称

    UII Windows 窗体托管控件示例

    USD 组件类型

    CCA 托管应用程序

    托管应用程序

    托管控件

    应用程序是全局的

    选定

    显示组

    MainPanel

    适配器

    不使用适配器

    程序集 URI

    UIIWindowsFormHostedControl1

    程序集类型

    UIIWindowsFormHostedControl1.UiiWinformControl

备注

“程序集 URI”是指您的程序集名称,而“程序集类型”是指您的程序集名称,后跟点号 (.) 和您的 Visual Studio 项目内的类别名称。 在此示例中,程序集名称为UIIWindowsFormHostedControl1,类名称为 UiiWinformControl,是在创建 UII Windows Forms 托管控件时默认的类名称。

![Unified Service Desk 中的新增托管控件](images/Dn864987.5faff46a-65d4-47ca-92dc-90366bab8964(USD.2).jpeg "Unified Service Desk 中的新增托管控件")
  1. 单击“保存”创建托管控件。

步骤 3:在统一服务台中为外部应用程序和 Web 应用程序托管控件定义 UII 操作

外部独立和 Web 应用程序适配器具有以下三个操作:UpdateFirstNameUpdateLastNameUpdateAddress。 这些外部独立和 Web 应用程序的适配器和托管控件是在前面的适配器演练 (演练:创建 UII 应用程序适配器演练:创建 UII Web 应用程序适配器) 中创建的。

若要从 UII Windows 窗体托管控件内更新外部应用程序中的信息,您将需要在每个外部应用程序的适配器中定义与先前定义的名称相同的三个 UII 操作。 在之前的适配器演练 (演练:创建 UII 应用程序适配器演练:创建 UII Web 应用程序适配器) 中,您在 Unified Service Desk 中定义了两个托管控件,来显示 Unified Service Desk:QsExternalAppQsExternalWebApplication 中的外部应用程序。 在此步骤中,您将为每个托管控件添加三个 UII 操作。

重要

如果您已经在步骤 3 中按照 演练: 创建 UII WPF 托管控件 添加了 UII 操作,则不必再次执行此步骤。 您可以继续到下一节测试您的托管控件。

  1. 登录到 Microsoft Dynamics 365。

  2. 在导航栏上,选择”Microsoft Dynamics 365“ >“设置” >“Unified Service Desk”。

  3. 在“Unified Service Desk”页面上,选择“托管控件”。

  4. 托管控件 页面,搜索、打开并编辑 QsExternalApp

  5. 在“QsExternalApp”页面单击托管控件旁的向下箭头,然后单击“UII 操作”。

  6. 在下一页上,单击“添加新 UII 操作”。

  7. 键入名称作为 UpdateFirstName,然后单击“保存并关闭”。 此操作将添加上一页中的操作。

  8. 用同样的方法添加以下两个操作:UpdateLastNameUpdateAddressQsExternalApp 托管控件将能够使用全部的三个操作。

    托管控件的可用 UII 操作

  9. 按照第 4 — 8 步创建三个与 QsExternalWebApp 托管控件同名的 UII 操作。

测试托管控件

在测试 UII Windows Forms 托管控件之前,请确保您的示例 Web 应用程序正在运行,从而使其在 Unified Service Desk中呈现。

  1. 运行 Unified Service Desk 客户端连接到 Dynamics 365 服务器。

  2. 成功登录后,您会看到三个托管控件:示例 UII Windows Forms 托管控件示例外部 Web 应用程序示例外部应用程序

    可用的示例托管控件

  3. 选择“搜索”,然后选择“联系人”。 选择任何联系人以在会话中显示该联系人详细信息。 如下图所示,这还会在全部的三个示例控件中显示当前所显示联系人记录的名字、姓氏、街道地址和 ID。

    USD 中带联系人信息的控件示例

  4. 更改“示例 UII Windows Forms 托管控件”中的值,然后单击“更新托管应用程序中的值”,更新另外两个外部应用程序中的值。

    使用更新值的控件示例

  5. 在“示例 UII Windows Forms 托管控件” 中,单击“更新上下文” 更新 Unified Service Desk 中的上下文信息。

    USD 上下文中更新的值

另请参阅

UII 托管控件与统一服务台搭配使用
演练: 创建 UII WPF 托管控件

Unified Service Desk 2.0

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