CMDBuild Forum

External Connector mail

Salve,

viste le differenze tra la 0.9 e la 1.1 nella gestione degli external connector volevo porvi la seguente questione,
come si deve configurare l'external connector per gestire l'attivazione di un workflow via mail?

Dalla documentazione allegata la software degli external connector non sono riuscito a ben comprendere come completare la
configurazione vi riepilogo i passi svolti secondo il vostro Readme.txt:

1. scompattare l'archivio connectors.zip

non essendoci indicazioni sul dove l'ho scompattato nella directory webapps/cmdbuild creando un folder connectors

2. creare dentro l'inventory (ad esempio dentro OCS) le viste
necessarie per recuperare i dati estratti... un esempio di viste per
OCSInventory può essere quello inserite nel rilascio (viste.sql)


non essendo mio obiettivo utilizzare OCS ho saltato questo passo

3. andare nella cartella "xml" e modificare i seguenti file:
   - configuration.xml - contiene le informazioni di configurazioni di CMDBuild e di OCSInventory
     (o di qualsiasi altro tipo di inventory si voglia utilizzare)
   - cmdbuild-schema.xml - deve contenere lo schema di CMDBuild delle classi interessate all'aggiornamento
   - transform.xsl - contiene il mapping fra CMDBuild e OCS


 ovviamente dovendo gestire la configurazione per la mail ho operato producendo i file:
 (configuration.xml e transform.xls li ho recuperati modificandoli dalla versione 0.90)
 
 Configuration.xml
 
 <?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <cmdbuild>
    <ServerAddress>localhost</ServerAddress>
    <Context>cmdbuild</Context>
    <Port>8080</Port>
  </cmdbuild>
  <servermail>
    <ProtocolType>POP3</ProtocolType>
    <ServerAddress>pop3.dominio.it</ServerAddress>
    <ServerPort>110</ServerPort>
    <User>cmdb@dominio.it</User>
    <Password>password</Password>
  </servermail>
</configuration>

Transform.xsl

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>
  <xsl:template match="/servermail">
    <Activity>
      <ActivityDescription>
        <xsl:value-of select="./content"/>
      </ActivityDescription>
      <data>
        <xsl:value-of select="./data"/>
      </data>
      <Utente>
        <xsl:value-of select="./sender"/>
      </Utente>
      <ticket>
        <xsl:value-of select="./subject"/>
      </ticket>
    </Activity>
  </xsl:template>
</xsl:stylesheet>

nel quale:
    ActivityDescription
    data
    Utente
    ticket
   
Sono gli attributi della classe Esempio definita in Attività costruita nel CMDB che devono essere associati ai campi della mail.
 
Questa classe è associata al workflow che chiamo esempio e che svolge le attività rappresentate nello schema seguente:


                          +--------- -+        +--------+
                          |sendmail |         |Close   |-- Stop
                          +-----------+        +--------+
                                 /      |           /
                +-------+  /    +------+  / 
 Start -----|open tk|/     | work |/
                +-------+      +-------+
          
Ovviamente con il connector vorrei aprire un ticket ovvero far si che il task Open tk acquisisse i dati dalla mail secondo il file di transform costruito

in merito al file cmdbuild-schema.xml ho incontrato il primo problema.
dalle vostre indicazioni il file deve contenere:

cmdbuild-schema.xml deve contenere:
   - l'intestazione del file xml
   - il tag CMDBUILD che conterrà tutti i tag relativi a tutte le classi
   - un tag per ogni classe di cmdbuild (nell'esempio Computer e SchedaRete)
     contenente il nome (non la descrizione) della classe
   - per ogni classe devono esserci almeno (se non tutti) i nomi degli attributi
     interessati dall'aggiornamento (anche qui, il nome non la descrizione)
   - all'interno del tag col nome della classe deve essere presente il nome dei domini attivi


Il template fornito nel software è il seguente:

<?xml version="1.0"?>
<CMDBUILD>
    <Client>
          <Code>       
          </Code>
          <Description>
          </Description>
          <GruppoLavoro>
          </GruppoLavoro>
          <SO>
          </SO>
          <RAM>
          </RAM>
    </Client>
</CMDBUILD>

che fa chiaramente riferimento ad OCS  nel mio caso come cambierebbe il contenuto?

Se ho interpretato correttamente le indicazioni lo schema del file sarebbe

<?xml version="1.0"?>
<CMDBUILD>
    <Esempio>
    ????
    </Esempio>
</CMDBUILD>

dove Esempio è il nome del workflow?

cosa devo utilizzare al posto dei ???? le tag seguenti?

<Code>       
</Code>
<Description>
</Description>
<ActivityDescription>
</ActivityDescription>
<data>
</data>
<Utente>
</Utente>
<ticket>
</ticket>

e basta, per cui il file risulterebbe essere:

<?xml version="1.0"?>
<CMDBUILD>
    <Esempio>
        <Code>       
        </Code>
        <Description>
        </Description>
        <ActivityDescription>
        </ActivityDescription>
        <data>
        </data>
        <Utente>
        </Utente>
        <ticket>
        </ticket>
    </Esempio>
</CMDBUILD>


4. consiglierei di inserire questi file in questa gerarchia precisa di
directory che è come li utilizzo io (e che è la stessa che le ho
inviato in allegato)

   ExternalConnector1.0.jar
   conf > repository
          > cmdbuild-schema.xml
          > configuration.xml
          > transform.xsl


se il folder di riferimento è quello specificato nello step 1 allora ho rispettato anche lo step 4


5. creare dentro CMDBuild un processo che supporti l'inserimento dei
dati tramite il tool externalsync. Si noti che bisogna avere il
workflow funzionante.
Un esempio semplicissimo xpdl di processo è in allegato, e funziona
solo per la classe-processo ImportOCS.


qui sorge un'altra  domanda:

il processo da creare per la gestione della mail deve essere diverso da quello che vi ho rappresentato sopra?
in tal caso come faccio a far aggiornare i dati se il processo che ha il tool externalSync è diverso inoltre
quali sono i parametri da specificare per il tool externalSync, ovvero il primo parametro cosa deve contenere?

6 . eseguire la sincronizzazione digitando java -jar ExternalConnector1.0.jar {percorso xartella contenente gli xml} {nome classe processo}
Ad esempio  java -jar ExternalConnector1.0.jar ./conf/ ImportOCS


ovviamente il passo 6 non è attuabile senza aver risolto i passi precedenti.

ritengo che manchi poco a permettermi di far funzionare l'external connector per la mail ma non riesco a capire cosa mi manca
vi sarei grati se poteste darmi una mano

Grazie

 

Salve,

 

non avendo avuto indicazioni ho proseguito con i tentativi ed ho ottenuto dei risultati non completi,

 

ho effettuato test in due diversi ambienti, uno basato su Windows e l'altro su Linux, con gli stessi file di configurazione e con l'attivazione della modalità DEBUG per il log.

 

I risultati sono stati gli stessi, ovvero l'esecuzione non completa le attività:

 

 

#java -jar ExternalConnector1.1.jar . Servicedesk

 

log4j:WARN No appenders could be found for logger (connector).

log4j:WARN Please initialize the log4j system properly.

log4j: Parsing for [root] with value=[WARN, R].

log4j: Level token is [WARN].

log4j: Category root set to WARN

log4j: Parsing appender named "R".

log4j: Parsing layout options for "R".

log4j: End of parsing for "R".

log4j: Setting property [file] to [./logs/ExternalConnector.log].

log4j: Setting property [maxFileSize] to [100MB].

log4j: Setting property [maxBackupIndex] to [10].

log4j: setFile called: ./logs/ExternalConnector.log, true

log4j: setFile ended

log4j: Parsed "R" options.

log4j: Parsing for [connector] with value=[DEBUG].

log4j: Level token is [DEBUG].

log4j: Category connector set to DEBUG

log4j: Handling log4j.additivity.connector=[null]

log4j: Parsing for [servermail] with value=[DEBUG].

log4j: Level token is [DEBUG].

log4j: Category servermail set to DEBUG

log4j: Handling log4j.additivity.servermail=[null]

log4j: Parsing for [inventory] with value=[INFO].

log4j: Level token is [INFO].

log4j: Category inventory set to INFO

log4j: Handling log4j.additivity.inventory=[null]

log4j: Parsing for [ldap] with value=[DEBUG].

log4j: Level token is [DEBUG].

log4j: Category ldap set to DEBUG

log4j: Handling log4j.additivity.ldap=[null]

log4j: Finished configuring.

 

 

#cat ExternalConnector.log

 

>>> Program Started  - version (CMDBuild 1.1 - v. 0.2)<<<

Parsing XML file [./conf/configuration.xml]

Ended to read configuration file

>>> Program Terminated <<<

 

Il file di configurazione viene letto ma il sistema non accede alla casella di posta per leggerne il contenuto ed associarlo agli attributi della classe Servicedesk.

 

Il test l'ho rifatto anche con la versione 1.1.1 con gli stessi risultati

Qualsiasi suggerimento è ben accetto.

 

Grazie

 

Donato

Salve,
purtroppo nel rilascio di CMDBuild 1.1.1 sono presenti solo i connettori con database esterni e con LDAP.

Cordiali saluti,
Lisa

 

Lisa,

 

è prevista in futuro la funzionalità?

nei vari file che accompagnano il kit degli esternal connectors sono citate più volte le info relative al connettore mail (es. log4j.conf per le impostazioni dei log)  ma anche nei sorgenti ci sono diversi riferimenti ServerMailConnector.java.

 

Grazie

 

Donato

 

 

Buongiorno,
si la possibilità verrà rilasciata prossimamente.

Il fatto che sia presente più volte nei sorgenti il riferimento al connettore mail non è casuale. Quando ho modificato il codice del precedente connettore ho aggiornato gradualmente le sue diverse funzionalità, modificando sin da subito alcune parte comuni per non dover rivedere il tutto più volte nonostante l'adattamento alla versione 1.x non sia ancora stato completato.

Saluti,
Lisa

Previously Donato wrote:

Lisa,

 

è prevista in futuro la funzionalità?

nei vari file che accompagnano il kit degli esternal connectors sono citate più volte le info relative al connettore mail (es. log4j.conf per le impostazioni dei log)  ma anche nei sorgenti ci sono diversi riferimenti ServerMailConnector.java.

 

Grazie

 

Donato