Azioni sul documento
Problema sincronizzazione connettore esterno
Vai al livello superiore
Buongiorno,
ho configurato CMDBuild 1.2.1 e Shark per l'utilizzo dei workflow. Vorrei utilizzare i connettori esterni per l'aggiornamento e l'inserimento automatico di schede a partire da un DB PostgreSQL.
Premetto che il DB usato da CMDBuild si chiama CMDB la cui tabella da aggiornare si chiama Responsabili_RTI, il DB usato come fonte esterna di dati si chiama Staging e la vista che ho creato su quest'ultimo si chiama CMDBuild_responsabili.
Ho settato i file XML come segue:
cmdbuild-schema.xml:
<CMDBUILD>
<Responsabili_RTI>
<Code/>
<Description/>
<E_mail/>
</Responsabili_RTI>
</CMDBUILD>
configuration.xml:
<configuration>
<cmdbuild>
<ServerAddress>127.0.0.1</ServerAddress>
<ServerContext>cmdbuild</ServerContext>
<ServerPort>8080</ServerPort>
<Username>admin</Username>
<Password>admin</Password>
</cmdbuild>
<inventory>
<DbType>postgres</DbType>
<DbAddress>127.0.0.1</DbAddress>
<DbPort>5432</DbPort>
<DbName>Staging</DbName>
<DbUser>postgres</DbUser>
<DbPassword>admin</DbPassword>
</inventory>
</configuration>
transform.xsl:
...righe lasciate così come sono nel file di esempio...
<xsl:template match="/inventory/CMDBuild_responsabili">
<Responsabili_RTI key="Code">
<Code>
<xsl:value-of select="/inventory/CMDBuild_responsabili/Nome_completo"/>
</Code>
<Description>
<xsl:value-of select="/inventory/CMDBuild_responsabili/Nome_completo"/>
</Description>
<E_mail>
<xsl:value-of select="/inventory/CMDBuild_responsabili/Mail"/>
</E_mail>>
</Responsabili_RTI>
</xsl:template>
<xsl:template match="/CMDBUILD/Responsabili_RTI">
<Responsabili_RTI key="Code">
<xsl:attribute name="objid">
<xsl:value-of select="./@objid"/>
</xsl:attribute>
<Code>
<xsl:value-of select="./Code"/>
</Code>
<Description>
<xsl:value-of select="./Description"/>
</Description>
<E_mail>
<xsl:value-of select="./E_mail"/>
</E_mail>
</Responsabili_RTI>
</xsl:template>
e lanciato la procedura di sincronizzazione descritta nel manuale: java -jar ExternalConnector1.2.1.jar ecc..
L'output su terminale ha esito positivo, senza eccezioni, tuttavia nel file di log ExternalConnector.log ottengo la seguente eccezione SQL:
>>> Program Started - version (ExternalConnector 1.2 - 15/02/2010)<<<
Parsing XML file [./\conf\configuration.xml]
Reading the transform file.
SQLException while getting the schema of the inventory ->ERROR: relation "CMDBuild_catalog" does not exist
SQL Exception
ERROR: relation "CMDBuild_catalog" does not exist
Dove è che sbaglio?
Grazie per il supporto!
Carlo
Previously Carlo wrote:
SQL Exception
ERROR: relation "CMDBuild_catalog" does not exist
L'errore è quello indicato, è necessario creare una vista CMDBuild_catalog che elenchi le viste presenti da cui prelevare i dati.Nello specifico, per un database postgres, dovrebbe essere:
CREATE OR REPLACE VIEW "CMDBuild_catalog"
AS select relname from pg_class
where relname like '%CMDBuild_%' and relname <> 'CMDBuild_catalog';
Saluti,
Lisa
Vorrei porre alla vostra attenzione che c'è un bug nel codice del connettore esterno versione 1.2 - 15/02/2010.
nel file org.cmdbuild.externalconnector.inventory.data.GetDataFromInventory.java alla riga 365 la stringa orderBy viene costruita in maniera tale che su DB Postgres genera eccezione in quanto la columnName in questo caso andrebbe posta fra doppi apici.
Spero di essere stato utile.
Saluti
Carlo



