nl-digigo / visi

Beheeromgeving van de VISI open standaard.
https://nl-digigo.github.io/visi/
6 stars 4 forks source link

Aanscherping van functionele beschrijving "MessageInTransactionTypeCondition" #63

Closed ArneBruinse closed 5 years ago

ArneBruinse commented 6 years ago

Tijdens het testen van de versie 1.6 software kwamen Bakker & Spees en Technia er beiden achter dat de beide pakketten niet reageerden zoals verwacht werd vanuit de mittcondition gedachte. Het bleek dat door hoe deze nieuwe functionaliteit beschreven is in de 1.4 systematiek er ongewenste situaties konden ontstaan die zelfs optraden in het oberkok testscenario.

Hieronder een verdere beschrijving:

Bij het doorlopen van de test scenario’s liepen we vast bij scenario 3a.

Hierin moet namelijk na een aantal berichten in T1 opnieuw een bestelling verzonden worden. De software pakketten bleken de regels van de volgordelijkheid van berichten nu letterlijk op te volgen waardoor deze mittcondition een tweede bestelling blokkeert.

Het idee van deze nieuwe functie is dat je maar 1 bestelling naar de kok op basis van het meest recente bestel bericht kunt versturen en niet maar 1 bestelling tijdens de volledige duur van T1. Dus de userstory is: “Als restauranteigenaar wil ik dat mijn ober de bestelling aan maximaal 1 kok kan geven omdat een bestelling anders in veelvoud bereid zou worden.”

Er is geen meerwaarde gevonden in beperkingen op basis van alweer beantwoorde berichten. De volgordelijkheid moet je dus alleen op basis van de huidige status van een transactie evalueren en niet op oude bericht statussen.

Maar dat staat niet zo expliciet in de 1.4 systematiek beschreven, daar staat in par. 1.1.5 van bijlage 5:

_Doel is het inperken van mogelijke voorzettingen uitgaande van een bepaalde toestand in de berichtenflow binnen een transactie en haar subtransacties. Er zijn drie oorzaken waarom bepaalde voortzettingen niet aangeboden mogen worden:

  1. Een bericht mag pas verzonden worden nadat één of meerdere specifieke berichten aanwezig zijn (reeds ontvangen of verzonden) in de transactie of zijn subtransacties, er is dus een afhankelijkheid tussen twee (of meer) al aanwezige berichten.
  2. Een bericht mag alleen verzonden worden wanneer één of meerdere specifieke berichten niet aanwezig zijn (nog niet ontvangen of verzonden) in de transactie of zijn subtransacties, er is dus een afhankelijkheid tussen twee (of meer) nog niet aanwezige berichten.
  3. Een bericht dat maar één keer verzonden mag worden is reeds verzonden, er is dus een restrictie op het aantal keren dat een bericht verzonden mag worden._

Hierin zie je dat de beschrijving alleen maar uitgaat van het reeds aanwezig zijn van berichten. De 1.6 systematiek moet dit corrigeren in “aanwezig zijn als laatste bericht in”.

Hieronder de gecorrigeerde tekst voor in de 1.6 documentatie: _1. Een bericht mag pas verzonden worden nadat één of meerdere specifieke berichten aanwezig zijn (reeds ontvangen of verzonden) als laatste bericht in de transactie of zijn subtransacties, er is dus een afhankelijkheid tussen twee (of meer) al aanwezige (laatste)berichten.

  1. Een bericht mag alleen verzonden worden wanneer één of meerdere specifieke laatste berichten niet aanwezig zijn (nog niet ontvangen of verzonden) in de transactie of zijn subtransacties, er is dus een afhankelijkheid tussen twee (of meer) nog niet aanwezige laatste berichten.
  2. Een bericht dat maar één keer verzonden mag worden is reeds verzonden, er is dus een restrictie op het aantal keren dat een bericht verzonden mag worden op basis van het laatste bericht in die transactie._

Naast de bovenstaande tekstuele aanpassing, moet deze aanscherping ook benoemd worden in de bulletlist net voor de onderstreepte tekst “Toevoeging op bestaande klasse:”. Hier de volgende bullet aan toevoegen: o Bij het bekijken of een conditie geldt, wordt alleen naar laatste berichten per transactie gekeken, dus alleen naar de status van een transactie op dat moment. Dit is omdat een beperking weer weggenomen moet kunnen worden met een nieuw bericht in een transactie. Bijvoorbeeld zodat het eenmalig versturen van een subtransactie bedoeld is per ontvangen bericht.

JensCobussen commented 6 years ago

Ik heb het issue gecontroleerd en bij deze akkoord.