Как разрешить плагину CRM обрабатывать несколько сообщений о событиях


Мне нужно создать один плагин для запуска на создание, обновление и удаление событий возможностей сущностей.

Могу ли я сделать это в одном плагине? Если да, то как я могу это сделать?

2 2

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