2012-04-10 57 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代理服務配置的標識執行。我會建議檢查每個帳戶是否能夠正確記錄。

相關問題