Verduidelijken interactiepatronen bij intermediaire nodes

Dit is een statische kopie van het eerdere discussie.kinggemeenten.nl.
Nieuwe discussies kunnen in de GitHub repository 'StUF standaarden' als issue worden opgevoerd.

1 bericht / 0 nieuw
Maarten van den...
Verduidelijken interactiepatronen bij intermediaire nodes

Gelieve hieronder aan te treffen mijn antwoord op een vraag van Han Welmer van Geotax. Het lijkt me goed om dit als een erratum op te nemen in een volgende bugfix van StUF0301.

Hallo Han,

Je hebt de boel nauwkeurig bestudeerd. Gelieve mijn commentaar in jouw tekst aan te treffen.

Met vriendelijke groet,

Maarten
M: 0643855244
KvK: 17201296


Han Welmer schreef:
Maarten,

Uit de WSDL bg0310\bg0310.ontvangAsynchroon.wsdl en het bestand stuf030102.pdf (Standaard Uitwisseling Formaat; StUF 03.01: In Gebruik) begrijp ik dat een ontvangende end node reageert op een Lk01 asynchrone kennisgeving met een Bv03 bevestigingsbericht als technische synchrone respons of een Fo03 foutbericht als technische synchrone respons.

Uit paragraaf 4.4 van de PDF (met name de alinea's die beginnen met "Bij asynchroon berichtenverkeer worden geregeld intermediaire nodes gebruikt .." en "Een StUF end node kan de stuurgegevens van een bericht checken op verwerkbaarheid, maar een intermediaire node niet ..") begrijp ik dat een intermediaire node op een Lk01 asynchrone kennisgeving reageert met een Bv04 bevestigingsbericht als technische synchrone respons of een Fo03 foutbericht als technische synchrone respons.

Vervolgens staat in paragraaf 4.4.3 de zin "Deze regels gelden ook voor het Fo03-bericht, omdat dit asynchroon kan worden ontvangen, wanneer er intermediaire nodes zijn."

Als ik dit op een rijtje zet dan krijg ik het volgende beeld van een aantal mogelijke interacties mbt foutmeldingen:

1) Zender stuurt een bericht naar de ontvanger die reageert met een foutmelding:
     Zender    Ontvanger
      |
      | Lk01 ----> |
      | <---- Fo03 |
      |
2) Zender stuurt via een broker een bericht naar de ontvanger die reageert met een foutmelding:
     Zender    Broker    Ontvanger
      |
      | Lk01 ----> |
      | <---- Bv04 |
                   | Lk01 ----> |
                   | <---- Fo03 |
      | <---- Fo03 |
      | Bv01 ----> | Dit moet zijn Bv03, een bevestiging dat de asynchroon aangeboden Fo03 ontvangen is.

Mijn eerste vraag: kan ik deze interacties doortrekken voor bevestigingsberichten, zodat de volgende interacties ontstaan?

3) Zender stuurt een bericht naar de ontvanger die reageert met een bevestiging:
     Zender    Ontvanger
      |
      | Lk01 ----> |
      | <---- Bv03 |
      |
4) Zender stuurt via een broker een bericht naar de ontvanger die reageert met een bevestiging:
     Zender    Broker    Ontvanger
      |
      | Lk01 ----> |
      | <---- Bv04 |
                   | Lk01 ----> |
                   | <---- Bv03 |
      | <---- Bv03 |
      | Bv03 ----> |
Concreet:
- klopt het dat de broker een Bv03 doorgeeft daar de oorspronkelijke zender? Ja, zie laatste zin eerste alinea paragraaf 4.4.1.
- klopt het dat de oorspronkelijke zender een asynchroon ontvangen Bv03 (na een synchroon ontvangen Bv04) bevestigt met een Bv03? Ja, want elk asynchroon ontvangen bericht dient bevestigd te worden met een Bv03 of Fo03.

Mijn tweede vraag: hoe ziet het vervolg van de verwerking eruit als de ontvanger het bericht asynchroon heeft verwerkt en er een bevestiging of een foutmelding moet worden gestuurd? Een asynchrone respons wordt qua technische respons precies hetzelfde behandeld als een asynchroon verzoek.

3a) Enige tijd later heeft de ontvanger het bericht verwerkt en reageert met een Bv01 bevestigingsbericht als functionele asynchrone respons:
                   |
      | <---- Bv01 |
      | Bv03 ----> |
                   |
3b) Enige tijd later heeft de ontvanger het bericht verwerkt en reageert met een Fo01 foutbericht als functionele asynchrone respons:
                   |
      | <---- Fo01 |
      | Bv03 ----> |
                   |
4a) Enige tijd later heeft de ontvanger het bericht verwerkt en reageert met een Bv01 bevestigingsbericht als functionele asynchrone respons:
                                |
                   | <---- Bv01 |
                   | Bv04 ----> |
      | <---- Bv01 |
      | Bv03 ----> |
                   | Ook de Bv03 moet door de intermediaire node weer worden doorgestuurd, want de intermediaire node moet niet hoeven te interpreteren.
4b) Enige tijd later heeft de ontvanger het bericht verwerkt en reageert met een Fo01 foutbericht als functionele asynchrone respons:
     Zender    Broker    Ontvanger
                                |
                   | <---- Fo01 |
                   | Bv04 ----> |
      | <---- Fo01 |
      | Bv03 ----> |
                   |

Concreet:
- klopt het dat de oorspronkelijke zender een asynchrone Bv01 bevestigt met een Bv03? Ja
- klopt het dat de oorspronkelijke zender een asynchrone Fo01 bevestigt met een Bv03? Ja
- klopt het dat de broker een asynchrone Bv01 bevestigt met een Bv04? Ja
- klopt het dat de broker een asynchrone Bv01 doorgeeft daar de oorspronkelijke zender? Ja
- klopt het dat de oorspronkelijke zender een asynchroon ontvangen Bv03 (na een synchroon ontvangen Bv04) bevestigt met een Bv03? Ja
- klopt het dat de broker een asynchrone Fo01 doorgeeft daar de oorspronkelijke zender? Ja
- klopt het dat de oorspronkelijke zender een asynchroon ontvangen Fo01 (na een synchroon ontvangen Bv04) bevestigt met een Bv03? Ja

Mijn laatste vraag: is het zinvol dit soort interactie plaatjes op te nemen in (een volgende versie van) het PDF document? Ik denk inderdaad dat dit zinvol is. Ik heb daarom jouw mail gepost als een erratum op het StUF3 forum.

Bij voorbaat bedankt voor het beantwoorden van deze vragen.

Met vriendelijke groet,
GeoTax

Han Welmer
Software architect