Tabellendaten als RSS-Feed bereitstellen ... 

Vor einiger Zeit wurde in diesem Forum vorgestellt, wie Sie mit Application Express externe RSS-Feeds in Ihre Anwendungen integrieren können. Heute erfahren Sie, wie Sie aus Ihrer Anwendung heraus einen RSS-Feed bereitstellen. RSS eignet sich als Alternative zum Versenden von Mails hervorragend, um schnell und einfach Nutzer zu benachrichtigen. Wenn Sie RSS-Feeds von einer Anwendung bereitstellen und von einer anderen konsumieren, können Sie Nachrichten zwischen Anwendungen austauschen, ohne mit Datenbank-Links hantieren zu müssen.

Dies wird anhand eines Beispiels demonstriert. Aus einer Tabelle mit Kunden und ihren Umsätzen wird ein RSS-Feed bereitgestellt, der über alle Abschlüsse über einem bestimmten Betrag informiert.

Grundlage des RSS-Feeds: Eine Tabelle
Abb.1: Grundlage des RSS-Feeds: Eine Tabelle

Legen Sie Ihre Tabelle, wie in Abbildung 1 dargestellt, an. Die Spalte ID soll der Primärschlüssel sein; diese soll mit einer neuen Sequence gefüllt werden. Wenn Sie möchten, können Sie im SQL Workshop auch schon einige Daten eingeben. 

Einige Daten eingeben ...
Abb.2: Einige Daten eingeben ...

Legen Sie anschließend eine kleine Application Express-Anwendung mit einer Seite und einem Bericht an. Damit die Anwendungsseite zum RSS-Feed, der nachfolgend erstellt wird, passt, achten Sie bitte auf folgendes:

  • Die Anwendung sollte den Aliasnamen UMSATZ erhalten
  • Die Seite mit dem Bericht sollte den Aliasnamen SHOW erhalten
  • Für die ersten Tests sollten Sie die Anmeldung deaktivieren, später kann diese durchaus wieder aktiviert werden.
  • Achten Sie darauf, dass die Berichtsseite das Element P1_ID (Ausgeblendet) enthält
  • Als SQL für den Bericht hinterlegen Sie ...
select id, kundename, datum, umsatz from umsatzdaten where id = :P1_ID
  • Die Seite sollte mit folgendem Link aufgerufen werden können:
http://[host]:[port]/pls/htmldb/f?p=UMSATZ:SHOW:::::P1_ID:[ID]

Abbildung 3 zeigt, wie die Berichtsseite aussehen könnte. Natürlich kann Ihre Umsatzdatentabelle auch mehr Spalten enthalten, die dann hier dargestellt werden; das
obige Beispiel enthält nur die minimal notwenigen Spalten.

Die fertige Berichtsseite zur Anzeige der Umsatzdaten

Abb.3: Die fertige Berichtsseite zur Anzeige der Umsatzdaten

Als nächstes wird der RSS-Feed erstellt. RSS-Feeds sind XML-Dokumente, die stets den gleichen Aufbau haben. Abbildung 4 zeigt das XML eines RSS-Feeds (Studio recent) des Oracle Technology Network.

RSS-Feed des Oracle Technology Network als Beispiel

Abb.3: RSS-Feed des Oracle Technology Network als Beispiel

Wenn Sie nun selbst einen RSS-Feed bereitstellen möchten, müssen Sie ein XML-Dokument erstellen, welches eben dieser Struktur entspricht. Dazu eignen sich die in der Oracle-Datenbank vorhandenen SQL/XML-Kommandos sehr gut. Mehr Informationen zum Generieren von XML aus der Datenbank finden Sie im Oracle Technet im Bereich der XML DB. Das folgende Listing erstellt eine PL/SQL-Prozedur, welches das gewünschte XML erzeugt und ausgibt. Lassen Sie das Skript im SQL Workshop laufen ...

CREATE OR REPLACE PROCEDURE WS_COMMUNITY.RSSFEED(
  p_umsatzlimit IN NUMBER
) AS
  v_xml blob;
BEGIN
  with umsatz as (
    select id, kundename, umsatz, datum
    from (
      select id, kundename, umsatz, datum
      from umsatzdaten
      where umsatz > p_umsatzlimit
      order by datum desc
    )
    where rownum < 20
  )
  select 
    XMLElement("rss",
      XMLAttributes('2.0' as "version"),
      XMLElement("channel",
        XMLElement("title", 'Application Express Community: RSS Feed'),
        XMLElement("link",'http://www.oracle.com/global/de/community'),
        XMLElement("description", 'Application Express Community'),
        XMLElement("language", 'de_de'),
        (
        XMLAgg(
         XMLElement("item",
           XMLElement(
             "title", 
             to_char(u.datum, 'DD.MM.YYYY')||': '||u.kundename||to_char(u.umsatz,'99999999D99')
           ),
           XMLElement(
             "link",
             'http://192.168.2.140:10080/pls/htmldb/f?p=UMSATZ:SHOW:::::P1_ID:'||u.id
           )
         )
        ) 
        )
      )
    ).getblobval(nls_charset_id('AL32UTF8')) into v_xml
  from umsatz u;
  owa_util.mime_header('text/xml');
  wpg_docload.download_file(v_xml);
  dbms_lob.freetemporary(v_xml);
END;

Achten Sie auf die SQL-Funktionen XMLElement(), XMLAttributes() und XMLAgg(). Sie stellen aus der Tabelle mit den Umsatzdaten das XML-Dokument für den RSS-Feed zusammen. Die Prozedur hat den Parameter p_umsatzlimit - damit kann direkt beim Aufruf festgelegt werden, welche Umsätze der RSS-Feed bereitstellen soll. Es werden nur die jüngsten 20 Umsätze - nach Datum sortiert - zurückgegeben.

Diese Prozedur können Sie auch als Muster verwenden und so RSS-Feeds für andere Tabellen erstellen. Das Schema ist stets das gleiche. Damit der RSS-Feed auch aufgerufen werden kann, müssen Sie die Prozedur noch freigeben. Setzen Sie mit dem SQL Workshop folgendes Kommando ab.

grant execute on rssfeed to public

Anschließend können Sie im Browser testen, ob die Prozedur einwandfreies XML liefert. Tauschen Sie das #OWNER# durch das Schema Ihres HTML DB Workspace aus.

http://[host]:[port]/pls/htmldb/#OWNER#.RSSFEED?P_UMSATZLIMIT=500000

Das Ergebnis sollte wie in Abbildung 5 aussehen.

Test des RSS Feeds ...

Abb.5: Test des RSS-Feeds

Der nächste Test findet in einem RSS Newsreader statt. Im Internet finden Sie zahlreiche RSS Newsreader als Freeware. Abbildung 6 zeigt, wie Ihr neuer RSS Feed als Datenquelle in Mozilla Thunderbird eingebunden wird. Zum Einbinden des RSS-Feeds erwartet der Newsreader eine Feed-URL - geben hier genau die URL ein, die Sie auch im Browser-Test verwendet haben - sie ruft die erstellte PL/SQL-Prozedur auf. Mit dem Parameter p_umsatzlimit können Sie den RSS-Newsfeed "feineinstellen":

http://[host]:[port]/pls/htmldb/#OWNER#.RSSFEED?P_UMSATZLIMIT=500000

RSS Feed eingebunden in Mozilla Thunderbird

Abb.5: Einbindung des RSS-Feeds in Mozilla Thunderbird

Solche RSS-Feeds lassen sich mit beliebigen Tabellen und anhand beliebiger Kriterien einrichten. Wie eingangs bereits beschrieben eignen sie nicht nur als Alternative zum Versand von E-Mail, sondern auch - zum Konsumieren in anderen (Application Express)-Anwendungen. Eine solche RSS-Kopplung ist für zwei Application Express-Anwendungen insbesondere dann interessant, wenn die Weitergabe von Database Links nicht möglich oder nicht erwünscht ist.

Zurück zur Community-Seite