我在 Microsoft CRM 2011 中有一个工作流,它会在某个字段更改时触发。
当此工作流触发时,它将首先检查 flag 的布尔值:如果值为yes,则将其设置为no ,否则如果 flag 值为no,则创建另一个“XYZ”实体。
我的问题是:当我将标志值更改为no时,它会再次触发并创建另一个实体“XYZ”。
我在 Microsoft CRM 2011 中有一个工作流,它会在某个字段更改时触发。
当此工作流触发时,它将首先检查 flag 的布尔值:如果值为yes,则将其设置为no ,否则如果 flag 值为no,则创建另一个“XYZ”实体。
我的问题是:当我将标志值更改为no时,它会再次触发并创建另一个实体“XYZ”。
发生这种情况是因为您的插件无限循环,因为它一遍又一遍地触发自身。
您可以使用 IExecutionContext.Depth 属性防止循环
http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.iexecutioncontext.depth.aspx
IPluginExecutionContext context = IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context.Depth > 1) { return; }
当您的深度大于 1 时,这将取消您的插件。