Selamlar ;
Yüksek lisans final sınavları, müşteri tarafındaki yoğunluk ve kızım Zeynep'le uğraşırken ancak yazabilmeye fırsatım oluyor.Lütfen mazur görün.
Geçenlerde müşteri tarafında ki bir plug'in de geliştirilen iş mantığından ötürü ihtiyaç duyduğum bir olayın çözümünü araştırırken context'ler arasında parametre pas geçebilme özelliğinin olduğunu gördüm.Aşağıda bir örnekle gösterdim.Aynı entity'e regist ettiğim pre ve post eventlerinde değerler birbirine pass geçiliyor.
12 public class AccountSetStatePreHandler : IPlugin
13 {
14 public void Execute(IPluginExecutionContext context)
15 {
16 // Post eventinde ihtiyacımız olan datayı alıyoruz.
17 // Bu örnek
18 // içerisinde bir guid bilgisini
19 // parametre geçiyor olacağız.
20 Guid contact = new Guid("{74422D5C-381A-4863-A5B9-B8604615C2D0}");
21
22 // Bu işi gerçekleştirecek olan SharedVaraiables container'ini kullanıyor
23 // olacağız ve buna bir key vermemeiz gerekiyor.PrinCon veriyoruz
24 context.SharedVariables.Properties.Add(
25 new PropertyBagEntry("PriCon", (Object)contact.ToString()));
26 // Bu şekildede set edebilirsiniz : context.SharedVariables["PrimaryContact"] = contact.ToString();
27 }
28 }
29
30 public class AccountSetStatePostHandler : IPlugin
31 {
32 public void Execute(IPluginExecutionContext context)
33 {
34 // İlgili key shared variables'da varmı kontrol ediyoruz!
35 if (context.SharedVariables.Contains("PriCon"))
36 {
37 Guid contact =
38 new Guid((string)context.SharedVariables["PrimaryContact"]);
39 // Artık ilgili key'i elde ettiğimize göre ilgili diğer işlemleri yapabiliriz..
40 }
41 }
42 }
43
Önemli bir not , bu özellik CRM 3.0 in arhitect'inde yer alan callout yapısında malesef bulunmuyor.Bunun için custom attribute olusturup (entity bazında ilgili değerleri retrieve edebilirsiniz.)bunları kullanmanız mümkündür(3.0 ve 4.0 için).PropertyBag'ler ile context üzeirinden read/write olan yapılar 4.0'a has bir özelliktir.
Sevgiler.
E2