Samstag, August 25, 2007

Lust; Spielereien

Oh man, eine Woche geschafft. Eigentlich kann ich diese Woche nicht so richtig sagen, wie ich mich fühle. Ich bin nur noch total fertig. Ich hab jeden Tag bis 22:30 gearbeitet (nur zur Anmerkungen meistens schon gegen 4-5Uhr aufgewacht), so dass ich gar nicht an die Dame meines Herzens denken konnte. Naja so ganz stimmt das auch nicht, beim Radeln hatte ich immer Zeit und auch meine Gedanken abschweifen lassen. Manchmal ist sowas ganz schön gefährlich. Aber durch die Egal-/Null-Bock-Mentalität übersteht man das aber immer.

Beruflich sind momentan mein Lieblingsthema Workflow Foundation (http://del.icio.us/splushi/wf) und Windows Communication Foundation (http://del.icio.us/splushi/wcf). Zu WF habe ich bereits etwas geschrieben und zu WCF werde ich vermutlich noch etwas schreiben. Mal schauen, was mir zu dem Thema noch einfällt.

Montag, August 13, 2007

Workflow Foundation

Seit 2 Wochen beschäftige ich mit der Workflow Foundation. Die Foundation ist ein echt netter Ansatz, wer mit BizTalk gearbeitet hat, dem wird vieles ähnlich vorkommen. Für die Realisierung von Projekten bringt die Foundation nette Vorteile, da eine zusätzliche Abstraktionsebene geschaffen wird. Somit wird der Programmfluss/-ablauf z. B. auch für nicht Entwickler verständlich und nachvollziehbar. Als Addon auf die Nachvollziehbarkeit wird es für Fachabteilungen ermöglicht, dass die Verarbeitungsreihenfolge von Prozessen verändert werden kann. Es wird dadurch immer noch nicht möglich den gesamten Code zu verändern, aber wenigstens etwas.

Meine Erfahrungen beschränken sich bisher auf einen Workflow ohne externe Events. Bei externen Events muss man an Persistenzschichten denken. (Email an Benutzer -> Benutzer antwortet)

Der große Unterschied von BizTalk und WF ist, dass BizTalk eine komplette Umgebung mit Persistenzmechanismen ist. Momentan komme ich mit dem Fehlerhandling des BizTalks besser klar, als mit dem Fehlerhandling in der WF. Wobei es in der WF bunter ist. J

Die Erweiterbarkeit der WF ist relativ einfach über CustomActivities möglich, eine solcher CustomActivities ist in der HOL (Hands on Labs) enthalten. Aus meiner Sicht hätte man unbedingt eine ExcecutionActivity integrieren müssen. Nun gut, so musste ich meine eigene Schreiben. Die Extensions sind unter http://www.codeplex.com/capevisionWorkflow/Release/ProjectReleases.aspx?ReleaseId=6382 downloadbar.

Mein erster Workflow soll das Anlegen eines Projektes vereinfacht werden und für Nutzer ohne zusätzliche Rechte möglich. Allerdings wird die Eingabe nicht im Workflow sonder über eine separate Web-Oberfläche realisiert. Der Workflow ist für das Anlegen und Benachrichtigen von Komponenten und Nutzern zuständig.

kompletter Workflow
Workflow-Ausschnitt

Das ausführen von Workflows ist in den HOLs und vielen Blogs zu finden. Zur Vollständigkeit ist hier mal der Start meines Workflows abgebildet.

using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())

{

AutoResetEvent waitHandle = new AutoResetEvent(false);

workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };

workflowRuntime.ServicesExceptionNotHandled += delegate(object sender, ServicesExceptionNotHandledEventArgs e)

{

Trace.WriteLine(this.GetLogMessageFormatted("Unhandled Exception! "+e.Exception.ToString()));

};

workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)

{

wfEx = e.Exception;

Trace.WriteLine(this.GetLogMessageFormatted("Termination! "+e.Exception.ToString()));

waitHandle.Set();

};

WorkflowInstance instance = workflowRuntime.CreateWorkflow(this.Configuration.Workflow, parameter);

instance.Start();

 

waitHandle.WaitOne();

}

Wer Parameter zum Workflow hinzufügen will, der gibt diese beim Aufruf der CreateWorkflow-Methode mit. Im Workflow müssen dann Properties mit getter und setter eingefügt werden, die den gleichen Namen wie die Parameter haben. Alles in allem sehr einfach.

Weitere Services (z.B. für Persistenzschicht) werden über die Workflow-Runtime-Instanz hinzugefügt.

Hier noch einiger meiner Links: http://del.icio.us/splushi/wf

Samstag, August 04, 2007

VS.NET Windows Workflow Foundation Installation

Ich habe die ganze Woche bestimmt 10 mal die Workflow Foundation installiert und deinstalliert. Aber leider habe ich immer einen Fehler beim Starten vom Studio bekomme.

package load failure [Microsoft.Workflow.VSDesigner.DesignerPackage, Microsoft.Workflow.VSDesigner, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]“ oder so.

Beim Googlen bin ich fast immer nur auf Problembeschreibung zu den Beta-Versionen gestoßen, leider sehr selten zu den RTMs.

Ich konnte heute mal wieder nicht richtig schlafen und was mache ich installieren und googlen. Ich bin auf einen Blog-Eintrag http://codegoeshere.blogspot.com/2006_08_01_archive.html gestoßen und relativ kurz danach … ES GEHT!

Was wirklich viel bringt, ist „devenv /log“ auszuführen. Im Log-File stand bei mir immer ein Hinweis auf die WebReports8.dll, die das laden des VSDesigners Probleme machten. Also mal das Addin-Folder (Eigene Dateien\VS\Addins) gecheckt und das Addin entfernt.

So einfach kann eine Lösung sein, wieso bekommt man dann nicht eine schöne Fehlermeldung?

Nun werde ich nach BizTalk ein Workflow-Entwickler. :D (Vielleicht etwas spät)