演练:创建 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 操作
测试托管控件
必备条件
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 Package Manager
Visual Studio 包含 UII Windows 窗体托管控件项目模板的 Microsoft Dynamics 365 SDK 模板。 您可以使用下列方式之一获取模板:
下载 CRM SDK 模板。 双击 CRMSDKTemplates.vsix 文件在 Visual Studio 中安装模板。
下载并提取 CRM SDK 包。 转至 SDK\Templates 文件夹。 双击 CRMSDKTemplates.vsix 文件在 Visual Studio 中安装模板。
您应当完成 演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器,确保利用各自的适配器设置外部应用程序和 Web 应用程序,以便与那些应用程序进行交互。
步骤 1:使用 Visual Studio 创建 UII Windows Forms 托管控件
启动 Visual Studio 并创建一个新项目。
在“新项目”对话框中:
从已安装的模板列表中,展开“Visual C#”,然后选择“Dynamics 365 SDK 模板” > “Unified Service Desk” > “UII Windows 窗体托管控件”。
指定项目的名称和位置,然后单击“确定”以创建新项目。
在“解决方案资源管理器” 窗格中,右键单击 UiiWinformControl.cs 文件,然后选择“打开”显示 Windows Forms 设计器。
在设计器中,从“工具箱”添加以下控件:
控件类型
客户
文本
标签
lblFirstName
名
标签
lblLastName
姓
标签
lblAddress
街道地址
标签
lblID
ID
文本框
txtFirstName
文本框
txtLastName
文本框
txtAddress
文本框
txtID
按钮
btnUpdate
更新托管应用程序中的值
按钮
btnUpdateContext
更新上下文
控件就应该以这种方式在设计其中布设。
双击“更新托管应用程序中的值” 按钮 (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 }
前往设计视图,双击 “更新上下文”按钮 (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); }
在同一文件 (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); }
保存您的项目,并生成项目(“生成”>“生成解决方案”)。 项目构建成功后,在您的 /bin/debug 项目文件夹中生成一个和您的项目名称 (此实例中项目名为 UIIWindowsFormHostedConrol1.dll) 相同的程序集 (.dll 文件)。
复制此文件到您的 Unified Service Desk 客户端应用程序安装目录 (通常为 C:\Program Files\Microsoft Dynamics CRM USD\USD)。 此文件是进行测试所必需的,并最终从您的客户端应用程序使用此控件。
提示
注意在 UiiWinformControl.cs 文件夹中为您构建 UII 托管控件所使用的类的名称。 此实例中类名为 UiiWinformControl。 您将在下一步中需要使用此信息。
步骤 2:在统一服务控制台中定义该托管控件
为了把 UII Windows Forms 托管控件托管在 Unified Service Desk,您必须定义项并配置该控件。
登录到 Microsoft Dynamics 365。
在导航栏上,选择”Microsoft Dynamics 365“ > “设置” > “统一服务台”。
在“统一服务台”页面,单击“托管控件”。
在“托管控件”页面上,单击“新建”。
在“新托管控件”页面上,指定以下值:
字段
值
客户
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 中的新增托管控件")
- 单击“保存”创建托管控件。
步骤 3:在统一服务台中为外部应用程序和 Web 应用程序托管控件定义 UII 操作
外部独立和 Web 应用程序适配器具有以下三个操作:UpdateFirstName、UpdateLastName 和 UpdateAddress。 这些外部独立和 Web 应用程序的适配器和托管控件是在前面的适配器演练 (演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器) 中创建的。
若要从 UII Windows 窗体托管控件内更新外部应用程序中的信息,您将需要在每个外部应用程序的适配器中定义与先前定义的名称相同的三个 UII 操作。 在之前的适配器演练 (演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器) 中,您在 Unified Service Desk 中定义了两个托管控件,来显示 Unified Service Desk:QsExternalApp 和 QsExternalWebApplication 中的外部应用程序。 在此步骤中,您将为每个托管控件添加三个 UII 操作。
重要
如果您已经在步骤 3 中按照 演练: 创建 UII WPF 托管控件 添加了 UII 操作,则不必再次执行此步骤。 您可以继续到下一节测试您的托管控件。
登录到 Microsoft Dynamics 365。
在导航栏上,选择”Microsoft Dynamics 365“ >“设置” >“Unified Service Desk”。
在“Unified Service Desk”页面上,选择“托管控件”。
在 托管控件 页面,搜索、打开并编辑 QsExternalApp。
在“QsExternalApp”页面单击托管控件旁的向下箭头,然后单击“UII 操作”。
在下一页上,单击“添加新 UII 操作”。
键入名称作为 UpdateFirstName,然后单击“保存并关闭”。 此操作将添加上一页中的操作。
用同样的方法添加以下两个操作:UpdateLastName 和 UpdateAddress。QsExternalApp 托管控件将能够使用全部的三个操作。
按照第 4 — 8 步创建三个与 QsExternalWebApp 托管控件同名的 UII 操作。
测试托管控件
在测试 UII Windows Forms 托管控件之前,请确保您的示例 Web 应用程序正在运行,从而使其在 Unified Service Desk中呈现。
运行 Unified Service Desk 客户端连接到 Dynamics 365 服务器。
成功登录后,您会看到三个托管控件:示例 UII Windows Forms 托管控件、示例外部 Web 应用程序和 示例外部应用程序。
选择“搜索”,然后选择“联系人”。 选择任何联系人以在会话中显示该联系人详细信息。 如下图所示,这还会在全部的三个示例控件中显示当前所显示联系人记录的名字、姓氏、街道地址和 ID。
更改“示例 UII Windows Forms 托管控件”中的值,然后单击“更新托管应用程序中的值”,更新另外两个外部应用程序中的值。
在“示例 UII Windows Forms 托管控件” 中,单击“更新上下文” 更新 Unified Service Desk 中的上下文信息。
另请参阅
UII 托管控件与统一服务台搭配使用
演练: 创建 UII WPF 托管控件
Unified Service Desk 2.0
© 2017 Microsoft。 保留所有权利。 版权