Using REST workflow item returns an error?

1,713 views
Skip to first unread message

David Thomas

unread,
Dec 4, 2015, 10:23:29 AM12/4/15
to jBPM Usage
Hi,

We are currently implementing the Drools workbench 6.3.0 and I am having some issues setting up a simple workflow for a REST service.

I have created a service flow with a REST handler and the details of that handler are attached.

When I run the process I get the following error which seem to be related to characters being changed to other values:

2015-12-04 14:07:24,267 ERROR [org.guvnor.common.services.backend.exceptions.ExceptionUtilities] (default task-5) Exception thrown: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData: org.jbpm.workflow.instance.WorkflowRuntimeException: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData

 

 at org
.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:149) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:73) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:44) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:236) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:439) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:208) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:217) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:225) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:1812) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.runtime.process.StartCorrelatedProcessCommand.execute(StartCorrelatedProcessCommand.java:146) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.runtime.process.StartCorrelatedProcessCommand.execute(StartCorrelatedProcessCommand.java:44) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:584) [drools-persistence-jpa-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:82) [drools-persistence-jpa-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73) [drools-persistence-jpa-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:377) [drools-persistence-jpa-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:529) [drools-core-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.kie.services.impl.ProcessServiceImpl.startProcess(ProcessServiceImpl.java:126) [jbpm-kie-services-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.services.cdi.impl.ProcessServiceCDIImpl$Proxy$_$$_WeldClientProxy.startProcess(Unknown Source) [jbpm-services-cdi-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.console.ng.bd.backend.server.KieSessionEntryPointImpl.startProcess(KieSessionEntryPointImpl.java:78) [jbpm-console-ng-business-domain-backend-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.console.ng.bd.backend.server.KieSessionEntryPointImpl$Proxy$_$$_WeldClientProxy.startProcess(Unknown Source) [jbpm-console-ng-business-domain-backend-6.3.0.Final.jar:6.3.0.Final]

 at sun
.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_91]

 at sun
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_91]

 at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_91]

 at java
.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_91]

 at org
.jboss.errai.bus.server.io.AbstractRPCMethodCallback.invokeMethodFromMessage(AbstractRPCMethodCallback.java:48) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.io.ValueReplyRPCEndpointCallback.callback(ValueReplyRPCEndpointCallback.java:22) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.io.RemoteServiceCallback.callback(RemoteServiceCallback.java:54) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.cdi.server.CDIExtensionPoints$2.callback(CDIExtensionPoints.java:410) [errai-weld-integration-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:296) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.SimpleDispatcher.dispatchGlobal(SimpleDispatcher.java:46) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:97) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:114) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at org
.jboss.errai.bus.server.servlet.DefaultBlockingServlet.doPost(DefaultBlockingServlet.java:142) [errai-bus-3.2.0.Final.jar:3.2.0.Final]

 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:707) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]

 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]

 at io
.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at org
.uberfire.ext.security.server.SecureHeadersFilter.doFilter(SecureHeadersFilter.java:53) [uberfire-servlet-security-0.7.3.Final.jar:0.7.3.Final]

 at io
.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at org
.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:45) [uberfire-servlet-security-0.7.3.Final.jar:0.7.3.Final]

 at io
.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at org
.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at org
.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:248) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:77) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:167) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.Connectors.executeRootHandler(Connectors.java:199) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:761) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_91]

 at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_91]

 at java
.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_91]

Caused by: org.jbpm.bpmn2.handler.WorkItemHandlerRuntimeException: java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData

 at org
.jbpm.process.workitem.AbstractLogOrThrowWorkItemHandler.handleException(AbstractLogOrThrowWorkItemHandler.java:55) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.workitem.AbstractLogOrThrowWorkItemHandler.handleException(AbstractLogOrThrowWorkItemHandler.java:38) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.workitem.rest.RESTWorkItemHandler.executeWorkItem(RESTWorkItemHandler.java:267) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:69) [drools-persistence-jpa-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:138) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 
... 81 more

Caused by: java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData

 at org
.jbpm.process.workitem.rest.RESTWorkItemHandler.doRequestWithAuthorization(RESTWorkItemHandler.java:403) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.workitem.rest.RESTWorkItemHandler.doRequestWithAuthorization(RESTWorkItemHandler.java:378) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.workitem.rest.RESTWorkItemHandler.executeWorkItem(RESTWorkItemHandler.java:236) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 
... 83 more

Caused by: org.apache.http.client.ClientProtocolException

 at org
.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186) [httpclient-4.3.6.jar:4.3.6]

 at org
.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) [httpclient-4.3.6.jar:4.3.6]

 at org
.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106) [httpclient-4.3.6.jar:4.3.6]

 at org
.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) [httpclient-4.3.6.jar:4.3.6]

 at org
.jbpm.process.workitem.rest.RESTWorkItemHandler.doRequestWithAuthorization(RESTWorkItemHandler.java:401) [jbpm-workitems-6.3.0.Final.jar:6.3.0.Final]

 
... 85 more

Caused by: org.apache.http.ProtocolException: Target host is not specified

 at org
.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:69) [httpclient-4.3.6.jar:4.3.6]

 at org
.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:124) [httpclient-4.3.6.jar:4.3.6]

 at org
.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:183) [httpclient-4.3.6.jar:4.3.6]

 
... 89 more



When I use the same request details in a browser it works.


Thanks

Screen Shot 2015-12-04 at 15.22.49.png

Maciej Swiderski

unread,
Dec 4, 2015, 12:35:22 PM12/4/15
to David Thomas, jBPM Usage
you ran into this issue: https://issues.jboss.org/browse/JBPM-4785 you can find a workaround explaind in the jira as well

Maciej
--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-usage/e1c9abe2-96e1-48bd-8be2-b3d65dad3896%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
<Screen Shot 2015-12-04 at 15.22.49.png>

David Thomas

unread,
Dec 8, 2015, 4:09:31 AM12/8/15
to jBPM Usage, davytli...@gmail.com
Hi,

Thanks for the information it was really useful and I have managed to fix the issue above.

The service I am hitting is returning a 400 as there appears to be missing params, however I did add them to the task so I don't understand why they are not there.

How would I debug the full HTTP request that is being sent to the service as the logs only output the URL and not the params and I have tried to use a HTTP listeners to review all traffic but it didn't show up?

Thanks


On Friday, 4 December 2015 17:35:22 UTC, Maciej Swiderski wrote:
you ran into this issue: https://issues.jboss.org/browse/JBPM-4785 you can find a workaround explaind in the jira as well

Maciej
On 04.12.2015, at 16:23, David Thomas <davytli...@gmail.com> wrote:

Hi,

We are currently implementing the Drools workbench 6.3.0 and I am having some issues setting up a simple workflow for a REST service.

I have created a service flow with a REST handler and the details of that handler are attached.

When I run the process I get the following error which seem to be related to characters being changed to other values:

2015-12-04 14:07:24,267 ERROR [org.guvnor.common.services.backend.exceptions.ExceptionUtilities] (default task-5) Exception thrown: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData: org.jbpm.workflow.instance.WorkflowRuntimeException: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData

 

 at org
.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:149) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:73) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:44) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:236) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:439) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:208) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:217) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:225) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:1812) [drools-
...

David Thomas

unread,
Dec 8, 2015, 5:01:52 AM12/8/15
to jBPM Usage, davytli...@gmail.com
Hi,

So I ran another test with a readily available Web Service on the internet for currency conversions, when I run this I get the error show below:

[org.jbpm.process.workitem.rest.RESTWorkItemHandler] (default task-4) Unsuccessful response from REST server (status: 500, endpoint: http://www.webservicex.net/currencyconvertor.asmx/ConversionRate, response: System.InvalidOperationException: Missing parameter: FromCurrency.

 

   at
System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)

   at
System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)

   at
System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()

   at
System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()



Also I have attached screenshots of the settings applied to the process.

Thanks


On Friday, 4 December 2015 17:35:22 UTC, Maciej Swiderski wrote:
you ran into this issue: https://issues.jboss.org/browse/JBPM-4785 you can find a workaround explaind in the jira as well

Maciej
On 04.12.2015, at 16:23, David Thomas <davytli...@gmail.com> wrote:

Hi,

We are currently implementing the Drools workbench 6.3.0 and I am having some issues setting up a simple workflow for a REST service.

I have created a service flow with a REST handler and the details of that handler are attached.

When I run the process I get the following error which seem to be related to characters being changed to other values:

2015-12-04 14:07:24,267 ERROR [org.guvnor.common.services.backend.exceptions.ExceptionUtilities] (default task-5) Exception thrown: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData: org.jbpm.workflow.instance.WorkflowRuntimeException: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData

 

 at org
.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:149) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:73) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:44) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:236) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:439) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:208) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:217) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:225) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:1812) [drools-
...
Screen Shot 2015-12-08 at 09.56.11.png
Screen Shot 2015-12-08 at 09.55.08.png
Screen Shot 2015-12-08 at 09.54.51.png
Screen Shot 2015-12-08 at 09.54.37.png

Maciej Swiderski

unread,
Dec 8, 2015, 6:23:08 AM12/8/15
to David Thomas, jBPM Usage
David,

there are two options:
- set FromCurrency and ToCurrency as query parameters and thus it will be part of URL of the rest service
- use POST body and then you have to set following string as data input called Content that will be mapped by RESTWorkItemHandler to post body:
FromCurrency=string&ToCurrency=string

in the first case you use GET http method while in second you use POST

Maciej
--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
<Screen Shot 2015-12-08 at 09.56.11.png><Screen Shot 2015-12-08 at 09.55.08.png><Screen Shot 2015-12-08 at 09.54.51.png><Screen Shot 2015-12-08 at 09.54.37.png>

David Thomas

unread,
Dec 8, 2015, 6:51:24 AM12/8/15
to jBPM Usage, davytli...@gmail.com
Hi,

So I ran another test with a readily available Web Service on the internet for currency conversions, when I run this I get the error show below:

[org.jbpm.process.workitem.rest.RESTWorkItemHandler] (default task-4) Unsuccessful response from REST server (status: 500, endpoint: http://www.webservicex.net/currencyconvertor.asmx/ConversionRate, response: System.InvalidOperationException: Missing parameter: FromCurrency.

 

   at
System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)

   at
System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)

   at
System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()

   at
System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()



Also I have attached screenshots of the settings applied to the process.

Thanks


On Friday, 4 December 2015 17:35:22 UTC, Maciej Swiderski wrote:
you ran into this issue: https://issues.jboss.org/browse/JBPM-4785 you can find a workaround explaind in the jira as well

Maciej
On 04.12.2015, at 16:23, David Thomas <davytli...@gmail.com> wrote:

Hi,

We are currently implementing the Drools workbench 6.3.0 and I am having some issues setting up a simple workflow for a REST service.

I have created a service flow with a REST handler and the details of that handler are attached.

When I run the process I get the following error which seem to be related to characters being changed to other values:

2015-12-04 14:07:24,267 ERROR [org.guvnor.common.services.backend.exceptions.ExceptionUtilities] (default task-5) Exception thrown: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData: org.jbpm.workflow.instance.WorkflowRuntimeException: [REST_Test.TEST:3 - Send Request:2] -- java.lang.RuntimeException: Could not execute request [GET] https%3A%2F%2Fapi.example.com%2FHttpInjectData

 

 at org
.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:149) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:73) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:44) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:236) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:439) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:208) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:217) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:225) [jbpm-flow-6.3.0.Final.jar:6.3.0.Final]

 at org
.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:1812) [drools-
...
Screen Shot 2015-12-08 at 09.56.11.png
Screen Shot 2015-12-08 at 09.55.08.png
Screen Shot 2015-12-08 at 09.54.51.png

David Thomas

unread,
Dec 8, 2015, 7:50:08 AM12/8/15
to jBPM Usage, davytli...@gmail.com
Hi,

Where would I set the FromCurrency and ToCurrency as query parameters?

Thanks

Maciej Swiderski

unread,
Dec 8, 2015, 8:28:09 AM12/8/15
to David Thomas, jBPM Usage
just append them to the url:

http://www.webservicex.net/currencyconvertor.asmx/ConversionRate?FromCurency=VALUE&ToCurrency=VALUE

and that’s should be it

Maciej

David Thomas

unread,
Dec 8, 2015, 9:09:05 AM12/8/15
to jBPM Usage, davytli...@gmail.com
So if I wanted to set the parameters to be the values from the process variables would it be:

http://www.webservicex.net/currencyconvertor.asmx/ConversionRate?FromCurency=from_currency&ToCurrency=to_currency

Maciej Swiderski

unread,
Dec 8, 2015, 9:12:07 AM12/8/15
to David Thomas, jBPM Usage
since you need to refer to variable you need to make is a sexpression #{var}

which gives you something like this:
http://www.webservicex.net/currencyconvertor.asmx/ConversionRate?FromCurency=#{from_currency}&ToCurrency=#{to_currency}

Maciej


David Thomas

unread,
Dec 9, 2015, 9:48:09 AM12/9/15
to jBPM Usage, davytli...@gmail.com
Thanks for all you help with this as now I can test the process in KIE Workbench and it works :)

I have now deployed this JBPM process to our Kie Execution Server and it is running, however when I do the following POST request against that execution server it fails with 405:

{
  "batch-execution": {
    "lookup": "ksession1",
    "commands": [
      {
        "insert": {
          "object": {
            "demo.rest.REST": {
              "from_currency": "GBP",
              "to_currency": "EUR"
            }
          }
        }
      },
      {
        "fire-all-rules": ""
      }
    ]
  }
}

I don't think the above command is correct and that is why it is returning 405, I am not sure how to fire the JBPM processes on the execution servers.

Thanks
...

Maciej Swiderski

unread,
Dec 9, 2015, 10:18:12 AM12/9/15
to David Thomas, jBPM Usage
you have to skip the batch-execution part and you should be fine. So the payload should look like this:
{
    "lookup": "ksession1",
    "commands": [
      {
        "insert": {
          "object": {
            "demo.rest.REST": {
              "from_currency": "GBP",
              "to_currency": "EUR"
            }
          }
        }
      },
      {
        "fire-all-rules": ""
      }
    ]
  }

Maciej

David Thomas

unread,
Dec 9, 2015, 10:28:58 AM12/9/15
to jBPM Usage, davytli...@gmail.com
Hi,

Again thanks for the quick response :)

So I am still getting the same response but when reviewing the response headers below I dont see POST listed as a accepted/allowed type:


Status
405 Method Not Allowed  Loading time: 22
Request headers
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo
Content-Type: application/json
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8


Response headers
Expires: 0
Cache-Control: no-cache, no-store, must-revalidate
X-Powered-By: Undertow/1
Server: WildFly/8
Pragma: no-cache
Date: Wed, 09 Dec 2015 15:19:41 GMT
Allow: GET, DELETE, OPTIONS, HEAD, PUT
Connection: keep-alive
Content-Length: 0




Could this be a Wildfly issue?


...
Auto Generated Inline Image 1

Maciej Swiderski

unread,
Dec 9, 2015, 10:30:29 AM12/9/15
to David Thomas, jBPM Usage
what’s the URL you’re sending this to?
On 09.12.2015, at 16:28, David Thomas <davytli...@gmail.com> wrote:

Hi,

Again thanks for the quick response :)

So I am still getting the same response but when reviewing the response headers below I dont see POST listed as a accepted/allowed type:


Status
405 Method Not Allowed <Auto Generated Inline Image 1.png> Loading time: 22
--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
<Auto Generated Inline Image 1.png>

David Thomas

unread,
Dec 9, 2015, 10:38:42 AM12/9/15
to jBPM Usage, davytli...@gmail.com
http://[IP_ADDRESS]:8080/kie-server-6.3.0.Final-ee7/services/rest/server/containers/REST
...

Maciej Swiderski

unread,
Dec 9, 2015, 11:00:46 AM12/9/15
to David Thomas, jBPM Usage
since this is version 6.3 you should use:
kie-server/services/rest/server/containers/instances/REST

Maciej
--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.

David Thomas

unread,
Dec 10, 2015, 3:51:06 AM12/10/15
to jBPM Usage, davytli...@gmail.com
Morning,

That URL did work and I now get a 200 however the response is a "FAILURE" as shown below: 

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<response type="FAILURE" msg="Error calling container REST: org.kie.server.api.marshalling.MarshallingException: Can't unmarshall input string: { "lookup": "ksession1", "commands": [ { "insert": { "object": { "demo.rest.REST": { "from_currency": "EUR", "to_currency": "GBP" } } } }, { "fire-all-rules": "" } ] } " />


The JSON appears to be correct as far as I can tell.

David Thomas

unread,
Dec 14, 2015, 9:30:08 AM12/14/15
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

I am still getting an error as previously shown, I have grabbed the logs from the server and they are shown below:

ERROR [org.kie.server.services.impl.KieContainerCommandServiceImpl] (default task-56) Error calling container 'REST': org.kie.server.api.marshalling.MarshallingException: Can't unmarshall input string: {


 

    "lookup": "ksession1",

    "commands": [

      {

        "insert": {

          "object": {

            "demo.rest.REST": {

              "from_currency": "EUR",

              "to_currency": "GBP"

            }

          }

        }

      },

      {

        "fire-all-rules": ""

      }

    ]

}


 

 at org.kie.server.api.marshalling.jaxb.JaxbMarshaller.unmarshall(JaxbMarshaller.java:197) [kie-server-api-6.3.0.Final.jar:6.3.0.Final]

 at org.kie.server.services.impl.KieContainerCommandServiceImpl.callContainer(KieContainerCommandServiceImpl.java:104) [kie-server-services-common-6.3.0.Final.jar:6.3.0.Final]

 at org.kie.server.remote.rest.drools.CommandResource.manageContainer(CommandResource.java:73) [kie-server-rest-drools-6.3.0.Final.jar:6.3.0.Final]

 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_91]

 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_91]

 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_91]

 at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_91]

 at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.10.Final.jar:]

 at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]

 at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

Caused by: javax.xml.bind.UnmarshalException

 - with linked exception:

[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.]

 at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:314) [jboss-jaxb-api_2.2_spec-1.0.4.Final.jar:1.0.4.Final]

 at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:578) [jaxb-impl-2.2.11.jar:2.2.11]

 at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:264) [jaxb-impl-2.2.11.jar:2.2.11]

 at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229) [jaxb-impl-2.2.11.jar:2.2.11]

 at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:136) [jboss-jaxb-api_2.2_spec-1.0.4.Final.jar:1.0.4.Final]

 at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:193) [jboss-jaxb-api_2.2_spec-1.0.4.Final.jar:1.0.4.Final]

 at org.kie.server.api.marshalling.jaxb.JaxbMarshaller.unmarshall(JaxbMarshaller.java:195) [kie-server-api-6.3.0.Final.jar:6.3.0.Final]

 ... 45 more

Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.

 at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)

 at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:175)

 at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:398)

 at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)

 at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:282)

 at org.apache.xerces.impl.XMLScanner.reportFatalError(XMLScanner.java:1467)

 at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(XMLDocumentScannerImpl.java:870)

 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)

 at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:875)

 at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:798)

 at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)

 at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1198)

 at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:564)

 at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:258) [jaxb-impl-2.2.11.jar:2.2.11]

 ... 49 more



This appears to be an issue with the way SAX is processing the JSON, is it trying to process it as XML data?

To test that theory I also ran the XML version of the request and got the same error.

Thanks

Maciej Swiderski

unread,
Dec 14, 2015, 9:34:06 AM12/14/15
to David Thomas, jBPM Usage
David,

make sure you set Content-Type and Accept headers to application/json
Content-Type: application/json
Accept: application/json

Maciej
> To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-usage/8ffd9c04-7750-47bf-bdf2-231076e2e6d6%40googlegroups.com.

David Thomas

unread,
Dec 14, 2015, 10:55:24 AM12/14/15
to jBPM Usage, davytli...@gmail.com
Thanks :) That worked I had set the Content Type just not the accept headers.

The Result returned appears to be null as shown below and I think this last remaining issue is the Object that I am targeting:

{
"type": "SUCCESS"
"msg": "Container REST successfully called."
"result": "{ "results" : [ { "key" : "", "value" : 0 } ], "facts" : [ ] }"
}



How can I be sure I am targeting the right Object?

David Thomas

unread,
Dec 15, 2015, 3:54:40 AM12/15/15
to jBPM Usage, davytli...@gmail.com
Morning,

I have been reviewing the JSON I am using for the JBPM Process call and it doesn't appear to be correct to me and this raises a few questions:
  • In the JSON data I am trying to set data for the REST object however this is not an object but a 'Business Process' so how do I call that?
  • In the business process there are 'Variable Definitions' that need to be set for the process to complete successfully and I don't know how to do this?
  • In the business process the package listed is 'org.jbpm' is this the one I need to reference in the JSON call?
  • At the end of the JSON I am saying 'fire-all-rules' however this is a business process and not a set of Drools rules so is this call still valid?
Sorry for all the questions its just confusing at the moment.

Thanks

David Thomas

unread,
Dec 15, 2015, 11:02:58 AM12/15/15
to jBPM Usage, davytli...@gmail.com
Hi All,

I don't know if anyone can help me with these issues but they are very odd.

I have since decided to create a test Rule around Loans and tested this and I have used XML this time and i get the same success message with no content :(

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<response type="SUCCESS" msg="Container Loan successfully called.">
<results>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><execution-results><results/><facts/></execution-results></results></response>


Can anyone help?

Thanks

David Thomas

unread,
Dec 16, 2015, 3:21:28 AM12/16/15
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

I am at a loss to what is going on here as even the official documentation at the link below seems to be incorrect:


I have also tried the following in order to start the process:

{
 
"lookup": "ksession1",
 
"commands": {
 
"start-process": {
 
"process-id": "demo.rest.REST"
 
}
 
}
}


However this returns a error:

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token

 

 at
[Source: java.io.StringReader@58f2abba; line: 1, column: 22] (through reference chain: org.drools.core.command.runtime.BatchExecutionCommandImpl["commands"])

 at org
.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:246) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:204) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:194) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:30) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.SettableBeanProperty$FieldProperty.deserializeAndSet(SettableBeanProperty.java:579) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.kie.server.api.marshalling.json.JSONMarshaller.unmarshall(JSONMarshaller.java:128) [kie-server-api-6.3.0.Final.jar:6.3.0.Final]

Maciej Swiderski

unread,
Dec 17, 2015, 3:58:09 AM12/17/15
to David Thomas, jBPM Usage
could you please what you’re trying to do? Invoke rules or start process instance?

you can take a look at REST api docs (including endpoints and parameters) by navigating to:
http://[IP_ADDRESS]:8080/kie-server-6.3.0.Final-ee7/docs

Maciej

David Thomas

unread,
Dec 18, 2015, 3:08:51 AM12/18/15
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

I have a JBPM process that has one element in it to send a REST request out and then it terminates. 

The process has the following 2 process variables that need to be set:
  • from_currency
  • to_currency
I tried the following below in order to invoke the process:

{
 
"lookup": "ksession1",
 
"commands": {
 
"start-process": {
 
"process-id": "demo.rest.REST"
 
}
 
}
}

This resulted in the following error:

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token

 

 at
[Source: java.io.StringReader@58f2abba; line: 1, column: 22] (through reference chain: org.drools.core.command.runtime.BatchExecutionCommandImpl["commands"])

 at org
.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:246) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:204) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:194) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:30) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.SettableBeanProperty$FieldProperty.deserializeAndSet(SettableBeanProperty.java:579) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) [jackson-mapper-asl-1.9.9.jar:1.9.9]

 at org
.kie.server.api.marshalling.json.JSONMarshaller.unmarshall(JSONMarshaller.java:128) [kie-server-api-6.3.0.Final.jar:6.3.



I am just not sure how to correctly start the process and pass the correct variables in, I have read the documentation and tried a few things as detailed above however cant get it to work :(
...

Maciej Swiderski

unread,
Dec 18, 2015, 6:39:36 AM12/18/15
to David Thomas, jBPM Usage
David,

here are the steps to start process with REST api of KIE Server and pass data to it:

URL:
http://host:port/kie-server/services/rest/server/containers/{id}/processes/{pId}/instances

where:
id - is container id
pId - is process id

Http method:
POST

Headers:
Content-Type:application/json
Accept:application/json

Body/payload (a json map with process variables):

{
“from_currency” : “XXX”,
“to_currency” : “YYY"
}

Hope this helps
Maciej
> --
> You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
> To post to this group, send email to jbpm-...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-usage/58091bd9-188a-4715-bfae-490f64411259%40googlegroups.com.

David Thomas

unread,
Dec 23, 2015, 5:14:54 AM12/23/15
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

Thanks for the updated information.

I have tried the following calls and they both return 404 Not Found Errors:

http://host:port/kie-server/services/rest/server/containers/REST/processes/REST/instances
http://host:port/kie-server/services/rest/server/containers/REST/processes/REST.REST/instances
http://host:port/kie-server/services/rest/server/containers/REST/process/REST/instances
http://host:port/kie-server/services/rest/server/containers/REST/process/REST.REST/instances

I tried the alternate call with 'process' instead of 'processes' as i reviewed the link below and seen in the beta it was ''process':


Thanks

David Thomas

unread,
Dec 23, 2015, 5:22:28 AM12/23/15
to jBPM Usage, davytli...@gmail.com
Below is the error on the server itself:

10:18:59,703 WARN  [org.jboss.resteasy.core.ExceptionHandler] (default task-6) failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://10.44.90.21:8080/kie-server-6.3.0.Final-ee7/services/rest/server/containers/REST/process/REST.REST/instances

at org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:112) [resteasy-jaxrs-3.0.10.Final.jar:]

at org.jboss.resteasy.core.registry.RootNode.match(RootNode.java:43) [resteasy-jaxrs-3.0.10.Final.jar:]

at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) [resteasy-jaxrs-3.0.10.Final.jar:]

at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) [resteasy-jaxrs-3.0.10.Final.jar:]

at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) [resteasy-jaxrs-3.0.10.Final.jar:]

at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) [resteasy-jaxrs-3.0.10.Final.jar:]

Maciej Swiderski

unread,
Dec 23, 2015, 5:39:24 AM12/23/15
to David Thomas, jBPM Usage
what’s the process id of your process?

the url must be with proceses:
/services/rest/server/containers/REST/processes/YOUR_PROCESS_ID/instances

Maciej

David Thomas

unread,
Jan 5, 2016, 5:30:32 AM1/5/16
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

I have changed the call below as well as changed the process ID to see if that help:

http://10.44.90.21:8080/kie-server-6.3.0.Final-ee7/services/rest/server/containers/REST/processes/REST/instances

I have also attached a screenshot of the process properties.

Thanks
Screen Shot 2016-01-05 at 10.25.37.png

Maciej Swiderski

unread,
Jan 6, 2016, 1:23:17 AM1/6/16
to David Thomas, jBPM Usage
Is your container named REST?

For more options, visit https://groups.google.com/d/optout.
<Screen Shot 2016-01-05 at 10.25.37.png>

David Thomas

unread,
Jan 6, 2016, 3:36:31 AM1/6/16
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

Yes the container name and URL was correct so I decided to go right back to the beginning and follow your posts and managed to find the issue with the 404, it was due to the fact that the Kie Server's BPM capabilities where not enabled, so now that they are back on I am getting a different response.

This time its giving me a 'No resource method found for POST, return 405 with Allow header' as shown below in more detail:

[org.jboss.resteasy.core.ExceptionHandler] (default task-59) failed to execute: javax.ws.rs.NotAllowedException: No resource method found for POST, return 405 with Allow header

 

 at org
.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:375) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:114) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.core.registry.RootNode.match(RootNode.java:43) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.10.Final.jar:]

 at org
.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.10.Final.jar:]

 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]

 at io
.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at org
.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at org
.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:248) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:77) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:167) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.Connectors.executeRootHandler(Connectors.java:199) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at io
.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:761) [undertow-core-1.1.8.Final.jar:1.1.8.Final]

 at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_91]

 at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_91]
at java
.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_91]



I did some digging and cant see a reason why this would be happening as I have the headers below being used in the call:

Content-Type: application/json
Accept: application/json

Thanks for the continued support :)

David Thomas

unread,
Jan 11, 2016, 4:22:46 AM1/11/16
to jBPM Usage, davytli...@gmail.com
Hi Maciej,

I am still struggling to get this working as detailed above.

Any help would be much appreciated.

Thanks


On Wednesday, 6 January 2016 06:23:17 UTC, Maciej Swiderski wrote:

masoud jabbarvand

unread,
Feb 13, 2016, 2:09:08 AM2/13/16
to jBPM Usage, davytli...@gmail.com
Hi david and maciej
I really interested in this topic and also could run my first REST task in KIE. but i cant run this task with POST method,
could you explain how to use that task?

regards...

در سه‌شنبه 8 دسامبر 2015، ساعت 17:42:07 (UTC+3:30)، Maciej Swiderski نوشته:
...
Reply all
Reply to author
Forward
0 new messages