-- 作者:pinky
-- 发布时间:9/29/2004 2:52:00 PM
-- [求助]请教大侠:这个service定义有什么错误
下面的代码是用owl_s定义了一个计算器的webservice. 需要输入a,b两个参数,然后先将a,b进行相加,然后再将a,b进行相减,最后将两次计算的结果c,c'进行相乘。 但是现在遇到很奇怪的问题,在运行成功一次后,再次运行输入参数,就会在进行相减的时候显示缺少参数B. 那位大侠可以帮我看一下出了什么问题呢?谢谢了。 <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:owl= "http://www.w3.org/2002/07/owl#" xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#" xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:factbook= "http://www.daml.org/2003/09/factbook/factbook-ont#" xmlns:service= "http://www.daml.org/services/owl-s/1.0/Service.owl#" xmlns:process= "http://www.daml.org/services/owl-s/1.0/Process.owl#" xmlns:profile= "http://www.daml.org/services/owl-s/1.0/Profile.owl#" xmlns:grounding= "http://www.daml.org/services/owl-s/1.0/Grounding.owl#" xml:base= "http://localhost:8080/ws/Calculator.owl" > <owl:Ontology rdf:about=""> <owl:imports rdf:resource="http://localhost:8080/ws/Addition.owl"/> <owl:imports rdf:resource="http://localhost:8080/ws/Subtraction.owl"/> <owl:imports rdf:resource="http://localhost:8080/ws/Multiplication.owl"/> </owl:Ontology> <!-- Service description --> <service:Service rdf:ID="CalculatorService"> <service:presents rdf:resource="#CalculatorProfile"/> <service:describedBy rdf:resource="#CalculatorProcessModel"/> <service:supports rdf:resource="#CalculatorGrounding"/> </service:Service> <!-- Profile description --> <profile:Profile rdf:ID="CalculatorProfile"> <service:isPresentedBy rdf:resource="#CalculatorService"/> <profile:serviceName xml:lang="en">Calculator</profile:serviceName> <profile:textDescription xml:lang="en">Returns the calculator of A e B in all operations</profile:textDescription> <profile:hasInput rdf:resource="#a"/> <profile:hasInput rdf:resource="#b"/> <profile:hasOutput rdf:resource="#c"/> </profile:Profile> <!-- Process Model description --> <process:ProcessModel rdf:ID="CalculatorProcessModel"> <service:describes rdf:resource="#CalculatorService"/> <process:hasProcess rdf:resource="#CalculatorProcess"/> </process:ProcessModel> <process:CompositeProcess rdf:ID="CalculatorProcess"> <process:hasInput rdf:resource="#a"/> <process:hasInput rdf:resource="#b"/> <process:hasOutput rdf:resource="#c"/> <process:composedOf> <process:Sequence> <process:components rdf:parseType="Collection"> <process:AtomicProcess rdf:about="http://localhost:8080/ws/Addition.owl#AdditionProcess"/> <process:AtomicProcess rdf:about="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/> <process:AtomicProcess rdf:about="http://localhost:8080/ws/Multiplication.owl#MultiplicationProcess "/> </process:components> </process:Sequence> </process:composedOf> <!--Passa o valor A da calculator para A da Addition --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="#a"/> <process:atProcess rdf:resource="#CalculatorProcess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Addition.owl#a"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/> </process:ValueOf> </process:sameValues> <!--Passa o valor B da calculator para B da Addition --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="#b"/> <process:atProcess rdf:resource="#CalculatorProcess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Addition.owl#b"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/> </process:ValueOf> </process:sameValues> <!--Passa o valor A da Addition para A da Subtraction --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Addition.owl#a"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Subtraction.owl#a"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/> </process:ValueOf> </process:sameValues> <!--Passa o valor B da Addition para B da Subtraction --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Addition.owl#b"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Subtraction.owl#b"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/> </process:ValueOf> </process:sameValues> <!--Passa o valor C da Subtracao para A da Multiplicacao --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Subtraction.owl#c"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Multiplication.owl#a"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc ess"/> </process:ValueOf> </process:sameValues> <!--Passa o valor C da Adicao para B da Multiplicacao --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Addition.owl#c"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Multiplication.owl#b"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc ess"/> </process:ValueOf> </process:sameValues> <!--Passa o valor C da Multiplicacao para C da Calculator --> <process:sameValues rdf:parseType="Collection"> <process:ValueOf> <process:theParameter rdf:resource="http://localhost:8080/ws/Multiplication.owl#c"/> <process:atProcess rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc ess"/> </process:ValueOf> <process:ValueOf> <process:theParameter rdf:resource="#c"/> <process:atProcess rdf:resource="#CalculatorProcess"/> </process:ValueOf> </process:sameValues> </process:CompositeProcess> <process:Input rdf:ID="a"> <process:parameterType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:label>Calc A</rdfs:label> </process:Input> <process:Input rdf:ID="b"> <process:parameterType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:label>Calc B</rdfs:label> </process:Input> <process:Output rdf:ID="c"> <process:parameterType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:label>Calc Result</rdfs:label> </process:Output> <!-- Grounding description --> <grounding:WsdlGrounding rdf:ID="CalculatorGrounding"> <!-- service:supportedBy rdf:resource="#BabelFishTranslatorService"/--> <grounding:hasAtomicProcessGrounding rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcessGrounding "/> <grounding:hasAtomicProcessGrounding rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcessGro unding"/> <grounding:hasAtomicProcessGrounding rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc essGrounding"/> </grounding:WsdlGrounding> </rdf:RDF> *********************** Here also the runnig application when it works, and when it dos not works: Service:Calculator Values:{Calc A=5, Calc B=3} Start executing process CalculatorProcess Start executing process AdditionProcess [DONE] Start executing process SubtractionProcess [DONE] Start executing process MultiplicationProcess [DONE] [DONE] Executed service 'Calculator' A = 5 B = 3 Output = 16 ******************** Service:Calculator Values:{Calc A=5, Calc B=3} Start executing process CalculatorProcess Start executing process AdditionProcess [DONE] Start executing process SubtractionProcess Exception in thread "main" java.lang.Exception: Value of input parameter 'Sub B' is not set! at org.mindswap.owls.grounding.impl.WSDLAtomicGroundingImpl.invoke(WSDLA tomicGroundingImpl.java:134) at org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e xecuteAtomic(ProcessExecutionEngineImpl.java:117) at org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e xecute(ProcessExecutionEngineImpl.java:104) at org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e xecuteOrdered(ProcessExecutionEngineImpl.java:147) at org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e xecuteConstruct(ProcessExecutionEngineImpl.java:122) at org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e xecute(ProcessExecutionEngineImpl.java:107) at examples.RunService2.runZipCode(RunService2.java:84) at examples.RunService2.main(RunService2.java:101)
|