在 Dynamics 365 中处理知识文章

 

发布日期: 2017年1月

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

Microsoft Dynamics 365 中的新知识文章使您能够创建丰富的知识文章以及版本控制和翻译支持。 当您创建并发布知识文章时,它将在 Dynamics 365 实例中变得可供用户使用,因此用户可以使用文章中的信息高效地为客户提供服务。 使用 KnowledgeArticle 实体可在 Dynamics 365 中本机存储和管理知识。 如果您使用的是 Parature 中的知识,请使用 KnowledgeBaseRecord 实体以编程方式使用 Parature 中的知识库文章。

本主题提供有关使用新本机 Dynamics 365 知识管理功能的信息。 如果您使用 Parature 作为 Dynamics 365 中的知识源,请参阅使用 Dynamics 365 中的 Parature 知识

备注

如果您使用的是早期知识库文章(KBArticle)实体模型,请参阅本主题中后面的 处理早期 Dynamics 365 知识库文章。

不能以编程方式在 Dynamics 365 实例中为实体启用知识库管理功能;只能使用 Dynamics 365 Web 客户端来实现该功能。详细信息:帮助和培训:在 CRM 中设置知识管理

本主题内容

创建知识文章

创建知识文章的主要和次要版本

创建知识文章翻译

知识文章生命周期:更改知识文章的状态

将知识文章记录与 Dynamics 365 实体实例相关联

使知识文章视图计数递增

使用全文搜索来搜索知识文章

处理早期 Dynamics 365 知识库文章

创建知识文章

当您创建知识文章记录时,Dynamics 365 在内部为该记录创建根文章。 根文章充当您创建的主要知识文章以及您未来可能创建的所有文章版本和翻译的容器。 下图描述 KnowledgeArticle 实体的实体模型。

KnowledgeArticle 实体模型

当您创建知识文章记录时,它是在 Draft 状态下创建的。 使用新 KnowledgeArticle 实体,可以通过按 HTML 格式指定内容和格式来创建文章,这是与使用旧的 KbArticle 实体相比较而言的,在旧实体中您必须将其与描述文章的节和格式的模板相关联。 您可以在以编程方式创建文章记录时为 KnowledgeArticle.ArticlePublicNumber 属性指定您自己的值;否则,该值会根据您在 Web 客户端上的 Dynamics 365 设置区域中指定的格式自动生成。KnowledgeArticle.ArticlePublicNumber 属性存储向引用和查找知识文章的客户、合作伙伴和其他外部用户公开的 ID,并在知识文章版本和翻译之间保持相同。

以下示例代码显示如何创建知识文章记录:

KnowledgeArticle newKnowledgeArticle = new KnowledgeArticle
{
   Title = "Sample Knowledge Article",
   Content = "<p>This is the article content.</p>"
};
knowledgeArticleId = _serviceProxy.Create(newKnowledgeArticle);
Console.WriteLine("Created {0}", newKnowledgeArticle.Title);

创建知识文章的主要和次要版本

在创建知识文章记录时,主要版本将自动设置为 1,次要版本为 0。 使用 CreateKnowledgeArticleVersion Action (Web API) 或 CreateKnowledgeArticleVersionRequest(组织服务)创建知识文章的主要或次要版本。 在请求消息中,将 IsMajor 设置为 true 可创建主要版本;将其设置为 false 可创建次要版本。 新版本记录是使用以下属性创建的:

  • KnowledgeArticleRootArticleId属性用于维护与根知识文章记录的关联。

  • KnowledgeArticlePreviousArticleContentId属性用于指向记录的以前版本。

以下示例代码显示如何使用 CreateKnowledgeArticleVersionRequest 创建知识文章记录的主要版本。

CreateKnowledgeArticleVersionRequest versionRequest = new CreateKnowledgeArticleVersionRequest
{
   Source = new EntityReference(KnowledgeArticle.EntityLogicalName, knowledgeArticleId),
   IsMajor = true
};
CreateKnowledgeArticleVersionResponse versionResponse = (CreateKnowledgeArticleVersionResponse)_serviceProxy.Execute(versionRequest);

创建知识文章翻译

使用 CreateKnowledgeArticleTranslation Action (Web API) 或 CreateKnowledgeArticleTranslationRequest(组织服务)创建文章知识记录的翻译。 您可以将知识文章翻译成 150 多种语言,有关这些支持语言的信息将在新的 LanguageLocale 实体中提供。详细信息:LanguageLocale(语言)实体消息和方法

使用 CreateKnowledgeArticleTranslation Action (Web API) 或 CreateKnowledgeArticleTranslationRequest(组织服务)创建新的知识文章记录,其标题、内容、描述和关键字是从源记录复制到新记录的,而且新记录的语言设置为您在请求中指定的语言。 还需要指定新记录是主要还是次要版本。 新记录使用 KnowledgeArticle.ParentArticleContentId 属性来维护与主要知识文章记录的关联。

执行此消息并收到响应后,从响应对象检索知识文章记录,然后更新标题、内容、描述和关键字以添加翻译的内容。

以下示例代码显示如何使用 CreateKnowledgeArticleTranslationRequest 创建知识文章翻译:

CreateKnowledgeArticleTranslationRequest translationRequest = new CreateKnowledgeArticleTranslationRequest
{
   Source = new EntityReference(KnowledgeArticle.EntityLogicalName, knowledgeArticleId),
   Language = new EntityReference(LanguageLocale.EntityLogicalName, languageLocaleId), //languageLocaleId = GUID of the Primary Key of LanguageLocale record
   IsMajor = true    // Creating a major version 
};
CreateKnowledgeArticleTranslationResponse translationResponse = (CreateKnowledgeArticleTranslationResponse)_serviceProxy.Execute(translationRequest);

// Retrieve the new knowledge article record
KnowledgeArticle respObject = (KnowledgeArticle)_serviceProxy.Retrieve(KnowledgeArticle.EntityLogicalName, 
      translationResponse.CreateKnowledgeArticleTranslation.Id, new ColumnSet(true));

备注

LanguageLocale实体中的每种语言记录的主键 (LanguageLocaleId) 的 GUID 值在所有 Dynamics 365 组织中相同。

知识文章生命周期:更改知识文章的状态

在生命周期中,知识库文章可以处于以下状态:

  • 0:草稿(创建知识文章之后)

  • 1:已审批(审批知识文章之后)

  • 2:已安排(已安排知识文章发布之后)

  • 3:已发布(发布知识文章之后)

  • 4:已过期(按照发布时指定的到期日期,知识文章到期之后)

  • 5:已存档(存档知识文章之后)

  • 6:已放弃(放弃知识文章之后)

若要更改文章的状态,请在知识文章记录中使用 Update 消息来更新 KnowledgeArticle.StateCode 属性。 对于早期绑定类型,请使用 KnowledgeArticleState 枚举设置可能的值。详细信息:使用更新执行专业化操作

以下示例代码显示如何发布知识文章记录。

// Retrieve the knowledge article record
KnowledgeArticle myKnowledgeArticle = (KnowledgeArticle)_serviceProxy.Retrieve(
        KnowledgeArticle.EntityLogicalName, knowledgeArticleId, new ColumnSet("statecode"));

// Update the knowledge article record
myKnowledgeArticle.StateCode = new OptionSetValue((int)KnowledgeArticleState.Published);
UpdateRequest updateKnowledgeArticle = new UpdateRequest
{
    Target = myKnowledgeArticle
};
_serviceProxy.Execute(updateKnowledgeArticle);

将知识文章记录与 Dynamics 365 实体实例相关联

当使用 Web 客户端在 Dynamics 365 中为实体启用嵌入式知识搜索时,会自动创建多对多关系msdyn_<Entity_Name>_knowledgearticle。 可以使用此关系以编程方式将 KnowledgeArticle 实例与 Dynamics 365 实体实例关联或链接起来。 在将 KnowledgeArticle 实例与实体实例关联时,会在名为 msdyn_<Entity_Name>_knowledgearticle 的相交实体中创建此关系的一条记录。 例如,当您第一次将 KnowledgeArticle 实例与 Account 实例关联时,将会创建名为 msdyn_account_knowledgearticle 的相交实体,并且将在此相交实体中创建带有关联映射的记录。 默认情况下,会为嵌入式知识搜索启用 Incident(案例)实体,并且,当您将 KnowledgeArticle 记录链接到 Incident 记录时,将会在 KnowledgeArticleIncident 相交实体中创建关联记录。

以下示例代码演示如何将 KnowledgeArticle 实例与 Account 实例关联:

// Associate the knowledge article record with an account record

// Step 1: Create a collection of knowledge article records that will be 
// associated to the account. In this case, we have only a single
// knowledge article record to be associated.
EntityReferenceCollection relatedEntities = new EntityReferenceCollection();
relatedEntities.Add(new EntityReference(KnowledgeArticle.EntityLogicalName, knowledgeArticleId));

// Step 2: Create an object that defines the relationship between knowledge article record and account record.
// Use the many-to-many relationship name (msdyn_account_knowledgearticle) between knowledge article
// record and account record.
Relationship newRelationship = new Relationship("msdyn_account_knowledgearticle");

// Step 3: Associate the knowledge article record with the account record.
_serviceProxy.Associate(Account.EntityLogicalName, accountId, newRelationship, relatedEntities);

使知识文章视图计数递增

使用 IncrementKnowledgeArticleViewCountRequest 消息在 KnowledgeArticleViews 实体中针对给定日期使知识文章记录的视图计数递增。 如果记录对于指定日期的知识文章不存在,它将创建记录,然后在 KnowledgeArticleViews.KnowledgeArticleView 属性中设置指定的视图计数值。 如果记录对于指定日期的知识文章已经存在,它将仅在现有记录的 KnowledgeArticleViews.KnowledgeArticleView 属性中使视图计数递增。

使用全文搜索来搜索知识文章

Dynamics 365 中的知识文章,包括其版本和翻译,是针对全文搜索编制索引的,并且支持 SQL Server 全文搜索。 有关全文搜索的详细信息,请参阅 SQL Server:全文搜索

使用 FullTextSearchKnowledgeArticleRequest 消息从您的应用程序中搜索知识文章以便找到要查找的信息。FullTextSearchKnowledgeArticleRequest 消息允许您使用词形变化词干匹配(容许针对搜索文本替换时态或词形变化)并指定查询条件(使用 FetchXML 或 QueryExpression 指定筛选、排序和分页)来查找具有指定文本的知识文章。 还可以选择在搜索结果中删除同一文章的多个版本以及在搜索文本时按照知识文章状态进行筛选。

处理早期 Dynamics 365 知识库文章

备注

本节为您提供有关针对 Dynamics 365 中的知识管理处理早期 Dynamics 365 知识库文章实体模型的信息。 本节中提到的实体仍将在当前版本中可用,您应使用前面提到的知识管理实体来利用增强的知识管理体验。

在生命周期中,知识库文章可以处于以下状态:

  • 1:草稿(创建文章之后)

  • 2:未审批(在编辑期间)

  • 3:已发布(发布文章之后)

若要更改文章的状态,请使用 SetStateRequest 消息。 对于早期绑定类型,请使用 KbArticleState 枚举设置可能的值。

创建文章时,必须将其与模板和主题关联起来。 文章模板描述文章的各节和格式。 主题用于按业务类别组织文章,业务类别还用于对案例(事件)、销售宣传资料和产品进行分组。 最佳做法是在创建文章前创建一个主题树层次结构和所有必需的文章模板。

备注

Microsoft Dynamics 365 提供了几个文章模板。 其中包括标准文章、问题解决方案、过程和其他模板。 建议使用 Microsoft Dynamics 365 Web 应用程序创建文章模板的方法。 如果要以编程方式创建文章模板,请以现有文章模板为示例,了解应包括哪些信息以及如何设置数据格式。

若要将文章与模板相关联,请使用 KbArticle.KbArticleTemplateId 属性。 若要通过指定主题将文章放入特定类别,请使用 KbArticle.SubjectId 属性。

指定文章标题和要在搜索中使用的关键字。 若要描述文章,可以使用 KbArticle.Description 属性。 若要添加文章内容,请使用 KbArticle.Content 属性。 使用 Kbarticle.ArticleXml 属性可为文章添加 XML 数据。 可从模板中获取 KbArticle.LanguageCode 值,以帮助您编写按语言对文章进行排序的查询。

创建文章时,会将其保存为草稿。 之后,可将文章的状态由“草稿”更改为“未审批”。 可以修改“未审批”文章的内容,使其可供发布。 当准备发布文章时,可将状态由“未审批”更改为“已发布”。

未发布的文章从模板中获取格式设置。 如果更改模板格式,更改内容将自动传播到处于“草稿”和“未审批”状态的文章中。

发布文章后,可以添加注释 (KbArticleComment),但无论您拥有何种权限,也不能对其进行编辑。 可向处于以下任何状态的文章中添加注释:

备注

注释可添加到处于以下任何状态的文章中:草稿、未审批或已发布。

要修订或更新文章,必须取消发布。 若要取消发布文章,请将文章状态从“已发布”更改为“未审批”。 若要从 Microsoft Dynamics 365 数据库删除文章,请将文章状态从“已发布”更改为“未审批”或“草稿”。

备注

不能删除处于“已发布”状态的知识库文章。

有关在知识库中创建、更新、编辑和定位文章的详细信息,请参阅帮助和培训:使用知识库中的文章

另请参阅

知识管理实体
使用 Dynamics 365 中的 Parature 知识
KnowledgeArticle 实体消息和方法
KnowledgeArticleViews 实体消息和方法
KnowledgeBaseRecord 实体消息和方法
LanguageLocale(语言)实体消息和方法
KbArticle(文章)实体消息和方法

Microsoft Dynamics 365

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