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.
Gammel dataoppgave:
<bpmn:task id="Task_1" name="Utfylling" altinn:tasktype="data">
<bpmn:incoming>Flow1</bpmn:incoming>
<bpmn:outgoing>Flow2</bpmn:outgoing>
</bpmn:task>
Ny dataoppgave:
<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 .NET
Løsningen har blitt oppdatert til å bruke den nyeste LTS-versjonen av .NET, 8.0.
Dette må oppdateres 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 navnerom | Gammelt navn | Nytt navnerom | Nytt navn | Merknader |
---|---|---|---|---|
Altinn.App.Core.Interface | IAppEvents | Altinn.App.Core.Internal.App | IAppEvents | |
Altinn.App.Core.Interface | IApplicationClient | Altinn.App.Core.Internal.App | IApplicationClient | |
Altinn.App.Core.Interface | IAppResources | Altinn.App.Core.Internal.App | IAppResources | |
Altinn.App.Core.Interface | IAuthentication | Altinn.App.Core.Internal.Auth | IAuthenticationClient | |
Altinn.App.Core.Interface | IAuthorization | Altinn.App.Core.Internal.Auth | IAuthorizationClient | |
Altinn.App.Core.Interface | IData | Altinn.App.Core.Internal.Data | IDataClient | |
Altinn.App.Core.Interface | IDSF | Altinn.App.Core.Internal.Registers | IPersonClient | Dette grensesnittet er forskjellig da oppstrøms-API-en har endret seg og krever flere parametere |
Altinn.App.Core.Interface | IER | Altinn.App.Core.Internal.Registers | IOrganizationClient | |
Altinn.App.Core.Interface | IEvents | Altinn.App.Core.Internal.Events | IEventsClient | |
Altinn.App.Core.Interface | IInstance | Altinn.App.Core.Internal.Instances | IInstanceClient | |
Altinn.App.Core.Interface | IInstanceEvent | Altinn.App.Core.Internal.Instances | IInstanceEventClient | |
Altinn.App.Core.Interface | IPersonLookup | Altinn.App.Core.Internal.Registers | IPersonClient | |
Altinn.App.Core.Interface | IPersonRetriever | Altinn.App.Core.Internal.Registers | IPersonClient | |
Altinn.App.Core.Interface | IPrefill | Altinn.App.Core.Internal.Prefill | IPrefill | |
Altinn.App.Core.Interface | IProcess | Altinn.App.Core.Internal.Process | IProcessClient | |
Altinn.App.Core.Interface | IProfile | Altinn.App.Core.Internal.Profile | IProfileClient | |
Altinn.App.Core.Interface | IRegister | Altinn.App.Core.Internal.Registers | IAltinnPartyClient | Hvis du tidligere brukte IRegister.ER for å utføre oppslag av organisasjoner, bør du direkte injisere IOrganizationClient for disse bruksområdene |
Altinn.App.Core.Interface | ISecrets | Altinn.App.Core.Internal.Secrets | ISecretsClient | |
Altinn.App.Core.Interface | ITaskEvents | Altinn.App.Core.Internal.Process | ITaskEvents | |
Altinn.App.Core.Interface | IUserTokenProvider | Altinn.App.Core.Internal.Auth | IUserTokenProvider |
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 prosessoppgaver
Egendefinerte handlinger gjør det mulig å opprette egendefinerte handlinger som kan brukes til å flytte prosessen videre. Disse handlingene kan autoriseres separat, brukes i uttrykk inne i 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