2012-04-10 17 views
7

Estoy usando Tridion 2009 SP1. Lo que intento hacer es dar inicio a un evento luego de que un componente complete un determinado proceso de flujo de trabajo. Intuitivamente he intentado utilizar el evento OnProcessInstanceFinishPost; sin embargo, este evento solo se activa cuando un usuario (administrador) hace clic explícitamente en "Finalizar proceso"; cuando el proceso se completa normalmente después de finalizar todas las actividades y "alcanzar el marcador de fin de signo 'Stop' (como en el diagrama de Visio) este evento no se desencadena.Ocurrió un error en TCMEventLog.NTEventLog.1: ReportEvent failed

Así que he recurrido al uso del evento OnActivityInstanceFinishPost en su lugar. El problema es que en el evento OnActivityInstanceFinishPost obtengo el registrador e intento registrar un mensaje simple, por ejemplo, "Hola mundo", pero el Visor de eventos siempre muestra un error: "Ocurrió un error en TCMEventLog.NTEventLog.1: Error de informe de evento" y el evento no se ejecuta.

Nota, en caso OnProcessInstanceFinishPost exactamente el mismo código funciona sin errores.

he comprobado para ver si esto era un problema con los permisos del usuario de identidad, pero el usuario es un administrador en Tridion, por lo que no puede ser. Revisé el foro de SDLTridionworld, pero no tuve suerte allí, y por supuesto, simplifiqué el código hasta la única declaración de registro para asegurarme de que no sea algo en mi código.

Aquí está el código:

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

Aquí está el error 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

Acabo de descubrir la respuesta. En resumen, si se encuentra este error, significa que el desencadenador de evento no se ha configurado en el complemento MMC. Simplemente pasé por alto la configuración en el complemento para el evento OnActivityInstanceFinishPost. Inicialmente configuré solo el evento OnProcessInstanceFinishPost para disparar en el complemento. Luego, más adelante, durante todo el desarrollo, implementé el nuevo evento y olvidé actualizar el desencadenador del evento en el complemento. –

+0

Si agrega esto como respuesta, puede obtener más puntos. Además, ¿está comprometido con la propuesta de Tridion Stack Exchange? http://area51.stackexchange.com/proposals/38335/tridion –

+0

Si no se configura el desencadenador de eventos en el complemento, no se debe mostrar un error en los registros. Simplemente debería significar que el evento no se disparará. –

Respuesta

2

El error indica que ha fallado Tridion para escribir un mensaje de registro. Supongo que ya tiene alguna evidencia de que esto se desencadena por el acabado de la actividad del flujo de trabajo.

No sé qué está causando el error, pero con los errores de inicio de sesión, a menudo se trata de permisos.

Depende de su flujo de trabajo, que el usuario activa realmente el evento OnActivityInstanceFinishPost. Si un usuario finaliza manualmente la actividad, ese usuario será la identidad de Windows que ejecutará el evento (o si se configura la suplantación de Tridion, el usuario de suplantación). Si se trata de una actividad automática, la identidad configurada para el servicio del agente de Workflow la ejecutará. Sugeriría verificar si cada una de estas cuentas puede iniciar sesión correctamente.

Cuestiones relacionadas