创建一个dynamics 365 CRM online plugin (Not finished)
Posted TheMiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个dynamics 365 CRM online plugin (Not finished)相关的知识,希望对你有一定的参考价值。
开始之前,我们要确认一下 Plugin 的 pipeline. PreValidation -> PreOperation -> Server Side System Main Event-> PostOperation
PreValidation 是在security check 之前, 通常会用来加载外部数据和用户不相关的内容.
PreOperation 是在security check 之后 服务器处理之前, 通常会用来做一系列的功能.
PostOperation 是在System Main Event 在服务器处理发生之后, 通常是用来对Event做一些额外添加.
Database Transaction Support
DTS 值在PreOperation 和PostOperation中有效.
DTS是 当你有exception的时候, 你的所有的data 都会roll back 不会记录到数据库中. 只有完全execute的Plugin的数据才会储存
我们开始做我们第三个plugin. PreValidation
这个Plugin的功能是查重. 是的,虽然系统内置有查重功能,但是为了做PreValidation的plugin,我们实现一下.
这里我们用QueryExpression用来查询email address
// Plug-in business logic goes here. string email = string.Empty; if (contact.Attributes.Contains("emailaddress1")) { email = contact.Attributes["emailaddress1"].ToString(); // Now we need use query to retrieve email // select * from contact where emailaddress1 == \'email\' var query = new QueryExpression("contact"); query.ColumnSet = new ColumnSet(new string[] { "emailaddress1" }); query.Criteria.AddCondition("emailaddress1", ConditionOperator.Equal, email); var collection = service.RetrieveMultiple(query); if (collection.Entities.Count > 0) { throw new InvalidPluginExecutionException("Contact with email already exists!!!"); } }
我们把代码复制到try里面之后rebuild. 用PluginRegistration tool把代码重新部署到instance当中.
之后我们创建一个contact填写好邮箱,用contact2来填写相同邮箱.
这时候就会出现我们的bug
让我们打开Error Log 发现我们的message是之前代码中编译好的.
以上是关于创建一个dynamics 365 CRM online plugin (Not finished)的主要内容,如果未能解决你的问题,请参考以下文章
创建一个dynamics 365 CRM online plugin - Images in Plugin
如何通过 Dynamics 365 CRM 中的 C# 插件填充查找字段
创建一个dynamics 365 CRM online plugin - Asynchronous Plugins
创建一个dynamics 365 CRM online plugin - plugin当中的Impersonation角色
创建一个dynamics 365 CRM online plugin - Isolation mode or trust mode
创建一个dynamics 365 CRM online plugin - 使用Shared Variables 在plugins 之前传递data