发布日期: 一月 1, 2008
您可以通过编辑站点地图来自定义 Microsoft Dynamics CRM 中的导航窗格的内容。站点地图是一个 XML 文档,如果您以前从未编辑过 XML 文档,使用具有架构验证功能的工具可以大大简化这种文档的编辑。
可以执行的某些自定义操作包括:
更改导航窗格中的区域的名称
更改导航窗格中的区域的顺序
重新组织或添加新区域
更改区域中呈现的链接的顺序
更改区域中的链接的名称
将区域中的链接分组
更改用户可以从中进行选择的工作区配置文件选项
执行这些自定义操作的要求是,您具有导出和导入自定义项所必需的权限。
若要了解与此任务相关的其他信息,请参阅 Microsoft Dynamics CRM SDK。
|
|
站点地图 |
|
|
从错误中恢复 |
|
|
站点地图架构概览 |
|
|
编辑站点地图 |
|
|
使用架构验证 |
|
|
任务 |
|
|
摘要 |
站点地图是 customizations.xml 文档的一部分,该文档是导出自定义项的结果。
导出站点地图
在导航窗格中,依次单击“设置”、“自定义”,然后单击“导出自定义项”。
在“查看”下拉框中,选择“客户端扩展”。
选择“站点地图”。
单击“导出所选自定义项”,然后单击“确定”,以关闭有关可以导出的信息的通知。
在“文件下载”对话框中,单击“保存”,并将 customizations.zip 保存到所选的位置。
单击“结束”关闭“下载完毕”对话框。
修改完站点地图的 XML 内容之后,可以导入包含站点地图的已修改的 customizations.xml,以应用您所做的更改。
导入站点地图
在导航窗格中,依次单击“设置”、“自定义”,然后单击“导入自定义项”。
单击“浏览”以查找包含从 Microsoft Dynamics CRM 中导出的自定义项及设置的 XML 文件或压缩 (.zip) 文件。
在“选择文件”对话框中,双击该文件,或者选择该文件,然后单击“打开” 。
单击“上载”。
文件处理完毕后,如果无法成功处理站点地图,则会显示一个提示错误消息的对话框。
如果您导入的 customizations.xml 文件包含不正确的站点地图,Microsoft Dynamics CRM 将返回到默认的站点地图,并显示一条消息,表明自定义的站点地图中有错误。在这种情况下,您应当导航到“导入自定义项”区域,导入包含正确的站点地图的备用 customizations.xml 文件。
错误会导致导航窗格无法正常呈现信息,甚至无法导航到“导入自定义项”区域来解决这个问题 - 但发生这种情况的可能性非常小。了解如何才能直接访问“导入自定义项” ,可以为预防这种情况做好准备。
若要直接访问“导入自定义项”区域,请在 Internet Explorer 中的地址字段中键入以下 URL:
http://<CRM_Servername>/<Organization_name>/tools/systemcustomization/ImportCustomizations/importCustomizations.aspx
找到导出的 XML 文件的备份副本。上载并导入该备份文件,以返回到原始的正常状态。然后,即可重新使用导航窗格。
重要提示
通常最好的做法是,备份一个包含有效站点地图的已知正常的 customizations.xml 文件。导出的 customizations.zip 文件具有这样的特点;请确保该文件便于找到。
在可以编辑站点地图之前,必须了解 XML 的结构。通过在 Internet Explorer 中打开 customizations.xml,可以查看 XML 内容的结构。 此文件 代表包含默认站点地图的 customizations.xml。您可能希望查看此文件,以便更好地了解站点地图架构。
如同任何有效的 XML 文档一样,站点地图必须符合一定的结构。站点地图使用 XML 架构,该架构是一个定义结构的 XML 文件并采用文件扩展名 .xsd。站点地图架构是在名为 SiteMapType.xsd 的文件中定义的。
在 Microsoft Visual Studio 中查看时,该架构的图形视图外观如下所示:
站点地图中有三大主要元素。
区域 | 区域元素控制导航窗格底部显示的主要部分。默认的区域是工作区、销售、市场营销、服务、设置和资源中心。 |
组 | 组元素是区域元素的子元素。组元素为顶部的子区域元素提供分组依据。默认情况下,大多数区域并不使用组。唯一的例外是“工作区”区域。“工作区”区域有六个默认组:我的工作、客户、销售、市场营销、服务、计划。 “工作区”区域比较独特的原因还包括:此处呈现的组可配置为可选组。只要单击“工作区”区域底部的个性化工作区链接,用户就可以选择在“工作区”区域中显示哪些组。 |
子区域 | 子区域元素提供可单击的链接,这些链接可以更改应用程序主窗格中显示的内容。默认情况下,导航窗格中的大部分链接都指向 Microsoft Dynamics CRM 应用程序内部的页面。唯一的例外是资源中心,它创建指向 Internet 网页的链接。 |
还有五个次要元素:
“标题(多个)”和“标题” | 使用“标题”和“标题”元素可以控制以多种语言添加的本地化文本“标题”。“标题”元素只包含一个或多个“标题”元素。 如果您要重命名现有的“区域”、“组”或“子区域”,请将您的“标题”定义为所需的语言。使用同样的方法向新元素中添加标题。语言是使用四位数的区域设置 ID (LCID) 属性来标识的。例如,美国英语的 LCID 是 1033。您可以在区域设置 ID (LCID) 表中找到其他语言的 LCID 值。 注意由于 Microsoft Dynamics CRM 支持多语言用户界面,因此为区域、组和子区域显示的标题文本可能需要为不同的用户呈现为不同的语言。Microsoft Dynamics CRM 的多语言功能由 ResourceId 属性所指定的内部资源在“区域”、“组”和“子区域”元素中进行管理。因此,默认的站点地图并不使用任何“标题”或“标题”元素,而且您不应为自定义项使用 ResourceId 属性。 |
“说明(多个)”和“说明” | “说明”可以添加到区域、组和子区域中。“说明(多个)”则只显示在 Microsoft Dynamics CRM for Microsoft Office Outlook 中。 “说明”元素包含一个或多个“说明”元素。每个“说明”均包含为该说明分派 LCID 和文本的属性。 |
权限 | “权限”元素是“子区域”元素的子元素。此元素定义了查看子区域所必需的特定权限。如果您要创建一个子区域,并且它所指向的页面必须具有特定权限才能查看,则可能需要使用此属性。 权限定义为某个实体的名称和代表操作的一系列逗号分隔值。 以下示例是一个权限。“权限”元素可以防止用户(没有读、写和创建知识库文章的权限)查看子区域。
<SubArea Id="nav_managekb" ResourceId="Homepage_KBManager"
Icon="/_imgs/ico_18_126.gif" Url="/cs/home_managekb.aspx"
Client="Web">
<Privilege Entity="kbarticle" Privilege="Read,Write,Create" />
</SubArea>
|
导出后的站点地图是一个名为 customizations.zip 的压缩文件。从该文件中可以提取出包含站点地图的 customizations.xml 文件。
用于站点地图的有效元素和属性已经完整记录在 Microsoft Dynamics CRM SDK 中。请参阅站点地图 (Microsoft Dynamics CRM SDK)
由于 XML 文件是简单文本,因此可以使用各种文本编辑程序来编辑这些文件。熟悉编辑 XML 文件的许多用户都使用记事本。
如果您不熟悉如何编辑符合特定架构的 XML 文件,则可能希望使用具有架构验证功能的 XML 编辑工具,来帮助您避免出错。支持架构验证功能的两个免费的应用程序是 Microsoft Visual Web Developer 2008 Express Edition 和 XML Notepad 2007。
Microsoft Visual Web Developer 2008 Express Edition 具有 Microsoft Visual Studio 的多项功能,还包括用于开发 Web 应用程序的许多功能。该应用程序很大,可能需要花费一个小时来下载和安装。它使用 IntelliSense(可在用户键入时提供指导信息)以文本视图方式提供架构验证。出现的错误或缺少的必需元素均以下划线标出。
XML Notepad 2007 是一个用于编辑 XML 文件的较小的应用程序。它为 XML 文档提供由节点构成的树状视图界面。
请参阅本文档底部的“相关链接”,可以找到下载这些应用程序的链接。
注意尽管“导入自定义项”功能的确可以对修改的自定义项文件执行验证,但这种验证还是可能无法找到每个错误。一个错误就可能中断 Microsoft Dynamics CRM导航窗格。如果发生这种情况,您需要使用“从错误中恢复”中描述的步骤返回到起始点。如果您不熟悉如何编辑必须符合特定架构的 XML 文档,我们强烈建议您使用支持架构验证功能的应用程序。
还有一个最普遍的做法是,将现有元素作为获得正确结构的某个起始点进行复制和粘贴,然后进行必要的更改以确保符合架构要求和获得所需的结果。
站点地图只是 customizations.xml 文件中可以导出的项目之一。若要使用架构验证功能来编辑 customizations.xml 文件,你需要一个代表 customizations.xml 文件中所有可能内容的架构。customizations.xml 文件的 XML 架构定义 (XSD) 是 customizations.xsd 文件。customizations.xsd 架构包含对 SiteMapType.xsd 文件和 isv.config.xsd 文件的引用。
这样可以使 customizations.xsd 文件为从 Microsoft Dynamics CRM 中导出的所有自定义项提供一个架构。但是,customizations.xsd 在可以用于 XML 验证之前,其对 _root 文件夹中的 SiteMapType.xsd 的引用方式会带来几个附加的操作步骤。
为方便起见,本文提供了 customizations.xsd 的一个修改过的版本,其名称为ISVConfigAndSiteMap.xsd。ISVConfigAndSiteMap.xsd 文件只是将 customizations.xsd、SiteMapType.xsd 和 Isv.config.xsd 文件整合到一个文件中。它还去除了对 Microsoft Dynamics CRM 已弃用的站点地图元素属性的某些引用。
当使用 Microsoft Visual Web Developer 2008 Express Edition(或其他 Microsoft Visual Studio 版本)时,可以将导出的 customizations.xml 文件链接到 ISVConfigAndSiteMap.xsd 以获取 IntelliSense,它可以帮助您了解有效的架构元素和避免出错。这不是必需的操作,但的确可以简化修改 XML 的工作。
若要开始编辑文件,请执行以下操作:
导出站点地图,从 customizations.zip 文件中提取 customizations.xml 文件。
重要提示切记请将 customizations.zip 文件保留为备份文件!
下载此 ISVConfigAndSiteMap.zip 文件,提取 ISVConfigAndSiteMap.xsd 文件并将其放在 customizations.xml 文件所在的文件夹中。
以下步骤介绍了使用架构验证功能编辑 XML 文档的过程。在此示例的开始,首先将新的“区域”元素添加到站点地图,介绍 Microsoft Visual Web Developer 2008 Express Edition 如何使用 IntelliSense 在用户键入时提供架构信息。
打开 Microsoft Visual Web Developer 2008 Express Edition ,从“文件”菜单中选择“打开文件...”。
在“打开文件”对话框中,选择“customizations.xml”,然后单击“打开”。
在“查看”菜单上,选择“属性窗口”。
在“属性”区域,选择“架构”框,键入 ISVConfigAndSiteMap.xsd,然后按“输入”。
在 customizations.xml 中找到“资源中心”区域,将光标放在“区域”结束标记“</Area>”后面。
键入“<” 符号以使用 IntelliSense 来查看文档中此区域的有效选项
应当查看以下内容:
区域是文档此部分中唯一有效的元素。
键入 A 以选择“区域”元素,然后按 输入
按空格键添加空格。
应当看到区域元素的有效属性列表
键入 I 并按下箭头键,以选择 Id,然后按 输入。您现在已经为输入属性值做好准备。
Id 属性需要一个独特的字符串值。
若要了解架构错误,请将光标放在有红色下划线的文本上方。
这两种错误都表示区域标记未关闭。提供了区域元素的标记和任何所需标记之后,错误信息将消失。例如:
<Area Id="my_unique_ID_value"></Area>
继续定义您的元素。使用 SiteMap (Microsoft Dynamics CRM SDK) 中的信息和 IntelliSense 中的架构验证功能来定义相关元素的外观和行为。
完成时保存您所做的更改,然后导入 customizations.xml 文件。
以下步骤介绍了使用架构验证功能编辑 XML 文档的过程。在此示例的开始,首先将区域元素添加到站点地图中,介绍 XML Notepad 2007 如何使用树状视图和图形用户界面 (GUI) 来提供编辑 XML 文档的结构。
打开 XML Notepad 2007,从“文件”菜单中选择“打开”。
在“打开”对话框中,选择“customizations.xml”,然后单击“打开”。
在“查看”菜单上,选择“架构…”。
在“XML 架构”对话框中,从“文件”菜单上选择“添加架构…”。
在“打开”对话框中,浏览到“ISVConfigAndSiteMap.xsd”并选择该文件。然后单击“打开”。
单击“确定”关闭“XML 架构”对话框。
在“树视图”选项卡中,展开 SiteMap 节点,然后选择最后一个区域元素。
右键单击“区域”节点,然后从上下文菜单中选择“元素”>“晚于”。
框中将显示所有有效的元素名称。选择“区域”元素。
注意“错误列表”区域会提供说明内容“缺少必需的 Id 属性”。这表明,有效的区域元素必须具有 Id 属性。
若要添加属性,请右键单击您所创建的“区域”元素,然后从上下文菜单中选择“属性”>“子级”。
从现有属性列表中选择“Id”
注意列表中最后四个项目不是有效属性。编辑 站点地图 时,类型、nil、schemaLocation 和 noNamespaceSchemaLocation 不相关。这些选项是由 XML Notepad 2007 提供的。
“错误列表” 区域提供说明内容“Id 属性无效 – 根据数据类型 CRM_Identifier_SiteMap 判定该值无效 – 模式约束失败。”这表明,有效的区域元素 Id 属性必须具有值。
为区域 Id 属性值键入一个唯一值。
继续配置必要的元素和属性,以实现您的目标。使用架构验证功能所提供的选项以及 SiteMap (Microsoft Dynamics CRM SDK) 中的信息。
保存您所做的更改,然后导入 customizations.xml 文件以查看更改的内容。
可以通过配置站点地图来执行的任务有如下几项
如果您要通过“服务”更改“服务”区域的名称以支持英语:
请将:
<Area Id="CS" ResourceId="Area_Service" Icon="/_imgs/services_24x24.gif"
DescriptionResourceId="Customer_Service_Description">
<Group Id="CS">
更改为:
<Area Id="CS" ResourceId="Area_Service" Icon="/_imgs/services_24x24.gif"
DescriptionResourceId="Customer_Service_Description">
<Titles>
<Title LCID="1033" Title="Support"/>
</Titles>
<Group Id="CS">
您无需移除 ResourceId 属性。添加标题元素将覆盖此属性。
这只是控制站点地图中的区域在 customizations.xml 文件中排列顺序的一种方式。
可以复制子区域元素并将其粘贴到不同的区域以实现不同的组织方式。
创建新区域通常就是复制现有区域,然后执行相应修改。
重要提示请注意,每个主要元素都必须具有一个唯一的 Id 属性值。从某个区域复制一个子区域并将其粘贴到另一个区域时,如果仍然存在其他 子区域,则必须为复制的子区域赋予一个不同的唯一 Id 属性值。
您可以更改子区域元素在区域中的列出顺序。
子区域所创建的大多数链接实际上都是特定实体的视图,例如“潜在顾客”或“商机”。若要更改这些链接的名称,请更改相关实体的显示名称。由于子区域通过实体属性与特定实体相关联,这些更改将会反映在导航窗格中。有关更改实体名称的信息,请参阅 指定术语:使用贵组织的命名法 。
但是,对于与特定实体不关联的子区域,您可以更改其名称。例如,如果您要将“设置”区域中的“产品目录”区域的名称更改为“产品列表”,请添加如下所示的标题元素。
<SubArea Id="nav_productcatalog" ResourceId="Homepage_ProductCatalog"
DescriptionResourceId="ProductCatalog_SubArea_Description"
Icon="/_imgs/ico_18_productcatalog.gif"
Url="/tools/productcatalog/productcatalog.aspx"
AvailableOffline="false">
<Titles>
<Title LCID="1033" Title="Product List"/>
</Titles>
<Privilege Entity="product" Privilege="Read" />
提示根据用于编辑 XML 文件的应用程序,通常可以先按 Ctrl+F 在文件中找到特定的字词,由此快速找到 XML 文件的已知区域。
组为带有可折叠行的子区域提供了一种分组方法。默认情况下,只有“工作区”区域才使用组。但任何区域都可以使用组。不过,您必须确保将区域中的 ShowGroups 属性设为“true”才能使组显示出来。另外,IsProfile 属性只能应用于“工作区”区域中的组。
例如,若要将“服务”区域中的子区域元素分成两组,需要将:
<Area Id="CS" ResourceId="Area_Service" Icon="/_imgs/services_24x24.gif"
DescriptionResourceId="Customer_Service_Description">
<Group Id="CS">
<SubArea Id="nav_apptbook" ResourceId="Homepage_AppointmentBook"
DescriptionResourceId="AppointmentBook_SubArea_Description"
Icon="/_imgs/ico_18_servicecal.gif" Url="/sm/home_apptbook.aspx"
AvailableOffline="false">
<Privilege Entity="activitypointer" Privilege="Read" />
<Privilege Entity="service" Privilege="Read" />
</SubArea>
<SubArea Id="nav_cases" Entity="incident"
DescriptionResourceId="Cases_SubArea_Description" Url="/CS/home_cases.aspx" />
<SubArea Id="nav_accts" Entity="account" DescriptionResourceId="Account_SubArea_Description" />
<SubArea Id="nav_contacts" Entity="contact" DescriptionResourceId="Contact_SubArea_Description" />
<SubArea Id="nav_managekb" ResourceId="Homepage_KBManager"
DescriptionResourceId="KBManager_SubArea_Description" Icon="/_imgs/ico_18_126.gif"
Url="/cs/home_managekb.aspx" AvailableOffline="false">
<Privilege Entity="kbarticle" Privilege="Read,Write,Create" />
</SubArea>
<SubArea Id="nav_contracts" Entity="contract"
DescriptionResourceId="Contract_SubArea_Description" />
<SubArea Id="nav_products" Entity="product" DescriptionResourceId="Product_SubArea_Description" />
<SubArea Id="nav_services" Entity="service" DescriptionResourceId="Service_SubArea_Description" />
</Group>
</Area>
更改为:
<Area Id="CS" ResourceId="Area_Service" Icon="/_imgs/services_24x24.gif" ShowGroups="true"
DescriptionResourceId="Customer_Service_Description">
<Group Id="CS">
<Titles>
<Title LCID="1033" Title="Group 1"/>
</Titles>
<SubArea Id="nav_apptbook" ResourceId="Homepage_AppointmentBook"
DescriptionResourceId="AppointmentBook_SubArea_Description"
Icon="/_imgs/ico_18_servicecal.gif" Url="/sm/home_apptbook.aspx"
AvailableOffline="false">
<Privilege Entity="activitypointer" Privilege="Read" />
<Privilege Entity="service" Privilege="Read" />
</SubArea>
<SubArea Id="nav_cases" Entity="incident"
DescriptionResourceId="Cases_SubArea_Description" Url="/CS/home_cases.aspx" />
<SubArea Id="nav_accts" Entity="account" DescriptionResourceId="Account_SubArea_Description" />
<SubArea Id="nav_contacts" Entity="contact" DescriptionResourceId="Contact_SubArea_Description" />
</Group>
<Group Id="CS_New_Group">
<Titles>
<Title LCID="1033" Title="Group 2"/>
</Titles>
<SubArea Id="nav_managekb" ResourceId="Homepage_KBManager"
DescriptionResourceId="KBManager_SubArea_Description" Icon="/_imgs/ico_18_126.gif"
Url="/cs/home_managekb.aspx" AvailableOffline="false">
<Privilege Entity="kbarticle" Privilege="Read,Write,Create" />
</SubArea>
<SubArea Id="nav_contracts" Entity="contract"
DescriptionResourceId="Contract_SubArea_Description" />
<SubArea Id="nav_products" Entity="product" DescriptionResourceId="Product_SubArea_Description" />
<SubArea Id="nav_services" Entity="service" DescriptionResourceId="Service_SubArea_Description" />
</Group>
</Area>
其中的更改包括:
区域元素包含属性 ShowGroups="true"
两个组现均在标题中包含标题。
新组具有唯一的 Id 属性值。
某些子区域已移动到新组中。
将组添加到“工作区”区域时,可以将 IsProfile 属性设为“true”。这样可以使用户选择他们是否希望该组在其“工作区”区域中以个人所选的方式显示。
本文介绍了站点地图以及如何使用站点地图来自定义 Microsoft Dynamics CRM 中的导航窗格。如果您以前没有编辑过 XML 配置文件,那么既使用可提供架构验证功能的恰当工具又充分了解架构结构, 可帮助您在首次尝试编辑 XML 时便获得成功。