Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) » Historie » Version 2
[E] Frank S, 02.03.2017 18:45
1 | 1 | [E] Frank S | h1. Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) |
---|---|---|---|
2 | |||
3 | [[Einlesen externer Dokumente ins DMS]] (Dateien suchen und über Dateinamen verlinken) |
||
4 | |||
5 | |||
6 | |||
7 | 2 | [E] Frank S | h2. Felder und Parameter in Quell-SQL: |
8 | 1 | [E] Frank S | |
9 | 2 | [E] Frank S | Liste der zu importierenden Dokumente |
10 | 1 | [E] Frank S | <pre><code> |
11 | &ControlFields = System-Felder als "Spalte" in SELECT aufnehmen (Status, CimRed, CimYellow, CimGreen, ImportedPDID) |
||
12 | :xxx = Parameter aus "Importieren" |
||
13 | * = Pflichtfelder |
||
14 | |||
15 | ImportSource "import" wenn leer -> pd_source |
||
16 | ImportID * externe ID - |
||
17 | ImportFile * Pfad+Dateiname -> pd_dokumentfile / pd_dmsremotefile |
||
18 | FileName Originaler Dateiname -> pd_dokumentfile (nicht für FileLinks) |
||
19 | AlternateFile Anderer Dateiname falls ImportFile nicht existiert (nur Pfad, nur Dateiname oder Beides) |
||
20 | Recursive Suche in Unterverzeichnissen (AlternateFile nur als Pfad) |
||
21 | |||
22 | DestTable * Besitzer -> pd_tablename |
||
23 | DestDBRID * Besitzer -> pd_dbrid |
||
24 | DokIdent wenn leer über Trigger gefüllt -> pd_dokident |
||
25 | |||
26 | DokuType Dokumenttyp -> pd_doktype |
||
27 | DokuParent Pfad in Objektablage -> pd_parentnodeident |
||
28 | implizit über DokuType oder explizit über DokuParent |
||
29 | Pfad siehe Objektablage > NodeID einblenden |
||
30 | |||
31 | Caption Bezeichnung im Baum, Dateiname wenn leer -> pd_path |
||
32 | Description Beschreibungstext -> pd_txt |
||
33 | |||
34 | CreateDate Erstellungsdatum, heute wenn leer -> pd_date |
||
35 | ModifiedDate Änderungsdatum -> pd_modified |
||
36 | Preview als Vorschaudokument -> pd_print |
||
37 | Hidden ausgeblendet, import alter/gelöschter Dokumente -> pd_deletable |
||
38 | Archive Dokument sofort archivieren -> pd_archive |
||
39 | RevisionPDID Dokument revisionieren (über pd_id) -> pd_revision_id |
||
40 | RevisionSID Dokument revisionieren (über SourceID) -> pd_revision_id |
||
41 | |||
42 | LinkFile Datei nur verlinken [BOOL / VARCHAR = FileName, vorm Verlinken umbenennen/verschieben] |
||
43 | DeleteFile Datei nach Import löschen [BOOL] |
||
44 | RenameFile Datei nach Import umbennen [BOOL = *.imported / VARCHAR = NewFileName, mit Pfad = verschieben] |
||
45 | </code></pre> |
||
46 | |||
47 | |||
48 | |||
49 | 2 | [E] Frank S | h2. Parameter in Update-SQL: |
50 | 1 | [E] Frank S | |
51 | 2 | [E] Frank S | Weitere Updates für jedes importierte Dokument (nach dem Import) |
52 | z.B. manuelle Verschlagwortung und Änderungen an den Zieldatensätzen. |
||
53 | 1 | [E] Frank S | <pre><code> |
54 | :ImportID |
||
55 | :DokuDBRID (picndoku.dbrid) |
||
56 | :DokumentID (pd_id) |
||
57 | &DestTable (pd_tablename als Makro) |
||
58 | :DestTable (pd_tablename) |
||
59 | :DestDBRID (pd_dbrid) |
||
60 | :DokIdent (pd_dokident) |
||
61 | :DokuType (pd_doktype) |
||
62 | :RevisionID (pd_revision_id) |
||
63 | |||
64 | Parameter aus "Importieren" |
||
65 | Felder aus dem SourceSQL |
||
66 | </code></pre> |
||
67 | |||
68 | Jedes importierte Dokument bekommt automatisch ein Schlüsselwort mit der ImportID, für spätere Suchen und Rückverfolgung. |
||
69 | Neue Imports prüfen, ob das Dokument bereit importiert wurde (ImportID existiert). |
||
70 | * Bei Problemen entweder die Prüfung deaktivieren (Dropdown am Prüfen- und Importknopf) |
||
71 | * oder andere ImportIDs verwenden (Prefix) |
||
72 | |||
73 | Das Schlüsselwort "ImportID" an der picndoku wird von diesem Importmodul verwendet. |
||
74 | 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. |
||
75 | |||
76 | |||
77 | |||
78 | h2. ImportIDs |
||
79 | <pre><code class="sql"> |
||
80 | -- Alle importierten Dokumente |
||
81 | SELECT pd_id, pd_path FROM picndoku JOIN recnokeyword ON r_dbrid = picndoku.dbrid WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID'; |
||
82 | |||
83 | -- Alles Importierte |
||
84 | SELECT * FROM recnokeyword WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID'; |
||
85 | |||
86 | -- "Überall" suchen |
||
87 | SELECT DestTable, DestDBRID |
||
88 | FROM ( |
||
89 | SELECT 'art'::VARCHAR AS DestTable, dbrid AS DestDBRID FROM art |
||
90 | UNION SELECT 'adk', dbrid FROM adk |
||
91 | UNION SELECT 'lifsch', dbrid FROM lifsch |
||
92 | UNION SELECT 'picndoku', dbrid FROM picndoku |
||
93 | ) AS x |
||
94 | JOIN recnokeyword ON x.DestDBRID = r_dbrid AND r_kategorie = 'ImportID' AND r_descr = :ImportID |
||
95 | |||
96 | -- ID speichern |
||
97 | SELECT TSystem.CreateKeyword('ImportID', :TableName, :ImportID, :TableDBRID, NULL, NULL); |
||
98 | </code></pre> |
||
99 | |||
100 | |||
101 | |||
102 | h2. Beispiele für Quell-SQL und Update-SQL |
||
103 | <pre><code class="sql"> |
||
104 | SELECT |
||
105 | ('TestA' || pd_id)::VARCHAR AS ImportID, |
||
106 | pd_dokumentfile AS ImportFile, |
||
107 | 'art' AS DestTable, |
||
108 | art.dbrid AS DestDBRID, |
||
109 | &ControlFields |
||
110 | FROM picndoku |
||
111 | JOIN art ON ak_nr = 'ART2' |
||
112 | WHERE pd_dmsremotefile IS NULL |
||
113 | AND (pd_dokumentfile ILIKE 'C:\%' OR pd_dokumentfile ILIKE 'H:\%') |
||
114 | </code></pre> |
||
115 | <pre><code class="sql"> |
||
116 | UPDATE &DestTable SET irgendwas WHERE dbrid = :DestDBRID; |
||
117 | |||
118 | SELECT CreateRecNoKeyword(:DestTable, :DokIdent, :DokuDBRID); |
||
119 | </code></pre> |