Projekt

Allgemein

Profil

Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) » Historie » Version 5

[E] Frank S, 14.05.2020 15:32

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