Issue with inputs order in process description

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Issue with inputs order in process description

GCoro
This post was updated on .
Hi All,
if a write a class that declares a number of inputs, when I request the DescribeProcess to the service, the order of the inputs in the xml document does not reflect the declaration order in the class.

Example:
<
org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mapping.AbstractEcologicalEngineMapper;

@Algorithm(statusSupported = false, title = "BIONYM_LOCAL", abstrakt = "A fast version of the algorithm implementing BiOnym, a flexible workflow approach to taxon name matching. The workflow allows to activate several taxa names matching algorithms and to get the list of possible transcriptions for a list of input raw species names with possible authorship indication.", identifier = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mapping.BIONYM_LOCAL", version = "1.1.0")
public class BIONYM_LOCAL extends AbstractEcologicalEngineMapper {
        @LiteralDataInput(abstrakt = "The D4Science VRE scope in which the algorithm will be executed", defaultValue = "/d4science.research-infrastructures.eu", title = "scope", maxOccurs = 1, minOccurs = 1, identifier = "scope", binding = LiteralStringBinding.class)
        public void setScope(String data) {
                inputs.put("scope", data);
        }

        @LiteralDataInput(abstrakt = "The scientific name of the species, possibly with authorship", defaultValue = "Gadus morhua (Linnaeus, 1758)", title = "SpeciesAuthorName", identifier = "SpeciesAuthorName", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setSpeciesAuthorName(String data) {
                inputs.put("SpeciesAuthorName", data);
        }

        @LiteralDataInput(abstrakt = "The reference dataset to use", allowedValues = {
                        "ASFIS", "FISHBASE", "OBIS", "OBIS_ANIMALIA", "OBIS_CNIDARIA",
                        "OBIS_ECHINODERMATA", "OBIS_PLATYHELMINTHES", "COL_FULL",
                        "COL_CHORDATA", "COL_MAMMALIA", "IRMNG_ACTINOPTERYGII",
                        "WORMS_ANIMALIA", "WORMS_PISCES" }, defaultValue = "FISHBASE", title = "Taxa_Authority_File", identifier = "Taxa_Authority_File", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setTaxa_Authority_File(String data) {
                inputs.put("Taxa_Authority_File", data);
        }

        @LiteralDataInput(abstrakt = "The Species - Authority parser", allowedValues = {
                        "SIMPLE", "GNI", "NONE" }, defaultValue = "SIMPLE", title = "Parser_Name", identifier = "Parser_Name", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setParser_Name(String data) {
                inputs.put("Parser_Name", data);
        }

        @LiteralDataInput(abstrakt = "Use preparsing rules to correct common errors", defaultValue = "true", allowedValues = {
                        "true", "false" }, title = "Activate_Preparsing_Processing", identifier = "Activate_Preparsing_Processing", maxOccurs = 1, minOccurs = 1, binding = LiteralBooleanBinding.class)
        public void setActivate_Preparsing_Processing(Boolean data) {
                inputs.put("Activate_Preparsing_Processing", "" + data);
        }

        @LiteralDataInput(abstrakt = "Process using Genus and Species names without declension", defaultValue = "false", allowedValues = {
                        "true", "false" }, title = "Use_Stemmed_Genus_and_Species", identifier = "Use_Stemmed_Genus_and_Species", maxOccurs = 1, minOccurs = 1, binding = LiteralBooleanBinding.class)
        public void setUse_Stemmed_Genus_and_Species(Boolean data) {
                inputs.put("Use_Stemmed_Genus_and_Species", "" + data);
        }

        @LiteralDataInput(abstrakt = "A trade-off between recognition speed and accuracy. Max speed corresponds to search for strings with the same length only.", allowedValues = {
                        "MAX_ACCURACY", "LOW_SPEED", "MEDIUM_SPEED", "HIGH_SPEED",
                        "MAX_SPEED" }, defaultValue = "MAX_ACCURACY", title = "Accuracy_vs_Speed", identifier = "Accuracy_vs_Speed", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setAccuracy_vs_Speed(String data) {
                inputs.put("Accuracy_vs_Speed", data);
        }

        @LiteralDataInput(abstrakt = "Choose a Matcher", allowedValues = { "GSAy",
                        "FUZZYMATCH", "LEVENSHTEIN", "SOUNDEX", "LEV_SDX_TRIG", "TRIGRAM",
                        "NONE" }, defaultValue = "GSAy", title = "Matcher_1", identifier = "Matcher_1", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setMatcher_1(String data) {
                inputs.put("Matcher_1", data);
        }

        @LiteralDataInput(abstrakt = "Threshold", defaultValue = "0.6", title = "Threshold_1", identifier = "Threshold_1", maxOccurs = 1, minOccurs = 1, binding = LiteralDoubleBinding.class)
        public void setThreshold_1(Double data) {
                inputs.put("Threshold_1", "" + data);
        }

        @LiteralDataInput(abstrakt = "The maximum number of matching candidates per each raw input species", defaultValue = "10", title = "MaxResults_1", identifier = "MaxResults_1", maxOccurs = 1, minOccurs = 1, binding = LiteralIntBinding.class)
        public void setMaxResults_1(Integer data) {
                inputs.put("MaxResults_1", "" + data);
        }

        @LiteralDataInput(abstrakt = "Choose a Matcher", allowedValues = { "GSAy",
                        "FUZZYMATCH", "LEVENSHTEIN", "SOUNDEX", "LEV_SDX_TRIG", "TRIGRAM",
                        "NONE" }, defaultValue = "FUZZYMATCH", title = "Matcher_2", identifier = "Matcher_2", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setMatcher_2(String data) {
                inputs.put("Matcher_2", data);
        }

        @LiteralDataInput(abstrakt = "Threshold", defaultValue = "0.6", title = "Threshold_2", identifier = "Threshold_2", maxOccurs = 1, minOccurs = 1, binding = LiteralDoubleBinding.class)
        public void setThreshold_2(Double data) {
                inputs.put("Threshold_2", "" + data);
        }

        @LiteralDataInput(abstrakt = "The maximum number of matching candidates per each raw input species", defaultValue = "10", title = "MaxResults_2", identifier = "MaxResults_2", maxOccurs = 1, minOccurs = 1, binding = LiteralIntBinding.class)
        public void setMaxResults_2(Integer data) {
                inputs.put("MaxResults_2", "" + data);
        }

        @LiteralDataInput(abstrakt = "Choose a Matcher", allowedValues = { "GSAy",
                        "FUZZYMATCH", "LEVENSHTEIN", "SOUNDEX", "LEV_SDX_TRIG", "TRIGRAM",
                        "NONE" }, defaultValue = "LEVENSHTEIN", title = "Matcher_3", identifier = "Matcher_3", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setMatcher_3(String data) {
                inputs.put("Matcher_3", data);
        }

        @LiteralDataInput(abstrakt = "Threshold", defaultValue = "0.4", title = "Threshold_3", identifier = "Threshold_3", maxOccurs = 1, minOccurs = 1, binding = LiteralDoubleBinding.class)
        public void setThreshold_3(Double data) {
                inputs.put("Threshold_3", "" + data);
        }

        @LiteralDataInput(abstrakt = "The maximum number of matching candidates per each raw input species", defaultValue = "5", title = "MaxResults_3", identifier = "MaxResults_3", maxOccurs = 1, minOccurs = 1, binding = LiteralIntBinding.class)
        public void setMaxResults_3(Integer data) {
                inputs.put("MaxResults_3", "" + data);
        }

        @LiteralDataInput(abstrakt = "Choose a Matcher", allowedValues = { "GSAy",
                        "FUZZYMATCH", "LEVENSHTEIN", "SOUNDEX", "LEV_SDX_TRIG", "TRIGRAM",
                        "NONE" }, defaultValue = "TRIGRAM", title = "Matcher_4", identifier = "Matcher_4", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setMatcher_4(String data) {
                inputs.put("Matcher_4", data);
        }

        @LiteralDataInput(abstrakt = "Threshold", defaultValue = "0.4", title = "Threshold_4", identifier = "Threshold_4", maxOccurs = 1, minOccurs = 1, binding = LiteralDoubleBinding.class)
        public void setThreshold_4(Double data) {
                inputs.put("Threshold_4", "" + data);
        }

        @LiteralDataInput(abstrakt = "The maximum number of matching candidates per each raw input species", defaultValue = "5", title = "MaxResults_4", identifier = "MaxResults_4", maxOccurs = 1, minOccurs = 1, binding = LiteralIntBinding.class)
        public void setMaxResults_4(Integer data) {
                inputs.put("MaxResults_4", "" + data);
        }

        @LiteralDataInput(abstrakt = "Choose a Matcher (Optional)", allowedValues = {
                        "GSAy", "FUZZYMATCH", "LEVENSHTEIN", "SOUNDEX", "LEV_SDX_TRIG",
                        "TRIGRAM", "NONE" }, defaultValue = "NONE", title = "Matcher_5", identifier = "Matcher_5", maxOccurs = 1, minOccurs = 1, binding = LiteralStringBinding.class)
        public void setMatcher_5(String data) {
                inputs.put("Matcher_5", data);
        }

        @LiteralDataInput(abstrakt = "Threshold (def. 0.2)", defaultValue = "0.2", title = "Threshold_5", identifier = "Threshold_5", maxOccurs = 1, minOccurs = 1, binding = LiteralDoubleBinding.class)
        public void setThreshold_5(Double data) {
                inputs.put("Threshold_5", "" + data);
        }

        @LiteralDataInput(abstrakt = "The maximum number of matching candidates per each raw input species", defaultValue = "0", title = "MaxResults_5", identifier = "MaxResults_5", maxOccurs = 1, minOccurs = 1, binding = LiteralIntBinding.class)
        public void setMaxResults_5(Integer data) {
                inputs.put("MaxResults_5", "" + data);
        }

        @ComplexDataOutput(abstrakt = "Output that is not predetermined", title = "NonDeterministicOutput", identifier = "non_deterministic_output", binding = GenericXMLDataBinding.class)
        public XmlObject getNon_deterministic_output() {
                return (XmlObject) outputs.get("non_deterministic_output");
        }

        @Execute
        public void run() throws Exception {
                super.run();
        }
}

>

This gives the following as result:

<wps:ProcessDescriptions xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/1.1" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsDescribeProcess_response.xsd" xml:lang="en-US" service="WPS" version="1.0.0">
<ProcessDescription statusSupported="false" storeSupported="true" wps:processVersion="1.1.0">
<ows:Identifier>
org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mapping.BIONYM_LOCAL
</ows:Identifier>
<ows:Title>BIONYM_LOCAL</ows:Title>
<ows:Abstract>
A fast version of the algorithm implementing BiOnym, a flexible workflow approach to taxon name matching. The workflow allows to activate several taxa names matching algorithms and to get the list of possible transcriptions for a list of input raw species names with possible authorship indication.
</ows:Abstract>
<DataInputs>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>scope</ows:Identifier>
<ows:Title>scope</ows:Title>
<ows:Abstract>
The D4Science VRE scope in which the algorithm will be executed
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AnyValue/>
<DefaultValue>/d4science.research-infrastructures.eu</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Matcher_2</ows:Identifier>
<ows:Title>Matcher_2</ows:Title>
<ows:Abstract>Choose a Matcher</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>GSAy</ows:Value>
<ows:Value>FUZZYMATCH</ows:Value>
<ows:Value>LEVENSHTEIN</ows:Value>
<ows:Value>SOUNDEX</ows:Value>
<ows:Value>LEV_SDX_TRIG</ows:Value>
<ows:Value>TRIGRAM</ows:Value>
<ows:Value>NONE</ows:Value>
</ows:AllowedValues>
<DefaultValue>FUZZYMATCH</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Matcher_1</ows:Identifier>
<ows:Title>Matcher_1</ows:Title>
<ows:Abstract>Choose a Matcher</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>GSAy</ows:Value>
<ows:Value>FUZZYMATCH</ows:Value>
<ows:Value>LEVENSHTEIN</ows:Value>
<ows:Value>SOUNDEX</ows:Value>
<ows:Value>LEV_SDX_TRIG</ows:Value>
<ows:Value>TRIGRAM</ows:Value>
<ows:Value>NONE</ows:Value>
</ows:AllowedValues>
<DefaultValue>GSAy</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Matcher_4</ows:Identifier>
<ows:Title>Matcher_4</ows:Title>
<ows:Abstract>Choose a Matcher</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>GSAy</ows:Value>
<ows:Value>FUZZYMATCH</ows:Value>
<ows:Value>LEVENSHTEIN</ows:Value>
<ows:Value>SOUNDEX</ows:Value>
<ows:Value>LEV_SDX_TRIG</ows:Value>
<ows:Value>TRIGRAM</ows:Value>
<ows:Value>NONE</ows:Value>
</ows:AllowedValues>
<DefaultValue>TRIGRAM</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Matcher_3</ows:Identifier>
<ows:Title>Matcher_3</ows:Title>
<ows:Abstract>Choose a Matcher</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>GSAy</ows:Value>
<ows:Value>FUZZYMATCH</ows:Value>
<ows:Value>LEVENSHTEIN</ows:Value>
<ows:Value>SOUNDEX</ows:Value>
<ows:Value>LEV_SDX_TRIG</ows:Value>
<ows:Value>TRIGRAM</ows:Value>
<ows:Value>NONE</ows:Value>
</ows:AllowedValues>
<DefaultValue>LEVENSHTEIN</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Matcher_5</ows:Identifier>
<ows:Title>Matcher_5</ows:Title>
<ows:Abstract>Choose a Matcher (Optional)</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>GSAy</ows:Value>
<ows:Value>FUZZYMATCH</ows:Value>
<ows:Value>LEVENSHTEIN</ows:Value>
<ows:Value>SOUNDEX</ows:Value>
<ows:Value>LEV_SDX_TRIG</ows:Value>
<ows:Value>TRIGRAM</ows:Value>
<ows:Value>NONE</ows:Value>
</ows:AllowedValues>
<DefaultValue>NONE</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Activate_Preparsing_Processing</ows:Identifier>
<ows:Title>Activate_Preparsing_Processing</ows:Title>
<ows:Abstract>Use preparsing rules to correct common errors</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:boolean"/>
<ows:AllowedValues>
<ows:Value>true</ows:Value>
<ows:Value>false</ows:Value>
</ows:AllowedValues>
<DefaultValue>true</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Use_Stemmed_Genus_and_Species</ows:Identifier>
<ows:Title>Use_Stemmed_Genus_and_Species</ows:Title>
<ows:Abstract>
Process using Genus and Species names without declension
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:boolean"/>
<ows:AllowedValues>
<ows:Value>true</ows:Value>
<ows:Value>false</ows:Value>
</ows:AllowedValues>
<DefaultValue>false</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>MaxResults_3</ows:Identifier>
<ows:Title>MaxResults_3</ows:Title>
<ows:Abstract>
The maximum number of matching candidates per each raw input species
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:int"/>
<ows:AnyValue/>
<DefaultValue>5</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Threshold_4</ows:Identifier>
<ows:Title>Threshold_4</ows:Title>
<ows:Abstract>Threshold</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:double"/>
<ows:AnyValue/>
<DefaultValue>0.4</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>MaxResults_4</ows:Identifier>
<ows:Title>MaxResults_4</ows:Title>
<ows:Abstract>
The maximum number of matching candidates per each raw input species
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:int"/>
<ows:AnyValue/>
<DefaultValue>5</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>MaxResults_2</ows:Identifier>
<ows:Title>MaxResults_2</ows:Title>
<ows:Abstract>
The maximum number of matching candidates per each raw input species
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:int"/>
<ows:AnyValue/>
<DefaultValue>10</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>MaxResults_5</ows:Identifier>
<ows:Title>MaxResults_5</ows:Title>
<ows:Abstract>
The maximum number of matching candidates per each raw input species
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:int"/>
<ows:AnyValue/>
<DefaultValue>0</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Threshold_5</ows:Identifier>
<ows:Title>Threshold_5</ows:Title>
<ows:Abstract>Threshold (def. 0.2)</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:double"/>
<ows:AnyValue/>
<DefaultValue>0.2</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Threshold_1</ows:Identifier>
<ows:Title>Threshold_1</ows:Title>
<ows:Abstract>Threshold</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:double"/>
<ows:AnyValue/>
<DefaultValue>0.6</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>SpeciesAuthorName</ows:Identifier>
<ows:Title>SpeciesAuthorName</ows:Title>
<ows:Abstract>
The scientific name of the species, possibly with authorship
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AnyValue/>
<DefaultValue>Gadus morhua (Linnaeus, 1758)</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Taxa_Authority_File</ows:Identifier>
<ows:Title>Taxa_Authority_File</ows:Title>
<ows:Abstract>The reference dataset to use</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>ASFIS</ows:Value>
<ows:Value>FISHBASE</ows:Value>
<ows:Value>OBIS</ows:Value>
<ows:Value>OBIS_ANIMALIA</ows:Value>
<ows:Value>OBIS_CNIDARIA</ows:Value>
<ows:Value>OBIS_ECHINODERMATA</ows:Value>
<ows:Value>OBIS_PLATYHELMINTHES</ows:Value>
<ows:Value>COL_FULL</ows:Value>
<ows:Value>COL_CHORDATA</ows:Value>
<ows:Value>COL_MAMMALIA</ows:Value>
<ows:Value>IRMNG_ACTINOPTERYGII</ows:Value>
<ows:Value>WORMS_ANIMALIA</ows:Value>
<ows:Value>WORMS_PISCES</ows:Value>
</ows:AllowedValues>
<DefaultValue>FISHBASE</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>MaxResults_1</ows:Identifier>
<ows:Title>MaxResults_1</ows:Title>
<ows:Abstract>
The maximum number of matching candidates per each raw input species
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:int"/>
<ows:AnyValue/>
<DefaultValue>10</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Threshold_3</ows:Identifier>
<ows:Title>Threshold_3</ows:Title>
<ows:Abstract>Threshold</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:double"/>
<ows:AnyValue/>
<DefaultValue>0.4</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Accuracy_vs_Speed</ows:Identifier>
<ows:Title>Accuracy_vs_Speed</ows:Title>
<ows:Abstract>
A trade-off between recognition speed and accuracy. Max speed corresponds to search for strings with the same length only.
</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>MAX_ACCURACY</ows:Value>
<ows:Value>LOW_SPEED</ows:Value>
<ows:Value>MEDIUM_SPEED</ows:Value>
<ows:Value>HIGH_SPEED</ows:Value>
<ows:Value>MAX_SPEED</ows:Value>
</ows:AllowedValues>
<DefaultValue>MAX_ACCURACY</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Parser_Name</ows:Identifier>
<ows:Title>Parser_Name</ows:Title>
<ows:Abstract>The Species - Authority parser</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:string"/>
<ows:AllowedValues>
<ows:Value>SIMPLE</ows:Value>
<ows:Value>GNI</ows:Value>
<ows:Value>NONE</ows:Value>
</ows:AllowedValues>
<DefaultValue>SIMPLE</DefaultValue>
</LiteralData>
</Input>
<Input minOccurs="1" maxOccurs="1">
<ows:Identifier>Threshold_2</ows:Identifier>
<ows:Title>Threshold_2</ows:Title>
<ows:Abstract>Threshold</ows:Abstract>
<LiteralData>
<ows:DataType ows:reference="xs:double"/>
<ows:AnyValue/>
<DefaultValue>0.6</DefaultValue>
</LiteralData>
</Input>
</DataInputs>
<ProcessOutputs>
<Output>
<ows:Identifier>non_deterministic_output</ows:Identifier>
<ows:Title>NonDeterministicOutput</ows:Title>
<ows:Abstract>Output that is not predetermined</ows:Abstract>
<ComplexOutput>
<Default>
<Format>
<MimeType>text/xml; subtype=gml/2.1.2</MimeType>
<Schema>http://schemas.opengis.net/gml/2.1.2/feature.xsd</Schema>
</Format>
</Default>
<Supported>
<Format>
<MimeType>text/xml; subtype=gml/2.1.2</MimeType>
<Schema>http://schemas.opengis.net/gml/2.1.2/feature.xsd</Schema>
</Format>
</Supported>
</ComplexOutput>
</Output>
</ProcessOutputs>
</ProcessDescription>
</wps:ProcessDescriptions>


Any hint on how to make WPS service respect the declaration order?
Reply | Threaded
Open this post in threaded view
|

Re: Issue with inputs order in process description

BenjaminPross
You could achieve this by re-implementing the process as AbstractSelfDescribingAlgorithm.
The order of the inputs can be defined in the getInputIdentifiers() method.
The AbstractAnnotatedAlgorithm uses Java reflection to create the process description and the the ordering of methods returned by getDeclaredMethods() cannot be guaranteed.

Hope this helps.

Benjamin
Reply | Threaded
Open this post in threaded view
|

Re: Issue with inputs order in process description

GCoro
Thank you very much for the answer.