digdir / dialogporten

Dialogporten - common API and and metadata state store for digital dialogs
https://docs.altinn.studio/dialogporten
MIT License
1 stars 3 forks source link

Generere events ved endring av dialogelementer #147

Closed elsand closed 11 months ago

elsand commented 1 year ago

Når dialogelementer opprettes, endres eller slettes, skal det produseres eventer for disse (i tillegg til eventene som produseres allerede ) for dialogelementer.

source vil referere selve dialogelementet (ikke dialogen).

Eventer har type som er prefikset/navnerommet dialogporten.dialog.element. Under er en tabell som spesifiserer typene:

Type Når
dialogporten.dialog.element.created.v1 Tjenestetilbyer har til et dialogelement
dialogporten.dialog.element.updated.v1 Tjenestetilbyder har modifisert et dialogelement
dialogporten.dialog.deleted.v1 Tjenestetilybder har slettet et dialogelement

Eksempel

{
    "specversion": "1.0",

    // Unik event-id
    "id": "7b358c4f-4073-41f0-a39d-a1fac90b630b",

    // Se "Type" i tabell over for liste over mulige hendelser
    "type": "dialogporten.dialog.element.created.v1",

    // Timestamp for når hendelsen inntraff i Dialogporten
    "time": "2023-02-20T08:00:06.4014168Z",

    // urn:altinn:resource:{serviceResource}
    "resource": "urn:altinn:resource:super-simple-service", 

    // Dialog-ID
    "resourceinstance": "b8643c00-c826-41c7-8758-bfc0ca5c19fa",

    // Party
    "subject": "org/91234578",

    // URL til dialogelementet i Dialogporten
    "source": "https://dialogporten.no/api/v1/enduser/dialogs/b8643c00-c826-41c7-8758-bfc0ca5c19fa/dialogelements/da506c38-b19f-45d4-963e-927df959a5f8",

    // Disse hentes verbatim fra dialogelementet. Kun "dialogElementId" er alltid oppgitt, alle andre felter
    // vil kunne være utelatt siden de er valgfrie
    "data": { 
        "dialogElementId": "da506c38-b19f-45d4-963e-927df959a5f8",
        "relatedDialogElementId": "cfdd19a4-8cf9-4138-9930-36478fdce398",
        "dialogElementType": "skd:form-type-1"
    }
} 

Se også

elsand commented 1 year ago

@oskogstad @MagnusSandgren Se tråd https://altinndevops.slack.com/archives/C05E00EJ2AY/p1694591905785789 for diskusjon for hvordan vi kan generere events for updates generelt med å sammenligne opprinnelig dialog-aggregat med endringer merget inn. Vi legger altså opp til ett DialogElementUpdatedDomainEvent per dialogelement-id, uavhengig av hvor mange endringer som skjer innenfor dialogelementet (eller underliggende entiteter, som f.eks. lokaliserte strings).

Som vi diskuterte etterpå forsøker vi i stedet for å diffe serialiserte objekter å i stedet benytte add/delete/change for å avgjøre om det skal lages events.

Lager egen issue for det vi diskuterte rundt øvrige endringer på dialogen (med liste over json-paths som er endret).