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.