CMDBuild Forum

Problemi funzionamento del connettore

Sto cercando di utilizzare il connettore ver.4.1 al fine di importare in cmdbuild un database Mysql contenente asset aziendali.

Ho rispettato le indicazioni riportate nel manuale (External Connectors). Ho definito dapprima la vista master (non ho viste slave) ed ho previsto come primo campo il campo ID numerico e come secondo campo il codice identificativo univoco dell’asset. Segue il codice:

CREATE OR REPLACE VIEW CMDBuild_catalog
AS select TABLE_NAME from INFORMATION_SCHEMA.VIEWS
where table_name like '%CMDBuild_%' and table_name <> 'CMDBuild_catalog';

CREATE OR REPLACE VIEW CMDBuild_apparato
(Id, Code,Descrizione, Categoria, Fornitore, Modello, Proprietario, SerialNo, Software, InstallationDate, WarrantyType, WarrantyExpiredate, ResponsabileCI,
IpAddress1,IpAddress2,IpAddress3,IpAddress4, Mac1, Mac2, NomeSistema, UbicazioneSito, DescrizioneHW)
as select a.ID, a.ID, a.Code, c.ordine, f.id, a.iddescmodello, Idcliente, serialno, idsoftware, InstallationDate, warrantytype, warrantyexpiredate, responsabileCI, ipaddress1, ipaddress2, ipaddress3, ipaddress4, mac1, mac2, nomesistema, idsito, descrizionehW from apparatiabsc as a
join apparaticategorie as c on a.categoria = c.descrizione join fornitori as f on a.fornitore = f.nomefornitore where f.categoria = "APPARATI" and a.categoria <> "SOFTWARE";

Quindi, ho importato il file ImportAsset.xpdl e ho definito l'attributo "accept" nell’attivita’ ImportAsset, come da file config.xml:

<!-- Workflow settings: active=yes/no -->
<workflow active="yes" preprocess-active="true">
<workflow-applications>
<wf-application class="cmdb.remoteapi.sharkexecutor.SelectSingleAttributeExecutor"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.CreateRelationExecutor"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.CreateRelationWProcessExecutor"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.CMDBRemoteExec"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.GetProcessIdExecutor"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.ModifySingleStringAttributeExecutor"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.CreateCardExecutor"/>
<wf-application class="cmdb.remoteapi.sharkexecutor.SelectLookupDescriptionExecutor"/>
</workflow-applications>
<!-- workflow processes associations dbtablename=>package and process name -->
<processes>
<process cmdbname="EarlyWarning" initactivity="APERTURA_RICHIESTA" initperformer="Esperto" name="Process_earlywarning" pkgid="Package_earlywarning" stoppable="false" xpdl="EarlyWarning.xpdl"/> <process cmdbname="PatchMng" initactivity="APERTURA" initperformer="Responsabile_Primario_CI" name="Process_patch2" pkgid="Package_patch2" stoppable="false" xpdl="PatchMng.xpdl"/>
<process cmdbname="ImportAsset" initactivity="cardchanged" initperformer="admin" name="ImportAsset_process" pkgid="ImportAsset" stoppable="false" xpdl="ImportAsset.xpdl"/> </processes></workflow>

Ho quindi lanciato la seguente riga comando:

Java –jar Connector4.1 path_cmdbuild/connectoriInventory/xmlImportAsset/ ImportAsset


L'esecuzione del connettore ha prodotto il seguente file di log degli Errori :
System failure:
java.lang.NullPointerException
at cmdbuild.servlets.remoteapi.action.workflow.WorkflowStartProcess.startProcess(WorkflowStartProcess.java:165)
at mdbuild.servlets.remoteapi.action.workflow.WorkflowStartProcess.doShark1(WorkflowStartProcess.java:73)
at cmdbuild.servlets.remoteapi.action.workflow.WorkflowStartProcess._execute(WorkflowStartProcess.java:53)
at cmdbuild.servlets.remoteapi.action.workflow.WorkflowStartProcess._execute(WorkflowStartProcess.java:1)
at cmdbuild.servlets.remoteapi.action.workflow.WorkflowAction.execute(WorkflowAction.java:45)
at cmdbuild.servlets.remoteapi.CMDBAPIAction.exec(CMDBAPIAction.java:71)
at cmdbuild.servlets.CMDBRemoteAPI.doPost(CMDBRemoteAPI.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at cmdbuild.filter.CMDBFilterChain.doFilter(CMDBFilterChain.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(_)


L'Output prodotto a video dall'esecuzione del Connettore è il seguente:

<<< Starting ExternalConnector (v. 4.2) >>>
Program started at 0
Getting input parameters
Loading configuration
Parsing XML (..\..\connectorInventory\xmlImportAsset\\configuration.xml)
Parsing XML (..\..\connectorInventory\xmlImportAsset\\configuration.xml)... done
Loading configuration... done
Reading the transform file.
Getting key class information from the transform file.
Getting connection from the inventory...
Reading schema from inventory.
Query was: select * from cmdbuild_apparato limit 1
Reading CMDBuild's schema file.
Parsing XML (..\..\connectorInventory\xmlImportAsset\\cmdbuild-schema.xml)
Parsing XML (..\..\connectorInventory\xmlImportAsset\\cmdbuild-schema.xml)... done
Translating CMDBuild's schema file.
Getting the number of objects.
select count(*) from CMDBuild_apparato
Number of elements to check: 16
Getting the codes of objects.
Query was: select * from CMDBuild_apparato where Code > '0' order by Code asc limit 1000
Query was: select * from CMDBuild_apparato where Code > '0' order by Code asc limit 1000
Started to compare data between inventory and cmdbuild
*** Begin operation for key: 1000 ***
[key: Code - 1000] getting data from inventory
[key: Code - 1000]] translating inventory's data
[key: Code - 1000] Retrieving information from CMDBuild
[key: Code - 1000] Retrieving data from CMDBuild
[key: Code - 1000] Setting Connection Parameters
[key: Code - 1000] Checking if is new object...
[key: Code - 1000] ...no, object was precedenty inserted.
System has taken 3 for retrieving elements from CMDBuild
[key: Code - 1000] Traslating CMDBuild's data
[key: Code - 1000] Comparing data between inventory and CMDBuild
[Apparato Code 1000]Detected modifies on object:Apparato with Id: 0
System has taken 0 for comparing elements
[Apparato Code 1000]calling WorkflowStartProcess...
[Apparato Code 1000]The script we want to execute is:
facade = new cmdb.remoteapi.wrapper.CMDBFacade();
done = facade.updateCard("Apparato",328,update_config1);

System has taken: 9 sec
*** Begin operation for key: 1001 ***
[key: Code - 1001] getting data from inventory
[key: Code - 1001]] translating inventory's data
[key: Code - 1001] Retrieving information from CMDBuild
[key: Code - 1001] Retrieving data from CMDBuild
[key: Code - 1001] Setting Connection Parameters
[key: Code - 1001] Checking if is new object...
[key: Code - 1001] ...no, object was precedenty inserted.
System has taken 3 for retrieving elements from CMDBuild
[key: Code - 1001] Traslating CMDBuild's data
[key: Code - 1001] Comparing data between inventory and CMDBuild
[Apparato Code 1001]Detected modifies on object:Apparato with Id: 0
System has taken 0 for comparing elements
[Apparato Code 1001]calling WorkflowStartProcess...
[Apparato Code 1001]The script we want to execute is:
facade = new cmdb.remoteapi.wrapper.CMDBFacade();
done = facade.updateCard("Apparato",329,update_config1);


Potreste darmi un suggerimento per la soluzione di questo problema con il connettore.
Grazie
Domenico

Problema risolto. Il malfunzionamento era dovuto ad una erronea definizione dell'attributo Accept.