我有一个能够在CRM中更新案例的插件,但我现在想要它创建一个新的知识库文章,因为我不相信可以使用工作流自动化它。该插件由解决案例时执行的工作流触发。
这是我到目前为止所做的,但它不起作用:
Entity article = new Entity("kbarticle");
article["title"] = articleTitle;
article["subject"] = articleSubject;
service.Create(article);
Guid articleGUID = service.Create(article);
ColumnSet attributes = new ColumnSet(new string[] { "description" });
article = service.Retrieve(article.LogicalName, articleGUID, attributes);
article["description"] = articleDescription;
service.Update(article);
答案 0 :(得分:2)
一些事情......
article["subject"] = articleSubject;
subject
不是kbarticle
实体的有效属性。 subjectid
是,但需要是有效主题记录的Lookup
。我不知道你的片段是否存在。
根据SDK,您还需要指定KB模板:
创建知识库文章时,必须将其与知识库模板和主题相关联...
[剪断]
要将文章与模板相关联,请使用KbArticle。 KbArticleTemplateId属性。将文章放在特定的文章中 通过指定主题的类别,使用KbArticle.SubjectId 属性。
此外,可能不是您的错误来源,但您的代码尝试两次创建文章。这里的第一行代码是多余的:
service.Create(article);
Guid articleGUID = service.Create(article);
除此之外,我们确实需要知道您的代码引发的错误(尽管我怀疑这将是我的第一点)。
答案 1 :(得分:1)
感谢您的回答,他们都帮助我找到了正确的解决方案。主要问题是我需要为subjectid和模板使用实体引用:
Entity kbarticle = new Entity("kbarticle");
kbarticle["title"] = title;
kbarticle["subjectid"] = new EntityReference(subject_LogicalName, subject_Guid);
kbarticle["kbarticletemplateid"] = new EntityReference(template_LogicalName, template_Guid);
service.Create(kbarticle);
答案 2 :(得分:0)
您是否看过这篇MSDN文章,它不是代码示例,但它描述了创建文章的步骤。
编辑:
您需要向我们提供更多调试信息。任一;
您可能会发现在Visual Studio中针对单元测试开发文章创建代码更容易,然后您可以稍后将其连接到工作流活动。
答案 3 :(得分:0)
应该看起来像
KbArticle a = new KbArticle();
a.Title = articleTitle;
a.SubjectId = new Xrm.Sdk.EntityReference(Subject.EntityLogicalName, subjectGuid);
service.Create(a);