Skip to Content

Beginner problem with invoking custom service

7 replies [Last post]
mr26
User offline. Last seen 8 weeks 6 hours ago. Offline
Joined: 04/26/2010
Groups: None

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

mr26
User offline. Last seen 8 weeks 6 hours ago. Offline
Joined: 04/26/2010
Groups: None
Hello,         Thanks for

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?

 

monsieurrigsby
monsieurrigsby's picture
User offline. Last seen 6 weeks 6 days ago. Offline
Joined: 04/23/2010
Groups: None
By "user guide", do you mean

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").

 

monsieurrigsby
monsieurrigsby's picture
User offline. Last seen 6 weeks 6 days ago. Offline
Joined: 04/23/2010
Groups: None
My mistake. Thought you were

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...

mr26
User offline. Last seen 8 weeks 6 hours ago. Offline
Joined: 04/26/2010
Groups: None
More with passing parameter to web service.

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>

 

michael
User offline. Last seen 3 days 18 hours ago. Offline
Joined: 09/29/2009
Groups: None
re: WS invoker

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.

mr26
User offline. Last seen 8 weeks 6 hours ago. Offline
Joined: 04/26/2010
Groups: None
  This was the output on the

 

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

 

mr26
User offline. Last seen 8 weeks 6 hours ago. Offline
Joined: 04/26/2010
Groups: None
I am sure it is. I am also

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