2012-04-10 13 views
7

Sto utilizzando Tridion 2009 SP1. Quello che sto cercando di fare è dare il via ad un evento dopo che un componente ha completato un certo processo del flusso di lavoro. Intuitivamente ho provato a utilizzare l'evento OnProcessInstanceFinishPost, tuttavia, questo evento viene attivato solo quando un utente (admin) fa clic esplicitamente su "Termina processo"; quando il processo termina normalmente dopo aver completato tutte le attività e "raggiungendo il marcatore di fine" Stop "(come nel diagramma di Visio) questo evento non viene attivatoSi è verificato un errore in TCMEventLog.NTEventLog.1: ReportEvent non riuscito

Quindi ho fatto ricorso all'evento OnActivityInstanceFinishPost. problema è che nell'evento OnActivityInstanceFinishPost sto ricevendo il logger e provo a registrare un messaggio semplice, ad esempio "Hello World", ma il Visualizzatore eventi mostra sempre un errore: "Si è verificato un errore in TCMEventLog.NTEventLog.1: ReportEvent non riuscito." e l'evento non viene eseguito.

nota, nel caso in OnProcessInstanceFinishPost lo stesso codice esatto funziona senza errori.

ho controllato per vedere se questo era un problema con le autorizzazioni dell'utente identità, ma l'utente è un amministratore in Tridion, quindi non può essere questo. Ho controllato il forum SDLTridionworld, ma non ci sono fortuna e, naturalmente, ho semplificato il codice fino alla dichiarazione di registrazione per assicurarmi che non sia qualcosa nel mio codice.

Ecco il codice:

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); 
} 

Ecco l'errore completo:

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

Ho appena capito la risposta. In sintesi, se si verifica questo errore, significa che l'attivazione dell'evento non è stata impostata nello snap-in MMC. Ho semplicemente trascurato la configurazione nello snap-in per l'evento OnActivityInstanceFinishPost. Inizialmente ho configurato solo l'evento OnProcessInstanceFinishPost da attivare nello snap-in. Successivamente, durante lo sviluppo, ho implementato il nuovo evento dimenticandomi di aggiornare il trigger dell'evento nello snap-in per esso. –

+0

Se aggiungi questa risposta come risposta puoi ottenere altri punti. Inoltre, sei impegnato nella proposta di Scambio pila Tridion? http://area51.stackexchange.com/proposals/38335/tridion –

+0

La mancata configurazione del trigger di evento nello snap-in non dovrebbe causare la visualizzazione di un errore nei log. Dovrebbe semplicemente significare che l'evento non sparerà. –

risposta

2

L'errore indica che Tridion è riuscito a scrivere un messaggio di registrazione. Presumo che tu abbia già alcune prove che questo è stato innescato dal completamento dell'attività del flusso di lavoro.

Non so cosa stia causando l'errore, ma con errori di registrazione, si tratta spesso di autorizzazioni.

Dipenderà dal flusso di lavoro che l'utente attiva effettivamente l'evento OnActivityInstanceFinishPost. Se l'attività viene completata manualmente da un utente, quell'utente sarà l'identità di Windows che esegue l'evento (o se è configurata la rappresentazione di Tridion, l'utente di rappresentazione). Se si tratta di un'attività automatica, verrà eseguita dall'identità configurata per il servizio dell'agente del flusso di lavoro. Suggerirei di verificare se ognuno di questi account è in grado di accedere correttamente.

Problemi correlati