2007-12-17

Utöka sharepoint designer med egna aktiviteter eller villkor

Hittade två bra artiklar om hur man utökar sharepoint designer med nya workflowaktiviteter och villkor.

Tydligen har teamet som skapar SDKn till sharepoint startat en egen blogg och där kommer vi att få se ny dokumentation, exempel osv innan de officiellt kommer till msdn.

Här är de båda artiklarna:

Extending Workflow Actions for SharePoint Designer

Creating new .ACTIONS files for code-free workflow editors

Båda är skrivna Rodney Farris som verkar vara vår wf-kille i detta team framöver.

2007-12-13

Workflows will fail if you have a task list with over 2000 items

Såg detta inlägg på msdn-forumen, vet inte värdet av inlägget då det är lite svårt att kontrollera källan men det kan i alla fall vara värt att läsa.

Själva inlägget handlar om samma område som jag bloggat om tidigare

Kritisk info angående sharepoint workflows och loggning

Kritisk info angående sharepoint workflows och loggning (del 2)

Enligt skribenten är följande från Microsoft Customer Service & Support - SharePoint

"I investigated more into the queries of having more than 2000 items in the list & the associated issues, basically these point to having performance issue that affects responsiveness of our Sharepoint box.

Basically the explanation goes like this

1. To enumerate all the items in a list you basically do a select * from userdata where list = infopath
2. To enumerate a view such as allitems.aspx which is paged you have to do select top 100 * from userdata where list = infopath order by some column.
The first degrades linearly with the number of items because obviously more items are selected as part of the query and also becomes a network throughput issue.
The second, which is presumably going to be executed far more commonly also degrades linearly but uses comparatively more of the SQL CPU (as compared to the network or disk) because the query requires SQL to sort and then filter the items.
A final comment is that there is no hard limit and depending on the usage model of the users and the hardware you throw at it, you can likely go far higher than a couple thousand items. It becomes a balancing act. If you set up a server with a decent SQL box (e.g. a 4-way with lots of memory) and perfmon shows that the SQL CPU is fairly idle because of the usage pattern then having more items in a list, especially if that list isn’t? viewed/enumerated very often, isn’t going to hurt you much (because you have CPU cycles to spare). However in practical scenario you would see usage pattern the SQL CPU is already at or near being the bottleneck then adding more items to a list that is viewed frequently is going to put more pressure on the SQL CPU and cause problem

Our suggested value of 2000 comes as much from not wanting transactions which enumerate a given list to use a disproportionate amount of the SQL CPU such that other transactions which are well within suggested limits might not respond well because of a SQL bottleneck. Measured in isolation you will find that enumerating a list with thousands of items can be reasonably fast and even under load can maintain a decent throughput rate up to a large number of users. But, under such load, the SQL CPU would be flat out pegged so there is no room on the box to do anything else and that is the problem we want to avoid by suggesting/recommending the above value."

2007-12-07

Ramverk för ASPX TaskForms i Sharepoint 2007

Jag har planer att skapa ett litet projekt som ni kan använda för att enkelt skapa aspx taskforms. Har idag en god ide om hur detta projekt skall se ut och avser att lägga upp det på codeplex under en licens som tillåter er att använda lösningen kommersiellt (och utan möjlighet att hålla mig som ansvarig för något)

Projektspråket blir engelska och jag lutar just nu mot creativecommons som licens.

Största utmaningen just nu är att hitta på ett bra namn, om ni kommer på något så maila mig gärna =)

  • SPAspTask
  • AspMyTask
  • SmartTask

Well, ni förstår mitt problem.. maila på! (eller skriv i kommentarerna till denna artikel)

2007-11-30

Retry activity - artikel samt mina funderingar

Här finns en bra artikel som beskriver hur man bygger en egen semiavancerad aktivitet som uppfyller behovet av ett retry-beteende med en delay.

Min fundering kring hela denna artikel är varför han valt att skriva massor av kod istället för att bara skapa en composit aktivitet. Dvs designa detta med hjälp av en fault-handler, en delay-activity och en while-loop. Borde kunna resultera i en otroligt begränsad mängd kod och en mkt coolare lösning =)

2007-11-29

Innovation Day - Utveckling med Microsoft Office SharePoint Server 2007

Idag fick jag möjligheten att hålla en presentation av Workflow foundation i sharepoint ute hos Microsoft i akalla och det var en mkt trevlig upplevelse (även om det var sista passet innan lunch och några skruvade på sig). Tack för att ni tog er tid och lyssnade på mig även med kurrande magar.

Jag kan varmt rekommendera att bevaka Microsoft's events som på ett enkelt sätt ger oss möjlighet att få tillgång till nyheter.

Naturligtvis är även MSDN/SE en grym startpunkt för hitta guldkorn.

2007-11-22

Visual Studio 2008 - logga eventuella installationsproblem

Hittade denna artikel som pratar om ett verktyg som kan användas för att logga själva installationen av .NET 3.5 & VS 2008. Kan säkert vara ett bra verktyg för er som råkat ut för problem (verkar vara rätt vanligt tyvärr)

Vet att de senaste artiklarna inte direkt handlat om WF men VS2008 är en stor nyhet =)

Direktlänk till verktyget http://astebner.sts.winisp.net/Tools/Collect.zip

2007-11-21

Installation av VS2008

Jag tog ett helhetsgrepp runt installationen och tog bort allt som hade med VS2005 att göra, dvs SDK-er, dokumentation och så vidare. Efter detta installerade jag VS2008 och då började problemen. Dessa visade sig exempelvis när jag skapade ett webprojekt med 3.5 som mål och inte ens den web.config som automatgenererades var ok. Råkade även ut för att WYSIWYG webeditorn inte kunde ladda något så enkelt som en button. Hur löser man nu detta frågar ni? Tja, jag försökte allt och då menar jag verkligen allt.. ominstallation av hela VS, repair av allt möjligt, ta bort div hotfixar till Vista, återställa vissa SDK, ominstallera IIS, ominstallera .NET.. inget fungerade!

Som tur är så fungerade system restore briljant!! Vem kunde tro att den funktionen faktiskt kunde fungera?! Med min gamla VS2005 med tillbehör tillbaka på burken funkade VS2008 fint som tusan =D

Läxa: Avinstallera INTE VS2005 innan installation av VS2008 (kanske inte heller efter)

Av vad jag läst på olika forum så kan detta bero på en SP till NET2.0 (denna finns att ladda ned från microsoft och där står det att den hör till Vista men själva installationen vägrar köra på vista.. go figure) Såg att vissa rapporterat detta på connect.microsoft.com men de blev stängda med cannot reproduce.

Hur som helst så rockar VS2008 så fega inte bara pga mitt bloggande!!

2007-11-20

Visual Studio 2008 ReadMe

Många skippar nog (med glädje) att läsa denna fil men i denna release av VS måste jag säga att det står en hel del viktiga saker rörande bla Workflow Foundation.

Exempel:

2.1.1. Visual Studio SharePoint Workflow features have specific installation requirements.

2.3.1.3. Windows Workflow debugging with T-SQL is not supported.

2.3.1.5. Adding a new database unit test to a workflow project displays an error message.

2.3.1.6. To work correctly, the Visual Basic Workflow designer requires the Visual Web Developer feature to be installed.

2.3.5.5. Using Office SharePoint workflow templates on a 64-bit operating system is unsupported and causes an exception.

2.3.5.10. Visual Studio 2008 throws an exception if you attempt to create a SharePoint workflow project on a computer that does not have SharePoint installed.

2.3.5.11. Compiling the SharePoint workflow sample causes an error message to appear.

2.3.9.1. Custom activities do not appear in the Visual Studio 2008 toolbox when you use Visual C++ Development settings.

Denna readme växer även rätt stadigt så en titt om en vecka igen lär inte skada.

2007-11-19

Skarpa Visual Studio 2008 är nu tillgänglig

Såg på Dag Königs blogg att VS 2008 nu finns för nedladdning på MSDN.. Sist i sjön förlorar =)

Kritisk info angående sharepoint workflows och loggning (del 2)

Del ett finns här

Har letat vidare runt denna issue (även fått bra feedback från er läsare) och har hittat följande två guldkorn.

På detta sätt kan man påverka tiden som associationen (och kopplingen till historyn) finns kvar via kod (för läsbarhetens skull använder jag ingen delegat i kodexemplet).

SPList list = //Din lista
SPWorkflowAssociation wfAssociation = null;
foreach (SPWorkflowAssociation association in list.WorkflowAssociations)
{
   if (association.Name == "Din association")
   {
      association.AutoCleanupDays = 9999;
      wfAssociation = association ;
      break;
   }
}
list.UpdateWorkflowAssociation(wfAssociation);

Jag hittade även ett exempel på hur man kan få samma effekt för egenutvecklade workflows via element manifestet (workflow.xml)

<Elements ....>
   <Workflow>
      <MetaData>
         <AutoCleanUpDays>9999</AutoCleanupDays>
      </MetaData>
   </Workflow>
</Elements>

Ser ut som en relativt enkel väg att gå om det nu fungerar som det är tänkt.

Värt att notera är att en av anledningarna till att det ser ut som det gör är pga prestanda (som vi kan läsa på Robert Bogue's blogg) och vi måste bestämma om vår logg är viktig nog kontra kostnaden. Det jag ser som lesson-learned är att historylistan inte skall användas som en "riktig" logg utan snarare som ett komplement.

Om någon behöver hjälp med att utveckla en egen logg-aktivitet så får ni gärna höra av er ;-)

2007-11-15

Nybörjare?

För alla som nyss upptäckt workflow foundation vill jag påpeka att det finns en hel del guider och liknande i början av denna blogg.

I januari fyller bloggen ett år, får fundera ut något lämpligt sätt att fira den händelsen =)

2007-11-14

SharePoint - Workflow - MSDN Forums

Det finns förresten ett bra forum för oss utvecklare där jag och många med mig försöker svara på många av de frågor som postas där.

På TechEd gjorde Microsoft det väldigt klart för oss deltagare att de valt att satsa på att göra forumen levande och försöka få en bra kvalité i användarupplevelsen så det är antagligen en bra väg att gå =)

Pattern för aktiviter som kan ta lång tid

Hittade en bra artikel som beskriver hur workflow foundation kan hjälpa utvecklare att implementera stöd för aktiviteter som spänner över en längre tid. Där beskrivs även varför vi inte vill blockera tråden som kör vårt workflow och ger en liten blick bakom kulisserna på WF.

I .NET 3.5 har dessa patterna förenklats rejält i och med stödet för WCF (som jag tidigare skrev i bloggen så är WCF den föredragna vägen för att komunicera med en aktiv WF-instans)

I exemplet finns även kod att ladda ned.

Min personliga reflektion är att detta antagligen är ett av de vanligare områdena där vi kommer att se applikationer som springer in i prestandaväggen.

2007-11-12

Kritisk info angående sharepoint workflows och loggning

Under en session på TechEd påtalade en av talarna i förbifarten att workflow-history'n försvinner efter 60 dagar. Detta kom som en rejäl överaskning för mig och jag måste säga att det låter som ett otroligt konstigt designbeslut.

Här finns en bra bloggpost som beskriver problemet i detalj, tydligen är det workflow-associationen för instansen som rensas och på så sätt försvinner relationen mellan objektet och dess ärende (samt logg)

Som tur är går detta enligt en kommentar på den länkade bloggen att fixa genom stänga av jobbet:

Central Administration > Operations > Timer Job Definitions > Workflow Auto Cleanup

Har inte testat detta själv men tror det delvis löser problemet, tyvärr kommer det att bli rejäla problem så fort någon slår på timern igen... En lösning kan vara att programatiskt ändra fältet som sätter de 60-dagarna men det låter som ett hack.

Ni som har möjlighet att påverka Microsoft bör påtala denna brist och förklara hur kritisk den är!

En tanke som slår mig är även varför man gjort denna design.. prestandaproblem eller vad?

Nya starter kits

Här kommer en liten lista på nya/(nya versioner av) ett gäng starter-kits.

Bara att ladda hem och köra igång med Workflow Foundation alltså =)

Skönt att vara hemma från TechEd igen, borta bra..

2007-11-08

TechEd 2007 - Torsdag

Var nyss på en lvl400-dragning med titeln "Deep Dive" som handlade om workflow foundation i sharepoint. Tydligen är det inte många som gjort egna aktiviteter, använt loggning, kopplat in affärslager via WCF osv där ute eftersom dragningen snarare kändes som "lvl200 introduction"

Gick därifrån med lite blandade känslor, ville ha ut mer men kände samtidigt att tekniken rockar och det jag hittils gjort är rätt o riktigt.

Att använda workflow foundation kan vara en utmaning, det är mkt som skiljer sig åt mot traditionell utveckling och det finns många fällor på vägen. Hur som helst blir slutresultatet grymt och om man lägger ned mkt tid i början av projektet så blir det väldigt produktivt senare =)

ps: Ted Pattison pratade sig varm om InfoPath/FormServices, jag håller nog inte riktigt med honom och vill gärna peka ut min tidigare postning om detta ämne.

2007-11-07

TechEd 2007 - Onsdag (del 2)

Har precis käkat lunch och före det var jag på en dragning (lvl300) med Matt Winkle om hur WF/WCF (WF service host) fungerar under ytan samt hur vi kan arbeta med korrelering och liknande utmaningar.

Helt kort handlade dragningen om hur vi kan säkerställa att WCF-anrop (både utgående och ingående) har samma kontext, dvs hur de når samma workflowinstans och även hur de når samma branch etc i denna instans.. Mkt spännande ämne =)

En av de viktigaste saker Matt sa under hela dragningen var i mitt tycke valet mellan Queue/ExternalDataExchange/WCF. Enligt honom var den föredragna vägen helt klart WCF även om applikationen som vi arbetar på ligger på samma dator. Det finns trots allt bla. namedpipes som ger oss bra prestanda.

Microsofts SOA-erbjudande har helt plötsligt blivit så mkt coolare..

TechEd 2007 - Onsdag

Var nyss på en cool lvl400-dragning om workflow foundation. Presentatören visade ett grymt verktyg som heter wca.exe och är en del av Windows Vista-SDK. Verktyget i sig skapar aktiviteter som matchar ett givet kontrakt avsett för ExternalDataExchange och förenklar vardagen rejält för WF-utvecklare.

Läs mer om WCA.EXE och bli lycklig =)

2007-11-06

TechEd 2007 - Tisdag

Igår fick vi bekräftat att Oracas (VS2008) och .NET 3.5 kommer att släppas på MSDN under november. Då Orcas ger möjligheten att utveckla för 2.0, 3.0, 3.5 är det i min värld det naturliga valet av utvecklingsmiljö. Nu hoppas jag bara på ett skarpt uppdrag med behov av WF Service Host =)

2007-11-05

TechEd 2007 - Måndag

Har landat i Barcelona och har hittils hunnit köra en labb med nya WF Service host som verkar otroligt lovande (om än lite buggig).

Själva konceptet att i en SOA värld kunna hantera WF och WCF i en union är otroligt coolt och ger oss arkitekter hela nya möjligheter att göra grymma tjänster som har bättre koll på vad som skall utföras och när.

Nog om detta nu, dags för keynote..

2007-11-02

BizTalk Server 2006 extensions for Windows Workflow Foundation SDK

Nu har byggstenarna för att skapa workflow foundation flöden i BizTalk släppts. Detta kräver att BizTalk 2006 R2 används men det visste vi sedan tidigare.

Tidigare har många undrat om det är BizTalk eller WF som gäller för att skapa processer, nu är svaret lite enklare då dessa båda går att kombinera. En annan möjlighet är att börja med WF och sedan om behov finns välja BizTalk som host.

Läs mera här

OT: På söndag åker jag till TechEd barcelona, skall försöka rapportera direkt därifrån om/när jag ser något intressant.

2007-10-22

Bra artikel om tracking + persistense och deadlocks

Ett extremt vanligt scenario är att använda både tracking och persistense i ett workflowprojekt. Värt att veta är att det rätt enkelt kan bli deadlocks om inte DTC'n är igång på hosten.

Här finns en utmärkt artikel som beskriver problemet och lösningen på djupet.

2007-10-18

Påverka framtiden för Workflow Foundation

Nu finns det ett gyllene tillfälle att få möjlighet att påverka vart WF är på väg. Teamet har lagt upp en bloggpostning där de uppmanar de som är intresserade att ge sin åsikt.

Själv pekade jag på bristen i stöd för något liknande BPEL4People eller WS-HumanTask.

2007-10-16

Rolig tillämpning av workflow foundation

Läste precis ett roligt inlägg om hur man kan använda workflow foundation till att styra sitt hem. Personligen har jag en hel del fjärrströmbrytare hemma och detta ser otroligt roligt ut.

Home Automation with Windows Workflow

Här kan du se exempel på hur du med hjälp av z-wave kompatibla strömbrytare & givare kan tända, släcka lysen när du öppnar dörren osv.

Hur kan du tänka dig att styra ditt hem?

2007-10-04

Källkoden till workflow foundation

Läste på Scott Guthries blogg att källkoden till .NET kommer att släppas, inlusive symbolfiler och delar av kommentarerna. Allt kommer även att bli integrerat i nästa version av Visual Studio!

Första releasen kommer inte att innehålla workflow foundation men det skall komma inom kort =)

Grym kunskap väntar bara runt hörnet!!

2007-09-25

Tänk om, tänk rätt

Jag läser och försöker hjälpa till i forumen på MSDN-forums rörande Workflow Foundation. Tyvärr ser jag en trend där personer inte riktigt förstår hur komponentbaserad utveckling och ärendehantering kan fungera tillsammans.

Ett bra exempel är en tråd som handlade om hurvida Enabled-propertyn på en aktivitet skall vara nåbar när workflowet är aktivt. (anledningen till att den inte är det är glasklar med tanke på activityexecutioncontext och hela tänket bakom persistens osv)

En person i tråden drog till och med igång ett litet flamewar där han propagerade för att "keep it simple", jag påpekade tillslut att om han vill ha en aktivitet som endast körs ibland så kan han lösa det med en if-else aktivitet och en bra regel. Ännu bättre är om han väljer att kapsla sin funktionallitet i en egen sammansatt aktivitet som han kan återanvända.

Bara mina 5 cent..

2007-09-06

InfoPath som TaskForm

Har försökt använda InfoPath som taskforms (Form Services i MOSS) med lite blandat resultat.

InfoPath som applikation är säkert en bra lösning i ett företag men personligen har jag haft lite för stora problem med just FormServices för att känna mig helt nöjd.

Avsaknad av så basala saker som exempelvis validering kan vara otroligt frustrerande.

Att all data är XML-baserad är naturligtvis bra, särskilt då den hämtas / sparas via webtjänster. Att det sedan inte finns något bra stöd att utifrån ett schema skapa nya noder är rätt frustrerande.

Själva processen med deploy, sätta URN, göra formuläret workflow-enabled osv är rätt tidsödande även om det kan scriptas.

ItemMetadata.xml som är den data vi kan få som input till ett taskform är på tok för begränsad då den baseras på #ROWSET, dvs vi kan inte få in komplex data på ett enkelt sätt.

FormServices ligger i _layouts, dvs utanför siten och renderas med application.master vilket ger ett yxigt intryck.

Avsaknad av olika komponenter som exempelvis bildvisare (dynamisk) osv gör formulären rätt stela.

Anpassa utseendet baserat på en CSS går inte (inte helt sant då det faktiskt går mha en massa handpåläggning vid varje deploy men ger även då ett mediokert resultat)

DCL (Data connection library) är ett bra koncept men tungt att underhålla och innehåller en "feature" som gör att vi låster oss till en och samma utvecklingsserver (av någon anledning pekas en unik server ut som ägare till dcl-filerna, detta spelar naturligtvis ingen roll efter deploy men det GÅR inte att ha flera servrar i ett formulär för då krashar allt...) Detta försvårar förvaltning rätt mkt.

Deploy av formulär som har code-behind är lite knepig eftersom vi manuellt måste kopiera in berört assembly.

Slutsats, jag kommer i framtiden att favorisera ASP.NET som taskforms och lägga krutet på ett bra ramverk kring den lösningen.

2007-09-04

Problem att starta workflows i MOSS

I ett projekt som jag arbetar i har vi haft ett återkommande problem som endast visat sig i vissa installationer av MOSS. Efter att ha letat olika lösningar och försökt koda work-arounds snubblade jag precis över lösningen.

Problemet visade sig när vi försökte starta ett workflow via MOSS objektmodell vilket resulterade i ett "Failed to start(retrying)" som efter några minuter kom igång igen.

Felet i loggen ser ut som följer:

Workflow Infrastructure Unexpected
RunWorkflow: System.ArgumentException: Value does not fall within the expected range. at Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties..ctor(SPWorkflow workflow, Int32 runAsUserId, String associationData, String initiationData) at Microsoft.SharePoint.Workflow.SPWinOEWSSService.MakeActivation(SPWorkflow workflow, SPWorkflowEvent e) at Microsoft.SharePoint.Workflow.SPWinOeEngine.RunWorkflow(Guid trackingId, SPWorkflowHostService host, SPWorkflow workflow, Collection`1 events, TimeSpan timeOut) at Microsoft.SharePoint.Workflow.SPWorkflowManager.RunWorkflowElev(SPWorkflow originalWorkflow, SPWorkflow workflow, Collection`1 events, SPRunWorkflowOptions runOptions)


Lösningen var rätt enkel
Central Administration > Application Management > Policy for Web Application
Lägg där till det servicekonto som anropar via objektmodellen och kryssa i att det kontot får uppträda som system.

Projektteamet är glada igen och ny energi finns =)

Nu väntar jag bara på en ny version av Live Writer som faktiskt går att installera...

2007-08-23

WSS / MOSS SDK uppdatering

Nu har det äntligen kommit en uppdatering av dessa SDKer, enligt releasenotes skall det vara fokus på mer dokumentation (inte en dag för tidigt)

"We now have close to 90% completion of all Type descriptions in the SDK Class Library Reference. Nearly all of the remaining blanks in the API reference are either Internal Namespaces and Classes or low priority APIs, and we are working to get those tagged appropriately for a future release."

Det finns ett antal exempel för workflow foundation som kan vara intressanta:

  • Custom Workflow Report Query Generator
  • Custom Workflow Report XLSX Injector
  • Visual Studio Workflow Templates
  • Enterprise Content Management Workflow Activities
  • List Item Activities
  • Hello World Sequential Workflow
  • State Based Approval Workflow
  • Modification Workflow
  • Replication and Contact Selector Workflow
  • Intersystem Purchase Order
  • Confidential Approval Workflow
  • Group Approval Workflow
  • Approval Workflow Sample
  • Multi-Stage Workflow
  • Server-side Collect Signatures Workflow

Ladda hem här:

MOSS 2007 SDK 1.2

WSS 3.0 SDK 1.2

Se online här:

Office SharePoint Server 2007 SDK

Windows SharePoint Services 3.0 SDK

2007-08-15

Visual Studio 2008 beta2 bugg

För er som laddat hem denna beta och vill testa WF och då speciellt de nya WCF aktiviteter som finns kommer att få problem (om ni inte läst readmefilen som följer med men vilka gör det?)

När man startar ett WCF projekt startar WcfSvcHost som i sin tur startar ett testformulär för projektet. Detta leder i denna release till en krash i svcutil.exe.

Fixen är att stänga av strong name signeringen för svcutil.exe via

sn –Vr <sökväg>SvcUtil.exe

Lycka till =)

2007-08-14

Silverlight och workflow foundation?

Snubblade över en rolig artikel som beskriver hur silverlight kan konsumera information från workflow foundation via WCF.

Klart läsvärt för alla som är intressrade av dessa nya tekniker.

Enkelt förklarat handlar det om en silverlightklient som frågar WF efter nästa bild, dvs när användaren interagerar med klienten så styr WF resultatet.

2007-08-13

Slut på friden!

Nu är det slut på semestern och dags att kika på allt nytt som hänt i WF-världen under sommaren. Återkommer med godsakerna inom kort.

2007-07-05

Pageflow uppdaterat

Matt har uppdaterat pageflowexemplet, här finns mer info.

Ladda hem nyaste koden gör du enklast här.

Changes

  • Corrected the install to display the EULA at a more opportune time (thanks to this comment)
  • Updated to fix the exception being thrown at the completion of a workflow
    • NavigationManager.cs
    • AspUserInput.cs
    • WebHostingModule.cs

2007-06-27

Implementing the N of M Pattern in WF

Grymt intressant läsning där olika scenarion jämförs mot varandra med fördelar / nackdelar.

Läs hela artikeln här

Har själv precis byggt liknande funktionallitet för kunds räkning i MOSS och känner igen problemområdet väl. (Discriminator pattern med tasks, compensation osv..)

2007-06-20

Artikel i redmond developer news

Här är en grym artikel som handlar om varför vi skall använda workflow foundation. Gissar att den även är på lämplig nivå för icke tekniker.

Sprid ordet =)

2007-06-08

Pageflow sample

Äntligen finns källkoden till det coola embry som förevisades på TechEd senast. Pageflow är ett bra exempel på att WF inte bara handlar om backend-affärsprocesser utan även kan hjälpa utvecklare bygga navigeringslogik.

Läs mer på Matt W's blogg eller ladda hem prylarna direkt

 

2007-06-05

Workflow foundation in BizTalk!!

Senaste news från TechEd i Orlando är att det finns ett SDK exempel på hur man kan använda workflow foundation i BizTalk. Tydligen bygger lösningen på att det skapas en biztalk orchestration som en proxy mot WF-modellen.

Läs mer här

Det finns även en 45min lång video som demonstrerar rubbet.

Grundförutsättningar

Efter att ha arbetat med workflow foundation ett tag inser jag att det finns en hel del utmaningar innan man kommer upp på banan. För att lyckas är det extremt viktigt att man har en mycket god förståelse för komponentbaserad utveckling och verkligen orkar lägga den där extra tiden på att skapa designer och validerings klasser.

Några saker jag vill peka speciellt mycket på är

Det är som alltid värt tiden att göra komponenterna på rätt sätt från början, detta tjänar man mkt tid på senare

2007-05-28

Överkurs

Detta är läsning för er som förstått hur en statemachine fungerar och varför sequential workflows gör vad de gör..

Going beyond Sequential and State Machine

Enligt mig är detta otroligt intressant läsning och förtydligar verkligen hur pass dynamiskt WF är. Matt har inge publicerat någon nedladdningsbar källkod ännu men låt inte detta stoppa er.

Att arbeta med workflow foundation är i mina ögon otroligt tillfredsställande eftersom det ställa höga krav på paketering av egna aktiviteter, systemering och en koppling in i affärsprocesserna. Dvs man sitter mitt i smeten och får koll!

2007-05-22

Projektmallar för XAML workflows

Hittils har det saknats ett bra stöd för att skapa rena XAML-workflows i Visual Studio. Nu finns i alla fall ett initiativ kring detta som skapar projektmallar för Visual Studio.

Läs mera här

2007-05-15

Orcas workflow exempel

Här finns en hel del bra exempel som hör till nästa version av VisualStudio / .NET (WCF-aktiviteterna är värda att titta närmare på)

Personligen är jag lite ofokuserad pga all ny teknik, det blir mycket entity framework, linq och naturligtvis en hel del "onödiga" lekar med extension methods.

2007-05-09

3:e parts produkter

Naturligtvis finns det 3:e parts produkter som är baserade på workflow foundation men som paketerar det hela på ett "enklare" sätt.

Här är två exempel som siktar in sig på sharepoint:

Nintex samt K2-Blackpearl

Båda har naturligtvis sina för/nackdelar och kan säkert vara bra alternativ för organisationer som behöver kunna skapa workflows lite ad-hoc.

Mitt tillvägagångssätt har hittils vart att skapa denna typ av toolbox utifrån projektets behov och det har av naturliga skäl inte innefattat någon snygg webb-designer för själva flödet ;-)
(Att skapa egna aktiviteter som är paketerade med designers, validators osv är en nödvändig del för att bli produktiv om inte produkter som de ovan används)

2007-04-30

WSS 3.0 Online SDK uppdaterad

Nu finns en uppdaterad SDK för sharepoint/MOSS online, detta innebär bla mer information kring workflows.

Hela härligheten finns här

What’s new in the April update of the WSS 3.0 Online SDK:

New conceptual sections:
· Content Migration
· Change Log and Synchronizing Applications
· Creating Declarative, No-Code Workflow Editors

Procedural topics:
· How to: Create a Custom Field Type and Field Control
· How To: Extend the STSADM Utility

Schema reference topics for the following schemas:
· Content Migration XML Schema Reference: Contains over 180 element topics that detail the eight migration schemas
· Workflow Configuration Schema

Greatly expanded reference material for over 300 types in the following namespaces:
· Microsoft.SharePoint
· Microsoft.SharePoint.Administration
· Microsoft.SharePoint.Deployment
· Microsoft.SharePoint.EmailIntegration
· Microsoft.SharePoint.Navigation
· Microsoft.SharePoint.MobileControls
· Microsoft.SharePoint.StsAdmin
· Microsoft.SharePoint.WebPartPages
· Microsoft.SharePoint.WebControls
· Microsoft.SharePoint.Workflow

As well as expanded reference material for the following Web Services:
· Authentication Web Service
· Copy Web Service

This update also includes numerous updates and revisions to existing SDK content.

Note: The WSS 3.0 SDK download will be updated with the next online update, currently scheduled for the end of June.

2007-04-27

Patch till orcas beta 1

Ni som ville pröva entity data model i orcas betan märkte säkert rätt snart att allt inte stod rätt till (tomma filer skapades av wizarden)

Nu finns en patch att ladda hem här.

2007-04-25

Feedback angående workflow foundation

denna sida såg jag en nyhet om att wf-teamet ville ha feedback om bla BPEL-stödet men även wf generellt.

Ta nu denna chans och gör era röster hörda, själv har jag en och annan issue som ev kommer att rapporteras =)

2007-04-20

Orcas BETA ute

Nu finns första betan av orcas ute, väl värt att ladda ned om man vill testa nästa version av bla workflow foundation.

Laddas ned här

2007-04-17

Hands on lab

Nu finns en trevlig labb online, den är virituell och kräver bara att man har en kompatibel webbläsare.

Miljön består av Visual Studio i en vista-host.

Här finns alltså ett trevligt sätt att komma närmare workflow foundation.

Grunden för labben är DinnerNow som jag skrev om tidigare.

2007-04-13

Tasks utanför sharepoint

En av fördelarna med att använda sharepoint som WF-host är tillgången till tasks. Nu har microsoft släppt ett bra exempel på hur man kan realisera detta utanför sharepoint.

Läs mera här

Att tidigt i projektet skapa förutsättningar för att på ett enkelt sätt skapa flöden är väl investerad tid.

Om någon funderar på att bygga ett eget ramverk kring task-hantering så är jag intresserad av att delta i diskutionen.

Min personliga erfarenhet av liknande funktioner kommer från tidigare arbete med bla Staffware (TIBCO) och FileNET's produkter. Workflow foundation saknas denna typ av funktionallitet out-of-the-box.

2007-04-10

Hotfix till Workflow foundation

Gissar att jag inte är ensammen att ha problem med delayactivity'n i samband med persistence, det går naturligvis att ta sig förbi de flesta problem när man har full kontroll över hosten, detta gäller naturligtvis inte för sharepoint där man hittils inte kunnat använda delayactivityn på ett bra sätt.

Nu finns det en hotfix!!.. Lyckan är fullständig och nu kan vi äntligen bygga många saker som vart omöjliga hittils.

"When a workflow unloads after persistence occurs, the timers may not resume correctly"

Mer info finns här, tyvärr ingen direkt nedladdning...

2007-03-21

Jämförelse mellan BizTalk's regelmotor och WF's dito

Här finns en bra presentation som tar upp detta ämne i detalj. Detta är ett bra ämne att kunna eftersom diskutionen kommer upp rätt ofta. Då WF är på väg in i BizTalk skall det bli spännande att se hur detta ser ut i framtiden.

2007-03-19

BPEL släppt i mars CTP

Jag pratade om en kommande CTP kring BPEL i en post tidigare och nu är den här.

Detta är ett tillägg till .NET 3.0's workflowstöd och går att ladda hem här.

2007-03-09

Exempel till senaste Orcas CTP

Här kan ni ladda hem lite exempelkod för senaste CTP'n som jag skrev om här.

Utdrag:

Rules: The Rule sample shows richer rule usage through operator overload, object instantiation (“new” operator), and method extensions specified within rules.
Workflow Services: These samples illustrate various aspects of cross-workflow communication using WCF, including exposing a workflow as a WCF service, duplex (2-way asynchronous) communication, conversations, and durability where a service instance that has gone down is able to continue communicating with a client when it is up again.

Nu är helgen spikad och min externa HD skall fyllas med nytt material i form av Orcas CTP'n.

2007-03-08

Undvika krash vid debug av flöden i MOSS

Detta var ett stort problem för mig och enligt vad jag kan se på olika forum var jag inte ensam.

Det jag vill göra är alltså att debugga ett workflow som är deployat i MOSS 2007, detta gör jag naturligtvis genom att göra en attach mot w3wp.exe-processen. Detta leder oftast till att visual studio krashar och tar med sig IIS och allt annat i fallet, detta är otroligt tidskonsumerande (och frustrerande)

Det finns en LÖSNING!!.. jag snubblade över den när jag läste en annan blogg (har inte kvar länken, sorry) medan jag försökte hitta en lösning på ett annat problem.

Lösningen är otroligt enkel, när jag väljer attach i visual studio så väljer jag samtidigt Attach to: Workflow code i samma dialog.

Hoppas detta sparar tid åt er, det kommer det att göra åt mig i alla fall =)

2007-03-02

WCF och WF i senaste CTP av Orcas

Nu finns en ny CTP av Orcas att ladda ned, den innehåller det efterlängtade stödet för WCF i Workflow foundation.

I princip är det två saker vi kan göra

  • Konsumera WCF tjänster
  • Exponera vårt workflow via WCF

För att realisera detta finns nya send/receive aktiviteter samt en ny host som heter WorkflowServiceHost.

Även regelmotorn har fått en uppfräshning

  • Operatoröverlagring
  • Stöd för new så vi kan skapa nya objekt och listor
  • Stöd för extension methods

Orcas finns att ladda hem här och det är en rejäl nedladdning, läs noga instruktionerna över vad du behöver ladda ned och hur du kan komma igång.

Förutom workflow foundation är naturligtvis LINQ värt att kika närmare på =)

2007-02-27

BPEL-stöd kommer inom kort

I mars kommer en CTP med ett gäng BPEL-aktiviteter för workflow foundation. Detta paket kommer inte helt förvånande att heta BPEL for Windows Workflow Foundation March CTP.

Denna release hanterar version 1.1 av BPEL och den slutgiltiga versionen skall stöda OASIS BPEL 2.0 standard fullt ut.

I verktygslådan kommer det finnas stöd för konvertering mellan XAML->BPEL och BPEL->XAML

Tydligen kommer inte detta att medföra några förändringar i den befintliga runtimen utan detta är en utökning som levereras utanför .NET-framework.

Nästa version av BizTalk kommer att ha samma stöd för BPEL och detta gör att vi i BizTalk får BPEL-stöd i framtiden.

Värt att notera är att så fort BPEL skall användas försvinner en stor del av den rika programmeringsmodell som finns i workflow foundation. Detta kan naturligtvis i många fall vara något bra och vi kan lämna designen av affärsprocesserna till en person som inte är utvecklare.

2007-02-23

Workflows och trådning

Detta är ett intressant ämne och ger stor påverkan i prestanda för en applikation.

Hittils har vi skapat en WorkflowRuntime, startat denna och allt har varit perfekt... men, hur är det irl?

Här är några klasser som är värda att kika närmare på:

DefaultWorkflowSchedulerService
Denna klass används som default och tillåter flera workflowinstanser i trådpoolen, här kan vi styra vissa intressanta delar och exempelvis MaxSimultaneousWorkflows är värd att kika närmare på.

ManualWorkflowSchedulerService
Denna klass ger oss möjlighet att styra trådningen och exempelvis köra en workflowinstans i en egen tråd. Kräver att man manuellt anropar RunWorkflow.

Båda dessa ärver WorkflowSchedulerService som är basen för hur workflows trådas.

Trevlig helg!

2007-02-21

Exempel

I detta exempel skall vi skapa ett flöde med kopplingar till affärslogik och som använder regelmotorn i WF för att avgöra hur flödet skall gå vidare.

1. Skapa ett nytt projekt i Visual Studio av typen Sequential Workflow Console Application.

2. Skapa en klass som heter Bestallning (Kan inte riktigt vänja mig vid tanken på att använda åäö i filnamn, klasser osv)

public class Bestallning

{       

    private int antal;

    private float aPris;

    private string artikelNamn;

 

    public float Summa

    {

        get { return Antal * APris; }           

    }

 

    public int Antal

    {

        get { return antal; }

        set { antal = value; }

    }

 

    public float APris

    {

        get { return aPris; }

        set { aPris = value; }

    }

 

    public string ArtikelNamn

    {

        get { return artikelNamn; }

        set { artikelNamn = value; }

    }

}

 

3. Skapa en klass som heter BestallningsTjanst

Denna klass har flera funktioner

  • Agerar "affärslager"
  • Lagrar våra pågående beställningar
  • Håller vår workflowruntime
  • Startar nya ärenden när en ny beställning registreras
    • Lägg märke till att vi initierar BeställningsId som är en publik property i Workflow1

Som ni ser så genar vi rätt rejält här när det gäller vettig design men det är trots allt ett exempel ;-)

public class BestallningsTjanst

{

    private static int idRaknare = 1;

    private static Dictionary<int, Bestallning> bestallningar = new Dictionary<int, Bestallning>();

    private readonly static WorkflowRuntime workflowRuntime;

 

    static BestallningsTjanst()

    {

        workflowRuntime = new WorkflowRuntime();

        workflowRuntime.StartRuntime();

    }

 

    private static int NyttId()

    {

        return idRaknare++;

    }

 

    public static void LaggBestallning(Bestallning bestallning)

    {

        int nyttId = NyttId();

        lock (bestallningar)

        {

            bestallningar.Add(nyttId, bestallning);

        }

        Dictionary<string, object> parametrar = new Dictionary<string, object>();

        parametrar.Add("BestallningsId", nyttId);

        WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(Workflow1), parametrar);

        instance.Start();

    }

 

    public static Bestallning HamtaBestallning(int id)

    {

        return bestallningar[id];

    }

}

4. Skapa flödet

Start, over, Under är kodaktiviteter som loggar till consolen, koden kommer nedan

KontrolleraSumma är en if-else aktivitet och bilden visar läget där vi skall editera vilkoret för aktivitetens ena ben.

Koden nedan innehåller några riktigt intressanta delar:

  • Den publika propertien BestallningsId som intieras när ärendet startas
  • Den privata propertien bestallning som ger flödet tillgång till den aktuella beställningen som läses upp från "affärslagret".
  • Affärslagret hade naturligtvis kunnat vara en webbtjänst och utnyttjat exemelvis WCF.

public sealed partial class Workflow1: SequentialWorkflowActivity

{

    private int bestallningsId = 0;

 

    private Bestallning bestallning

    {

        get

        {

            return BestallningsTjanst.HamtaBestallning(BestallningsId);

        }

    }

 

    public int BestallningsId

    {

        get { return bestallningsId; }

        set { bestallningsId = value; }

    }

 

    public Workflow1()

    {           

        InitializeComponent();

    }

 

    private void Start_ExecuteCode(object sender, EventArgs e)

    {

        Console.WriteLine(String.Format("Ärendet har startat för id {0} som berör {1}", BestallningsId, bestallning.ArtikelNamn));

    }

 

    private void Over_ExecuteCode(object sender, EventArgs e)

    {

        Console.WriteLine(String.Format("Ärende id {0} har en summa ({1}) som  är over gränsvärdet", BestallningsId, bestallning.Summa));

    }

 

    private void Under_ExecuteCode(object sender, EventArgs e)

    {

        Console.WriteLine(String.Format("Ärende id {0} har en summa ({1}) som  är under gränsvärdet", BestallningsId, bestallning.Summa));

    }

}

6. Editera Over-grenen i if-else aktiviteten

7. Skapa villkoret

Här har vi tillgång till intellisense och de affärsregler som vi skapar här kan vi enkelt modifiera i framtiden. Många med mig upplever denna regelmotor som otroligt kraftfull. Lägg märke till hur enkelt vi kan komma åt avancerade affärsentiteter från vårt workflow.

8. Editera Program.cs

static void Main(string[] args)

{

    Bestallning bestallning = new Bestallning();

    bestallning.Antal = 5;

    bestallning.APris = 5000;

    bestallning.ArtikelNamn = "Laptop";

    BestallningsTjanst.LaggBestallning(bestallning);           

    Console.ReadLine();

}

9. Kör

Som ni ser är det otroligt enkelt att komma igång och med hjälp av detta exempel kan ni själva bygga vidare och testa regler och kopplingar ut mot affärslager osv.

2007-02-09

Persistence & Tracking

I ett tidigare inlägg pratade vi om hur vi kommer igång med Workflow foundation, nu skall vi prata om persistens och spårbarhet.

Workflow-runtimen har en metod som heter AddService och med denna kan vi lägga till tjänster av olika typer (även egna). Vi kommer nu att titta närmare på WorkflowPersistenceService och TrackingService.

WorkflowPersistenceService
Denna tjänst serialiserar (hydrerar) vår workflowinstans ned till valfritt media (tex sql-server) och tittar sedan på det då och då (konfigurerbart) för att avgöra om det är värt att plocka upp i minnet (dehydrera) för att köra vidare.
En hydrering sker så fort workflowinstansen är idle, exempelvis när den väntar på ett externt event eller om det finns en delay-aktivitet.

TrackingService
Denna tjänst ger oss spårbarhet och vi får även möjlighet att hämta upp kopior av hur flödet såg ut vid vissa tidpunkter. Tracking är avancerat (och användbart) och det finns massor av bra artiklar som beskriver ämnet närmare.

Tracking Services Introduction

Tracking Services Deep Dive

Out-of-the-box finns det två implementationer av ovanstående som arbetar mot Sql-server som enkelt visar hur vi kan komma igång.

private readonly static WorkflowRuntime workflowRuntime;

private readonly static SqlWorkflowPersistenceService persistenceService;

private readonly static SqlTrackingService trackingService;

Vi har sedan tidigare sett hur vi initierar runtimen så det hoppar vi över här.

//Initialize persistence

string persistenceSQLConnectString = ConfigurationManager.ConnectionStrings["PersistanceConnectionString"].ConnectionString;           

bool unloadOnIdle = true;

TimeSpan instanceOwnershipDuration = new TimeSpan(0,0,60);

TimeSpan loadingInterval = new TimeSpan(0, 2, 0);

persistenceService = new SqlWorkflowPersistenceService(persistenceSQLConnectString, unloadOnIdle, instanceOwnershipDuration, loadingInterval);           

workflowRuntime.AddService(persistenceService);

Detta är allt som krävs för att initiera persistance-tjänsten, låt oss nu titta på tracking

//Initialize tracking

string trackingSQLConnectString = ConfigurationManager.ConnectionStrings["TrackingConnectionString"].ConnectionString;

trackingService = new SqlTrackingService(trackingSQLConnectString);

workflowRuntime.AddService(trackingService);

För att få allt att lira krävs naturligtvis sql-server samt att de två databaserna är installerade. Script för detta fick ni "på köpet" med .NET 3.0 i katalogen

%windir%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN

2007-02-05

DinnerNow

Såg på micke's blogg att DinnerNow äntligen har släppts, detta är en otroligt cool demo-applikation som visar i princip all ny teknik live and kicking. Har själv sett denna demo köras bla på LOVE (Lansera Office Vista och Exchange)

http://www.dinnernow.net

"The demo utilizes several technologies including: IIS7, ASP.NET Ajax Extensions, Linq, Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation Foundation, Windows Powershell, and the .NET Compact Framework."

Källkod finns att ladda hem från codeplex och det låter som en trevlig aktivitet för er som har tid att kika närmare på applikationen.
(inom kort kommer en online-demo för er som inte vill/orkar/har tid att installera hela köret)

Vad väntar ni på? GOGOGO!

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.