Een paar dagen geleden liep ik tegen het project MIDA van de University of Camerino aan.
MIDA (Multiple Instances and Data Animator) is het resultaat van een onderzoeksproject van de School of Science and Technology, Computer Science Division.
MIDA is een simulator die door middel van tokens laat zien hoe een proces doorlopen wordt. Onderstaande video laat als voorbeeld de simulatie van het ordering proces tussen een groothandel en leverancier zien. Dit proces wordt later in het artikel verder uit de doeken gedaan.
MIDA is een uitbreiding van de Camunda Modeler (bpmn.io) Token Simulation plugin.
MIDA kan zonder problemen geïnstalleerd worden. Ga naar de website http://pros.unicam.it/mida/ en selecteer download. Unzip het bestand en start dan de executable Mida.exe.
Simulatie ordering proces wholesaler - supplier
De Token Simulation plugin visualiseert de voortgang van activiteiten in een BPMN collaboration diagram door middel van tokens die zich voortbewegen in het procesmodel. De verwerking van gegevens en het uitwisselen van berichten worden niet ondersteund door de plugin zoals gezien kan worden in onderstaande simulatie van een procesmodel.
In dit procesmodel worden berichten uitgewisseld tussen een groothandel (lane: wholesaler) en een leverancier - fabrikant (lane: supplier).
[Note: lane wholesaler = bovenste swimlane, lane supplier = onderste swimlane]
MIDA, daarentegen, maakt het wel mogelijk om de gegevensstromen tussen deelnemers (swimlanes) aan het proces zichtbaar te maken en te laten zien wanneer nieuwe proces-instanties worden gestart.
[Note: een procesmodel is een beschrijving van / een blueprint van een proces, een procesinstantie (process instance) is de concrete uitvoering van een model. Op hetzelfde moment kunnen meerdere instanties van een proces actief zijn.]
Het zijn de gegevens in berichten tussen deelnemers die het gedrag van het proces beïnvloeden. De gegevens worden opgeslagen in data objecten die mede bepalen welke stappen daarna worden uitgevoerd.
In het bovenstaande procesmodel geeft de taak "Send purchase order" aan dat er een bericht (een inkooporder) van de groothandel naar de leverancier wordt gestuurd. Het bericht bevat onder andere volgende gegevens: ordernummer (PO_number), regelnummer (POLine_itemNumber), verzoek tot het ontvangen van een orderbevestiging (PO_confirmation), de identificatiecode van de inkopende organisatie - GTIN / EAN of UPC code (PO_buyerID). Deze gegevens worden overgedragen aan het data object "purchase order" en zijn input voor de taak "Validate order".
et veld PO_confirmation beantwoordt later de vraag die gesteld wordt door de exclusive gateway "Confirm order ?".
MIDA verplicht je om uitgebreider na te gaan denken over hoe informatie wordt overgedragen in het samenspel tussen verschillende participanten, hoe participanten samenwerken en hoe gegevens doorheen het model stromen. Wanneer de initialisatie van gegevensvelden en de overdracht van deze gegevens aan taken niet goed zijn gedefinieerd leidt simulatie van het model tot errors.
MIDA simulatie ordering proces wholesaler - supplier.
Wanneer de processimulatie start zien we in het logging-overzicht links onder dat er 1 instantie van het proces is gestart. Dit is het proces in de bovenste swimlane - het proces van de groothandel.
Create purchase order
Het proces in de bovenste swimlane start met een vraag of wens vanuit de organisatie voor een product, materiaal of grondstof. Deze behoefte leidt tot de creatie van een inkooporder.
Rechtsboven onder de drop down Data Panel zijn de gegevens zichtbaar van de behoefte en de inkooporder.
Send purchase order
Wanneer de purchase order wordt verstuurd worden de gegevens via het gele informatie-token met nummer 1 doorgezet naar de message start event in het proces van de supplier.
Gelijktijdig wordt het token doorgestuurd naar de event based gateway waar het zal wachten op een antwoord vanuit het proces van de leverancier. Bij aankomst van het eerste token bij de event based gateway krijgt het token een rode kleur. Deze kleur zal het token houden tot de melding komt of de order geaccepteerd is of niet.
Receive purchase order
Bij ontvangst van de purchase order in de swimlane van de leverancier start een tweede procesinstantie, het proces van de leverancier.
Validate order
Na validatie van de order in de onderste flow heeft de variabele orderAccepted de waarde True gekregen en gaat het tweede token naar de taak "Enter order".
Enter order
Tijdens de uitvoering van de taak "Enter order" wordt een verkooporder aangemaakt in het ERP-systeem van de leverancier.
Send acceptance
Nadat de order is vastgelegd in het ERP-systeem van de leverancier wordt de acceptatie van de order gemeld aan de groothandel via het gele informatie-token met nummer 2.
Het tweede token in de onderste flow vervolgt zijn weg naar het kruispunt - de exclusive gateway "Confirm order ?". Het antwoord op deze vraag is meegestuurd met de gegevens van de inkooporder in het veld PO_confirmation en opgeslagen in het veld SO_confirmation van de verkooporder in het ERP-systeem van de leverancier.
Gateway Wait for confirmation
Het eerste token in de bovenste flow verandert van kleur na het ontvangen van de melding dat de order is geaccepteerd. Daarna gaat het token verder naar het kruispunt - de exclusive gateway "Wait for confirmation ?". Het antwoord op deze vraag is opgeslagen in het veld PO_confirmation van de inkooporder.
Het tweede token in de onderste flow vervolgt zijn weg naar het kruispunt - de exclusive gateway "Confirm order ?". Het antwoord op deze vraag is meegestuurd met de gegevens van de inkooporder in het veld PO_confirmation en opgeslagen in het veld SO_confirmation van de verkooporder in het ERP-systeem van de leverancier.
Send confirmation
Wanneer de groothandel om bevestiging van levertijd (PO_confirmation = true) vraagt gaat het tweede token naar de taak "Confirm order". Deze taak verstuurt de orderbevestiging naar de groothandel via het informatie-token nummer 2.
Receive confirmation
Op het moment dat de order confirmation wordt ontvangen in de bovenste flow licht de taak "Receive confirmation" groen op en vervolgt het eerste token zijn weg naar de taak "Receive delivery".
In de onderste flow gaat het tweede token verder naar de taak "Create shipment".
Create shipment
Ship order
De taak "Ship order" zorgt dat de goederen fysiek worden verstuurd en informeert de groothandel via het gele informatie-token met nummer 2 over de inhoud van de levering.
In de bovenste flow kleurt het eerste token rood omdat het proces wacht op de ontvangst van de levering.
Receive delivery
Na ontvangst van het gele informatie-token met de informatie over de levering licht de taak "Receive delivery" groen op en vervolgt het eerste token zijn weg naar de taak "Receive invoice".
Ondertussen is in de onderste flow de taak "Create invoice" uitgevoerd en zal ik de volgende stap de factuur verzonden worden naar de groothandel.
Send invoice
Ook hier kleurt het eerste token rood omdat het proces wacht op de ontvangst van de factuur.
Receive invoice
Wanneer het gele informatie-token met de factuur is verwerkt door de taak "Receive invoice" licht deze processtap groen op en eindigt het onderste proces zoals linksonder te lezen valt.
Einde proces
Aan het einde van het proces zien we rechts dat beide instanties 1 en 2 beëindigd zijn.
Data panel
Tijdens de simulatie geeft het data panel een overzicht van de gegevens die worden uitgewisseld.
Simulation log
De simulation log geeft een overzicht van de stappen en de tijdstippen waarop deze doorlopen zijn.
Tags: BPMN, O2C