Zeige letzte Bearbeiter
1 Im folgenden wird Anhand eines Beispieles kurz beschrieben, wie Daten von {{formcycle/}} an ein [[ALVA9 DMS System>>HERSTELLERSEITE]] übertragen werden können.
2
3 {{content/}}
4
5 == Grundlegende Vorgehensweise ==
6
7 Zum Übertragen von Daten aus einem Formular an ein ALVA9 DMS muss eine XML-Datei mit den Informationen generiert und zusammen mit allen anderen zu speichernden Daten in einem ZIP-Archiv gesteckt und in einem Austauschverzeichnis abgelegt werden, von dem aus das DMS sie automatisch importiert.
8
9 == Workflow im Beispiel ==
10
11 Im Formularstore kann das Beispielformular mit dem Namen "ALVA Sonn- und Feiertagsverbot" importiert oder heruntergeladen werden. In diesem werden Informationen gesammelt und diese nach dem Absenden des Formulars im [[Workflow>>doc:TODO]] über eine [[XSL-Transformation>>doc:TODO]] in ein für ALVA9 importierbares XML-Format umgewandelt. Anschließend erstellt der Workflow aus diese XML-Datei, allen im Formular übertragenen Daten und einer PDF-Druckquittung ein ZIP-Archiv.
12 Dieses wird anschließend in das Austauschverzeichnis gespeichert. Das Austauschverzeichnis ist im Beispielformular noch nicht konfiguriert und muss in den jeweiligen Aktionen zunächst noch festgelegt werden. Der Grund dafür ist, dass der Pfade nicht allgemengültig sind und vom jeweiligen System abhängen, in welches das Beispielformular importiert wurde.
13
14 === Inhalt und Erstellung der XML-Datei ===
15
16 Die XML-Datei mit allen im Formular eingegebenen Daten wird über eine sagenannte [[XSL-Transformation>>WIKIPEDIA]] erzeugt. Die Struktur der erzeugten XML-Datei wird dabei von ALVA9 vorgegeben und besteht im Beispiel aus den Konten //daten// und //datensatz//, wobei in letzteren die einzelnen Informationen als eigene Unterknoten eingefügt werden.
17
18 Die vollständige XSL-Transformation für das Beispiel sieht wie folgt aus:
19
20 {{panel title="XSL-Transformation des Beispielformulars" triggerable="true" initial="hidden"}}
21 {{code language="xslt"}}
22 <?xml version="1.0" encoding="UTF-8"?>
23 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
24 <xsl:template match="process">
25 <daten>
26 <datensatz>
27 <NAME1><xsl:value-of select="form/field[@name='tfOrgName']/plainValue"/>&#xA0;<xsl:value-of select="form/field[@name='Rechtsform']/plainValue"/></NAME1>
28 <NAME2><xsl:value-of select="form/field[@name='tfAntragstellerAnrede']/plainValue"/>&#xA0;<xsl:value-of select="form/field[@name='tfAntragstellerTitel']/plainValue"/>&#xA0;<xsl:value-of select="form/field[@name='tfAntragstellerVorname']/plainValue"/>&#xA0;<xsl:value-of select="form/field[@name='tfAntragstellerName']/plainValue"/></NAME2>
29 <NAME3><xsl:value-of select="form/field[@name='']/plainValue"/></NAME3>
30 <NAME4><xsl:value-of select="form/field[@name='']/plainValue"/></NAME4>
31 <STRASSE><xsl:value-of select="form/field[@name='tfAntragstellerAdresse']/plainValue"/></STRASSE>
32 <HAUS_NR><xsl:value-of select="form/field[@name='']/plainValue"/></HAUS_NR>
33 <ORT><xsl:value-of select="form/field[@name='tfAntragstellerOrt']/plainValue"/></ORT>
34 <PLZ><xsl:value-of select="form/field[@name='tfAntragstellerPLZ']/plainValue"/></PLZ>
35 <TELEFON><xsl:value-of select="form/field[@name='tfAntragstellerTelefon']/plainValue"/></TELEFON>
36 <EMAIL><xsl:value-of select="form/field[@name='tfAntragstellerEmail']/plainValue"/></EMAIL>
37 <FAX><xsl:value-of select="form/field[@name='tfAntragstellerFax']/plainValue"/></FAX>
38 <SONNTAGE><xsl:value-of select="form/field[@name='cbSONNTAGE']/plainValue"/></SONNTAGE>
39 <FERIEN><xsl:value-of select="form/field[@name='cbFERIEN']/plainValue"/></FERIEN>
40 <GRUND2><xsl:value-of select="form/field[@name='cbGRUND2']/plainValue"/></GRUND2>
41 <GRUND1><xsl:value-of select="form/field[@name='cbGRUND1']/plainValue"/></GRUND1>
42 <ANTR_DATUM><xsl:value-of select="substring-before(./@creation-date, ' ')" /></ANTR_DATUM>
43 <NAME_HALT><xsl:value-of select="form/field[@name='tfNAME_HALT']/plainValue"/></NAME_HALT>
44 <FIRMA_HALT><xsl:value-of select="form/field[@name='tfFIRMA_HALT']/plainValue"/></FIRMA_HALT>
45 <POS_HALTER><xsl:value-of select="form/field[@name='tfPOS_HALTER']/plainValue"/></POS_HALTER>
46 <xsl:if test="form/field[@name='cbLKW']/plainValue!=1"><LKW>0</LKW></xsl:if>
47 <xsl:if test="form/field[@name='cbLKW']/plainValue=1"><LKW><xsl:value-of select="form/field[@name='cbLKW']/plainValue"/></LKW></xsl:if>
48 <xsl:if test="form/field[@name='cbANHAENGER']/plainValue!=1"><ANHAENGER>0</ANHAENGER></xsl:if>
49 <xsl:if test="form/field[@name='cbANHAENGER']/plainValue=1"><ANHAENGER><xsl:value-of select="form/field[@name='cbANHAENGER']/plainValue"/></ANHAENGER></xsl:if>
50 <xsl:if test="form/field[@name='cbZUGMASCHIN']/plainValue!=1"><ZUGMASCHIN>0</ZUGMASCHIN></xsl:if>
51 <xsl:if test="form/field[@name='cbZUGMASCHIN']/plainValue=1"><ZUGMASCHIN><xsl:value-of select="form/field[@name='cbZUGMASCHIN']/plainValue"/></ZUGMASCHIN></xsl:if>
52 <xsl:if test="form/field[@name='cbAUFLIEGER']/plainValue!=1"><AUFLIEGER>0</AUFLIEGER></xsl:if>
53 <xsl:if test="form/field[@name='cbAUFLIEGER']/plainValue=1"><AUFLIEGER><xsl:value-of select="form/field[@name='cbAUFLIEGER']/plainValue"/></AUFLIEGER></xsl:if>
54 <xsl:if test="form/field[@name='cbERSATZ1']/plainValue!=1"><ERSATZ1>0</ERSATZ1></xsl:if>
55 <xsl:if test="form/field[@name='cbERSATZ1']/plainValue=1"><ERSATZ1><xsl:value-of select="form/field[@name='cbERSATZ1']/plainValue"/></ERSATZ1></xsl:if>
56 <xsl:if test="form/field[@name='cbERSATZ2']/plainValue!=1"><ERSATZ2>0</ERSATZ2></xsl:if>
57 <xsl:if test="form/field[@name='cbERSATZ2']/plainValue=1"><ERSATZ2><xsl:value-of select="form/field[@name='cbERSATZ2']/plainValue"/></ERSATZ2></xsl:if>
58 <LKW_KENNZ><xsl:value-of select="form/field[@name='tfLKW_KENNZ']/plainValue"/></LKW_KENNZ>
59 <ANH_KENNZ><xsl:value-of select="form/field[@name='tfANH_KENNZ']/plainValue"/></ANH_KENNZ>
60 <ZUG_KENNZ><xsl:value-of select="form/field[@name='tfZUG_KENNZ']/plainValue"/></ZUG_KENNZ>
61 <AUF_KENNZ><xsl:value-of select="form/field[@name='tfAUF_KENNZ']/plainValue"/></AUF_KENNZ>
62 <ERS_KENNZ1><xsl:value-of select="form/field[@name='tfERS_KENNZ1']/plainValue"/></ERS_KENNZ1>
63 <ERS_KENNZ2><xsl:value-of select="form/field[@name='tfERS_KENNZ2']/plainValue"/></ERS_KENNZ2>
64 <LKW2KENNZ><xsl:value-of select="form/field[@name='tfLKW2KENNZ']/plainValue"/></LKW2KENNZ>
65 <ANH2KENNZ><xsl:value-of select="form/field[@name='tfANH2KENNZ']/plainValue"/></ANH2KENNZ>
66 <ZUG2KENNZ><xsl:value-of select="form/field[@name='tfZUG2KENNZ']/plainValue"/></ZUG2KENNZ>
67 <AUF2KENNZ><xsl:value-of select="form/field[@name='tfAUF2KENNZ']/plainValue"/></AUF2KENNZ>
68 <ERS2KENNZ1><xsl:value-of select="form/field[@name='tfERS2KENNZ1']/plainValue"/></ERS2KENNZ1>
69 <ERS2KENNZ2><xsl:value-of select="form/field[@name='tfERS2KENNZ2']/plainValue"/></ERS2KENNZ2>
70 <LKW_GEWICH>
71 <xsl:call-template name="formatWeight">
72 <xsl:with-param name="weight" select="form/field[@name='tfLKW_GEWICH']/plainValue" />
73 </xsl:call-template>
74 </LKW_GEWICH>
75 <ANH_GEWICH>
76 <xsl:call-template name="formatWeight">
77 <xsl:with-param name="weight" select="form/field[@name='tfANH_GEWICH']/plainValue" />
78 </xsl:call-template>
79 </ANH_GEWICH>
80 <ZUG_GEWICH>
81 <xsl:call-template name="formatWeight">
82 <xsl:with-param name="weight" select="form/field[@name='tfZUG_GEWICH']/plainValue" />
83 </xsl:call-template>
84 </ZUG_GEWICH>
85 <AUF_GEWICH>
86 <xsl:call-template name="formatWeight">
87 <xsl:with-param name="weight" select="form/field[@name='tfAUF_GEWICH']/plainValue" />
88 </xsl:call-template>
89 </AUF_GEWICH>
90 <!--
91 <LKW_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></LKW_LEER>
92 <ANH_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></ANH_LEER>
93 <ZUG_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></ZUG_LEER>
94 <AUF_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></AUF_LEER>
95 -->
96 <ERS_GEWI_1>
97 <xsl:call-template name="formatWeight">
98 <xsl:with-param name="weight" select="form/field[@name='tfERS_GEWI_1']/plainValue" />
99 </xsl:call-template>
100 </ERS_GEWI_1>
101 <ERS_GEWI_2>
102 <xsl:call-template name="formatWeight">
103 <xsl:with-param name="weight" select="form/field[@name='tfERS_GEWI_2']/plainValue" />
104 </xsl:call-template>
105 </ERS_GEWI_2>
106 <ART><xsl:value-of select="form/field[@name='tfART']/plainValue"/></ART>
107 <ART_GEWICH>
108 <xsl:call-template name="formatWeight">
109 <xsl:with-param name="weight" select="form/field[@name='tfART_GEWICH']/plainValue" />
110 </xsl:call-template>
111 </ART_GEWICH>
112 <STARTORT><xsl:value-of select="form/field[@name='tfSTARTORT']/plainValue"/></STARTORT>
113 <ZIELORT><xsl:value-of select="form/field[@name='tfZIELORT']/plainValue"/></ZIELORT>
114 <UEBER><xsl:value-of select="form/field[@name='tfUEBER']/plainValue"/></UEBER>
115 <ZEIT_VON>
116 <xsl:call-template name="formatDate">
117 <xsl:with-param name="dateTime" select="form/field[@name='tfZEIT_VON']/plainValue" />
118 </xsl:call-template>
119 </ZEIT_VON>
120 <VON_UHR><xsl:value-of select="form/field[@name='tfVON_UHR']/plainValue"/></VON_UHR>
121 <ZEIT_BIS>
122 <xsl:call-template name="formatDate">
123 <xsl:with-param name="dateTime" select="form/field[@name='tfZEIT_BIS']/plainValue" />
124 </xsl:call-template>
125 </ZEIT_BIS>
126 <BIS_UHR><xsl:value-of select="form/field[@name='tfBIS_UHR']/plainValue"/></BIS_UHR>
127 <ORT_LEERFA><xsl:value-of select="form/field[@name='tfORT_LEERFA']/plainValue"/></ORT_LEERFA>
128 <BEGRUENDG><xsl:value-of select="form/field[@name='tfBEGRUENDG']/plainValue"/></BEGRUENDG>
129 <!--
130 <ORTSLAGE><xsl:value-of select="form/field[@name='tfORTSLAGE']/plainValue"/></ORTSLAGE>
131 <NOTIZ><xsl:value-of select="form/field[@name='tfNOTIZ']/plainValue"/></NOTIZ>
132 -->
133 <ORTSLAGE><xsl:value-of select="form/field[@name='edAnmerkungen']/plainValue"/></ORTSLAGE>
134 <NOTIZ><xsl:value-of select="form/field[@name='edAnmerkungen']/plainValue"/></NOTIZ>
135 <SACHGEBIET>Z</SACHGEBIET>
136 <FORMID><xsl:value-of select="form/field[@name='tfFORMID']/plainValue"/></FORMID>
137 <SERVICE_ID><xsl:value-of select="./@process-uid" /></SERVICE_ID>
138 </datensatz>
139 </daten>
140 </xsl:template>
141 <xsl:template name="formatDate">
142 <xsl:param name="dateTime"/>
143 <xsl:variable name="day" select="substring-before($dateTime, '.')" />
144 <xsl:variable name="month" select="substring-before(substring-after($dateTime, '.'), '.')" />
145 <xsl:variable name="year" select="substring-after(substring-after($dateTime, '.'), '.')" />
146
147 <xsl:choose>
148 <xsl:when test="$dateTime !=''">
149 <xsl:value-of select="concat($year, '-', $month, '-', $day)" />
150 </xsl:when>
151 <xsl:otherwise>
152
153 </xsl:otherwise>
154 </xsl:choose>
155 </xsl:template>
156 <xsl:template name="formatWeight">
157 <xsl:param name="weight"/>
158 <xsl:value-of select="translate($weight, ',', '.')" />
159 </xsl:template>
160 </xsl:stylesheet>
161 {{/code}}
162 {{/panel}}
163
164 Im Beispiel werden über die am Ende stehenden Templates //formatDate// und //formatWeight// Datumswerte und Gewichte in das Format überführt, welches ALVA9 erwartet. Eine Überführung von im Formular eingegebenen Werten in eine für ALVA9 erwartetes Format kann gegebenenfalls auch bei anderen Daten nötig sein. In den meisten Fällen ist die Verwendung von speziellen Templates häufig die einfachste Lösung, um die Werte in das gewünschte Format zu konvertieren.
165
166 === Speichern von zusätzlichen Dokumenten ===
167
168 Im Beispiel werden alle an das Formualar angehangenen Dateien und eine mithilfe einer [[PDF-Print-Aktion>>doc:TODO]] generierte
169 Hierbei ist die Verwendung gl dateinamen
170
171 Über eine Aktion vom Typ [[ZIP Komprimieren>>doc:TODO]]
172
173
174 === Benennung der erzeugten Dateien ===
175
176 Im Beispiel
177
178 das ist wichtig weil
179
180 Selbe, eindeutige ID -> Es empfiehlt sich, Process_ID zu verwenden
181
182
183 TBD
184
185 == Ansprechpartner für Fragen ==
186
187 Für weitere Fragen zur Anbindung und der nötigen Konfiguration für den Import in ALVA9 steht folgender Ansprechpartner auf Seiten der Ascherslebener Computer GmbH zur Verfügung:
188
189 TODO Name
190 TODO Kontaktdaten