Select Your Language

Infrastructure and Management

Cloud Computing

Storage

Runtimes

Integration and Automation

  • Comments
  • Full documentation of API Rest in BPM Suite 6.0.3

    Posted on

    Hi,

    We are evaluating the product, and in particular the API Rest calls.

    We have done many test in mortgages example, and we have many questions about the API:
    1) We need to know the operations and the xml model to make all requests (input and output XML or JSON).
    2) It´s possible to work directly with JSON in all requests to REST API?
    3) In mortgages example we have the below code (KIES API) to create process instance/assign appraisal task, and complete task:

            RemoteRestRuntimeEngineFactory remoteRestRuntimeEngineFactory =
                    RemoteRestRuntimeEngineFactory.newBuilder()
                    .addDeploymentId("com.redhat.bpms.examples:mortgage:1")
                    .addUrl(new URL("http://localhost:8080/business-central"))
                    .addUserName("hank")
                    .addPassword("12345678")
                    .addTimeout(10000)
                    .build();
            RemoteRuntimeEngine engine = remoteRestRuntimeEngineFactory.newRuntimeEngine();
                    KieSession ksession = engine.getKieSession();
    
            ProcessInstance processInstance = ksession.startProcess("com.redhat.bpms.examples.mortgage.MortgageApplication", getProcessArgs( "Carlos", "Direccion", 333224449, 100000, 500000, 100000, 30 ));
            int task = 1;
            taskService.claim(task, "hank");
            taskService.start(task, "hank");
            Map app = taskService.getTaskContent(task);
            Application application = null;
            for (String key: app.keySet()){
                if (app.get(key) instanceof Application){
                    application = (Application)app.get(key);
                    System.out.println("Entrada: " + ToStringBuilder.reflectionToString(application));
                    application.setAppraisal(new Appraisal(application.getProperty(), new Date(), 20));     
                }
            }
            Map appra = new HashMap();
            appra.put( "application", application );
            System.out.println("Antes de envio: " + appra);
            taskService.complete(task, "hank", app);
    ....
        private static Map getProcessArgs(String name, String address, int ssn, int income, int price, int downPayment, int amortization)
        {
            Map processVariables = new HashMap();
            Applicant applicant = new Applicant( name, ssn, income, null );
            Property property = new Property( address, price );
            Application application = new Application( applicant, property, null, downPayment, amortization, null, null, null );
            processVariables.put( "application", application );
            return processVariables;
        }
    

    And the proccess returns with the following error:

    Exception in thread "main" org.kie.services.client.api.command.exception.RemoteApiException: NullPointerException thrown with message 'null':
    org.jbpm.workflow.instance.WorkflowRuntimeException: [com.redhat.bpms.examples.mortgage.MortgageApplication:2 - Appraisal:19] -- null
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.executeAction(NodeInstanceImpl.java:188)
        at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerEvent(ExtendedNodeInstanceImpl.java:56)
        at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:43)
        at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:290)
        at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:269)
        at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:279)
        at org.jbpm.workflow.instance.node.HumanTaskNodeInstance.triggerCompleted(HumanTaskNodeInstance.java:93)
        at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:341)
        at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:317)
        at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:404)
        at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:134)
        at org.drools.core.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:74)
        at org.drools.core.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:35)
        at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
        at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
        at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:533)
        at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:377)
        at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession$1.completeWorkItem(CommandBasedStatefulKnowledgeSession.java:147)
        at org.jbpm.services.task.wih.ExternalTaskEventListener.processTaskState(ExternalTaskEventListener.java:75)
        at org.jbpm.services.task.wih.ExternalTaskEventListener.afterTaskCompletedEvent(ExternalTaskEventListener.java:119)
        at org.jbpm.services.task.events.TaskEventSupport.fireAfterTaskCompleted(TaskEventSupport.java:189)
        at org.jbpm.services.task.internals.lifecycle.MVELLifeCycleManager.taskOperation(MVELLifeCycleManager.java:340)
        at org.jbpm.services.task.identity.UserGroupLifeCycleManagerDecorator.taskOperation(UserGroupLifeCycleManagerDecorator.java:46)
        at org.jbpm.services.task.impl.TaskInstanceServiceImpl.complete(TaskInstanceServiceImpl.java:142)
        at org.jbpm.services.task.commands.CompleteTaskCommand.execute(CompleteTaskCommand.java:70)
        at org.jbpm.services.task.commands.CompleteTaskCommand.execute(CompleteTaskCommand.java:37)
        at org.jbpm.services.task.commands.CompositeCommand.execute(CompositeCommand.java:38)
        at org.jbpm.services.task.commands.TaskCommandExecutorImpl$SelfExecutionCommandService.execute(TaskCommandExecutorImpl.java:65)
        at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
        at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:54)
        at org.jbpm.services.task.commands.TaskCommandExecutorImpl.execute(TaskCommandExecutorImpl.java:40)
        at org.jbpm.services.task.impl.command.CommandBasedTaskService.execute(CommandBasedTaskService.java:128)
        at org.kie.remote.services.cdi.ProcessRequestBean.doTaskOperation(ProcessRequestBean.java:249)
        at org.kie.remote.services.cdi.ProcessRequestBean.processCommand(ProcessRequestBean.java:121)
        at org.kie.remote.services.cdi.ProcessRequestBean$Proxy$_$$_WeldClientProxy.processCommand(ProcessRequestBean$Proxy$_$$_WeldClientProxy.java)
        at org.kie.remote.services.rest.ResourceBase.restProcessJaxbCommandsRequest(ResourceBase.java:69)
        at org.kie.remote.services.rest.RuntimeResource.execute(RuntimeResource.java:95)
        at org.kie.remote.services.rest.RuntimeResource$Proxy$_$$_WeldClientProxy.execute(RuntimeResource$Proxy$_$$_WeldClientProxy.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)
        at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)
        at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
        at org.jboss.solder.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
        at org.jboss.solder.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:74)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
        at org.kie.remote.services.rest.jaxb.DynamicJaxbContextFilter.doFilter(DynamicJaxbContextFilter.java:29)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
        at org.jbpm.designer.web.filter.impl.PluggableFilter.doFilter(PluggableFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
        at org.uberfire.security.server.UberFireSecurityFilter.doFilter(UberFireSecurityFilter.java:266)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
        at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:408)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.NullPointerException
        at com.redhat.bpms.examples.mortgage.Process_com$u46$redhat$u46$bpms$u46$examples$u46$mortgage$u46$MortgageApplication1671723260.action24(Process_com$u46$redhat$u46$bpms$u46$examples$u46$mortgage$u46$MortgageApplication1671723260.java:161)
        at com.redhat.bpms.examples.mortgage.Process_com$u46$redhat$u46$bpms$u46$examples$u46$mortgage$u46$MortgageApplication1671723260Action24Invoker.execute(Process_com$u46$redhat$u46$bpms$u46$examples$u46$mortgage$u46$MortgageApplication1671723260Action24Invoker.java:15)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.executeAction(NodeInstanceImpl.java:182)
        ... 84 more
    
        at org.kie.services.client.api.command.AbstractRemoteCommandObject.executeRestCommand(AbstractRemoteCommandObject.java:442)
        at org.kie.services.client.api.command.AbstractRemoteCommandObject.execute(AbstractRemoteCommandObject.java:124)
        at org.jbpm.services.task.impl.command.CommandBasedTaskService.complete(CommandBasedTaskService.java:144)
        at com.redhat.demo.RestClient.BPMRestClient.main(BPMRestClient.java:117)
    

    We don´t know if the code is correct, because the error statcktrace is not clearly. We also made the same request via http requests with the same error. In BPM Appraisal form, wen don´t
    have any problems to asign/complete the task.

    Please, May you respond this questions? We need to evaluate the complete process from Rest API calls.

    Thanks,

    Carlos León
    BBVA

    by

    points

    Responses

    Red Hat LinkedIn YouTube Facebook X, formerly Twitter

    Quick Links

    Help

    Site Info

    Related Sites

    © 2026 Red Hat