2012-03-23 3 views
2

Ich verwende das SDL Tridion-Ereignissystem, um eine Methode (OnEmergencyRelease) auszulösen, sobald eine Workflow-Aktivität abgeschlossen wurde. Allerdings wird meine Methode während des Tests nicht eingegeben, da ich einige Komponenten durch den Workflow-Prozess trete.SDL Tridion 2011 Ereignissystem - Ein Workflow-Prozess Fertig

Ich melde mich mit dem folgenden Code:

EventSystem.Subscribe<Component, 
    FinishProcessEventArgs>(OnEmergencyRelease, EventPhases.TransactionCommitted); 

Aber OnEmergency wird nie eingegeben werden:

private void OnEmergencyRelease(Component component, 
           FinishProcessEventArgs args, EventPhases phase) 
{ 
    _log.Info("Emergency release entered"); 
} 

Wer irgendwelche Ideen, was ich falsch mache hier?

Ich weiß, dass das Ereignissystem aufgenommen wird, während ich im Konstruktor meiner Klasse in das Protokoll schreibe.

+0

An welchen Prozess hängen Sie an? Weißt du, ob deine pdb-Dateien an der richtigen Stelle sind? –

Antwort

6

Ich kann nicht mit Sicherheit sagen, was passiert, aber ich vermute, dass die FinishProcessEventArgs nicht auf das Component-Objekt selbst aufgerufen wird. Vielleicht sollten Sie versuchen, ein Objekt "höher" in der Klassenhierarchie abzufangen.

Beispiel: Verwendung Prozess (oder ProcessInstance oder sogar IdentifiableObject)

EventSystem.Subscribe<Process, FinishProcessEventArgs>(OnEmergencyRelease, EventPhases.TransactionCommitted);

+0

Hi Mihai, das macht Sinn, Will es versuchen und lassen Sie es wissen, danke für die Antwort. – johnwinter

+0

Wenn es funktioniert, bitte als Antwort markieren :) Sie wissen ... es ist alles über Punkte, Rep-Cred, Abzeichen und Zeug :)) –

+0

Hallo Mihai, Ja, es funktioniert mit RepositoryLocalObject. Ich habe versucht, eine Stufe auf VersionedItem hochzugehen, aber das hat nicht funktioniert. Danke für die Hilfe :) – johnwinter

0

Ist das Brennen Ereignis? Ich erwarte, dass Prozesse beim Beenden von Prozessen ausgelöst werden, wenn Sie explizit eine Aktion zum Beenden des Prozesses aufrufen, und wahrscheinlich nicht, wenn Sie die Elemente schrittweise durchlaufen.

+0

Hallo Dom, es feuert jetzt ich benutze RepositoryLocalObject anstelle der Komponente. – johnwinter