crm2011 plugin事例

using System;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Query;

    public class PluginDemo : IPlugin
    {
        string entityName = "new_model";
        private IOrganizationService userService;
        private IOrganizationService sysService;
        private IPluginExecutionContext content;

        public void Execute(IServiceProvider serviceProvider)
        {
            ITracingService trag = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            //插件当前上下文
            content = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            string pluginEntityName = content.PrimaryEntityName.ToLower();
            string pluginActionName = content.MessageName.ToLower();
            trag.Trace("pluginEntityName: {0},pluginActionName: {1}", pluginEntityName, pluginActionName);
            if(!(pluginEntityName == entityName && (content.Stage == 20 || content.Stage == 40) &&
                (pluginActionName == "create" || pluginActionName == "update" || pluginActionName == "delete")))
            {
                return;   
            }
            try
            {
                IOrganizationServiceFactory factory =
                    (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                //以当前用户的身份创建服务
                userService = factory.CreateOrganizationService(content.UserId);
                //以系统最高权限创建服务
                sysService = factory.CreateOrganizationService(null);
                if (pluginActionName == "create" && content.Stage == 40)
                {
                    PostCreate();
                }
                else if (pluginActionName == "update" && content.Stage == 40)
                {
                    PostUpdate();
                }
                else if (pluginActionName == "delete" && content.Stage == 20)
                {
                    PreDelete();
                }

            }catch(Exception ex)
            {
                trag.Trace("Stage: {0}", content.Stage);
                trag.Trace("StackTrace: {0}", ex.StackTrace);
                trag.Trace("Name): {0}", ex.TargetSite.Name);
                trag.Trace("Message: {0}", ex.Message);
                throw ex;
            }
        }

        /// <summary>
        /// 创建
        /// </summary>
        private void PostCreate()
        {
           if(content.InputParameters.Contains("Target") && content.InputParameters["Target"] is Entity)
           {
               //当前实体
               Entity entity = content.InputParameters["Target"] as Entity;

           }
        }

        /// <summary>
        /// 修改
        /// </summary>
        private void PostUpdate()
        {
            if (content.InputParameters.Contains("Target") && content.InputParameters["Target"] is Entity)
            {
                //当前实体
                Entity entity = content.InputParameters["Target"] as Entity;

            }
        }

        /// <summary>
        /// 删除
        /// </summary>
        private void PreDelete()
        {
            if (content.InputParameters.Contains("Target") && content.InputParameters["Target"] is EntityReference)
            {
                //当前实体的引用
                EntityReference entityEr = content.InputParameters["Target"] as EntityReference;

            }
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值