我正在嘗試在同一個插件的不同調用之間使用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