2012-04-10 33 views
7

私はTridion 2009 SP1を使用しています。私がしようとしているのは、コンポーネントが特定のワークフロープロセスを完了した後にイベントを開始することです。直感的に私はOnProcessInstanceFinishPostイベントを使用しようとしましたが、このイベントはユーザ(admin)が明示的に "Finish Process"をクリックしたときにのみトリガされます。すべてのアクティビティが終了し「Visio図のように」「終了」記号終了マーカーに達した後にプロセスが正常に完了すると、このイベントはトリガーされません。問題はOnActivityInstanceFinishPostイベントでロガーを取得していて、単純なメッセージ(「Hello World」など)をログに記録しようとしているが、イベントビューアには常に「エラーが発生しています:TCMEventLog.NTEventLog.1:ReportEventが失敗しました。イベントは実行されません。TCMEventLog.NTEventLog.1でエラーが発生しました:ReportEventが失敗しました

注意を、OnProcessInstanceFinishPostイベントに正確に同じコードがエラーなしで動作します。

私がチェックしましたこれが身元確認ユーザーのアクセス許可に問題があるかどうかを確認するために、ユーザーはTridionの管理者であるため、これはできません。私はSDLTridionworldフォーラムをチェックしましたが、そこには不運があります。もちろん、私のコードではないことを確認するために、コードを1つのloggingステートメントに単純化しました。ここで

はコードです:ここでは

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イベントのスナップインの設定を見落としただけです。 最初は、スナップインで起動するOnProcessInstanceFinishPostイベントのみを設定しました。その後、開発のたびに、新しいイベントを実装しましたが、スナップインでイベントトリガーを更新するのを忘れてしまいました。 –

+0

これを回答として追加すると、より多くのポイントを得ることができます。また、Tridion Stack Exchangeの提案にコミットしていますか? http://area51.stackexchange.com/proposals/38335/tridion –

+0

スナップインでイベントトリガを設定しないと、ログにエラーが表示されません。それは単にイベントが発生しないことを意味するはずです。 –

答えて

2

エラーがTridionのロギングメッセージを書き込むことができなかったことを示します。これは、ワークフローアクティビティの仕上げによってトリガされるという証拠があると思います。

私は何が原因でエラーが発生しているのか分かりませんが、ロギングに失敗した場合は、多くの場合アクセス許可が必要です。

ユーザーが実際にOnActivityInstanceFinishPostイベントをトリガーするワークフローによって異なります。アクティビティがユーザーによって手動で終了された場合、そのユーザーはイベントを実行するWindows ID(またはTridion偽装が構成されている場合は偽装ユーザー)になります。自動アクティビティーの場合、ワークフロー・エージェント・サービス用に構成されたIDによって実行されます。これらのアカウントのそれぞれが正しくログに記録できるかどうかを確認することをお勧めします。

関連する問題