Dokumentoplysninger

Gældende version og gyldighedsdato
DatoVersionGældende fraAnsvarlig
12.12.20191.3Den 15. december 2019Lars Strange

Indhold

Indledning

Dette notat beskriver kort webservicen tilhørende EUD-indberetningen til Datavarehuset (herefter Webservicen).

Webservicen er udviklet og driftes af Styrelsen for It og Læring. Indholdet er beskrevet i dokumentet "Indberetningsstruktur for EUD-indberetning til Datavarehuset".

I de følgende afsnit introduceres kald til webservicen, og i afsnit 5.2 findes en kort introduktion til nyttige værktøjer.

Notatet er medio december 2019 udvidet med metodekald vedrørende fravær.

Kontakt Webservicen

Testmiljø

Webservicen findes i et testmiljø. Servicebeskrivelsen findes på denne adresse: https://test-data.stil.dk/EudindberetningWS/UploadService.svc?SingleWSDL.

Webservicen udstiller blandt andet en simpel HelloWorld-metode, der blot returnerer "Hello World". Det anbefales at foretage den første test mod denne metode.

Direkte kald til webservicen er beskyttet af brugernavn og adgangskode. Se Bilag 2 for en guide til at sætte brugernavn og adgangskode i SoapUI.

Det anbefales, at nye brugere tester via IP-Ungs testmiljø, hvor servicebeskrivelsen findes på adressen: https://ws01.ung.stil.dk/services/DVH/EUD/v1.0/?wsdl.

Se afsnit 2.2 nedenfor, hvor IP-Ung er nærmere beskrevet.

Produktionsmiljø

Webservicen kaldes via STIL's integrationsplatform IP-Ung.

IP-Ung er en integrationsplatform, som understøtter udveksling af data mellem STIL's centrale systemer og eksterne systemer. IP-Ung anvendes af uddannelsesinstitutioner, myndigheder og organisationer på førskole-, grundskole-, ungdomsuddannelses-, voksen- og efteruddannelsesområdet.

Platformen tilbyder ensartede webservices for indberetning til og hentning af data fra STIL's centrale systemer inkl. autentificering, autorisering og logning af hændelser i forbindelse med dataudvekslingen. IP-Ung er en ren infrastrukturkomponent, og har ingen brugergrænseflade, ligesom den ikke opbevarer data. Platformen understøtter, at systemleverandører, blandt andet leverandører af studieadministrative systemer på de ovennævnte uddannelsesområder, kan udveksle data med STIL's systemer på en institutions vegne på en ensartet, transparent og sikker måde.

Yderligere oplysninger om tilslutning og tekniske detaljer kan findes på STIL's supportsite via https://viden.stil.dk/x/KgAGAQ.

Servicebeskrivelsen findes på: https://ws03.ung.stil.dk/services/DVH/EUD/v1.0/?wsdl.

Webservicens Get-metoder

Webservicen Get-metoder beskrives nedenfor. Bemærk, at metoden GetXmlSchema er forældet.

GetXmlSchema

Forældet: Denne metode er bibeholdt for at sikre bagudkompatibilitet med den første webservice-version, som kun indeholdte elevaktivtet. Anvend i stedet metoderne GetXmlSchemaNames og GetNamedXmlSchema.

Denne metode returnerer det aktuelle schema, som XML-data forventes at over-holde, når der overføres data fra de administrative systemer til Webservicen.

Det anbefales, at leverandøren altid sikrer sig, at XML-data overholder det schema, der udstilles via GetXmlSchema og validerer XML-data lokalt (i klienten) mod schemaet før overførelse til Webservicen.
GetXmlSchema returnerer schemaet i XML-format.

GetXmlSchemaNames

Metoden GetXmlSchemaNames returnerer navnene på de aktuelle XML-schemaer, som indberetningerne valideres mod. Navnet på et XML-schema anvendes i kaldet til GetNamedXmlSchema til at hente et konkret XML-schema.

Eksempel på OK-svar

Eksempel
<GetXmlSchemaNamesResult xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
   <b:string>EudIndberetningV1.0.xsd</b:string>
   <b:string>EudFravaerV1.0.xsd</b:string>
</GetXmlSchemaNamesResult>

GetNamedXmlSchema

Returnerer et navngivet XML-schema, hvor navnet på XML-schemaet findes med metoden GetXmlSchemaNames.

Validere data

ValidateXmlAgainstSchema

Denne metode validerer overførte XML-data mod det aktuelle schema. Der returneres et ValidateXmlAgainstSchemaResult som resultat af valideringen. Hvis valideringen ikke finder fejl, vil ErrorCount være 0. Ellers vil ErrorCount være større end 0, og der vil være en liste af ValidationError-elementer med fejlmeddelser. Fejlmeddelelserne er henvendt til udviklere og lister .Net fejlmeddelelsen samt den linje i XML-filen, der fejler i forhold til schemaet.

ValidateXmlAgainstSchema har alene til formål at teste XML-data mod det aktuelle schema og er en hjælp til udvikling af XML-eksport i de administrative systemer.

Se Bilag 1 for eksempel på XML-data, der overholder det aktuelle schema og returnerer et OK-svar.

Eksempel på OK-svar

Eksempel
<ErrorCount>0</ErrorCount>
<Message>Data blev modtaget og valideret korrekt.</Message>
<ValidationErrors/>
</ValidateXmlAgainstSchemaResult>

Eksempel på Fejl-svar

Eksempel
 <ValidateXmlAgainstSchemaResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <ErrorCount>2</ErrorCount>
            <Message>Der er 2 valideringsfejl</Message>
            <ValidationErrors>
               <ExtendedValidationError>
                  <ErrorLocation i:nil="true"/>
                  <ErrorMessage>Linje: 81 udløser fejlen: \[The 'http://www.stil.dk/EudDvhIndberetning/:Karaktervaerdi' element is invalid - The value '03' is invalid according to its datatype 'String' - The Enumeration constraint failed.\]</ErrorMessage>
                  <ErrorPersonId i:nil="true"/>
                  <ErrorType/>
               </ExtendedValidationError>
               <ExtendedValidationError>
                  <ErrorLocation i:nil="true"/>
                  <ErrorMessage>Linje: 84 udløser fejlen: \[The 'http://www.stil.dk/EudDvhIndberetning/:Evalueringsform' element is invalid - The value 'Skriftlig dansk' is invalid according to its datatype 'http://www.stil.dk/EudDvhIndberetning/:EvalueringsformType' - The Enumeration constraint failed.\]</ErrorMessage>
                  <ErrorPersonId i:nil="true"/>
                  <ErrorType/>
               </ExtendedValidationError>
            </ValidationErrors>
         </ValidateXmlAgainstSchemaResult> 

ValidateFravaerXmlAgainstSchema

Denne metode validerer overførte XML-fraværsdata mod det aktuelle schema. Der returneres et ValidateFravaerXmlAgainstSchemaResult som resultat af valideringen. Hvis valideringen ikke finder fejl, vil ErrorCount være 0. Ellers vil ErrorCount være større end 0, og der vil være en liste af ValidationError-elementer med fejlmeddelser. Fejlmeddelelserne er henvendt til udviklere og lister .Net-fejlmeddelelsen samt den linje i XML-filen, der fejler i forhold til schemaet.

ValidateFravaerXmlAgainstSchema har alene til formål at teste XML-data mod det aktuelle schema for fravær, og er en hjælp til udvikling af XML-eksport i de administrative systemer.

Se Bilag 2 for eksempel på XML-data, der overholder det aktuelle schema og returnerer et OK-svar.

Eksempel på OK-svar

Eksempel
<ValidateFravaerXmlAgainstSchemaResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCount>0</ErrorCount>
<Message>Data blev modtaget og valideret korrekt.</Message>
<ValidationErrors/>
</ValidateFravaerXmlAgainstSchemaResult>

Eksempel på Fejl-svar

Eksempel
<ValidateFravaerXmlAgainstSchemaResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
 <ErrorCount>2</ErrorCount>
 <Message>Der er 2 valideringsfejl</Message>
 <ValidationErrors>
    <ExtendedValidationError>
    <ErrorLocation i:nil="true"/>
    <ErrorMessage>Linje: 50 udløser fejlen: \[The 'http://www.stil.dk/EudFravaerIndberetning/:TilbudtUndervisning' element is invalid - The value '2000' is invalid according to its datatype 'http://www.stil.dk/EudFravaerIndberetning/:AntalMinutterType' - The MaxInclusive constraint failed.\]</ErrorMessage>
    <ErrorPersonId i:nil="true"/>
    <ErrorType>XmlValidation</ErrorType>
    </ExtendedValidationError>
    <ExtendedValidationError>
    <ErrorLocation i:nil="true"/>
    <ErrorMessage>Linje: 51 udløser fejlen: \[The 'http://www.stil.dk/EudFravaerIndberetning/:FravaerMinutter' element is invalid - The value '3000' is invalid according to its datatype 'http://www.stil.dk/EudFravaerIndberetning/:AntalMinutterType' - The MaxInclusive constraint failed.\]</ErrorMessage>
    <ErrorPersonId i:nil="true"/>
    <ErrorType>XmlValidation</ErrorType>
    </ExtendedValidationError>
 </ValidationErrors>
 </ValidateFravaerXmlAgainstSchemaResult>
 \\
\\

Overføre data

UploadData

Denne metode anvendes til at overføre de aktivitetsdata, der skal indberettes. Der valideres mod det aktuelle schema, som ved anvendelse af metoden ValidateXmlAgainstSchema beskrevet i afsnit 4.1. Derudover foretages krydsvalideringer i indberetningen (fx startdatoer mod slutdatoer). Såfremt data er fejlfrie, gemmes data og erstatter evt. tidligere overførelser foretaget i indberetningsperioden.

Hvis valideringen ikke finder fejl, vil ErrorCount være 0. Ellers vil ErrorCount være større end 0, og der vil være en liste af ValidationError-elementer med fejlmeddelser.

Eksempel på OK-svar

Eksempel
<UploadDataResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCount>0</ErrorCount>
<Message>Data blev modtaget og valideret korrekt.</Message>
<ValidationErrors/>
</UploadDataResult>

Eksempel på Fejl-svar

Eksempel
<UploadDataResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCount>4</ErrorCount>
<Message>Der er 4 valideringsfejl</Message>
<ValidationErrors>
<ExtendedValidationError>
<ErrorLocation i:nil="true"/>
<ErrorMessage>Koen: Personens køn (Mand) stemmer ikke med sidste ciffer i PersonId (2).</ErrorMessage>
<ErrorPersonId i:nil="true"/>
<ErrorType/>
</ExtendedValidationError>
<ExtendedValidationError>
<ErrorLocation i:nil="true"/>
<ErrorMessage>PersonId: Personens køn (Mand) stemmer ikke med sidste ciffer i PersonId (2).</ErrorMessage>
<ErrorPersonId i:nil="true"/>
<ErrorType/>
</ExtendedValidationError>
<ExtendedValidationError>
<ErrorLocation i:nil="true"/>
<ErrorMessage>Startdato: Startdato ('2015-05-26') skal ligge indenfor Elevens Startdato ('2015-07-14') og Elevens Slutdato ('2017-09-26')</ErrorMessage>
<ErrorPersonId i:nil="true"/>
<ErrorType/>
</ExtendedValidationError>
<ExtendedValidationError>
<ErrorLocation i:nil="true"/>
<ErrorMessage>Startdato: Startdato ('2016-09-21') skal være før Slutdato ('2016-08-02')</ErrorMessage>
<ErrorPersonId i:nil="true"/>
<ErrorType/>
</ExtendedValidationError>
</ValidationErrors>
</UploadDataResult>

UploadFravaerData

Denne metode anvendes til at overføre de fraværsdata, der skal indberettes. Der valideres mod det aktuelle schema, som ved anvendelse af metoden ValidateFravaerXmlAgainstSchema beskrevet i afsnit 4.2. Derudover foretages krydsvalideringer i indberetningen (fx startdatoer mod slutdatoer). Såfremt data er fejlfrie, gemmes data og erstatter evt. tidligere overførelser foretaget i indberetningsperioden.

Hvis valideringen ikke finder fejl, vil ErrorCount være 0. Ellers vil ErrorCount være større end 0, og der vil være en liste af ValidationError-elementer med fejlmeddelser.

Eksempel på OK-svar

Eksempel
<UploadFravaerDataResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCount>0</ErrorCount>
<Message>Data blev modtaget og valideret korrekt.</Message>
<ValidationErrors/>
</UploadFravaerDataResult>

Eksempel på Fejl-svar

Eksempel
<UploadFravaerDataResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCount>1</ErrorCount>
<Message>Der er 1 valideringsfejl</Message>
<ValidationErrors>
<ExtendedValidationError>
<ErrorLocation>Fravaer</ErrorLocation>
<ErrorMessage>Dato for fravær (03-01-2000) må ikke ligge før elevens startdato (01-01-2020).</ErrorMessage>
<ErrorPersonId>1234567890</ErrorPersonId>
<ErrorType>DataValidation</ErrorType>
</ExtendedValidationError>
</ValidationErrors>
</UploadFravaerDataResult>

Udviklingsværktøjer

Webservicen er udviklet i .Net-frameworket og kan umiddelbart tilgås i Visual Studio ved at tilføje WSDL som service reference.

Følgende gratis udviklingsværktøjer kan anbefales til test og debug:

Bilag 3 og 4 er eksempler på hhv. soap request og tilhørende soap response, når XML-data i bilag 1 anvendes mod testmiljøet.

Bilag 1: Eksempel på valid XML-data for aktivitet

Eksempel
<Indberetning xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.stil.dk/EudDvhIndberetning/">
<Version>1.0</Version>
<SystemVersion>bc640df7-eed1-4130-abb7-49da40271631</SystemVersion>
<JournalNummer>18e20c18-bbb9-4530-b1c7-4c68696d1563</JournalNummer>
<IndberettendeEnhed>999999</IndberettendeEnhed>
<Email>lst@stil.dk</Email>
<Person>
<PersonId>2572111142</PersonId>
<Fornavne>449eca56-4b78-4214-a5a0-50e68fb4b015</Fornavne>
<Efternavn>f7eff888-d3f0-4166-a709-6e3a11289485</Efternavn>
<Foedselsdato>2016-09-04</Foedselsdato>
<Koen>2</Koen>
<Elev>
<Uddannelsesinstitution>100136</Uddannelsesinstitution>
<Uddannelse>c850</Uddannelse>
<Startdato>2014-07-14</Startdato>
<Slutdato>2017-09-26</Slutdato>
<Speciale>
<Version>b7f6</Version>
<Speciale>dd46</Speciale>
<Startdato>2016-09-21</Startdato>
<Slutdato>2016-10-02</Slutdato>
</Speciale>
<Elevtype>
<Elevtype>03710f45-a</Elevtype>
<Version>fa5e</Version>
<Startdato>2015-05-26</Startdato>
<Slutdato>2015-12-08</Slutdato>
</Elevtype>
<Afgangsaarsag>
<Dato>2017-03-25</Dato>
<Aarsag>750a0</Aarsag>
</Afgangsaarsag>
<Elevdeltagelse>
<UndervisningsenhedRef>218f27d2-bcdb-45ce-8d71-f06ad9d761a0</UndervisningsenhedRef>
<Version>6693</Version>
<Fag>
<Fagnummer>0</Fagnummer>
<Fagniveau>C</Fagniveau>
</Fag>
<Startdato>2016-04-29</Startdato>
<Slutdato>2016-07-11</Slutdato>
</Elevdeltagelse>
<Skoleophold>
<Skoleperiode>0a09</Skoleperiode>
<Version>5c0e</Version>
<Speciale>a065</Speciale>
<Startdato>2017-02-05</Startdato>
<Slutdato>2018-01-17</Slutdato>
<Undervisningssted>100036</Undervisningssted>
<UVMafdeling>100037</UVMafdeling>
<TMK>09a18</TMK>
<AAEBidragUndervisning>
<Taelledato>2018-06-23</Taelledato>
<Bidrag>198</Bidrag>
<Restbidrag>86</Restbidrag>
<PeriodeStart>2017-05-25</PeriodeStart>
<PeriodeSlut>2018-07-27</PeriodeSlut>
</AAEBidragUndervisning>
</Skoleophold>
<Skolepraktikophold>
<Skoleperiode>914d</Skoleperiode>
<Version>0742</Version>
<Speciale>fc3a</Speciale>
<Startdato>2016-11-02</Startdato>
<Slutdato>2016-12-30</Slutdato>
<TMK>04ff5</TMK>
<AAEBidragSkolepraktik>
<Taelledato>2018-02-15</Taelledato>
<UdlosBidrag>N</UdlosBidrag>
<Bidrag>176</Bidrag>
</AAEBidragSkolepraktik>
</Skolepraktikophold>
<KvalifikationTilHovedforloeb>
<Dato>2017-01-17</Dato>
<Uddannelse>fdff</Uddannelse>
</KvalifikationTilHovedforloeb>
<LaererstyretUndervisning>
<Dato>2017-04-10</Dato>
<Timer>23</Timer>
<Periodetype>ALM</Periodetype>
</LaererstyretUndervisning>
<Karakter>
<Fag>
<Fagnummer>0</Fagnummer>
<Fagniveau>B</Fagniveau>
</Fag>
<Vaerdi>IB</Vaerdi>
<Skala>7TRIN</Skala>
<Type>TER</Type>
<Evalueringsform>SS</Evalueringsform>
<Dato>2018-11-05</Dato>
<Termin>200001</Termin>
</Karakter>
</Elev>
<Optagelsesgrundlag>
<Uddannelse>7877</Uddannelse>
<Version>0f97</Version>
<Studiestart>2017-07-13</Studiestart>
<Uddannelsessted>106499</Uddannelsessted>
<Undervisningssted>106500</Undervisningssted>
<KarakterDansk>-3</KarakterDansk>
<KarakterMatematik>-2</KarakterMatematik>
<OptagelsesproeveDansk>N</OptagelsesproeveDansk>
<OptagelsesproeveMatematik>N</OptagelsesproeveMatematik>
<ResultatOptagelsesproeveDansk>IB</ResultatOptagelsesproeveDansk>
<ResultatOptagelsesproeveMatematik>BE</ResultatOptagelsesproeveMatematik>
<OptagetAndetgrund>J</OptagetAndetgrund>
<OptagetSamtale>N</OptagetSamtale>
</Optagelsesgrundlag>
</Person>
<Undervisningsenhed>
<UndervisningsenhedsId>218f27d2-bcdb-45ce-8d71-f06ad9d761a0</UndervisningsenhedsId>
<Undervisningssted>132193</Undervisningssted>
<UndervisningsenhedensNavn>6da04006-666b-471b-9dee-30b5523431d6</UndervisningsenhedensNavn>
<Startdato>2017-10-13</Startdato>
<Slutdato>2018-09-16</Slutdato>
<FagPaaUndervisningsenhed>
<Fag>
<Fagnummer>0</Fagnummer>
<Fagniveau>C</Fagniveau>
</Fag>
<Lokation>b59636ee-611a-45d3-9fe1-fd7bb67048d2</Lokation>
<Startdato>2016-03-04</Startdato>
<Slutdato>2016-11-07</Slutdato>
</FagPaaUndervisningsenhed>
</Undervisningsenhed>
</Indberetning>

Bilag 2: Eksempel på valid XML-data for fravær

Eksempel
<Indberetning xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.stil.dk/EudFravaerIndberetning/">
<Version>1.0</Version>
<SystemVersion>STIL SOAPUI TEST 2</SystemVersion>
<JournalNummer>V1.0 TEST</JournalNummer>
<IndberettendeEnhed>999999</IndberettendeEnhed>
<Email>noreply@stil.dk</Email>
<Elev>
<PersonId>1234567890</PersonId>
<Uddannelsesinstitution>123456</Uddannelsesinstitution>
<Uddannelse>1234</Uddannelse>
<Startdato>2020-01-01</Startdato>
<Slutdato xsi:nil="true" />
<Periode>
<Version>1234</Version>
<Skoleperiode>ABCD</Skoleperiode>
<Undervisningssted>123456</Undervisningssted>
<Speciale>1</Speciale>
<Elevtype>A</Elevtype>
<TMK>A</TMK>
<Fravaer>
<Dato>2000-01-03</Dato>
<TilbudtUndervisning>4</TilbudtUndervisning>
<FravaerMinutter>0</FravaerMinutter>
</Fravaer>
</Periode>
</Elev>
</Indberetning>

Bilag 3: Eksempel på SoapUI request

Eksempel
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eud="http://www.stil.dk/EudDvh">
   <soapenv:Header/>
   <soapenv:Body>
      <eud:ValidateXmlAgainstSchema>
         <eud:xml>
\[…Indsæt XML som i Bilag 1…\]
         </eud:xml>
      </eud:ValidateXmlAgainstSchema>
   </soapenv:Body>
</soapenv:Envelope>
\\
Da webservicens kald er beskyttet af brugernavn og adgangskode, skal disse sættes i SoapUI via knappen Auth.
!worddavca27b7cfbaaa060999eedb060429f21c.png|height=82,width=351!
\\
Vælg "Add New Authorization…" og typen "Basic" i den efterfølgende dialogboks.
!worddav0141ec5969d22f3a65d0881d19176798.png|height=319,width=476!
\\
Angiv brugernavn og adgangskode, og markér "Authenticate pre-emptively" i fanebladet "Auth".
!worddav43762cfeb58083b0cf5d01145ae391b0.png|height=226,width=506!
\\
I fanebladet "WS-A" sættes flueben i "Add default wsa:To".
!worddav8fbd5c0bf669bc93be34c9dd3b8dc604.png|height=264,width=506!
\\
I "Request Properties" sættes de to egenskaber "WSS-PasswordType" og "WSS TimeToLive". PasswordType sættes til PasswordText mens TimeToLive sættes tilpas højt (her 2000 millisekunder).
!worddave4f070bfdc726235353f45b333cb271e.png|height=156,width=506!
\\
Alternativt kan brugernavn og adgangskode sættes for alle webservice-kald ved at højreklikke på WSDL interfacet og vælge "Show Interface Viewer". Herefter udfyldes oplysningerne i fanebladet "Service Endpoints".
!worddav0d92fa904a95e6d82d25a6132852fd0a.png|height=88,width=608!
\\
I fanebladet "WS-A" sættes fortsat flueben i "Add default wsa:To" for det enkelte kald.
<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="48762474-f906-4b9a-87e4-10b41c2528e8"><ac:parameter ac:name="">_GoBack</ac:parameter></ac:structured-macro> !worddav8fbd5c0bf669bc93be34c9dd3b8dc604.png|height=264,width=506!
\\

Bilag 4: Eksempel på SoapUI response

Eksempel
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ValidateXmlAgainstSchemaResponse xmlns="http://www.stil.dk/EudDvh">
<ValidateXmlAgainstSchemaResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCount>0</ErrorCount>
<Message>Data blev modtaget og valideret korrekt.</Message>
<ValidationErrors/>
</ValidateXmlAgainstSchemaResult>
</ValidateXmlAgainstSchemaResponse>
</s:Body>
</s:Envelope>
  • Ingen etiketter