Как разрешить плагину CRM обрабатывать несколько сообщений о событиях
Мне нужно создать один плагин для запуска на создание, обновление и удаление событий возможностей сущностей.
Могу ли я сделать это в одном плагине? Если да, то как я могу это сделать?
2 ответа:
Да вы можете использовать тот же плагин, чтобы выполнить его на create, update и delete
Напишите свой плагин следующим образом..
public void Execute(IServiceProvider serviceProvider) { IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); if (context.MessageName == "Create") { //write the logic what you want this plugin to do on Create } if (context.MessageName == "Update") { //write the logic what you want this plugin to do on Update } if (context.MessageName == "Delete") { //write the logic what you want this plugin to do on Delete } }
Зарегистрируйте свой плагин на Create, Update, Delete for Oppertunity Entity с помощью регистрации плагина инструмент
Это должно сработать
Ваш плагин должен реализовать интерфейс
Microsoft.Xrm.Sdk.IPlugin
, который имеет только один метод для реализации,Execute
. В вашем методеExecute
вам нужно будет проверить СВОЙСТВОMessageName
IPluginExecutionContext и проверить, какой тип события вызвал плагин. Вам также потребуется зарегистрировать плагин для каждого типа сообщения (создать/обновить/удалить) с помощью инструмента регистрации плагина.Вот мой личный список типов сообщений OOB для сравнения с
MessageName
:AddItem, AddListMembers, AddMember, AddMembers, AddPrincipalToQueue, AddPrivileges, AddProductToKit, AddRecurrence, AddToQueue, AddUserToRecordTeam, Assign, AssignUserRoles, Associate, BackgroundSend, Book, Cancel, CheckIncoming, CheckPromote, Clone, Close, CopyDynamicListToStatic, CopySystemForm, Create, CreateException, CreateInstance, Delete, DeleteOpenInstances, DeliverIncoming, DeliverPromote, DetachFromQueue, Disassociate, Execute, ExecuteById, Export, ExportAll, ExportCompressed, ExportCompressedAll, GenerateSocialProfile, GrantAccess, Handle, Import, ImportAll, ImportCompressedAll, ImportCompressedWithProgress, ImportWithProgress, LockInvoicePricing, LockSalesOrderPricing, Lose, Merge, ModifyAccess, PickFromQueue, Publish, PublishAll, QualifyLead, Recalculate, ReleaseToQueue, RemoveFromQueue, RemoveItem, RemoveMember, RemoveMembers, RemovePrivilege, RemoveProductFromKit, RemoveRelated, RemoveUserFromRecordTeam, RemoveUserRoles, ReplacePrivileges, Reschedule, Retrieve, RetrieveExchangeRate, RetrieveFilteredForms, RetrieveMultiple, RetrievePersonalWall, RetrievePrincipalAccess, RetrieveRecordWall, RetrieveSharedPrincipalsAndAccess, RetrieveUnpublished, RetrieveUnpublishedMultiple, RetrieveUserQueues, RevokeAccess, Route, RouteTo, Send, SendFromTemplate, SetRelated, SetState, SetStateDynamicEntity, TriggerServiceEndpointCheck, UnlockInvoicePricing, UnlockSalesOrderPricing, Update, ValidateRecurrenceRule, Win