DatabasePublisher (Objekt): Unterschied zwischen den Versionen
K (Schützte „DatabasePublisher (Objekt)“ [edit=autoconfirmed:move=autoconfirmed]) |
|||
(9 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Überarbeiten}} | {{Überarbeiten}} | ||
==Name== | ==Name== | ||
− | DatabasePublisher - Publiziert [[Artikel]], [[Resource|Resourcen]] und [[ | + | DatabasePublisher - Publiziert [[Article|Artikel]], [[Resource|Resourcen]] und [[Media|Medien]] in eine Datebank |
==Beschreibung== | ==Beschreibung== | ||
− | Ein DatabasePublisher publiziert Artikel, Resourcen und Medien in eine Datebank. Dazu | + | Ein DatabasePublisher publiziert Artikel, Resourcen und Medien in eine Datebank. Dazu muss das Ausgabe-Template in einer XML-Struktur die Datensätze beschreiben, die in der Datenbank angelegt, geändert oder gelöscht werden sollen. |
+ | |||
+ | ===Beispiel: Insert-Statement=== | ||
+ | Das Insert-Statement fügt eine neue Zeile entsprechend der Angaben hinzu. | ||
+ | <source lang="xml"> | ||
+ | <database-publishing> | ||
+ | <%-- Tabellen-Struktur bekannt geben --%> | ||
+ | <table name="BodyTable"> | ||
+ | <key name="_id" type="long"/> | ||
+ | <column name="_body" type="string"/> | ||
+ | </table> | ||
+ | <%-- Aktion für Tabelle BodyTable --%> | ||
+ | <insert table="BodyTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | <entry name="_body">text a</entry> | ||
+ | </row> | ||
+ | <row> | ||
+ | <entry name="_id">124</entry> | ||
+ | <entry name="_body">text b</entry> | ||
+ | </row> | ||
+ | </insert> | ||
+ | </database-publishing> | ||
+ | </source> | ||
+ | |||
+ | Daraus werden zwei SQL-Statements | ||
+ | |||
+ | <source lang="sql"> | ||
+ | INSERT INTO BodyTable _id, _body VALUES (123, "text a") | ||
+ | INSERT INTO BodyTable _id, _body VALUES (124, "text b") | ||
+ | </source> | ||
+ | |||
+ | ===Beispiel: Update-Statement=== | ||
+ | |||
+ | Ein Update-Statement erwartet einen Eintrag mit dem angegebenen Primary-Key und aktuallisiert dessen Werte. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <database-publishing> | ||
+ | <%-- Tabellen-Struktur bekannt geben --%> | ||
+ | <table name="BodyTable"> | ||
+ | <key name="_id" type="long"/> | ||
+ | <column name="_body" type="string"/> | ||
+ | </table> | ||
+ | <%-- Aktion für Tabelle BodyTable --%> | ||
+ | <update table="BodyTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | <entry name="_body">text c</entry> | ||
+ | </row> | ||
+ | </update> | ||
+ | </database-publishing> | ||
+ | </source> | ||
+ | |||
+ | Daraus wird ein SQL-Statement | ||
+ | |||
+ | <source lang="sql"> | ||
+ | UPDATE FROM BodyTable SET _body = "text c" WHERE _id = 123 | ||
+ | </source> | ||
+ | |||
+ | ===Beispiel: Delete-Statement=== | ||
+ | Bei einem Delete-Statement muss lediglich der Schlüssel angegeben werden. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <database-publishing> | ||
+ | <%-- | ||
+ | Tabellen-Struktur bekannt geben. | ||
+ | Da nur das Feld _id für die Aktion nötig ist, | ||
+ | wird auch nur dieses angegeben. | ||
+ | --%> | ||
+ | <table name="BodyTable"> | ||
+ | <key name="_id" type="long"/> | ||
+ | </table> | ||
+ | <%-- Aktion für Tabelle BodyTable --%> | ||
+ | <delete table="BodyTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | </row> | ||
+ | </delete> | ||
+ | </database-publishing> | ||
+ | </source> | ||
+ | |||
+ | Daraus wird ein SQL-Statement | ||
+ | |||
+ | <source lang="sql"> | ||
+ | DELETE FROM BodyTable WHERE _id = 123 | ||
+ | </source> | ||
+ | |||
+ | ===Beispiel: Insert- oder Update-Statement=== | ||
+ | Je nach dem ob der Zeile schon existiert wird ein Insert- oder Update-Statement erzeugt. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <database-publishing> | ||
+ | <%-- Tabellen-Struktur bekannt geben --%> | ||
+ | <table name="BodyTable"> | ||
+ | <key name="_id" type="long"/> | ||
+ | <column name="_body" type="string"/> | ||
+ | </table> | ||
+ | <%-- Aktion für Tabelle BodyTable --%> | ||
+ | <store table="BodyTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | <entry name="_body">text d</entry> | ||
+ | </row> | ||
+ | <row> | ||
+ | <entry name="_id">125</entry> | ||
+ | <entry name="_body">text e</entry> | ||
+ | </row> | ||
+ | </store> | ||
+ | </database-publishing> | ||
+ | </source> | ||
+ | |||
+ | Daraus werden zwei SQL-Statements | ||
+ | |||
+ | <source lang="xml"> | ||
+ | UPDATE FROM BodyTable SET _body = "text d" WHERE _id = 123 | ||
+ | INSERT INTO BodyTable _id, _body VALUES(125, "text e") | ||
+ | </source> | ||
+ | |||
+ | ===Beispiel: Tabellen und Aktionen=== | ||
+ | Es können beliebig viele Tabellen und Aktionen verwendet werden. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <database-publishing> | ||
+ | <%-- Tabellen-Struktur bekannt geben --%> | ||
+ | <table name="ArticleTable"> | ||
+ | <key name="_id" type="long"/> | ||
+ | <column name="_name" type="string"/> | ||
+ | </table> | ||
+ | <table name="BodyTable"> | ||
+ | <key name="_id" type="long"/> | ||
+ | <column name="_body" type="string"/> | ||
+ | </table> | ||
+ | |||
+ | <%-- Aktion für Tabelle BodyTable --%> | ||
+ | <store table="ArticleTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | <entry name="_name">Ein Name</entry> | ||
+ | </row> | ||
+ | </store> | ||
+ | <%-- Aktion für Tabelle BodyTable --%> | ||
+ | <store table="BodyTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | <entry name="_body">text d</entry> | ||
+ | </row> | ||
+ | </store> | ||
+ | |||
+ | <table name="MyHistory"> | ||
+ | <key name="_id" type="long"/> | ||
+ | <column name="_user" type="string"/> | ||
+ | <column name="_timestamp" type="string"/> | ||
+ | </table> | ||
+ | <create table="BodyTable"> | ||
+ | <row> | ||
+ | <entry name="_id">123</entry> | ||
+ | <entry name="_user">Peter Lustig</entry> | ||
+ | <entry name="_timestamp">11.11.2004 11:11</entry> | ||
+ | </row> | ||
+ | </create> | ||
+ | </database-publishing> | ||
+ | </source> | ||
+ | |||
+ | |||
+ | Regeln: | ||
+ | # Tabellen-Definitionen können auch nach einer Aktion definiert werden. (Innerhalb von <database-publishing>) | ||
+ | # Aktion können nur die Tabellen verwendet werden, die entsprechend definiert wurden | ||
+ | # Definitionen überschreiben sich, wenn der Name identisch ist. | ||
+ | # In dem <row>-Tag müssen so viele <entry>-Tags einthalten sein, wie in der Tabellen-Definition angegeben wurden. | ||
+ | |||
+ | |||
+ | ===Template=== | ||
+ | Um ein Template für verschiedene Publications-Typen zu definieren kann es wie folgt aufgebaut werden: | ||
+ | <source lang="xml"> | ||
+ | <sp:io type="in"> | ||
+ | <%-- Eingabe-Teil --%> | ||
+ | </sp:io> | ||
+ | |||
+ | <sp:io type="out"> | ||
+ | <sp:condition> | ||
+ | |||
+ | <%-- "Normaler" File-Publisher --%> | ||
+ | <sp:if name="system.publisher.type" eq="file"> | ||
+ | ... | ||
+ | </sp:if> | ||
+ | |||
+ | <%-- Http-Publisher --%> | ||
+ | <sp:elseif name="system.publisher.type" eq="http"> | ||
+ | ... | ||
+ | </sp:elseif> | ||
+ | |||
+ | <%-- Database-Publisher --%> | ||
+ | <sp:elseif name="system.publisher.type" eq="database"> | ||
+ | |||
+ | <sp:condition> | ||
+ | <%-- Artikel wird (erneut) publiziert --%> | ||
+ | <sp:if name="system.publisher.isPublished"> | ||
+ | <database-publishing> | ||
+ | <table ...> | ||
+ | ... | ||
+ | </table> | ||
+ | <store ...> | ||
+ | ... | ||
+ | </store> | ||
+ | </database-publishing> | ||
+ | </sp:if> | ||
+ | |||
+ | <%-- Artikel depubliziert --%> | ||
+ | <sp:else> | ||
+ | <database-publishing> | ||
+ | <table ...> | ||
+ | ... | ||
+ | </table> | ||
+ | <delete ...> | ||
+ | ... | ||
+ | </delete> | ||
+ | </database-publishing> | ||
+ | </sp:else> | ||
+ | </sp:condition> | ||
+ | |||
+ | </sp:elseif> | ||
+ | </sp:io> | ||
+ | </source> | ||
+ | |||
+ | |||
==Attribute== | ==Attribute== | ||
− | {| class="prettytable" | + | {| class="prettytable sortable" |
|- class="hintergrundfarbe1" | |- class="hintergrundfarbe1" | ||
! Attribut || Type || Beschreibung || ab IES Version | ! Attribut || Type || Beschreibung || ab IES Version | ||
Zeile 42: | Zeile 266: | ||
|- | |- | ||
| clients | | clients | ||
− | | [[Collection]] | + | | [[Collection]] <[[Client]]> |
| Liste der Mandanten, die Zugriff auf diesen Publisher haben | | Liste der Mandanten, die Zugriff auf diesen Publisher haben | ||
| 1 | | 1 | ||
|- | |- | ||
| metadata | | metadata | ||
− | | [[Map]] | + | | [[Map]] <[[String]],[[String]]> |
| Metadaten eines Publishers | | Metadaten eines Publishers | ||
| 1 | | 1 | ||
Zeile 58: | Zeile 282: | ||
| isPublished | | isPublished | ||
| [[Boolean]] | | [[Boolean]] | ||
− | | Liefert im Out-Modus | + | | Liefert im [[Template-Modus|Out-Modus]] true, wenn der Artikel vom Publisher publiziert wird oder false, wenn der Artikel vom Publisher depubliziert wird |
| 1 | | 1 | ||
|- | |- | ||
Zeile 70: | Zeile 294: | ||
<noinclude> | <noinclude> | ||
[[Category:Objekte]] | [[Category:Objekte]] | ||
− | |||
− | |||
[[Category:Qualität_des_Codes_prüfen]] | [[Category:Qualität_des_Codes_prüfen]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 3. November 2010, 12:26 Uhr
Dieser Artikel bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit ihn zu verbessern und entferne anschließend diese Markierung. |
Name
DatabasePublisher - Publiziert Artikel, Resourcen und Medien in eine Datebank
Beschreibung
Ein DatabasePublisher publiziert Artikel, Resourcen und Medien in eine Datebank. Dazu muss das Ausgabe-Template in einer XML-Struktur die Datensätze beschreiben, die in der Datenbank angelegt, geändert oder gelöscht werden sollen.
Beispiel: Insert-Statement
Das Insert-Statement fügt eine neue Zeile entsprechend der Angaben hinzu.
<database-publishing>
<%-- Tabellen-Struktur bekannt geben --%>
<table name="BodyTable">
<key name="_id" type="long"/>
<column name="_body" type="string"/>
</table>
<%-- Aktion für Tabelle BodyTable --%>
<insert table="BodyTable">
<row>
<entry name="_id">123</entry>
<entry name="_body">text a</entry>
</row>
<row>
<entry name="_id">124</entry>
<entry name="_body">text b</entry>
</row>
</insert>
</database-publishing>
Daraus werden zwei SQL-Statements
INSERT INTO BodyTable _id, _body VALUES (123, "text a")
INSERT INTO BodyTable _id, _body VALUES (124, "text b")
Beispiel: Update-Statement
Ein Update-Statement erwartet einen Eintrag mit dem angegebenen Primary-Key und aktuallisiert dessen Werte.
<database-publishing>
<%-- Tabellen-Struktur bekannt geben --%>
<table name="BodyTable">
<key name="_id" type="long"/>
<column name="_body" type="string"/>
</table>
<%-- Aktion für Tabelle BodyTable --%>
<update table="BodyTable">
<row>
<entry name="_id">123</entry>
<entry name="_body">text c</entry>
</row>
</update>
</database-publishing>
Daraus wird ein SQL-Statement
UPDATE FROM BodyTable SET _body = "text c" WHERE _id = 123
Beispiel: Delete-Statement
Bei einem Delete-Statement muss lediglich der Schlüssel angegeben werden.
<database-publishing>
<%--
Tabellen-Struktur bekannt geben.
Da nur das Feld _id für die Aktion nötig ist,
wird auch nur dieses angegeben.
--%>
<table name="BodyTable">
<key name="_id" type="long"/>
</table>
<%-- Aktion für Tabelle BodyTable --%>
<delete table="BodyTable">
<row>
<entry name="_id">123</entry>
</row>
</delete>
</database-publishing>
Daraus wird ein SQL-Statement
DELETE FROM BodyTable WHERE _id = 123
Beispiel: Insert- oder Update-Statement
Je nach dem ob der Zeile schon existiert wird ein Insert- oder Update-Statement erzeugt.
<database-publishing>
<%-- Tabellen-Struktur bekannt geben --%>
<table name="BodyTable">
<key name="_id" type="long"/>
<column name="_body" type="string"/>
</table>
<%-- Aktion für Tabelle BodyTable --%>
<store table="BodyTable">
<row>
<entry name="_id">123</entry>
<entry name="_body">text d</entry>
</row>
<row>
<entry name="_id">125</entry>
<entry name="_body">text e</entry>
</row>
</store>
</database-publishing>
Daraus werden zwei SQL-Statements
UPDATE FROM BodyTable SET _body = "text d" WHERE _id = 123
INSERT INTO BodyTable _id, _body VALUES(125, "text e")
Beispiel: Tabellen und Aktionen
Es können beliebig viele Tabellen und Aktionen verwendet werden.
<database-publishing>
<%-- Tabellen-Struktur bekannt geben --%>
<table name="ArticleTable">
<key name="_id" type="long"/>
<column name="_name" type="string"/>
</table>
<table name="BodyTable">
<key name="_id" type="long"/>
<column name="_body" type="string"/>
</table>
<%-- Aktion für Tabelle BodyTable --%>
<store table="ArticleTable">
<row>
<entry name="_id">123</entry>
<entry name="_name">Ein Name</entry>
</row>
</store>
<%-- Aktion für Tabelle BodyTable --%>
<store table="BodyTable">
<row>
<entry name="_id">123</entry>
<entry name="_body">text d</entry>
</row>
</store>
<table name="MyHistory">
<key name="_id" type="long"/>
<column name="_user" type="string"/>
<column name="_timestamp" type="string"/>
</table>
<create table="BodyTable">
<row>
<entry name="_id">123</entry>
<entry name="_user">Peter Lustig</entry>
<entry name="_timestamp">11.11.2004 11:11</entry>
</row>
</create>
</database-publishing>
Regeln:
- Tabellen-Definitionen können auch nach einer Aktion definiert werden. (Innerhalb von <database-publishing>)
- Aktion können nur die Tabellen verwendet werden, die entsprechend definiert wurden
- Definitionen überschreiben sich, wenn der Name identisch ist.
- In dem <row>-Tag müssen so viele <entry>-Tags einthalten sein, wie in der Tabellen-Definition angegeben wurden.
Template
Um ein Template für verschiedene Publications-Typen zu definieren kann es wie folgt aufgebaut werden:
<sp:io type="in">
<%-- Eingabe-Teil --%>
</sp:io>
<sp:io type="out">
<sp:condition>
<%-- "Normaler" File-Publisher --%>
<sp:if name="system.publisher.type" eq="file">
...
</sp:if>
<%-- Http-Publisher --%>
<sp:elseif name="system.publisher.type" eq="http">
...
</sp:elseif>
<%-- Database-Publisher --%>
<sp:elseif name="system.publisher.type" eq="database">
<sp:condition>
<%-- Artikel wird (erneut) publiziert --%>
<sp:if name="system.publisher.isPublished">
<database-publishing>
<table ...>
...
</table>
<store ...>
...
</store>
</database-publishing>
</sp:if>
<%-- Artikel depubliziert --%>
<sp:else>
<database-publishing>
<table ...>
...
</table>
<delete ...>
...
</delete>
</database-publishing>
</sp:else>
</sp:condition>
</sp:elseif>
</sp:io>
Attribute
Attribut | Type | Beschreibung | ab IES Version |
---|---|---|---|
id | ID | ID des Publisher | 1 |
type | String | Liefert immer database
|
1 |
anchor | Anchor | Anker des Publishers | 1 |
name | String | Name des Publishers | 1 |
encoding | String | Encoding das der Publisher verwenden soll (UTF-8, ISO-8859-15, ...) | 1 |
locale | Locale | Die Sprache, die für diesen Publisher verwendet werden soll | 1 |
clients | Collection <Client> | Liste der Mandanten, die Zugriff auf diesen Publisher haben | 1 |
metadata | Map <String,String> | Metadaten eines Publishers | 1 |
metadataString | String | Metadaten eines Publishers als Zeichenkette. Jede Zeile ist ein Schlüssel/Werte-Paar, getrennt mit einem = (gleich). | 1 |
isPublished | Boolean | Liefert im Out-Modus true, wenn der Artikel vom Publisher publiziert wird oder false, wenn der Artikel vom Publisher depubliziert wird | 1 |
database | String | Name der konfigurierten Datenbankverbindung | 1 |