2012-04-11 5 views

Antwort

15

Die Informationen sind im PluginExecutionContext verfügbar. Der folgende Code stammt von der Execute-Methode, die von Ihrem Plug-in implementiert werden muss.

public void Execute(IServiceProvider serviceProvider) 
{ 
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
     IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
    Guid userId = context.InitiatingUserId; 
} 

FYI, der Kontext hat auch eine „Benutzer-ID“ Eigenschaft, die nicht das gleiche wie die InitiatingUserId sein kann. Wenn Ihr Plugin Schritt Registrierung "Im Benutzer Kontext ausführen" Feld hat den Wert "Calling User", dann werden sie gleich sein. Wenn Sie im Feld "Im Kontext des Benutzers ausführen" einen Benutzer angegeben haben, enthält das Feld UserId die Benutzer-ID der von Ihnen angegebenen Person und die InitiatingUserId ist der tatsächliche CRM-Benutzer, dessen Aktion das Plug-in ausgelöst hat. Klingt, als ob du nach der InitiatingUserId suchst.

3

Die obige Antwort ist korrekt. Denken Sie auch daran, dass Sie, wenn Sie das Plugin nicht im Benutzerkontext ausführen möchten, den modifizierenden Benutzer auch von der InputEntity abrufen können, die an das Plugin übergeben wird, unabhängig davon, welches Feld gerade aktualisiert wird.

In dem Szenario, in dem Sie nicht in Benutzerkontext ausgeführt werden, können Sie dann einen Anruf service.Retrieve tun, um die vollständige Aufzeichnung für die modifizierende Benutzer zu erhalten.