crm2011创建批量删除作业
2014-06-12 10:15
477 查看
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,
}
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,
}
相关文章推荐
- CRM2011资源管理器之复制实体或批量创建实体属性
- MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
- oracle 批量创建删除多用户
- crm2011创建DateTime类型的字段
- CRM2011 更改字段类型,又不删除原有数据
- crm2011创建自定义实体Entity
- 用T-SQL创建和删除SQL作业
- 使用sugar crm rest api 创建联系人时有概率返回被删除的联系人的id
- crm2011创建多行文本类型的字段
- crm2011创建自定义视图
- php学习笔记3--文件系统的操作(创建、打开及批量删除)
- SQL Server 游标运用:批量创建、删除链接服务器
- Microsoft Dynamics CRM 2011 批量添加域用户 然后添加CRM用户
- 利用C语言创建、删除目录,批量创建文件
- crm2011创建浮点类型的字段
- crm2011创建String字段
- 一些比较有用的SQL操作,2011最新整理,SQL批量删除与批量插入,批量删除一些比较有用的SQL操作,2011最新整理,SQL批量删除与批量插入,批量删除
- ElasticSearch封装(创建索引,删除索引,创建Mapping,批量插入,批量删除,搜索)
- crm2011 分配角色和删除角色
- crm2011创建Picklist类型的字段