Dynamics crm 2011 CRM 2011执行前的工作流错误

Dynamics crm 2011 CRM 2011执行前的工作流错误,dynamics-crm-2011,workflow-activity,Dynamics Crm 2011,Workflow Activity,我在prem服务器上的CRM 2011上有一个相当标准的工作流设置。有时,在运行任何工作流步骤之前,工作流会以等待状态停止。工作流包含一些对自定义工作流活动的调用,但执行似乎没有时间调用它们。我在下面包括了一些屏幕截图。谢谢 编辑:这是请求的工作流活动coe 公共密封类句柄检查问题:CodeActivity { #区域公共财产 [必需参数] [输入(“检查”)] [参考目标(“任命”)] 公共不安全检查{get;set;} [输出(“结果”)] 公共输出参数结果{get;set;} [输出(

我在prem服务器上的CRM 2011上有一个相当标准的工作流设置。有时,在运行任何工作流步骤之前,工作流会以等待状态停止。工作流包含一些对自定义工作流活动的调用,但执行似乎没有时间调用它们。我在下面包括了一些屏幕截图。谢谢

编辑:这是请求的工作流活动coe

公共密封类句柄检查问题:CodeActivity
{
#区域公共财产
[必需参数]
[输入(“检查”)]
[参考目标(“任命”)]
公共不安全检查{get;set;}
[输出(“结果”)]
公共输出参数结果{get;set;}
[输出(“错误”)]
公共输出参数错误{get;set;}
#端区
受保护的覆盖无效执行(CodeActivityContext executionContext)
{
#区域工作流上下文设置
ITracingService tracingService=executionContext.GetExtension();
如果(tracingService==null)
抛出新的InvalidPlugineExecutionException(“检索跟踪服务失败”);
tracingService.Trace(“输入HandleInspectedIssues.Execute(),活动实例Id:{0},工作流实例Id:{1}”,
executionContext.ActivityInstanceId,
executionContext.WorkflowInstanceId);
//创建上下文
IWorkflowContext=executionContext.GetExtension();
if(上下文==null)
抛出新的InvalidPluginExecutionException(“检索工作流上下文失败”);
tracingService.Trace(“HandleInspectedIssues.Execute(),相关Id:{0},启动用户:{1}”,
context.CorrelationId,
上下文。InitiatingUserId);
IOOrganizationServiceFactory服务工厂=executionContext.GetExtension();
IOOrganizationService=serviceFactory.CreateOrganizationService(context.UserId);
Errors.Set(executionContext,String.Empty);
Result.Set(executionContext,false);
#端区
StringBuilder错误=新建StringBuilder();
实体检查=空;
tracingService.Trace(“检索检验预约记录:{0}”,DateTime.Now);
尝试
{
inspection=service.Retrieve(“约会”,inspection.Get(executionContext).Id,new ColumnSet(true));
}
捕获(错误异常e)
{
tracingService.Trace(“异常:{0}”,例如ToString());
//处理异常。
投掷;
}
Int32 inspectionState=Int32.MinValue;
Int32 inspectionStatus=Int32.MinValue;
if(inspection.Contains(“statecode”)&&inspection.Attributes[“statecode”].GetType()==typeof(OptionSetValue))
{
tracingService.Trace(“{0}”,inspection.FormattedValues[“statecode”].ToString());
inspectionState=((OptionSetValue)inspection.Attributes[“statecode]”)值;
}
if(inspection.Contains(“statuscode”)&&inspection.Attributes[“statuscode”].GetType()==typeof(OptionSetValue))
{
tracingService.Trace(“{0}”,inspection.FormattedValues[“statuscode”].ToString());
inspectionStatus=((OptionSetValue)inspection.Attributes[“statuscode]”)值;
}
//如果状态代码未完成(1)和状态代码未完成(3),则停止处理
如果(检查状态!=1和检查状态!=3)
抛出新异常(“您不能在检查完成之前将问题标记为已检查”);
#区域提取查询
string fetchIssues=string.Format(@)
“,检查,Id);
#端区
tracingService.Trace(“检索ipm问题记录:{0}”,DateTime.Now);
EntityCollection结果=null;
尝试
{
结果=service.RetrieveMultiple(新的FetchExpression(fetchIssues));
}
捕获(错误异常e)
{
tracingService.Trace(“异常:{0}”,例如ToString());
//处理异常。
投掷;
}
tracingService.Trace(“将ipm问题状态设置为已检查:{0}”,DateTime.Now);
foreach(result.Entities中的实体)
{
var issueState=entity.Contains(“statecode”)?((OptionSetValue)entity.Attributes[“statecode”])。值:默认值(Int32);
var issueStatus=entity.Contains(“statuscode”)?((OptionSetValue)entity.Attributes[“statuscode”])。值:默认值(Int32);
//如果问题处于活动状态(0),则将状态原因设置为已检查(755390001)
如果(issueStatus==0&&issueStatus!=755390001)
{
errors.AppendFormat(“问题{0}已被检查,无法再次检查。”,entity.Attributes[“bdo_issuember”].ToString());
继续;
}
var entityToUpdate=新实体(“ipm_问题”);
entityToUpdate[“id”]=entity.id;
entityToUpdate[“statuscode”]=新选项设置值(755390001);
tracingService.Trace(“更新ipm问题记录:{0}”,DateTime.Now);
服务更新(entityToUpdate);
}
如果(errors.Length>0)
{
Errors.Set(executionContext,Errors.ToString());