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

/// <summary>
    /// 创建批量删除作业
    /// </summary>
    public class CreateBulkDeleteRequest
    {
        public void Create(IOrganizationService service)
        {
            //构造Request对象
            BulkDeleteRequest bulkDeleteRequest = new BulkDeleteRequest();
            //批量删除
            bulkDeleteRequest.JobName = "批量删除";
            //批量作业開始时间
            bulkDeleteRequest.StartDateTime = DateTime.Now;
            //作业完毕之后是否发生邮件
            bulkDeleteRequest.SendEmailNotification = false;
            bulkDeleteRequest.ToRecipients = new Guid[] { };
            bulkDeleteRequest.CCRecipients = new Guid[] { };
            //设置作业执行的时间间隔
            bulkDeleteRequest.RecurrencePattern = String.Empty;
            //删除的记录
            QueryExpression query = new QueryExpression();
            //实体的名称
            query.EntityName = "new_customlog";
            query.Criteria.AddCondition(new ConditionExpression("statecode",ConditionOperator.Equal,0));
            bulkDeleteRequest.QuerySet = new QueryExpression[] { query };

//提交作业,系统将运行
            BulkDeleteResponse _bulkDeleteResponse = (BulkDeleteResponse)service.Execute(bulkDeleteRequest);
            System.Console.WriteLine("作业已经提交,系统正在运行!");
            CheckSuccess(_bulkDeleteResponse,service);
        }

/// <summary>
        /// 检測作业是否完毕
        /// </summary>
        private void CheckSuccess(BulkDeleteResponse _bulkDeleteResponse,IOrganizationService service)
        {
            QueryByAttribute bulkQuery = new QueryByAttribute();
            bulkQuery.ColumnSet = new ColumnSet("statecode", "successcount", "failurecount");
            bulkQuery.EntityName = "bulkdeleteoperation";
            bulkQuery.Attributes.Add("asyncoperationid");
            bulkQuery.Values.Add(_bulkDeleteResponse.JobId);
            EntityCollection entityCollection = service.RetrieveMultiple(bulkQuery);
            int secondsTicker = 60;
            Entity createdBulkDeleteOperation = null;
            #region
            while (secondsTicker > 0)
            {
                if (entityCollection != null && entityCollection.Entities.Count > 0)
                {
                    createdBulkDeleteOperation = entityCollection.Entities[0];
                    int statecode = ((OptionSetValue)createdBulkDeleteOperation["statecode"]).Value;
                    BulkDeleteOperationState optionState =
                        ((BulkDeleteOperationState)(System.Enum.ToObject(typeof(BulkDeleteOperationState), statecode)));
                    if (optionState != BulkDeleteOperationState.Completed)
                    {
                        //先暂停
                        System.Threading.Thread.Sleep(1000);
                        secondsTicker--;

// 再次查询
                        entityCollection = service.RetrieveMultiple(bulkQuery);
                        System.Console.WriteLine("系统正在运行!");
                    }
                    else
                    {
                        //作业运行完成。退出循环
                        secondsTicker = 0;
                    }
                }
                else
                {
                    //先暂停
                    System.Threading.Thread.Sleep(1000);
                    secondsTicker--;

// 再次查询
                    entityCollection = service.RetrieveMultiple(bulkQuery);
                    System.Console.WriteLine("系统正在运行!");
                }
            }
            #endregion
            if (createdBulkDeleteOperation != null)
            {
                int statecode = ((OptionSetValue)createdBulkDeleteOperation["statecode"]).Value;
                BulkDeleteOperationState optionState =
                    ((BulkDeleteOperationState)(System.Enum.ToObject(typeof(BulkDeleteOperationState), statecode)));
                if (optionState == BulkDeleteOperationState.Completed)
                {
                    int successcount = Convert.ToInt32(createdBulkDeleteOperation["successcount"]);
                    int failurecount = Convert.ToInt32(createdBulkDeleteOperation["failurecount"]);
                    System.Console.WriteLine("系统运行完成!成功记录数:{0},失败记录数:{1}", successcount, failurecount);
                }
                else
                {
                    System.Console.WriteLine("系统还在运行!");
                }
            }
        }
    }

[System.Runtime.Serialization.DataContractAttribute()]
    public enum BulkDeleteOperationState
    {
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Ready = 0,

[System.Runtime.Serialization.EnumMemberAttribute()]
        Suspended = 1,

[System.Runtime.Serialization.EnumMemberAttribute()]
        Locked = 2,

[System.Runtime.Serialization.EnumMemberAttribute()]
        Completed = 3,
    }

转载于:https://www.cnblogs.com/jzdwajue/p/7039425.html

crm2011创建批量删除作业相关推荐

  1. 【十】JDBC:使用 jmeter 批量在数据库创建 1 万多条数据;批量删除重复数据

    目录 一.批量创建1万多条数据 二.批量删除重复数据 一.批量创建1万多条数据 数据库车辆信息表中准备10000多台车的数据: (1)创建线程组,循环1次: (2)连接数据池: (3)添加循环控制器, ...

  2. linux批量创建和删除用户

    linux批量创建和删除用户 我们都知道可以用useraddxxxx可以建立用户,passwd xxx可以为用户建立密码,如果我们要批量创建好多好多呢,怎么办??接下来我们一起来看个实例,一起来做一下 ...

  3. linux 批量删除任务,Linux-Shell脚本学习心得之批量创建、删除用户

    继上次博文,继续为大家分享脚本实例:批量创建.删除用户 说到,用户的管理,大家都不会陌生,就是创建.删除.禁用等等的管理,但,大多都是管 理员手工操作,效率不是很高,今天,就给大家说说Shell脚本是 ...

  4. ElasticSearch.net NEST批量创建修改删除索引完整示例

    本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改 ...

  5. python 文件操作大总结 对文件的增删改查,备份, 批量修改,创建和删除 文件的备份

    python 的文件操作 文件的作用 永久的保存数据 文件中的内存保存在硬盘中 硬盘中的数据都是 0 和 1, 软件将 0 和 1的组合转换成我们认识的汉字 绝对路径和相对路径 绝对路径:是从目录开始 ...

  6. oracle删sequ_[oracle package]sequence处理(批量创建、删除sequence,将sequence恢复至指定值)...

    之前对于oracle的包不太熟悉,最近深入学习了plsql中的包.在做项目过程中,操作数据库时,存在大量重复的工作,正好写个package来巩固下所学. 一.先对写的东西碰到的问题作下说明,也方便以后 ...

  7. oracle创建和删除表空间,oracle 表空间创建和删除

    oracle数据库:数据库对象以及表数据都存储在表空间中,创建用户时可以指定对应的表空间.这样用户可以在各自的表空间中操作数据,互不干扰. 1. 表空间创建 若不清楚表空间对应文件的路径,可以登录系统 ...

  8. 用Python在Windows或Linux下批量删除文件夹中指定的文件

    情况说明:当在一个文件夹下面有好几十个或几百个文件需要删除,此时一一去挑选费时费力,特别是在Linux下面.因此,需要批量删除文件. 对训练样本(图像)和测试样本(图像)进行评估时候,需要查看是数据本 ...

  9. 在Hibernate中处理批量更新和批量删除

    批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...

最新文章

  1. 再谈无边框窗体的操作
  2. 如何使用robots禁止各大搜索引擎爬虫爬取网站
  3. IOS项目集成Weex
  4. uva 10692——Huge Mods
  5. [css] css怎么更改表单的单选框或下拉框的默认样式?
  6. Docker 方式安装 RabbitMQ (ribbitmq linux 部署)
  7. python工程控件_工程脚本插件方案 - c集成Python基础篇
  8. 传网易、京东6月相继赴港上市:共计筹资50亿美元
  9. 技巧 | 在R语言中使用高德地图的API进行地理/逆地理编码(地址与经纬度的相互转换)...
  10. 不想“被out”?来看看现在的开发者都在做什么
  11. Vue 服务端渲染(SSR)、Nuxt.js - 从入门到实践
  12. Python: Flask后端与webapi
  13. # 一点毕设小感悟(SnowNLP+可视化分析)
  14. installshield使用教程
  15. oj平台python_python OJ
  16. UE4_模型_Bound(边界)
  17. 后部发声-----学会英语的发音方法
  18. maven已支持支付宝开放平台SDK
  19. IDEA中使用Junit4进行测试的入门配置
  20. linux命令mv作用,每天学一个 Linux 命令(18):mv

热门文章

  1. 一个广为人知但鲜有人用的技巧:对象池
  2. Freebsd上使用pf防火墙
  3. 理解一个名词:用户代理(user agent)
  4. redis获取存在的键值_Redis 分布式锁、限流
  5. 蓝桥杯 ALGO-23 算法训练 一元三次方程求解
  6. L1-048 矩阵A乘以B-PAT团体程序设计天梯赛GPLT
  7. 蓝桥杯 BEGIN-4 入门训练 Fibonacci数列
  8. linux嵌入式gdb调试指南,建立嵌入式gdb调试环境
  9. 【Python】SNMP的安装及Python的调用
  10. perl 调用 shell 文件 防止出问题,最好写绝对路径