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

  • 相关阅读:
    产生唯一的临时文件mkstemp()
    Linux文档时间戳查看和修改——stat
    Linux下快速查找文件
    Crypt加密函数简介(C语言)
    产生随机数 random
    见微知著——从《新闻联播》挖掘价值资讯擒拿年度政策受益牛股
    Linux中link,unlink,close,fclose详解
    不用输液
    javaScript document对象详解
    javascript初步了解
  • 原文地址:https://www.cnblogs.com/TheMiao/p/10674031.html
Copyright © 2011-2022 走看看