Beginner problem with invoking custom service
Hello,
I am fairly new to using this tool. My requirement is that, I need to invoke my own webservice.I tried to follow the user manual. I am not really sure how to achieve this. I followed the user manual. But in the work flow the tasks that are after the task to which this service is needed are not executed. In the admin queues I dont see any unoffered services . But in cases tab I can see the case that i started with, which i am assuming means that the work flow is not finished. I think that YAWL is waiting for the webservice to return something. My web service returns a string. I am not sure what I am doing wrong.
If some one can guide me or provide me with some kind of example, that will be really helpful.
Thanks,
Nag
By "user guide", do you mean the CustomWebServices_Beta7.pdf document (see Software-->Documentation)? The actual user guide has very little on coding custom services. Read that if you haven't already.
You don't really give much information to go on. Have you checked the log files (an error processing what your custom service returned is the most obvious likely cause; YAWL will check this against the XML Schema for your return type as defined in your specification)? If these don't tell you anything, you could try turning up the YAWL logging level to DEBUG or similar (you'll need to know/learn minimal bits of log4j and Tomcat first but, if you're intending to develop custom services, you should have a reasonable grasp of this anyway!)
Are you successfully checking-in? (The successful method in InterfaceBWebsideController is designed so you give it the String response to your check-in call and it will parse the XML and tell you if this indicates a successful call (or just print/log the return string: it's pretty much in "English").
My mistake. Thought you were using a custom service (from the title of your post), and had mistakenly used "web service" in the details. Was a little confusing...
Hello,
I figured out that the Yawl is making a call to web service. But the problem I am facing is that, my web service method needs a string as an input parameter. I am not sure how to pass this as parameter. I have a input task variable and output task variable in task decomposition along with the three variables that come with YawlWSInovker. I need that input task variable to be the parameter of the web service method. I am not sure how to achieve that and also the result should be given to the output task variable. When I checked, YawlWSInvoker is making a call to web service but the parameter is null. I am not sure how to correct this and I am sure that its got something to do with the way I give the operation Name to YawlWSInvokerOperationName .
BTW I am using the YawlWSInvoker to call external webservice. I ll also attach the task decompositon detail if that helps.
<decomposition id="Seek_Credit_Report" xsi:type="WebServiceGatewayFactsType">
<inputParam>
<name>YawlWSInvokerWSDLLocation</name>
<type>anyURI</type>
<namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam>
<inputParam>
<name>YawlWSInvokerPortName</name>
<type>NCName</type>
<namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam>
<inputParam>
<name>YawlWSInvokerOperationName</name>
<type>NCName</type>
<namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam>
<inputParam>
<name>ApplicationId</name>
<type>string</type>
<namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam>
<outputParam>
<name>CreditRefReport</name>
<type>string</type>
<namespace>http://www.w3.org/2001/XMLSchema</namespace>
</outputParam>
<yawlService id="http://localhost:8080/yawlWSInvoker" />
<externalInteraction>manual</externalInteraction>
</decomposition>
the WS invoker service passes all task data variables (besides the location, port name and operation name) to the web service. Are you sure the ApplicationId variable has a value assigned to it when the service is called (i.e via a parameter mapping from a net variable to the task variable on input)? It seems like the parameter value is not initialised.
This was the output on the Tomcat commmand prompt after webservice is called.
XMLOutputter = <Seek_Credit_Report>
<ApplicationId>nag</ApplicationId>
</Seek_Credit_Report>
wsdl location = http://localhost:8084/MyWebApp/HelloWS?wsdl
port name = HelloWSPort
operation name = sayHello
argValue: nag
Reading WSDL document from 'http://localhost:8084/MyWebApp/HelloWS?wsdl'
Preparing WSIF dynamic invocation
Executing operation sayHello
Reply from Web service being invoked is :{return=Hello null}
replyMsg class = java.lang.String
I am sure it is. I am also sending the location and port and operation names in the same way., for the previous task. I dont seem to understand the problem , and also the return value is null which should be given to CreditRefReport






Hello,
Thanks for your time. When I said User guide, I meant Yawl user guide 2.0 .I think the values for YawlWSInvokerWSDLLocation ,YawlWSInvokerPortName and YawlWSInvokerOperationName are not properly given in my case. My Web service accepts a String as parameter and returns a String. I have an input parameter and an output parameter to the task along with those 3 default parameters. Now, I think the problem is with me giving the values to the parameters. When I give the operation name, do I need to give the parameter also?Normally when we use the web service we will call it with portName.operationName(parameters). I am not sure that I am giving this info correct.
YawlWSInvokerWSDLLocation, For this I give the location of my WSDL file. for portName I give the port Name without the name space. for OperationName, I am just giving the name of operation specifying any parameters and I think this is wrong.
Can you Please suggest me what exactly needs to be given for those default parameters?