[WSDL] enumeration restriction, maar dan met label/value?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 05-09 20:15

chem

Reist de wereld rond

Topicstarter
Ik ben bezig met een systeem waarbij externe partijen berekeningen kunnen laten uitvoeren. Deze berekeningen hebben vele invoeropties, en ik wil in de WSDL deze goed mogelijk documenteren.

Naast the usual aan annotation en base-types, zijn er een aantal velden die uit een reeks waardes bestaan - een enumeration.

Echter, het achterliggende systeem wil niet die text-variant hebben maar de code-variant. Eigenlijk zoals een select/option in html: de value is van belang, niet het label.

Is dit mogelijk om in een WSDL te beschrijven?

De andere optie zou zijn om de labels in de soapserver weer om te zetten naar values, maar dat heeft alles behalve mijn voorkeur ivm de gebruikers die de labels kunnen aanpassen qua tekst.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 04-09 16:48
Klinkt mij alsof je een Restriction wilt op een property van een ComplexType. Waarbij je een ComplexType hebt met value en label, en dan dus een restriction op de waarde van value.

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 05-09 20:15

chem

Reist de wereld rond

Topicstarter
Hmmm ja dat zou ook nog kunnen ja.

Heb je wellicht een stukje sample wsdl-code hoe dat in elkaar zou zitten?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 04-09 16:48
Standaard XSD syntax... en de termen die ik noemde had ik natuurlijk niet voor niks italic gemaakt ;)

Maar zo even uit de losse pols...
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xsd:element name="myComplexType">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="firstproperty">
        <xsd:simpleType>
          <xsd:restriction base="xs:string">
              <xsd:enumeration value="1"/>
              <xsd:enumeration value="2"/>
              <xsd:enumeration value="3"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="lastproperty" type="xs:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 05-09 20:15

chem

Reist de wereld rond

Topicstarter
Ja maar dan heb ik geen relatie tussen de 'value' en de 'label'. Ik kan wel xsd:all doen en dus een samenhang suggereren, maar dat is niet echt zinnig.

Wellicht een beter voorbeeld: men moet de bouwaard van een pand opgeven. Hierbij kan men kiezen uit (ik neem even een snippet)
XML:
1
2
3
4
5
6
7
8
9
10
<xsd:simpleType name="BouwaardType" nillable="true">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="Aluminium" />
        <xsd:enumeration value="Anders" />
        <xsd:enumeration value="Finse houtbouw" />
        <xsd:enumeration value="Grotendeels beton" />
        <xsd:enumeration value="Grotendeels hout" />
        <xsd:enumeration value="Grotendeels steen" />
    </xsd:restriction>
</xsd:simpleType>

Echter, wat ik aan invoer verwacht (request van de client) is "00008", "V2001" etc.

Nu kan ik natuurlijk die 00008/v2001 als enumeration opgeven maar hoe leg ik dan, in de wsdl, uit wat dat dan weer betekent?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 04-09 16:48
chem schreef op dinsdag 13 maart 2012 @ 13:21:
Ja maar dan heb ik geen relatie tussen de 'value' en de 'label'. Ik kan wel xsd:all doen en dus een samenhang suggereren, maar dat is niet echt zinnig.
Nee dat klopt, maar je geeft zelf al aan de een gebruiker zelf labels kan ingeven. dus enige samenhang daartussen is toch onzinnig... je systeem zal tenslotte naar de waardes kijken, en niet naar de labels. Dus wat daar dan in staat is niet relevant. (ja ik neem even wat aannames :P)
Wellicht een beter voorbeeld: men moet de bouwaard van een pand opgeven. Hierbij kan men kiezen uit (ik neem even een snippet)
XML:
1
2
3
4
5
6
7
8
9
10
<xsd:simpleType name="BouwaardType" nillable="true">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="Aluminium" />
        <xsd:enumeration value="Anders" />
        <xsd:enumeration value="Finse houtbouw" />
        <xsd:enumeration value="Grotendeels beton" />
        <xsd:enumeration value="Grotendeels hout" />
        <xsd:enumeration value="Grotendeels steen" />
    </xsd:restriction>
</xsd:simpleType>

Echter, wat ik aan invoer verwacht (request van de client) is "00008", "V2001" etc.

Nu kan ik natuurlijk die 00008/v2001 als enumeration opgeven maar hoe leg ik dan, in de wsdl, uit wat dat dan weer betekent?
Je wilt in je wsdl eigenlijk ook alleen maar jezelf bezig houden met de waardes die over de lijn gaan, representatie zoals deze in de UI zou moeten zijn is niet iets wat in de WSDL thuishoort imho.

Volgens mij is een WSDL hier ook niet voor geschikt. Wat ik eigenlijk alleen maar zie is dat men dan de waardes definieert in de wsdl, dus: 00008, V2001, etc. en dan documentatie aanlevert om aan te geven wat deze waardes betekenen.

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 05-09 20:15

chem

Reist de wereld rond

Topicstarter
D-Raven schreef op dinsdag 13 maart 2012 @ 14:11:
[...]


Nee dat klopt, maar je geeft zelf al aan de een gebruiker zelf labels kan ingeven. dus enige samenhang daartussen is toch onzinnig... je systeem zal tenslotte naar de waardes kijken, en niet naar de labels. Dus wat daar dan in staat is niet relevant. (ja ik neem even wat aannames :P)
Hier ben ik wat onduidelijk geweest - de gebruiker is dan van het systeem achter de soapserver - niet de gebruiker van de soapclient.
[...]


Je wilt in je wsdl eigenlijk ook alleen maar jezelf bezig houden met de waardes die over de lijn gaan, representatie zoals deze in de UI zou moeten zijn is niet iets wat in de WSDL thuishoort imho.

Volgens mij is een WSDL hier ook niet voor geschikt. Wat ik eigenlijk alleen maar zie is dat men dan de waardes definieert in de wsdl, dus: 00008, V2001, etc. en dan documentatie aanlevert om aan te geven wat deze waardes betekenen.
Mjah, ik denk dat ik het ftm maar met een annotation doe :/

Klaar voor een nieuwe uitdaging.

Pagina: 1