måndag, september 19, 2005

Exempel på processorienterad utveckling

Ett företag som säljer varor skulle kunna ha följande affärsprocess definierad för sin verksamhet.


En sådan process börjar med ett prospekt på en potentiell försäljning och slutar med en leverans. Processen är nedbruten i 4 andra processer; försäljning-, order-, fakturering- och leveransprocess. Anledningen till att man vill bryta ned processen i mindre delar är att skapa en flexibilitet i lösningen. Om verksamheten väljer att exempelvis byta ut en del mot en annan process så ska de andra inte drabbas av det.

Faktureringsprocessen är en delprocess i sammanhanget och definieras enligt flödesdiagrammet nedan. Varje process har ett gränssnitt, som i en SOA även kallas för en tjänst. Processen är alltså en tjänst och kan exponeras som t ex en web service. Indata till ett flöde är tjänstens anropsparametrar. För faktureringsprocessen blir det faktureringsunderlaget som är parameter. Faktureringsunderlaget kommer från orderprocessen.


I faktureringprocessen används bland annat en utskickstjänst. Den implementeras enligt flödet nedan. Innan en faktura skickas iväg så ska kundinformationen kompleteras. Därför anropas en tjänst som hämtar kundinformationen. Den tjänsten är en datatjänst, tillskillnad från en processtjänst som de två ovan är.

Flödet från försäljning ned till leverans och fakturering hanterar information och data som relaterar till entiteter i processen. Viss information hör till respektive instans av en process, medan annan information är global för alla instanser. Kundinformation kan förändras utanför processerna och ska därför inte ingå i processinformationen. Samma sak gäller varor, som också kan förändras med tiden. Därför så hämtar utskickstjänsten kundinformationen från en datatjänst (som exempelvis kan exponeras från ett CRM).

Det finns information som hör till en instans av en process. Fakturainformation är ett exempel på det. I den ingår kund- och produktinformation enbart som en relation (foreign keys), medan pris och fakturarader är exempel på information som verkligen hör till processinstansen. Nedan är kopplingen mellan processen och den information som hör till respektive instans:

Försäljningsprocess -> Lead
Orderprocess -> Order
Faktureringsprocess -> Faktura
Leveransprocess -> Leverans

Inga kommentarer: