Merge plugini yazımında context ten bize Target ve SubordinateId diye tanımlı InputParameterelere dikkat edeceğiz.Target parametresi bize geriye kalcak varlığın bilgisini verirken , SubordinateId parametresi bize deactivate olacak ikinci varlığın bilgisini verir.
Aşağıdaki kodları incelerseniz beni daha ii anlayacaksınız.
contact1 nesnesi işlem sonunda geriye kalan contact ı
contact2 ise deactivate olan contactı simgeler.
Kaynak Kodlar
public class ContactMerge : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
Guid contact1 = Guid.Empty;
Guid contact2 = Guid.Empty;
try
{
#region Plugin Tanımlamaları
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
serviceFactory.GetType().GetProperty("ProxyTypesAssembly").SetValue(serviceFactory, typeof(XrmServiceContext).Assembly, null);
IOrganizationService crmService = serviceFactory.CreateOrganizationService(context.UserId);
if (!context.InputParameters.Contains("Target"))
return;
if (string.IsNullOrEmpty(context.MessageName))
return;
if (!context.MessageName.Equals("Merge"))
throw new Exception("Plugin executed but message was not merge");
#endregion
#region Main Code
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is EntityReference)
{
EntityReference eTarget = (EntityReference)context.InputParameters["Target"];
contact1 = eTarget.Id;
contact2 = (Guid)context.InputParameters["SubordinateId"];
if (contact1 != Guid.Empty && contact2 != Guid.Empty)
{
Contact contact1Entity = (Contact)crmService.Retrieve("contact", contact1, new ColumnSet(new string[] { "contactid", "ite_industryid" }));
if (contact1Entity != null && contact1Entity.Id != Guid.Empty)
{
}
else
throw new Exception("Contact not found.");
}
else
throw new Exception("Contact1 or Contact2 id guid empty.");
}
else
throw new Exception("Not right type of target");
#endregion
}
catch (Exception ex)
{
throw new InvalidPluginExecutionException("An error occurred in the ContactMerge plug-in" + ex.Message);
}
}
}
Plugin Registration Tool ile MErge Plugin Deploy Etme
Plugin inize aşağıdaki step i eklemeniz yeterli olacaktır.
Hiç yorum yok:
Yorum Gönder