CMDBuild Forum

Problema sincronizzazione connettore esterno

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

 

 

Grazie per il prezioso e tempestivo aiuto!

 

Saluti

 

Carlo

 

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

 

Grazie per la segnalazione,

la correzione verrà introdotta nel prossimo rilascio.

 

Lisa