apache / incubator-kie-kogito-runtimes

Kogito Runtimes - Kogito is a cloud-native business automation technology for building cloud-ready business applications.
http://kogito.kie.org
Apache License 2.0
491 stars 192 forks source link

open api spec reference in SW function throws URISyntaxException #3569

Open deepakkapoor23 opened 4 days ago

deepakkapoor23 commented 4 days ago

Describe the bug

With gradle build, it thrwos URISyntaxException With Maven build, it passes the build but at runtime it throws KogitoWorkItemHandlerNotFoundException

e.g. "functions": [ { "name": "countryInfoFunction", "operation": "openapi/restcountries.json#getByName" },

when restcountries.json is present at path src/main/resources/openapi

Expected behavior

  1. kogito should be able to resolve the file path regardless of OS (linux or windows)
  2. Behavior should be consistent on all build tools
  3. Behavior should be consistent on all operating systems

Actual behavior

Inconsistent behavior and unable to find and execute api with either build tool

How to Reproduce?

No response

Output of uname -a or ver

No response

Output of java -version

17

GraalVM version (if different from Java)

No response

Kogito version or git rev (or at least Quarkus version if you are using Kogito via Quarkus platform BOM)

999-SNAPSHOT

Build tool (ie. output of mvnw --version or gradlew --version)

gradle 8.6

Additional information

No response

deepakkapoor23 commented 3 days ago

Tried this example from main branch as it is with Maven build and it throws KogitoWorkItemHandlerNotFoundException as in my project. Did not try gradle build for it.

https://github.com/apache/incubator-kie-kogito-examples/tree/main/serverless-workflow-examples/serverless-workflow-service-calls-quarkus

complete stack trace:

2024-07-02 22:51:29,282 ERROR [org.jbp.wor.ins.imp.WorkflowProcessInstanceImpl] (executor-thread-1) Unexpected error while executing node countryInfoFunction in process instance 29499d79-453d-44ae-9993-c6ea91b888be: org.jbpm.workflow.instance.WorkflowRuntimeException: [jsonservicecall:29499d79-453d-44ae-9993-c6ea91b888be - countryInfoFunction:[uuid=7]] -- Could not find work item handler for restcountries_getByName at org.jbpm.workflow.instance.node.WorkItemNodeInstance.getExceptionScopeInstance(WorkItemNodeInstance.java:211) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.handleException(WorkItemNodeInstance.java:205) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:195) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:169) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:246) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:458) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:443) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:413) at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:76) at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:55) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:246) at org.jbpm.workflow.instance.node.CompositeNodeInstance.internalTrigger(CompositeNodeInstance.java:146) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:246) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:458) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:443) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:413) at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:76) at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:55) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:246) at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:39) at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:276) at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:518) at org.jbpm.process.instance.KogitoProcessRuntimeImpl.startProcessInstance(KogitoProcessRuntimeImpl.java:167) at org.jbpm.process.instance.KogitoProcessRuntimeImpl.startProcessInstance(KogitoProcessRuntimeImpl.java:76) at org.kie.kogito.process.impl.AbstractProcessInstance.start(AbstractProcessInstance.java:288) at org.kie.kogito.process.impl.AbstractProcessInstance.start(AbstractProcessInstance.java:260) at org.kie.kogito.process.impl.ProcessServiceImpl.lambda$createProcessInstance$0(ProcessServiceImpl.java:75) at org.kie.kogito.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:40) at org.kie.kogito.process.impl.ProcessServiceImpl.createProcessInstance(ProcessServiceImpl.java:70) at org.kie.kogito.serverless.JsonservicecallResource.createResource_jsonservicecall(JsonservicecallResource.java:82) at org.kie.kogito.serverless.JsonservicecallResource_ClientProxy.createResource_jsonservicecall(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:154) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:118) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:560) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:452) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:413) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321) r$14.runWith(VertxCoreRecorder.java:582) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.kie.kogito.process.workitems.KogitoWorkItemHandlerNotFoundException: Could not find work item handler for restcountries_getByName at org.jbpm.process.instance.LightWorkItemManager.internalExecuteWorkItem(LightWorkItemManager.java:84) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.lambda$internalTrigger$0(WorkItemNodeInstance.java:170) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:183) ... 58 more

fjtirado commented 1 day ago

There are actually two issues, both specific to windows One, invalid ":" character when creating URI is fixed by https://github.com/apache/incubator-kie-kogito-runtimes/pull/3572 (which essentially refactor the sonata resource loading mechanism to rely on string and not in URI class) The other issue can be hacked on Quarkiverse OpenAPI extension, see https://github.com/quarkiverse/quarkus-openapi-generator/issues/742