3 Stimmen

Wie man entscheidet, was in einem Arbeitsablauf persistiert wird und was nicht

Ich habe eine Frage bezüglich der Persistenz von Wertzuständen in einem persistierten Workflow. Ich habe zwei Eigenschaften in einer meiner Extension-Klassen:

    public int ApprovalCount
    {
        get;
        set;
    }

    public bool ApprovedByAllInitialApprovers
    {
        get;
        set;
    }

Diese Eigenschaften werden während einiger Berechnungen festgelegt, die auf einer anderen Methode stattfinden.

Mein Problem ist, wenn der Workflow im Leerlauf geht und persistiert, wird der Zustand dieser Werte auch in die Datenbank persistiert, so dass, wenn ich die Methode auf meine Erweiterungsklasse wieder aufrufen, ich die Werte abholen, wie ich sie verlassen; Ich verstehe, dieses Verhalten ist offensichtlich ziemlich grundlegend für die Art und Weise Workflows arbeiten in einer persistierten Art und Weise und in 90 % der Fälle, die ich möchte, dass Werte remebered und persistiert werden, aber was über Ausnahmen zu diesem? Gibt es eine Möglichkeit, eine Eigenschaft zu "markieren" (vielleicht mit einem Attribut), um anzuzeigen, dass sie nicht persistent bleiben soll? Oder muss ich die Werte einfach zurücksetzen, bevor ich meine Berechnung durchführe?

Jede Hilfe ist sehr willkommen. Vielen Dank im Voraus.

0voto

Maurice Punkte 27462

Auf diese Frage gibt es zwei Antworten.

  1. Bei der Serialisierung eines Workflows wird zunächst der binäre Serialisierer verwendet. Daher können Sie alle Felder, die Sie nicht serialisieren möchten, mit dem Attribut NonSerialized markieren.
  2. Das heißt, Workflow-Erweiterungen werden während der Workflow-Persistenz nicht serialisiert, so dass Sie etwas Interessantes tun müssen, damit sie serialisiert werden. Oder aber Sie verwenden eine Singleton-Erweiterung und diese und ihre Werte bleiben bestehen, auch wenn der Workflow persistiert und neu geladen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X