J'utilise Tridion 2009 SP1. Ce que j'essaie de faire est de lancer un événement après qu'un composant a terminé un certain processus de workflow. Intuitivement, j'ai essayé d'utiliser l'événement OnProcessInstanceFinishPost, mais cet événement n'est déclenché que lorsqu'un utilisateur (admin) clique explicitement sur "Terminer le processus"; lorsque le processus se termine normalement après que toutes les activités ont été terminées et que le marqueur de fin de signe 'Stop' a atteint le diagramme Visio, cet événement n'est pas déclenché. problème est que dans l'événement OnActivityInstanceFinishPost je reçois l'enregistreur et essayer de journaliser un message simple, par exemple "Hello World", mais l'Observateur d'événements affiche toujours une erreur: "Une erreur s'est produite dans TCMEventLog.NTEventLog.1: ReportEvent échoué." l'événement ne soit pas exécuté.Une erreur s'est produite dans TCMEventLog.NTEventLog.1: ReportEvent a échoué
note, en cas OnProcessInstanceFinishPost exactement le même code fonctionne sans erreurs.
J'ai vérifié pour voir si c'était un problème avec les permissions de l'utilisateur d'identité, mais l'utilisateur est un administrateur dans Tridion, donc cela ne peut pas être le cas. J'ai vérifié le forum de SDLTridionworld, mais pas de chance là-bas, et bien sûr, j'ai simplifié le code à la seule déclaration de notation pour m'assurer que ce n'est pas quelque chose dans mon code.
Voici le code:
public void OnActivityInstanceFinishPost(ActivityInstance ActivityInstance, string finishMessage, string nextActivity, string dynamicAssignee)
{
TDSE tdse = new TDSEClass() as TDSE;
tdse.Impersonate(_identity);
tdse.Initialize();
Logging logger = tdse.GetLogging() as Logging;
logger.LogEvent("Entered event OnActivityInstanceFinishPost. nextActivity="+nextActivity, EnumSeverity.severityInfo, EnumEventCategory.EVENT_CATEGORY_EVENT_SYSTEM);
}
Voici la pleine erreur:
Log Name: Tridion Content Manager
Source: Kernel
Date: 4/9/2012 10:14:07 PM
Event ID: 100
Task Category: Logging
Level: Error
Keywords: Classic
User: SYSTEM
Computer: xxxxxxxxxxxxxx
Description:
An error occured in TCMEventLog.NTEventLog.1:
ReportEvent failed.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Kernel" />
<EventID Qualifiers="49152">100</EventID>
<Level>2</Level>
<Task>9</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2012-04-10T03:14:07.000Z" />
<EventRecordID>546126</EventRecordID>
<Channel>Tridion Content Manager</Channel>
<Computer>xxxxxxxxxxxxxxxxxxxxxxxxx</Computer>
<Security UserID="S-1-5-18" />
</System>
<EventData>
<Data>An error occured in TCMEventLog.NTEventLog.1: ReportEvent failed.</Data>
</EventData>
</Event>
Je viens de trouver la réponse. En résumé, si cette erreur est rencontrée, cela signifie que le déclencheur d'événement n'a pas été configuré dans le composant logiciel enfichable MMC. J'ai simplement ignoré la configuration dans le composant logiciel enfichable pour l'événement OnActivityInstanceFinishPost. J'ai initialement configuré uniquement l'événement OnProcessInstanceFinishPost à déclencher dans le composant logiciel enfichable. Puis, plus tard, tout au long du développement, j'ai implémenté le nouvel événement en oubliant de mettre à jour le trigger de l'événement dans le snap-in. –
Si vous ajoutez ceci comme réponse, vous pouvez obtenir plus de points. En outre, êtes-vous engagé dans la proposition d'échange de Tridion Stack? http://area51.stackexchange.com/proposals/38335/tridion –
Si vous ne configurez pas le déclencheur d'événement dans le composant logiciel enfichable, une erreur ne doit pas apparaître dans les journaux. Cela devrait simplement signifier que l'événement ne se déclenchera pas. –