Experiencing Problems in using the 'searchTaskFields' built-in service !

Hi guys … I’m trying to use the built-in ‘searchTaskFields’ service to perform a search, but I’m having problems:

  1. If I manually try to specify the inputs to use before running the ‘searchTaskFields’, the ‘value’ field is locked … That is, I’m unable to specify and value for the ‘value’ field …

  2. To counter the above problem, I’ve created a small flow service to pass the inputs into the ‘searchTaskFields’ service, and now it seems I AM able to pass it, but now the problem is that: whenever the search has a non-emtpy returning list, instead of getting that list, I get a NullPointerException (full error given below) … Whenever the search is crafted to NOT have any valid finds, no exception is generated, but then the output is empty too … It seems that the Null Pointer Exception is generated whenever the search is specified so that it does have valid finds …

The full error I get is the following:

com.wm.util.BasisException: SOAPException( Server.userException: com.webmethods.portal.bizPolicy.BizException: [POP.001.0002] A "java.lang.NullPointerException" occurred with the Message "at com.webmethods.portal.bizPolicy.command.task.webservice.SearchTasksFieldsWS.handle(SearchTasksFieldsWS.java:76)" )
	at com.wm.util.BasisRuntimeException.<init>(BasisRuntimeException.java:121)
	at com.wm.app.b2b.server.ISRuntimeException.<init>(ISRuntimeException.java:183)
	at pub.task.taskclient.searchTasksFields(taskclient.java:236)
	at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:439)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:643)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:46)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:51)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:276)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:30)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:363)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386)
	at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:234)
	at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:194)
	at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:324)
	at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:584)
	at com.wm.lang.flow.FlowState.step(FlowState.java:444)
	at com.wm.lang.flow.FlowState.invoke(FlowState.java:409)
	at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1057)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:643)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:46)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:51)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:276)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:30)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:363)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386)
	at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:234)
	at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119)
	at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:160)
	at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:181)
	at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:354)
	at com.wm.util.pool.PooledThread.run(PooledThread.java:131)
	at java.lang.Thread.run(Thread.java:662)

Any ideas what might be causing this ? … I’ve tried changing all kinds of variables (e.g. what field is being searched, what value is being searched, what type of tasks are being searched, etc …), and the result is as described above …

Any ideas ?

Hi Ahmadka,

Before using the inbuilt function directly, can you please try the task engine wsdl to get the task details.

The wsdl details are as follows:

http://server:port/services/bizPolicy/task?wsdl

when you create a project using soap ui… you will get all the services related to tasks.

Give proper input to the search task and see what response are you getting.

Thanks

@pillaire,

Thanks for your reply …

I have been able to retrieve the wsdl details page, but I dont know what to do beyond that as I’m quite new to MWS …

Specifically, can you tell me how to create a soap ui project and all ?

Thanks again !

If you are using the task engine API to get task details, then create a client using the wsdl.

After that use the search operation:

<soapenv:Envelope xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“XML Schema” xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:task=“http://xyz:8585/services/bizPolicy/task” xmlns:soapenc=“http://schemas.xmlsoap.org/soap/encoding/”>
soapenv:Header/
soapenv:Body
<task:searchTask soapenv:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
true

false
200
false


xyz
true
</task:searchTask>
</soapenv:Body>
</soapenv:Envelope>

Give the appropriate inputs and search the tasks.


If you want to use webMethods build in services to get the task details

use the pub.task.taskclient:searchTasks and give the above mentioned inputs.

Please Note: Assign the tasks to a particular role/user.
As we need to give the username/role as one of the arguments.

Thanks for your reply pillaire !

Here’s what I’m doing right now …

  1. I right-click on the searchTaskFields service and then go to ‘Run As’ and click on ‘Run Service’ …

  1. I give the necessary inputs to the service …

  1. And then when I run the service, I get the NullPointerException …

… I think this is the second method which you mentioned in your post above …

Also, the username I indicated in second picture is an authorised user who has privileges for accessing tasks …

use search task…not searchTaskFields

When I use searchTasks, it works, but searchTasks returns all fields from tasks it finds …

The reason why I want to use searchTaskFields instead is because the reference manuals says it ONLY returns the fields you indicate from the search … This is useful for me as I only need a field fields for each task that it finds, not all of them … This will reduce the data transfer load a lot …

If I can somehow achieve the same with searchTasks (that is, tell the service to ONLY return a few fields for each Task it finds), please do let me know how to do it …

Thanks for your help ! :slight_smile:

EDIT: Sorry this is a double-post … Mods can delete this post :stuck_out_tongue:

check if you have configured correct url for MWS on wMTaskClient package home page.