CMDBuild Forum

How to send data via REST API while changes happened on particular Attribute in a Class.

I would like to send json data via REST API from CMDBuild to external system while changes happened on particular Attribute in a Class. Is there any way to achieve this from CMDBuild server.

CMDBuild Version 2.4

Thanks.

Hello,
 
I think this is not the functionality of CMDBuild web service.
 
You can achieve that by:
 
1. Update data from CMDBuild workflow. CMDBuild workflow allow you to run java program to update other system
 
2. Using PostgreSQL trigger. You can use PostgreSQL trigger to notify external system when changes happen. Please read about PostgreSQL trigger and notify/listen.
 
Regards,
Herru
 
Previously Kamal wrote:

I would like to send json data via REST API from CMDBuild to external system while changes happened on particular Attribute in a Class. Is there any way to achieve this from CMDBuild server.

CMDBuild Version 2.4

Thanks.

 

Thanks for your reply, let me try with the first approach.
 
-kamal.
 
 
Previously Herru Windiarto wrote:
Hello,
 
I think this is not the functionality of CMDBuild web service.
 
You can achieve that by:
 
1. Update data from CMDBuild workflow. CMDBuild workflow allow you to run java program to update other system
 
2. Using PostgreSQL trigger. You can use PostgreSQL trigger to notify external system when changes happen. Please read about PostgreSQL trigger and notify/listen.
 
Regards,
Herru
 
Previously Kamal wrote:

I would like to send json data via REST API from CMDBuild to external system while changes happened on particular Attribute in a Class. Is there any way to achieve this from CMDBuild server.

CMDBuild Version 2.4

Thanks.

 

 

Hello,
Is there any document on how to create workflow. Actually I have tried to create Process, but its throwing error while creating. PFB error details.
 
 
ERROR:
Call: services/json/workflow/xpdlversions
------------------------------------------
Error: org.cmdbuild.workflow.CMWorkflowException: (404)Not Found
at org.cmdbuild.workflow.service.TransactedSharkService$TransactedExecutor.initAndConnect(TransactedSharkService.java:49)
at org.cmdbuild.workflow.service.TransactedSharkService$TransactedExecutor.execute(TransactedSharkService.java:23)
at org.cmdbuild.workflow.service.TransactedSharkService.downloadAllPackages(TransactedSharkService.java:132)
at org.cmdbuild.workflow.xpdl.CachedProcessDefinitionStore$LazyClassNameToPackageInfoMap.fetchProcessDefinitions(CachedProcessDefinitionStore.java:119)
at org.cmdbuild.workflow.xpdl.CachedProcessDefinitionStore$LazyClassNameToPackageInfoMap.checkLoaded(CachedProcessDefinitionStore.java:111)
at org.cmdbuild.workflow.xpdl.CachedProcessDefinitionStore$LazyClassNameToPackageInfoMap.getPackageInfoByClass(CachedProcessDefinitionStore.java:98)
at org.cmdbuild.workflow.xpdl.CachedProcessDefinitionStore.getPackageId(CachedProcessDefinitionStore.java:209)
at org.cmdbuild.workflow.xpdl.CachedProcessDefinitionStore.getPackageVersions(CachedProcessDefinitionStore.java:204)
at org.cmdbuild.workflow.xpdl.AbstractProcessDefinitionManager.getVersions(AbstractProcessDefinitionManager.java:37)
at org.cmdbuild.workflow.ForwardingProcessDefinitionManager.getVersions(ForwardingProcessDefinitionManager.java:25)
at org.cmdbuild.workflow.ProcessClassImpl.getDefinitionVersions(ProcessClassImpl.java:167)
at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.getProcessDefinitionVersions(DefaultWorkflowLogic.java:613)
at org.cmdbuild.servlets.json.Workflow.xpdlVersions(Workflow.java:250)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:104)
at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:64)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:188)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:48)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:52)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.cmdbuild.filters.LocalizationFilter.doFilter(LocalizationFilter.java:127)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: (404)Not Found
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at org.enhydra.shark.ejb.client.ws.WAPIEJBEndpointPortSoapBindingStub.connect(Unknown Source)
at org.cmdbuild.workflow.service.TransactedSharkService$TransactedExecutor.initAndConnect(TransactedSharkService.java:46)
... 63 more
 
Do I need to do any other configuration for this?
 
Thanks,
-Kamal.
 
 
Previously Kamal wrote:
Thanks for your reply, let me try with the first approach.
 
-kamal.
 
 
Previously Herru Windiarto wrote:
Hello,
 
I think this is not the functionality of CMDBuild web service.
 
You can achieve that by:
 
1. Update data from CMDBuild workflow. CMDBuild workflow allow you to run java program to update other system
 
2. Using PostgreSQL trigger. You can use PostgreSQL trigger to notify external system when changes happen. Please read about PostgreSQL trigger and notify/listen.
 
Regards,
Herru
 
Previously Kamal wrote:

I would like to send json data via REST API from CMDBuild to external system while changes happened on particular Attribute in a Class. Is there any way to achieve this from CMDBuild server.

CMDBuild Version 2.4

Thanks.

 

 

 

Certainly, the CMDBuild Workflow Manual:
http://www.cmdbuild.org/en/documentazione/manuali/workflow-manual
CMDBuild Team

 

 

 

 

Hello,
I have created custom java file and packed as jar; and I have placed this jar in TOMCAT_HOME/lib folder for CMDBuild to pick it up. Below is the simple java file which will be invoked from CMDBuild's workflow.
 
===
package com.is.test;

public class CallToRestAPI {

public void makeRESTAIPCall(String json) {
System.out.print("I am [makeRESTAIPCall] getting called here..");
System.out.println("json: "+json);
}
}
===
 
In my TWE, I have added Task Script(Script Type : text/java) and placed the below code to make a call to above mentioned java.
====
import com.is.test.CallToRestAPI;
 
String input = "{\"Code\":\"1222000\",  \"Description\":\"some messages to convey\" }";
CallToRestAPI callToRestAPIObject = new CallToRestAPI();
callToRestAPIObject.makeRESTAIPCall(input);
===
 
I have scheduled this task for every two minutes, but I am getting the below error:
 
Error:
INFO  2016-09-13 08:55:00 [cmdbuild] starting job '258'
INFO  2016-09-13 08:55:00 [workflow] getting process class with name 'TestPs1'
INFO  2016-09-13 08:55:00 [workflow] starting process for class 'TestPs1' with variables '{}'
ERROR 2016-09-13 08:55:00 [cmdbuild] error on job '258'
java.lang.NullPointerException
        at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.startProcess(DefaultWorkflowLogic.java:398)
        at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.startProcess(DefaultWorkflowLogic.java:370)
        at org.cmdbuild.logic.workflow.StartProcess.execute(StartProcess.java:146)
        at org.cmdbuild.logic.taskmanager.commons.SchedulerCommandWrapper.execute(SchedulerCommandWrapper.java:20)
        at org.cmdbuild.scheduler.command.BuildableCommandBasedJob.execute(BuildableCommandBasedJob.java:62)
        at org.cmdbuild.scheduler.ForwardingJob.execute(ForwardingJob.java:23)
        at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$JobWithCallback.execute(DefaultSchedulerFacade.java:64)
        at org.cmdbuild.scheduler.ForwardingJob.execute(ForwardingJob.java:23)
        at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$JobWithCallback.execute(DefaultSchedulerFacade.java:64)
        at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$SuppressedExceptionJob.execute(DefaultSchedulerFacade.java:37)
        at org.cmdbuild.scheduler.quartz.QuartzJob.execute(QuartzJob.java:19)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
WARN  2016-09-13 08:55:00 [cmdbuild] error executing job
java.lang.NullPointerException
        at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.startProcess(DefaultWorkflowLogic.java:398)
        at org.cmdbuild.logic.workflow.DefaultWorkflowLogic.startProcess(DefaultWorkflowLogic.java:370)
        at org.cmdbuild.logic.workflow.StartProcess.execute(StartProcess.java:146)
        at org.cmdbuild.logic.taskmanager.commons.SchedulerCommandWrapper.execute(SchedulerCommandWrapper.java:20)
        at org.cmdbuild.scheduler.command.BuildableCommandBasedJob.execute(BuildableCommandBasedJob.java:62)
        at org.cmdbuild.scheduler.ForwardingJob.execute(ForwardingJob.java:23)
        at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$JobWithCallback.execute(DefaultSchedulerFacade.java:64)
        at org.cmdbuild.scheduler.ForwardingJob.execute(ForwardingJob.java:23)
        at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$JobWithCallback.execute(DefaultSchedulerFacade.java:64)
        at org.cmdbuild.logic.taskmanager.scheduler.DefaultSchedulerFacade$SuppressedExceptionJob.execute(DefaultSchedulerFacade.java:37)
        at org.cmdbuild.scheduler.quartz.QuartzJob.execute(QuartzJob.java:19)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
 
Could you please help me on how to resolve this? Is there any other approach to make a call to REST API?
 
Thanks,
-Kamal.
 
 
Previously Tecnoteca wrote:
Certainly, the CMDBuild Workflow Manual:
http://www.cmdbuild.org/en/documentazione/manuali/workflow-manual
CMDBuild Team