Hvordan vælger jeg dokumentprofilen?



Relaterede dokumenter
I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

Introduktion til NemHandel Infrastrukturen. Heinrich Clausen 4. november 2010

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Nemhandel infrastruktur. Morten Hougesen Christian Uldall Pedersen 8. April 2010

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

Tredjepart webservices

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Det er muligt at chekce følgende opg. i CodeJudge: og

NemHandel infrastruktur. Lars Houe Heinrich Clausen 4. November 2010

Vina Nguyen HSSP July 13, 2008

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning

Trolling Master Bornholm 2015

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

SEPA Direct Debit. Mandat Vejledning Nets Lautrupbjerg 10 DK-2750 Ballerup

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

Boligsøgning / Search for accommodation!

Løsning af møntproblemet

Basic statistics for experimental medical researchers

Løsning af skyline-problemet

NemHandel. Jens Jakob Andersen IT-arkitekt IT og Telestyrelsen

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Trolling Master Bornholm 2016 Nyhedsbrev nr. 3

ArbejsskadeAnmeldelse

Dokumentet giver en beskrivelse af anvendelsen af den webservice der er tilknyttet GIS (Generisk Integration Snitflade) til Navision Stat.

Digitaliseringsstyrelsen

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax

Trolling Master Bornholm 2016 Nyhedsbrev nr. 6

Status på det trådløse netværk

En teknisk introduktion til NemHandel

Geografisk lokalisering i ASP.NET

Virkefeltsregler i Java

Id Dokumentnavn Sagsnummer Hændelse #0 Re: SV: SV: Your Conference Registration G #0

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Introduction til.net remoting i C#

Aktivering af Survey funktionalitet

Hvor er mine runde hjørner?

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)

Trolling Master Bornholm 2014

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

1B fil database. //globale variabler DateTime tid; // erklærer en variabel af typen datetime DateTime dag; // erklærer en variabel af typen datetime

1B Status på e-fakturaområdet

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8

CHAPTER 8: USING OBJECTS

ANNONCERING AF CYKELTAXAHOLDEPLADSER I RØD ZONE OG LANGELINIE

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Netværk & elektronik

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X & 10.8

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Titel: Barry s Bespoke Bakery

On the complexity of drawing trees nicely: corrigendum

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås:

United Nations Secretariat Procurement Division

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

How Long Is an Hour? Family Note HOME LINK 8 2

Barnets navn: Børnehave: Kommune: Barnets modersmål (kan være mere end et)

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

IBM WebSphere Operational Decision Management

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

User Manual for LTC IGNOU

QUICK START Updated:

Vejledning til at tjekke om du har sat manuel IP på din computer.

CodeDOM - Dynamisk generering og kompilering af kode

Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US

QUICK START Updated: 18. Febr. 2014

The EAL Jobportal. How to get started

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Subject to terms and conditions. WEEK Type Price EUR WEEK Type Price EUR WEEK Type Price EUR WEEK Type Price EUR

SigmaT.

Black Jack --- Review. Spring 2012

Trolling Master Bornholm 2015

Strings and Sets: set complement, union, intersection, etc. set concatenation AB, power of set A n, A, A +

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

Trolling Master Bornholm 2013

En teknisk introduktion til NemHandel

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Remember the Ship, Additional Work

Appendix A. correspondence with Fyrvaerkeri.dk:

South Baileygate Retail Park Pontefract

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne

Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne

BRP Kursusintroduktion og Java-oversigt

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

Schedulering af SAS job i MS Task Scheduler, som sender med log og statuskode ved fejl

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

ODIN-webservice ændringer release 2010 v2.0

Abstrakte datatyper C#-version

ECE 551: Digital System * Design & Synthesis Lecture Set 5

OXFORD. Botley Road. Key Details: Oxford has an extensive primary catchment of 494,000 people

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Trolling Master Bornholm 2012

Transkript:

Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel er valget af profil ved forsendelse af en faktura hvis kunden kun understøtter NES5 profilen, vil denne profil blive valgt, men hvis kunden understøtter en mere avanceret profil som BilSim, vil man som leverandør vælge at anvende denne profil. På det tidspunkt et OIOUBL dokument produceres, kan det derfor være relevant at undersøge modpartens understøttelse af profiler, for at kunne afgøre, hvilken profil dokumentet skal have. I det følgende vises nogle kodeeksempler for opslag i NemHandelseregisteret, der kan anvendes til at undersøge en konkret NemHandel brugers understøttelse af profiler. Hvis koden afvikles mod NemHandel integrationstestmiljøet vil koden finde et antal understøttede profiler. I det konkrete scenarie slås der op for en bestemt modtager, identificeret ved EAN nummer 5798009811578, som afsenderen ønsker at sende en faktura til - en OIOUBL Invoice identificeres ved UDDI Id et uddi:2e0b402a-7a5e-476b-8686-b33f54fd1f47, se http://digitaliser.dk/resource/560785. I eksemplet er man desuden kun interesseret i at sende til et http endepunkt og modtageren skal agere i rollen som Buyer Party. Koden til at lave dette opslag vises både i en Java og i en C# udgave.

Java kodeeksempel I Java kodeeksemplet antages det, at man har de relevante jar-filer fra RASP biblioteket, og at RASP er konfigureret via RASP Configuration filen de relevante konfigurationsdele sættes op på samme måde som ved normal forsendelse af dokumenter. package test.uddi.lookup; import java.util.arraylist; import java.util.hashset; import java.util.hashtable; import java.util.list; import java.util.map; import java.util.set; import dk.gov.oiosi.addressing.identifier; import dk.gov.oiosi.addressing.identifierean; import dk.gov.oiosi.uddi.endpointaddresstypecode; import dk.gov.oiosi.uddi.iuddilookupclient; import dk.gov.oiosi.uddi.lookupparameters; import dk.gov.oiosi.uddi.processdefinition; import dk.gov.oiosi.uddi.processroledefinition; import dk.gov.oiosi.uddi.registrylookupclientfactory; import dk.gov.oiosi.uddi.uddiid; import dk.gov.oiosi.uddi.uddilookupresponse; import dk.gov.oiosi.uddi.uddistringid; public class LookupClient /** * @param args */ public static void main(string[] args) try // EAN/GLN number of receiver Identifier identifier = new IdentifierEan("5798009811578"); // Invoice service type id UddiId servicetypeid = new UddiStringId( "uddi:2e0b402a-7a5e-476b-8686-b33f54fd1f47", true); // OIOUBL role name String rolename = "BuyerParty"; // alt. SellerParty String roletype = "http://oio.dk/profiles/owsa/modelt/1.0/uddi/identifiers/ubl2.0processrole/"; // The receiving service must be an http endpoint List<EndpointAddressTypeCode> acceptedtransports = new ArrayList<EndpointAddressTypeCode>(); acceptedtransports.add(endpointaddresstypecode.http); // Build the parameters for the lookup LookupParameters parameters = new LookupParameters(identifier, servicetypeid, acceptedtransports); IUddiLookupClient lookupclient = RegistryLookupClientFactory.getRegistryLookupClient();

// Do the UDDI Lookup List<UddiLookupResponse> uddiresponses = lookupclient.lookup(parameters); Map<String, ProcessRoleDefinition> processroles = new Hashtable<String, ProcessRoleDefinition>(); Set<UddiId> processes = new HashSet<UddiId>(); if (uddiresponses == null) // Handles if the responses is null, should not be possible throw new Exception("The uddi responses was null."); for (UddiLookupResponse response : uddiresponses) if (response.getprocessroles() == null) // Handles if the processroles is null, should not be // possible throw new Exception("The process roles was null."); for (ProcessRoleDefinition role : response.getprocessroles()) if (processroles.containskey(role.getname())) // Handles if the process role is present in // another registration (you can put more info here) throw new Exception("Process role '" + role.getname() + " is registrered multiple times."); processroles.put(role.getname(), role); // Only adding those profileroles with the correct role for further // process for (Map.Entry<String, ProcessRoleDefinition> processroleentry : processroles.entryset()) if (!rolename.equalsignorecase(processroleentry.getvalue().getrole())) continue; if (!roletype.equalsignorecase(processroleentry.getvalue().getroletype())) continue; processes.add(processroleentry.getvalue().getprocessdefinitionid()); // Example on how to get the process definitions that are supported // from the UDDI. List<ProcessDefinition> processdefinitions = lookupclient.getprocessdefinitions(new ArrayList<UddiId>(processes)); // This example prints the supported processes/profiles // make your own code to find the best profile if any System.out.println("Supported processses"); for (ProcessDefinition processdefinition : processdefinitions)

System.out.println("Process: " + processdefinition.getname()); catch (Exception ex) System.err.println(ex.getMessage()); System.err.println(ex.getStackTrace()); System.out.println("Press enter to close program"); try System.in.read(); catch (Exception e)

C# kodeksempel I.NET kodeeksemplet antages det, at man har de relevante dll-filer fra RASP biblioteket, og at RASP er konfigureret via RASP Configuration filen de relevante konfigurationsdele sættes op på samme måde som ved forsendelse af dokumenter. using System; using System.Collections.Generic; using System.Linq; using System.Text; using dk.gov.oiosi.uddi; using dk.gov.oiosi.addressing; using dk.gov.oiosi.communication.configuration; using dk.gov.oiosi.configuration; using System.IO; namespace TestUddiLookup class Program static void Main(string[] args) try // EAN/GLN number of receiver var identifier = new IdentifierEan("5798009811578"); // Invoice service type id var servicetypeid = new UddiStringId("uddi:2e0b402a-7a5e-476b-8686-b33f54fd1f47", true); // OIOUBL role name var rolename = "BuyerParty"; //alt. SellerParty var roletype = "http://oio.dk/profiles/owsa/modelt/1.0/uddi/identifiers/ubl2.0processrole/"; // The receiving service must be an http endpoint var acceptedtransports = new List<EndpointAddressTypeCode>(); acceptedtransports.add(endpointaddresstypecode.http); //Build the parameters for the lookup var parameters = new LookupParameters(identifier, servicetypeid, acceptedtransports); var factory = new RegistryLookupClientFactory(); var lookupclient = factory.createuddilookupclient(); //Do the UDDI Lookup var uddiresponses = lookupclient.lookup(parameters); var processroles = new Dictionary<string, ProcessRoleDefinition>(); var processes = new HashSet<UddiId>(); if (uddiresponses == null)

//Handles if the responses is null, should not be possible throw new Exception("The uddi responses was null."); foreach (var response in uddiresponses) if (response.processroles == null) //Handles if the processroles is null, should not be possible throw new Exception("The process roles was null."); foreach (var role in response.processroles) if (processroles.containskey(role.name)) // Handles if the process role is present in // another registration (you can put more info here) throw new Exception("Process role '" + role.name + " is registrered multiple times."); processroles.add(role.name, role); // Only adding those profileroles with the correct role for further // process foreach (var roleentry in processroles) if (!rolename.equals(roleentry.value.role, StringComparison.CurrentCultureIgnoreCase)) continue; if (!roletype.equals(roleentry.value.roletype, StringComparison.CurrentCultureIgnoreCase)) continue; processes.add(roleentry.value.processdefinitionid); //Example on how to get the process definitions that are supported from the UDDI. var processdefinitions = lookupclient.getprocessdefinitions(new List<UddiId>(processes)); //This example prints the supported processes/profiles //make your own code to find the best profile if any Console.Out.WriteLine("Supported processses"); foreach (var processdefinition in processdefinitions) Console.Out.WriteLine("Process: " + processdefinition.name); catch (Exception ex) Console.Error.WriteLine(ex.Message); Console.Error.WriteLine(ex.StackTrace); Console.Out.WriteLine("Press enter to close program");

Console.ReadLine();