Projekt

Allgemein

Profil

Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) » Historie » Revision 4

Revision 3 ([E] Frank S, 02.03.2017 19:01) → Revision 4/5 ([E] Frank S, 02.03.2017 19:22)

h1. Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) 

 [[Einlesen externer Dokumente ins DMS]] (Dateien suchen und über Dateinamen verlinken) 



 h2. Felder und Parameter in Quell-SQL: 

 Liste der zu importierenden Dokumente 
 <pre><code> 
 &ControlFields = System-Felder als "Spalte" in SELECT aufnehmen (Status, CimRed, CimYellow, CimGreen, ImportedPDID) 
 :xxx             = Parameter aus "Importieren" 
 *                = Pflichtfelder 

 ImportSource     "import" wenn leer                         -> pd_source 
 ImportID       * externe ID                                 - 
 ImportFile     * Pfad+Dateiname                             -> pd_dokumentfile / pd_dmsremotefile 
 FileName         Originaler Dateiname                       -> pd_dokumentfile (nicht für FileLinks) 
 AlternateFile    Anderer Dateiname falls ImportFile nicht existiert 
                   nur (nur Pfad inkl. "/", nur Dateiname oder Beides 
                   Dateiname kann * oder ? enthalten, aber es darf nur eine Datei gefunden werden Beides) 
 Recursive        Suche in Unterverzeichnissen von AlternateFile 

 DestTable      * Besitzer                                   -> pd_tablename 
 DestDBRID      * Besitzer                                   -> pd_dbrid 
 DokIdent         wenn leer über Trigger gefüllt             -> pd_dokident 

 DokuType         Dokumenttyp                                -> pd_doktype 
 DokuParent       Pfad in Objektablage                       -> pd_parentnodeident 
                  implizit über DokuType oder explizit über DokuParent 
                  Pfad siehe Objektablage > NodeID einblenden 

 Caption          Bezeichnung im Baum, Dateiname wenn leer -> pd_path 
 Description      Beschreibungstext                          -> pd_txt 

 CreateDate       Erstellungsdatum, heute wenn leer          -> pd_date 
 ModifiedDate     Änderungsdatum                             -> pd_modified 
 Preview          als Vorschaudokument                       -> pd_print 
 Hidden           ausgeblendet, import alter/gelöschter Dokumente -> pd_deletable 
 Archive          Dokument sofort archivieren                -> pd_archive 
 RevisionPDID     Dokument revisionieren (über pd_id)        -> pd_revision_id 
 RevisionSID      Dokument revisionieren (über SourceID)     -> pd_revision_id 

 LinkFile         Datei nur verlinken [BOOL / VARCHAR = FileName, vorm Verlinken umbenennen/verschieben] 
 DeleteFile       Datei nach Import löschen [BOOL] 
 RenameFile       Datei nach Import umbennen [BOOL = *.imported / VARCHAR = NewFileName, mit Pfad = verschieben] 
 </code></pre> 



 h2. Parameter in Update-SQL: 

 Weitere Updates für jedes importierte Dokument (nach dem Import) 
 z.B. manuelle Verschlagwortung und Änderungen an den Zieldatensätzen. 
 <pre><code> 
 :ImportID 
 :DokuDBRID      (picndoku.dbrid) 
 :DokumentID     (pd_id) 
 &DestTable      (pd_tablename als Makro) 
 :DestTable      (pd_tablename) 
 :DestDBRID      (pd_dbrid) 
 :DokIdent       (pd_dokident) 
 :DokuType       (pd_doktype) 
 :RevisionID     (pd_revision_id) 

 Parameter aus "Importieren" 
 Felder aus dem SourceSQL 
 </code></pre> 

 Jedes importierte Dokument bekommt automatisch ein Schlüsselwort mit der ImportID, für spätere Suchen und Rückverfolgung. 
 Neue Imports prüfen, ob das Dokument bereit importiert wurde (ImportID existiert). 
 * Bei Problemen entweder die Prüfung deaktivieren (Dropdown am Prüfen- und Importknopf) 
 * oder andere ImportIDs verwenden (Prefix) 

 Das Schlüsselwort "ImportID" an der picndoku wird von diesem Importmodul verwendet. 
 ImportID mit z.B. einem anderem Prefix oder an allen anderen Tabellen können frei verwendet werden, um beispielsweise den Dokumentbesitzer (DestTable/DestDBRID) aus einem vorherrigen Tabellenimport zu finden. 



 h2. ImportIDs 
 <pre><code class="sql"> 
 -- Alle importierten Dokumente  
 SELECT pd_id, pd_path FROM picndoku JOIN recnokeyword ON r_dbrid = picndoku.dbrid WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID'; 

 -- Alles Importierte 
 SELECT * FROM recnokeyword WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID'; 

 -- "Überall" suchen 
 SELECT DestTable, DestDBRID 
 FROM ( 
   SELECT 'art'::VARCHAR AS DestTable, dbrid AS DestDBRID FROM art 
   UNION SELECT 'adk', dbrid FROM adk 
   UNION SELECT 'lifsch', dbrid FROM lifsch 
   UNION SELECT 'picndoku', dbrid FROM picndoku 
 ) AS x 
 JOIN recnokeyword ON x.DestDBRID = r_dbrid AND r_kategorie = 'ImportID' AND r_descr = :ImportID 

 -- ID speichern 
 SELECT TSystem.CreateKeyword('ImportID', :TableName, :ImportID, :TableDBRID, NULL, NULL); 
 </code></pre> 



 h2. Beispiele für Quell-SQL und Update-SQL 
 <pre><code class="sql"> 
 SELECT 
   ('TestA' || pd_id)::VARCHAR AS ImportID, 
   pd_dokumentfile AS ImportFile, 
   'art' AS DestTable, 
   art.dbrid AS DestDBRID, 
   &ControlFields 
 FROM picndoku 
 JOIN art ON ak_nr = 'ART2' 
 WHERE pd_dmsremotefile IS NULL 
   AND (pd_dokumentfile ILIKE 'C:\%' OR pd_dokumentfile ILIKE 'H:\%') 
 </code></pre> 
 <pre><code class="sql"> 
 UPDATE &DestTable SET irgendwas WHERE dbrid = :DestDBRID; 

 SELECT CreateRecNoKeyword(:DestTable, :DokIdent, :DokuDBRID); 
 </code></pre>