Projekt

Allgemein

Profil

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

[E] Frank S, 02.03.2017 19:01

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 3 [E] Frank S
AlternateFile  Anderer Dateiname falls ImportFile nicht existiert (nur Pfad inkl. "/", nur Dateiname oder Beides)
20
Recursive      Suche in Unterverzeichnissen von AlternateFile
21 1 [E] Frank S
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>