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