我正在尝试在同一个插件的不同调用之间使用IPluginExecutionContext的SharedVariable。我有以下情况:CRM 2011插件中的共享变量
用户正试图创建一个新的实体记录,并且插件已在Pre阶段触发。基于一些逻辑,我设置一个SharedVariable像这样:
var context = (IPluginExecutionContext) serviceProvider.GetService(typeof (IPluginExecutionContext));
context.SharedVariables.Add("MySharedVariable", true);
我然后尝试更新其他记录同一实体的,像这样:
var qe = new QueryExpression("new_myentity");
qe.Criteria.AddCondition("ecs_myfield", ConditionOperator.Equal,"someValue");
var results = service.RetrieveMultiple(qe);
foreach (var foo in results.Entities)
{
//Do something to foo
service.Update(foo);
}
我也有注册的插件但是,在Pre阶段更新,我想检查MySharedVariable并根据是否设置来做其他事情。
在更新中,上下文不包含'MySharedVariable'的键。我通过使用ITracingService证实了这一点。
在不同记录上运行的插件之间传递共享变量是否存在一些限制?
的插件运行模式同时创建和更新设置为同步和已经说明,无论是登记在预操作阶段
什么是围绕SharedVariables沿的背景下通过的规则?我认为他们像交易一样被传递,所以无论你的插件触发什么插件,他们都会被传递,这是不正确的? – Daryl
我觉得只有一批测试用常见的场景才能说明这一点:) –
什么?!?!?你的意思是你没有无限的时间做测试,我没有时间去做? :) – Daryl