torsdag, juni 08, 2006

BPM vs SOA

Jag läste en blog från Ismael Ghalimi där han positionerade BPM och SOA som två sidor av samma mynt.

"BPM is SOA’s killer application, while SOA is BPM’s enabling infrastructure."

(nu handlade egentligen den bloggen om middle-out eller top-down, men än då)

torsdag, juni 01, 2006

Asynkron koordinering med CCR

I XOML eller BPEL så är asynkron koordinering av kommunikation första klassens medlemmar.

CCR (Concurrency and Coordination Runtime) ger C#-utvecklare samma möjlighet till detsamma.

SOA 2.0

Web 2.0, Office 2.0 och nu SOA 2.0 visar att man kan sätta versionsnummer även på arkitekturer.

Åsikterna går i sär och är du en av dom som inte gillar det så skriv då på ett anti-SOA 2.0 petition.

lördag, maj 06, 2006

BPEL vs WF

Om vi tar med oss jämförelsen från förra bloggen om Aktiviteter och tjänster, alltså att:

"Man kan alltså säga att processer består av aktiviteter som i sin tur kan, men behöver inte, nyttja andras resurser och tjänster."

Utifrån det så kan man se skillnaderna mellan Workflow Foundation och BPEL4WS mycket mer tydligt.

WF stämmer mycket väl in på beskrivningen ovan efter som man har ett val att i implementationen av ett workflow/process välja om man vill nyttja andra tjänster för arbetet som krävs i en aktivitet eller utföra arbetet själv. Möjligheten ligger i förmågan hos WF att nyttja XAML som är flexibelt på så sätt att det går att bygga ut som språk. Man kan alltså skapa aktiviteter som kan utföra vilket arbete som helst med dina egna resurser.

BPEL4WS o andra sidan stämmer delvis in i beskrivningen ovan. BPEL måste nyttja tjänster och kan inte själv klara av det arbete som en aktivitet kräver (med undantag av mycket enkla sådana). BPEL är inte som XAML utbyggbart utan förlitar sin flexibilitet till tjänsteutnyttjande.

Aktiviteter och tjänster

I workflow-sammanhang så nämns ofta ordet aktivitet, exempelvis i Workflow Foundation från Microsoft. Ordet tjänst och andra sidan känner vi från då man exempelvis pratar om Web Services, men även i vanligare sammanhang som att utföra ett jobb åt någon annan. Men, vad har de med varandra att göra?

För att förklara det så måste vi se till ordet process som är nära besläktat med workflows. En sökning i wikipedia på ordet process ger följande:

”De aktiviteter som genomförs för att åstadkomma en förändring av ett objekt över tiden.”

Söker man på susning.nu efter ordet aktivitet ger det:

”Aktivitet är en händelse i tid, som involverar en eller flera resurser”

Som vi väl känner till så kan ordet arbete även representera det som händelsen resulterar i.

Kommer vi då även till ordet tjänst så säger susning.nu:

”En tjänst är ett visst arbete som utförs till nytta för någon annan.”

Man kan alltså säga att processer består av aktiviteter som i sin tur kan, men behöver inte, nyttja andras resurser och tjänster.

måndag, april 24, 2006

Processdriven utveckling IV – Data

Processorientering innebär att det är processen som kontrollerar access till och skyddar datat. Vilket data? Jo det som direkt hör till processen. I en faktureringsprocess så är det fakturainformationen som kontrolleras, ex det fakturerade beloppet eller faktura- och förfallodatum. Dit hör inte produkt- och kundinformationen, som även den står på en utskriven faktura. Produkt- och kundinformationen har sina egna processer där data skyddas.

I en klassisk arkitektur skyddas informationen enbart av en databas under korta transaktioner (ACID). Men under en längre tid, som t ex en faktura lever innan den betalats, kan data vara åtkomligt för vilken process som helst och ligger helt oskyddad för förändringar. Samma sak gäller diverse objekt-ramverk (ex. Spring el. EJB). Där görs fakturaobjektet åtkomligt för vilken process som helst under en fakturas livstid. Man kan ändra tillståndet i vilken ordning man vill och från vilken process som helst.



I ett processorienterat perspektiv skyddas fakturan (entiteten) under processens livstid. All access till fakturan går via klara definierade regler för vem och när de kan få tillgång till fakturainformationen och förändra dess tillstånd.



Man kan se processen som en pipeline där bilderna ovan är tvärsnittet av den skyddande processen. En pipeline har definierade access-punkter (end points) som rent semantiskt beskrivs i en processdefinition eller ett processpråk (BPEL4WS).

onsdag, april 12, 2006

Repetetiva processer

När man jobbar med workflows stöter man ofta på delar av eller hela flöden som repeteras efter varandra. Det kan exempelvis gälla en fakturering där man sänder iväg fakturan första gången för att senare sända den på nytt inkl en förseningsavgift.

Anta ett sekventiellt flöde som består av 3 aktiviteter:

A - som utför ett jobb
B - som avgör om A ska köras igen eller gå till C
C - som också utför ett jobb

I processflöde så är det här ett vanligt scenario som kan implementeras på fyra olika sätt:

1. Repetetivt
2. Iterativt
3. Rekursivt
4. Separat

Repetetivt
Repetetivt innebär att flödet implementeras som en tillståndsmaskin där B avgör om A skall utföras på nytt. Den här typen av flöde utförs i en och samma instans, vilket är bra ur prestanda synpunkt. Ett problem är att det inte ger en tydlig bild över hur tillståndet har förändrats med tiden.



Iterativt
Iterativt liknar repetetivt men tar hjälp av iterativa aktiviteter som en While-sats.



Rekursivt
Rekursion innebär att processen anropar sig själv vilket skapar nya instanser för varje anrop. Det gör det enklare att spåra flödet men komplicerar och är mer krävande ur prestanda synpunkt.



Separat
Separata processer är det tydligaste alternativet och passar om det inte gäller för många repetioner. Här blir det enkelt att spåra flödet och komplexiteten är obefintlig, vilket är viktigt på en högre nivå.

torsdag, april 06, 2006

SOA stort i Tyskland

Jag sökte på Monster för att se vad som var hett idag. Sökorden var SOA, C#, Java, BPEL och EAI för några EU-land. Första tabellen innehåller summa träffar och den andra hur de förhåller sig procentuellt till varandra per land.
Statistik

Vi ska se hur det ser ut om några månader, men jag vågar tippa på att SOA och BPEL har ökat några procent.

Svenska SOA-kurser

Här är ett par SOA-kurser i Sverige (kan inte garantera kvalitén dock):
Kan ni tipsa om fler? Kanske frukostseminarier eller konferenser i Sverige!

tisdag, april 04, 2006

Active Endpoints har en beta för ActiveBPEL Enterprise på .NET Framework

Nu finns det en BPEL engine (native) värd namnet på .NET.

Besök gärna SweNUG den 17/5 i Stockholm för att se en presentation av ActiveBPEL och en jämförelse med Workflow Foundation.

fredag, februari 10, 2006

Processdriven utveckling III – Språken & verktygen

Ett processhanteringsverktyg måste smälta samman med tekniken för att få fotfäste. Med tekniken menas den värld som utvecklare är van vid (.NET Framework, Java, Web Services, C#). Idag finns det varianter på processhanteringsverktyg men de kan grovt delas i att antingen strikt följa en standard eller inte.

De som väljer att inte följa en standard öppnar dörrarna till tekniken mer än de som följer standarder. De som följer standarder som exempelvis BPEL4WS drar teknikgränsen tidigt medan exempelvis Microsofts Workflow Foundation (WF) är öppnare och tillåter till och med utvecklaren att definiera sitt eget domänspecifika processhanteringsspråk. Oavsett vilken tekniknivå man valt med sin miljö för processorienterad utveckling så måste den supportera kraven på tillståndshantering, händelser och affärsregler.

I Workflow Foundation styrs flödet av XAML (Extensible Application Markup Language) som ser ut som XML och består av en del som är själva språket (Markup Language) och en annan del som kallas aktiviteter och syftar till Extensible Application. I BPEL4WS finns också en del som är själva språket och en annan som representerar aktiviteten. Det är bara det att i BPEL4WS finns det bara en aktivitet representerad, nämligen Web Services. Vill man i Workflow Foundation skapa en aktivitet som kan maila iväg en statusförändring så implementeras det som en .NET klass. I BPEL4WS så anropar man istället en Web Services som skickar iväg mailet.

Varför har den större delen av industrin valt att följa BPEL4WS medan Microsoft valt ett eget språk? Först av allt så ska sägas att Microsoft Workflow Foundation kan deserialisera BPEL4WS och inte bara XAML. Många menar att utvecklaren måste kunna skapa egna aktiviteter för att producera ett workflow, medan andra tycker att det man kan göra i aktiviteten lika gärna kan göras i en Web Service.

Processdriven utveckling II - Lösningen

Applikationer består bland annat av information, dess tillstånd, händelser och affärsregler. Men det finns en komponent som saknas här, nämligen definitionen av den ordning som händelserna inträffar (processen).

Processer är till för att styra och kontrollera händelseförloppet för tillståndförändringar i informationen. När man sitter ned och ska modellera informationen och dess tillstånd så utgår man alltid från hur flödet för information ser ut. Från flödet definieras sedan status som informationen kan anta. Därefter förkastar man processbeskrivningen och den blir sällan mer en ett Visio-dokument.

Att utveckla processorienterat handlar om att fortsätta med processbeskrivningen och aldrig jobba med tillstånden som statuskolumner, utan bara som positioner i ett flöde. Processorienterad utveckling handlar om att använda sig av händelser, tillstånd och affärsregler som första klassens medlemmar.

Varför har man då inte jobbat processorienterat? Bland annat beror det på just det att det kräver en förståelse för verksamheten för att inte låsa in sig i processer som inte kan följas. Det beror även på att det inte funnits de rätta verktygen, eller att det inte fått så mycket uppmärksamhet eller att verktygen varit undermåliga.

Processdriven utveckling I - Problemet

9 av 10 applikationer som jag varit med att utveckla har handlat om att hantera information i någon form. Varje gång så bygger jag en datamodell, GUI och ett objektlager om man orkar. Oavsett om man väljer att designa objekt- eller datamodellen först så står man inför det faktum att informationen ska definieras och modelleras.

Information generellt sätt ändrar sitt tillstånd med tiden. Det kan gälla en faktura, en inköpsorder, ett ärende eller ett betalningsuppdrag. Normalt sett tillför man därför ett antal statuskolumner i sina tabeller/objekt för att lagra tillståndet. En faktura definierar tillstånd som bl a beskriver om den skickats till kund, blivit krediterad, förfallit, skickats som påminnelse, blivit betalad eller delvis betalad. Tillstånd förändras med tiden och beror på händelser som inträffar inom och utanför applikationen.

Händelser kan implementeras på olika platser i applikationen. En faktura som förfaller kan implementeras i databasen som en trigger. En faktura som krediteras ändrar sitt tillstånd från ett formulär i GUI. En faktura som betalats ändrar sitt tillstånd på uppdrag från en Web Service. Man kan säga att händelser inträffar i många olika delar av applikationsarkitekturen som i sin tur påverkar tillståndet hos informationen.

Varje händelse inträffar då ett villkor uppfylls, en s k affärsregel. Affärsregler avgör om en faktura har förfallit eller om den betalats eller delbetalats. Villkor består av uttryck som sätts samman av operatorer och operander. Operanderna är information om fakturan och nyckeltal som styr över gränsvärden.

I vilken ordning som tillstånden förändras håller man däremot relativt öppet för tolkning. Ordningen kan oftast ändras från fall till fall och man låter det bero eftersom det känns stelt att definiera en process som passar alla scenarios. Bygger man applikationen på det här öppna sättet är det relativt enkelt att ändra tillståndet i valfri ordning istället för att hålla sig till en strikt hantering. Det är mycket vanligt att man har en öppenhet till att kunna ändra tillståndet för information med tiden, men varför är det så och vad är alternativen?

måndag, februari 06, 2006

When money talks SOA ...

Har haft en liten konversation med WS-gurun David Chappell på hans blog. Det handlade om arkitekters och IT chefers relation till applikationer och tjänster. David har nog rätt i att de med pengarna har sin syn på SOA medan arkitekter har en annan. Vi är dock bara i startgroparna med SOA. På lång sikt är jag säker på att tjänstenätverket går segrande ut striden och inte den traditionella applikationen.

Service Oriented Architecture Conference 2006 Sweden

Anmäl dig här!