2012-04-10 96 views
7

我正在使用Tridion 2009 SP1。我想要做的是在组件完成某个工作流程过程后启动一个事件。直觉上我尝试过使用OnProcessInstanceFinishPost事件,但是,只有当用户(管理员)明确点击“Finish Process”时才会触发此事件。当所有活动完成并且“到达'停止''结束标记(如Visio图中所示)后,该进程正常完成时,此事件不会被触发。TCMEventLog.NTEventLog.1发生错误:ReportEvent失败

因此,我采取了使用OnActivityInstanceFinishPost事件。问题是在OnActivityInstanceFinishPost事件中,我获取记录器并尝试记录一条简单消息,例如“Hello World”,但事件查看器始终显示错误:“TCMEventLog.NTEventLog.1中发生错误:ReportEvent失败。”和该事件没有得到执行。

注意,在OnProcessInstanceFinishPost事件完全相同的代码工作没有错误。

我检查看看这是否是身份用户的权限问题,但用户是Tridion中的管理员,所以这不可能。我已经检查了SDLTridionworld论坛,但没有运气,当然,我已经简化了代码到一个日志记录语句,以确保它不是我的代码中的东西。

下面是代码:

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

以下是完整的错误:

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

我刚想出答案。总之,如果遇到此错误,这意味着事件触发器尚未在MMC管理单元中设置。 我只是忽略了OnActivityInstanceFinishPost事件管理单元中的配置。 我最初只配置了在Snap-In中触发的OnProcessInstanceFinishPost事件。然后在整个开发过程中,我实现了新事件,同时忘记更新管理单元中的事件触发器。 – 2012-04-10 18:26:40

+0

如果您将此添加为答案,您可以获得更多积分。另外,你是否承诺提交Tridion Stack Exchange提案? http://area51.stackexchange.com/proposals/38335/tridion – 2012-04-11 07:44:00

+0

未能在管理单元中配置事件触发器将不会导致在日志中显示错误。它应该只是表示该事件不会触发。 – 2012-04-11 18:31:51

回答

2

的错误指示外表套上未能写入日志消息。我假设您已经有一些证据表明这是由工作流活动完成引发的。

我不知道是什么导致了错误,但是由于日志记录失败,它通常是关于权限的。

这取决于您的工作流程,哪个用户实际触发了OnActivityInstanceFinishPost事件。如果用户手动完成活动,则该用户将成为执行该事件的Windows身份(或者,如果配置了Tridion模拟,模拟用户)。如果它是一个自动活动,则它将由为Workflow代理服务配置的标识执行。我会建议检查每个帐户是否能够正确记录。

相关问题