Sist endret: 25. mar. 2024

v8

Oversikt over endringer introdusert i v8 av Altinn.App.* pakkene og applikasjonsmalen.

Hvorfor versjon 8

V8 er en omskriving av prosessmotoren i apper for å støtte mer avanserte prosessflyter og signering. For de fleste eksisterende apper er endringene i prosessmotoren bare synlige i filen App/config/process/process.bpmn.

Vi benyttet også anledningen til å flytte alle grensesnitt fra Altinn.App.Core.Interfaces til mer beskrivende navnerom under Altinn.App.Core.Internal. Noen av disse grensesnittene har fått nye navn. For eksempel har Altinn.App.Core.Interfaces.IData blitt flyttet og omdøpt til: Altinn.App.Core.Internal.Data.IDataClient

Betydelige endringer

Endringer i process.bpmn

Altinn-namespace endret

Tidligere var navnerommet for Altinn http://altinn.no, dette har nå blitt endret til http://altinn.no/process

Dette finnes øverst i process.bpmn-filen.

Gammel process.bpmn:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions id="Altinn_SingleDataTask_Process_Definition"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:altinn="http://altinn.no"
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
targetNamespace="http://bpmn.io/schema/bpmn" >
....
</bpmn:definitions>

Ny process.bpmn:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions id="Altinn_SingleDataTask_Process_Definition"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:altinn="http://altinn.no/process"
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
targetNamespace="http://bpmn.io/schema/bpmn" >
....
</bpmn:definitions>

TaskType-definisjon flyttet til bpmn:extensionElements

Frem til versjon 8 av pakken ble taskType definert direkte på <bpmn:task>-elementet. For å følge BPMN-spesifikasjonen bedre, har dette blitt flyttet til <bpmn:extensionElements>-elementet.

<bpmn:task id="Task_1" name="Utfylling" altinn:tasktype="data">
    <bpmn:incoming>Flow1</bpmn:incoming>
    <bpmn:outgoing>Flow2</bpmn:outgoing>
</bpmn:task>
<bpm

<bpmn:task id="Task1" name="Utfylling">
    <bpmn:incoming>Flow1</bpmn:incoming>
    <bpmn:outgoing>Flow2</bpmn:outgoing>
    <bpmn:extensionElements>
        <altinn:taskExtension>
            <altinn:taskType>data</altinn:taskType>
        </altinn:taskExtension>
    </bpmn:extensionElements>
</bpmn:task>

Dette ser kanskje mer omfattende ut, men ettersom vi trenger å spesifisere flere alternativer for signering, valgte vi å flytte all vår tilpassede konfigurasjon til samme seksjon.

Bekreftelsesoppgaver må definere handlingen “confirm”

Tidligere la bekreftelsesoppgaver implisitt til en bekreftelseshandling for brukeren (som gjorde at bekreft-knappen ble aktivert i brukergrensesnittet). Med introduksjonen av handlinger på prosessoppgaver må utvikleren nå definere handlingen “confirm” på bekreftelsesoppgaver.

Gammel bekreftelsesoppgave:

<bpmn:task id="Task_1" name="Utfylling" altinn:tasktype="confirmation">
    <bpmn:incoming>Flow1</bpmn:incoming>
    <bpmn:outgoing>Flow2</bpmn:outgoing>
</bpmn:task>

Ny bekreftelsesoppgave:

<bpmn:task id="Task1" name="Utfylling">
    <bpmn:incoming>Flow1</bpmn:incoming>
    <bpmn:outgoing>Flow2</bpmn:outgoing>
    <bpmn:extensionElements>
        <altinn:taskExtension>
            <altinn:taskType>confirmation</altinn:taskType>
            <altinn:actions>
                <altinn:action>confirm</altinn:action>
            </altinn:actions>
        </altinn:taskExtension>
    </bpmn:extensionElements>
</bpmn:task>

Ny versjon av dotnet

Løsningen har blitt oppdatert til å bruke den nyeste LTS-versjonen av dotnet, .NET 8.0. Dette må bli oppdatert i prosjektfilen og i Dockerfile.

Gammel Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
WORKDIR /App

COPY /App/App.csproj .
RUN dotnet restore App.csproj

COPY /App .

RUN dotnet publish App.csproj --configuration Release --output /app_output

FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine AS final
EXPOSE 5005
WORKDIR /App

Ny Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build
WORKDIR /App

COPY /App/App.csproj .
RUN dotnet restore App.csproj

COPY /App .

RUN dotnet publish App.csproj --configuration Release --output /app_output

FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS final
EXPOSE 5005
WORKDIR /App
COPY --from=build /app_output .
ENV ASPNETCORE_URLS=

For en komplett oversikt over endringer i Dockerfile, se her.

Endringer i grensesnitt for klienter og tjenester

Klienter og tjenester vi leverer for å kommunisere med kjernetjenestene våre, som lagring og hemmeligheter, har blitt flyttet og omdøpt for å tydeliggjøre hvilke de samhandler med.

Flyttede/omdøpte grensesnitt og deres nye plassering

Gammelt navneromGammelt navnNytt navneromNytt navnMerknader
Altinn.App.Core.InterfaceIAppEventsAltinn.App.Core.Internal.AppIAppEvents
Altinn.App.Core.InterfaceIApplicationClientAltinn.App.Core.Internal.AppIApplicationClient
Altinn.App.Core.InterfaceIAppResourcesAltinn.App.Core.Internal.AppIAppResources
Altinn.App.Core.InterfaceIAuthenticationAltinn.App.Core.Internal.AuthIAuthenticationClient
Altinn.App.Core.InterfaceIAuthorizationAltinn.App.Core.Internal.AuthIAuthorizationClient
Altinn.App.Core.InterfaceIDataAltinn.App.Core.Internal.DataIDataClient
Altinn.App.Core.InterfaceIDSFAltinn.App.Core.Internal.RegistersIPersonClientDette grensesnittet er forskjellig da oppstrøms-API-en har endret seg og krever flere parametere
Altinn.App.Core.InterfaceIERAltinn.App.Core.Internal.RegistersIOrganizationClient
Altinn.App.Core.InterfaceIEventsAltinn.App.Core.Internal.EventsIEventsClient
Altinn.App.Core.InterfaceIInstanceAltinn.App.Core.Internal.InstancesIInstanceClient
Altinn.App.Core.InterfaceIInstanceEventAltinn.App.Core.Internal.InstancesIInstanceEventClient
Altinn.App.Core.InterfaceIPersonLookupAltinn.App.Core.Internal.RegistersIPersonClient
Altinn.App.Core.InterfaceIPersonRetrieverAltinn.App.Core.Internal.RegistersIPersonClient
Altinn.App.Core.InterfaceIPrefillAltinn.App.Core.Internal.PrefillIPrefill
Altinn.App.Core.InterfaceIProcessAltinn.App.Core.Internal.ProcessIProcessClient
Altinn.App.Core.InterfaceIProfileAltinn.App.Core.Internal.ProfileIProfileClient
Altinn.App.Core.InterfaceIRegisterAltinn.App.Core.Internal.RegistersIAltinnPartyClientHvis du tidligere brukte IRegister.ER for å utføre oppslag av organisasjoner, bør du direkte injisere IOrganizationClient for disse bruksområdene
Altinn.App.Core.InterfaceISecretsAltinn.App.Core.Internal.SecretsISecretsClient
Altinn.App.Core.InterfaceITaskEventsAltinn.App.Core.Internal.ProcessITaskEvents
Altinn.App.Core.InterfaceIUserTokenProviderAltinn.App.Core.Internal.AuthIUserTokenProvider

Alle de gamle grensesnittene er markert som utdaterte (Obsolete) og vil generere kompileringstidsfeil med henvisning til hvilke grensesnitt du bør bruke i stedet.

Hva er nytt

Støtte for signering av oppgaver

V8 støtter definisjon av signering av oppgaver i prosessdefinisjonen. v8.0.0 støtter sekvensielle signeringstrinn med muligheten til å definere at signering av oppgaver må fullføres av unike brukere. For å se hvordan signering av oppgaver defineres, kan du se signeringsdokumentasjonen under prosess

Støtte for uttrykk i prosessdefinisjonen

Det er nå mulig å ta beslutninger om prosessflyt ved hjelp av uttrykk i prosessdefinisjonen. For å se hvordan du kan bruke uttrykk for å diktere prosessflyt, se bruk av uttrykk for å diktere prosessflyt

Egendefinerte handlinger i prosess oppgaver

Egendefinerte handlinger gjør det mulig å opprette egendefinerte handlinger som kan brukes til å flytte prosessen videre. Disse handlingene kan autoriseres separat, brukes i uttrykk inni prosessdefinisjonen for å endre hvordan prosessen flyter, og utføre egendefinert kode før prosessen flyttes til neste oppgave. For å se hvordan du kan bruke egendefinerte prosesshandlinger, se definere egendefinerte handlinger i prosessoppgaver