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>