2008-02-27

XOML eller XAML.. XML?.. vad gäller

Matt W har ett kort men intressant blogginlägg som reder ut begreppen (eller i alla fall förklarar besluten bakom)

Ny bok om workflow foundation

Snubblade över denna bok (är en eBook och alltså billig men finns tryckt också) och den verkar intressant.

Features of this Short Cut series include

  • Demonstrations on how to build practical workflow applications by solving problems that workflow developers will have to solve.
  • Plenty of code that helps demonstrate how to solve the practical problems of building an application. The first three Short Cuts emphasize and illustrate how to build the elements of an application.
  • The fourth Short Cut will pick a different application and illustrate how to build a workflow application with more emphasis on the design strategy and tactics using the problem solutions developed in the first three articles.
  • Providing this information as a Short Cut will enable information to be delivered to developers quickly, more efficiently, and cheaply than could be done in a book, but with the quality of a book rather than the superficial level of most current articles.

Vet inte hur bra boken är men den verkar vara en snabb väg upp på banan i alla fall. Om någon redan läst den eller om ni köper och läser den får ni gärna kommentera med era åsikter.

2008-02-13

ParallelActivity - Har den fel namn eller är världen galen?

Efter att ha fått frågan både i forum och på mail och nu senast direkt från en kollega tror jag det är dags att bena ut hur ParallelActivity fungerar och varför den inte alltid gör vad vi förväntar oss.

Först och främst skall vi vara medveten om att workflow foundation är designat kring en ide att vara enkeltrådat. Detta är för att förenkla för oss utvecklare vilket i grunden är en grymt bra idé. Detta begränsar oss oftast inte eftersom flera workflows kan exekvera samtidigt på flera trådar. Vi kan även med korrekt design komma förbi de eventuella begränsningar som finns.

 

Exempel 1

Här är ett enkelt flöde med två CodeActivitys i en ParallelActivity. I dessa båda code så exekveras koden enligt bild nummer två

image

image

Hur lång tid tar detta att genomföra är nu frågan. Ett rimligt antagande är naturligtvis 4 sekunder eftersom det är tiden som den längsta vilan är. Tyvärr är svaret 7 sekunder eftersom schemaläggaren som är grunden i workflow foundation först exekverar codeActivity1 och sedan codeActivity2. Detta beror helt och hållet på vår design och det faktum att vi stoppar den tråd som exekverar oss. Detta är även en av de saker som kan begränsa vår möjlighet att skala upp applikationen.

 

Exempel 2

I detta exempel skall vi använda DelayActivity istället för Thread.Sleep

image

delayActivity1 vilar i 4 sekunder och delayActivity2 vilar i 3 sekunder, hur lång tid är nu detta totalt? Svaret i det här fallet är 4 sekunder eftersom det är den längsta vilan som utförs.

 

Vad är nu den stora skillnaden på exempel ett och två? Svaret är att exempel ett är synkront och exempel två är asynkront. För att få detta att fungera med egna aktiviteter kan de vara händelsedrivna eller returnera ActivityExecutionStatus.Executing och släppa tråden vidare. En bra grundregel är att om du blockerar tråden så gör du fel.

Är något oklart så ställ gärna frågor så kan jag komplettera artikeln.

2008-02-11

WCF proxyn och ReceiveActivity tips o trix

Hittade en bra artikel om ett problem som är relativt troligt att råka ut för. Det gäller senaste .NET och vår nya servicehost.

Genomgående är detta nyttigt att kunna

When you create a proxu and do the first call this WorkflowInstanceId is automatically added and resent with the next request. So we need to retrieve this WorkflowInstanceId and, when we create the second proxy object, add it again

2008-02-08

SPAspTaskForm, ny version på codeplex

Med hjälp av bra feedback från lite olika hörn av vår värld finns det nu en ny version av SPAspTaskForm på codeplex, har även uppdaterat wiki-sidorna med mer information.