2007-01-31

WCF aktiviteter

codeplex finns ett trevligt projekt som innehåller aktiviteter för att prata via WCF med omvärlden, detta är absolut värt att kika närmare på.

http://www.codeplex.com/WCFWorkflow

2007-01-26

Pageflow (nästan the real thing)

Att styra sidflödet i en traditionell eller asp.net-klient är något som det talats om en hel del och jag gissar att vi kommer att få se det i framtida versioner av workflow foundation (såg en enkel demo på teched senast så jag gissar nog inte så mycket egentligen)

Här är ett litet trevligt exempel på hur man kan åstakomma något liknande genom att använda regelmotorn i WF för att styra en asp.net-lösning.

Regelmotorn i WF är trevlig och medger förändringar i redan deployade workflows.

2007-01-25

Arv och Workflows

Workflows ärver från SequentialWorkflowActivity (för sekventiella flöden) och en dag slog mig tanken att skapa en basklass för detta i mitt projekt.

Varför använda arv?

  • Kapsla återkommande kod, tex för att registrera nya instanser, fel, avslut
  • Förenkla för andra utvecklare i projektet
  • Ett ställe att underhålla denna generella kod
  • Basklassen skulle kunna ligga i ett eget assembly

Vad händer när vi skapar ett arv från SequentialWorkflowActivity? Svaret är GÖR DET INTE!, designern hanterar det inte och om man löser det problemet (efter många timmar) så snurrar inte flödet ändå eftersom runtimen inte hanterar det.

Lösningen är att använda exempelvis decorator pattern men jag valde en variant (Eftersom mina flöden lever i MOSS och jag inte har full kontroll över dem)

Först skapade jag ett interface IWorkflowHelperEnabled som ger mig tillgång till själva flödet och dess aktiviteter. Sedan skapade jag en klass som heter WorkflowHelper som tar en instans av IWorkflowHelperEnabled och registrerar de event och övrigt som jag vill hantera.

Dvs mina flöden implementerar IWorkflowHelperEnabled och skapar en instans av WorkflowHelper med sig själv som parameter (WorkflowHelper tar ett IWorkflowHelperEnabled objekt som parameter i konstruktorn).

Ibland saknar jag verkligen multipla arv..

2007-01-24

WFPad / XAML

Då det finns två sätt att beskriva arbetsflöden i workflow foundation kanske det är dags att nämna metod två. Som ni sett nedan är metod ett med hjälp av kod.

Vad är då metod två? Svaret är som mycket annat nuförtiden XAML. Mha av xml kan vi alltså beskriva våra arbetsflöden och deploya till exempelvis sharepoint.

Vi kommer att kika närmare på detta framöver men här är i alla fall ett coolt verktyg som låster oss utforska området lite närmare (det finns även en projekttyp för xaml i VS efter ni installerat allt nedan)

2007-01-23

MOSS / WSS SDK

Idag släpptes den skarpa versionen av dessa utvecklingskit, klipper in lite information om vad som skiljer dem åt (på engelska från den officiella bloggen)

· MOSS SDK and ECM Starter Kit – We combined the ECM Starter Kit with the MOSS SDK documentation and samples, and we also included the WSS and Office Forms Server SDK documentation so you only have to download and install one package.

· Windows SharePoint Services Developer Resources – If you are only interested in WSS platform development, we combined the WSS SDK documentation with the Workflow Starter Kit.

Ladda hem:
Ø MOSS SDK and ECM Starter Kit
Ø WSS SDK and Workflow Starter Kit

Detta är alltså det som krävs för att skapa workflows i sharepoint. Är själv involverad i ett projekt där jag utvecklar arbetsflöden i MOSS 2007.

Vi kommer att prata mera om utveckling i sharepoint framöver.

2007-01-22

Komma igång

För att komma igång krävs de komponenter som jag beskrev i min förra post.

Starta sedan Visual Studio och välj att skapa ett nytt projekt av typen Sequential Workflow Console Application (enkel att komma igång med)

När detta är gjort får du upp själva designern för flödet. Lägg gärna ned lite tid på att kika på de olika aktiviteter som finns i toolbaren. Här finns en enkel beskrivning av de aktiviteter som styr flödet.

Växla sedan till kod-vyn och skapa några publika properties, exempelvis summa. Växla sedan åter till design-vyn och lägg in lite olika regler som beror på om summan är över eller under vissa värden.

För att köra ditt flöde krävs följande kod:

WorkflowRuntime workflowRuntime = new WorkflowRuntime();
workflowRuntime.StartRuntime();

Sedan kan du starta en instans av flödet genom följande i Program.cs:



Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add(
"Summa", 100);
WorkflowInstance instance
= workflowRuntime.CreateWorkflow(typeof(Workflow1), parameters);
instance.Start();

Där du ersätter Summa och Workflow1 med för ditt flöde korrekta värden. Detta är alltså ett enkelt sätt för oss att initiera en ny instans av just vårt flöde.

Provkör ditt projekt och testa sedan att sätta breakpoints i design-vyn, det är ett kraftfullt sätt att debugga ett flöde.

2007-01-17

Välkommen

I denna blogg kommer jag att skriva om Workflow Foundation, alla inlägg kommer att vara på svenska och materialet kommer att ha en blandad teknisk nivå.

Vissa inlägg kommer att beröra workflow foundation generellt och andra kommer att vara sharepoint-specifika.

För att komma igång krävs följande
Visual Studio 2005
.NET framework 3.0
Visual Studio 2005 Extensions for .NET Framework 3.0 (Windows Workflow Foundation)
Hoppas ni har tålamod med att vi utgår från en grundnivå i denna blogg, snart blir vi mer tekniska.