Ich baue einen Windows-Workflow in eine .Net-Webanwendung ein. Das Problem, das ich habe, besteht darin, dass jedes Mal, wenn ich eine Aktivität in der Zustandsmaschine hinzufüge oder lösche oder ändere und sie dann erneut kompiliere und ausführe, sie nicht mehr mit der Datenbank für Nachverfolgung und Persistenz übereinstimme. Anstatt die Änderungen zu aktualisieren oder eine neue Version des Workflows in der Datenbank zu erstellen, wird ein Fehler ausgegeben. Manchmal ist es ein "Index außerhalb der Grenzen" -Fehler, manchmal ist es "Kann das Mitglied XXXXX nicht bekommen."Wie vermeide ich die Neuerstellung meiner Datenbank bei jeder Änderung an meinem Windows-Workflow?
Um es zum Laufen zu bekommen, muss ich die Datenbank löschen und neu aufbauen. Ich glaube, das funktioniert, denn wenn die Workflow-Engine nach dem Workflow in der Datenbank sucht, findet sie ihn nicht und fügt ihn so zur Datenbank hinzu. Das ist sehr frustrierend in der Phase, in der ich arbeite, wo ich den Arbeitsablauf baue und er sich oft an einem Tag ändert.
Gibt es eine Möglichkeit, ich kann einfach die Workflow-Engine die relevanten Tabellen in der Datenbank mit den Änderungen, die ich an den Workflow gemacht habe, zu aktualisieren? Oder überschreiben Sie es mit einer neuen Version? Ich habe verschiedene Webseiten beim Einrichten des Workflows für die dynamische Aktualisierung zur Laufzeit angeschaut, aber keiner dieser Vorschläge funktionierte für mich. Und obwohl das ein Feature ist, das ich für meinen Workflow haben möchte, bin ich mir nicht sicher, ob es wirklich der Weg ist, das Problem zu lösen, das ich habe. Es ist nicht so sehr, dass ich eine neue Version des Workflows erstelle, sondern ich baue einen Workflow und möchte den Teil testen, den ich gerade beendet/hinzugefügt habe, und ich interessiere mich nicht für vorherige Versionen des Workflows und teilweise unvollständig Workflows in der Datenbank.
Danke.
Darüber hinaus Profilverfolgung eine andere Option ist das Laden der mehreren Workflow-Versionen in Ihrem globalen Assemblycache. Die gute Nachricht ist, dass dies in .NET 4.0 kein Problem ist. Die schlechte Nachricht von 4 wird irgendwann im nächsten Jahr sein. – ahsteele
@ksa - erhöhen Sie die Versionsnummer von Hand? Das heißt, wenn Sie Ihren Workflow ändern, erhöhen Sie vor dem erneuten Kompilieren die Versionsnummer im Quellcode. Ich habe versucht, so etwas zu tun, indem ich das Tracking-Profil in meiner Datenbank mit dem gerade erstellten verglichen habe und wenn sie anders waren, würde ich das Profil updaten und die Version inkrementieren, aber ich bekam weiterhin db-Fehler, die ich nicht konnte. t lösen. @ahsteele - Ich habe das auch versucht, aber wieder gescheitert ... nicht viele Gewinne für mich letzte Woche! Ich werde es erneut versuchen. :-) –
Willst du sagen, nach dem Ändern der Profilversion "aktualisierst" du die DB, wenn ja dann das das Problem ist. Die alten Workflow-Instanzen in Ihrer Datenbank benötigen weiterhin die alten Profilversionen. Wenn Sie Ihr Workflow-Design ändern, aktualisieren Sie einfach die Version des Profils im Code (seit Sie den Design- oder Workflow-Code geändert haben). Der DB sollte jetzt Versionen desselben Workflow-Typs profilieren müssen. Hoffe das hilft. – ksa