zoukankan      html  css  js  c++  java
  • 创建一个dynamics 365 CRM online plugin (四)

    开始之前,我们要确认一下 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的数据才会储存

     创建dynamics CRM 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

    创建dynamics CRM plugin

     让我们打开Error Log 发现我们的message是之前代码中编译好的.

    创建dynamics CRM plugin

  • 相关阅读:
    poj2229 Sumsets (递推)
    hihocoder1148 February 29(区间闰年计数)
    sort函数比较cmp写法
    字符串忽略大小写
    地形
    启用和禁用warning
    AppStore SDK
    NGUI List优化
    ETC1
    加载
  • 原文地址:https://www.cnblogs.com/TheMiao/p/10674031.html
Copyright © 2011-2022 走看看