我正在使用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>
我刚想出答案。总之,如果遇到此错误,这意味着事件触发器尚未在MMC管理单元中设置。 我只是忽略了OnActivityInstanceFinishPost事件管理单元中的配置。 我最初只配置了在Snap-In中触发的OnProcessInstanceFinishPost事件。然后在整个开发过程中,我实现了新事件,同时忘记更新管理单元中的事件触发器。 – 2012-04-10 18:26:40
如果您将此添加为答案,您可以获得更多积分。另外,你是否承诺提交Tridion Stack Exchange提案? http://area51.stackexchange.com/proposals/38335/tridion – 2012-04-11 07:44:00
未能在管理单元中配置事件触发器将不会导致在日志中显示错误。它应该只是表示该事件不会触发。 – 2012-04-11 18:31:51