7

Tridion2009SP1を使用しています。私がやろうとしているのは、コンポーネントが特定のワークフロープロセスを完了した後にイベントを開始することです。直感的にOnProcessInstanceFinishPostイベントを使用しようとしましたが、このイベントは、ユーザー(管理者)が明示的に[プロセスの終了]をクリックした場合にのみトリガーされます。すべてのアクティビティが終了し、「「停止」記号の終了マーカーに到達した後(Visioの図のように)、プロセスが正常に完了すると、このイベントはトリガーされません。

そのため、代わりにOnActivityInstanceFinishPostイベントを使用することにしました。問題は、OnActivityInstanceFinishPostイベントでロガーを取得し、「Hello World」などの単純なメッセージをログに記録しようとしていますが、イベントビューアーに常にエラーが表示されることです:「TCMEventLog.NTEventLog.1:ReportEventでエラーが発生しました。」イベントは実行されません。

OnProcessInstanceFinishPostイベントでは、まったく同じコードがエラーなしで機能することに注意してください。

これがIDユーザーの権限に問題があるかどうかを確認しましたが、ユーザーはTridionの管理者であるため、これは問題ではありません。SDLTridionworldフォーラムを確認しましたが、運が悪かったので、もちろん、コードを1つのログステートメントに簡略化して、コードに含まれていないことを確認しました。

コードは次のとおりです。

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>
4

1 に答える 1

2

このエラーは、Tridionがログメッセージの書き込みに失敗したことを示しています。これがワークフローアクティビティの終了によってトリガーされるという証拠がすでにあると思います。

エラーの原因はわかりませんが、ログの失敗により、多くの場合、アクセス許可が問題になります。

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

于 2012-04-11T18:30:20.347 に答える