2012-04-10 2 views
7

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> 
+2

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. –

+0

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 –

+0

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. –

Répondre

2

L'erreur indique que Tridion a omis d'écrire un message de journalisation. Je suppose que vous avez déjà des preuves que cela est déclenché par l'achèvement de l'activité de workflow.

Je ne sais pas ce qui cause l'erreur, mais avec les échecs de journalisation, il s'agit souvent de permissions.

Cela dépendra de votre flux de travail dont l'utilisateur déclenche l'événement OnActivityInstanceFinishPost. Si l'activité est terminée manuellement par un utilisateur, cet utilisateur sera l'identité Windows exécutant l'événement (ou si l'emprunt d'identité Tridion est configuré, l'utilisateur d'emprunt d'identité). S'il s'agit d'une activité automatique, elle sera exécutée par l'identité configurée pour le service de l'agent Workflow. Je suggère de vérifier si chacun de ces comptes est capable de se connecter correctement.

Questions connexes