Blog-App für Android mit Headless Oracle Content Management erstellen

Einführung

Die Android-Entwicklungsumgebung mit Java oder Kotlin kann ein leistungsstarkes Tool zum Erstellen von Anwendungen sein, die Inhalte aus Oracle Content Management nutzen. Bewaffnet mit dem richtigen Content-Modell können Sie schnell die Android-Benutzeroberfläche erstellen, die eine typische Blog-App ausmacht.

In diesem Tutorial erstellen wir eine einfache Blog-Anwendung für Android mit Kotlin, indem wir Oracle Content Management als Headless-CMS nutzen. Dieses Android-Beispiel ist unter GitHub verfügbar.

Das Tutorial besteht aus drei Schritten:

  1. Oracle Content Management vorbereiten
  2. Blog in Android erstellen
  3. Anwendung für Deployment vorbereiten

Voraussetzungen

Bevor Sie mit diesem Tutorial fortfahren, sollten Sie zuerst die folgenden Informationen lesen:

Um diesem Tutorial zu folgen, benötigen Sie:

Was wir bauen

Unsere Blog-App besteht aus drei Bildschirmen, die es Besuchern ermöglichen, in Themen organisierte Blogartikel zu erkunden. Der erste Bildschirm, der Startbildschirm, besteht aus einer Liste von Blog-Themen.

Hier finden Sie den Endstatus unseres Tutorials, einer grundlegenden Android-Bloganwendung, die Inhalte von Oracle Content Management konsumiert.

So sieht der Home-Bildschirm am Ende dieses Tutorials aus:

Diese Abbildung zeigt den Homebildschirm von Cafe Supremo mit einer Liste der verfügbaren Themen.

Auf der zweiten Seite, dem Themenbildschirm, werden Vorschauwerte für jeden Blogartikel angezeigt, der zu einem Thema gehört. So sieht ein einzelner Themenbildschirm aus:

Diese Abbildung zeigt den Themenbildschirm "How To Make Coffee" mit einer Liste der verfügbaren Artikel für dieses Thema.

Schließlich gibt der Artikelbildschirm den letzten Blog-Artikel aus, einschließlich Informationen zum Autor des Blogs. So wird eine einzelne Artikelseite aussehen:

Diese Abbildung zeigt eine einzelne Artikelseite mit dem Inhalt und einer Autorenreferenz.

Um fortzufahren, benötigen Sie ein aktives Abonnement für Oracle Content Management und müssen mit der Rolle "Content Administrator" angemeldet sein.

Aufgabe 1: Oracle Content Management vorbereiten

Wenn noch keine Oracle Content Management-Instanz vorhanden ist, finden Sie unter Schnellstart Informationen zur Registrierung für Oracle Cloud, zum Provisioning einer Oracle Content Management-Instanz und zum Konfigurieren von Oracle Content Management als Headless-CMS.

Für dieses Tutorial müssen Sie ein Contentmodell auf zwei Arten erstellen. Es ist ein downloadfähiges Asset Pack verfügbar, das Ihr leeres Repository mit Inhaltstypen und zugehörigen Inhalten füllt, oder Sie können ein eigenes Contentmodell und einen eigenen Inhalt erstellen.

So bereiten Sie Oracle Content Management vor:

  1. Erstellen Sie ein Kanal- und Asset-Repository.
  2. Erstellen Sie ein Contentmodell mit einer der beiden folgenden Methoden:

Channel- und Asset-Repository erstellen

Sie müssen zunächst einen Kanal und ein Asset-Repository in Oracle Content Management erstellen, damit Sie Inhalte veröffentlichen können.

So erstellen Sie einen Kanal und ein Asset-Repository in Oracle Content Management:

  1. Melden Sie sich als Administrator bei der Oracle Content Management-Webbenutzeroberfläche an.

  2. Wählen Sie im linken Navigationsmenü Inhalt aus, und wählen Sie Kanäle veröffentlichen aus der Auswahlliste im Seitenheader aus.

    Diese Abbildung zeigt die Option "Veröffentlichungskanäle", die im Dropdown-Menü im Header der Seite "Inhalt" ausgewählt wurde.

  3. Klicken Sie in der oberen rechten Ecke auf Erstellen, um einen neuen Channel zu erstellen. Benennen Sie den Kanal "OCEGettingStartedChannel" für dieses Tutorial, und halten Sie den Zugriff öffentlich. Klicken Sie auf Speichern, um den Channel zu erstellen.

    Diese Abbildung zeigt den Bereich für die Veröffentlichungskanaldefinition mit "OCEGettingStartedChannel" im Feld für den Kanalnamen.

  4. Wählen Sie im linken Navigationsmenü Inhalt, und wählen Sie dann Repositorys aus der Auswahlliste im Seitenheader aus.

    Diese Abbildung zeigt die im Dropdown-Menü im Header der Seite "Inhalt" ausgewählte Option "Repositorys".

  5. Klicken Sie in der oberen rechten Ecke auf Erstellen, um ein neues Asset-Repository zu erstellen. Benennen Sie das Asset-Repository "OCEGettingStartedRepository" für dieses Tutorial.

    Diese Abbildung zeigt den Bereich für die Repository-Definition mit "OCEGettingStartedRepository" im Feld für den Repository-Namen.

  6. Wählen Sie im Feld Kanäle veröffentlichen den Kanal OCEGettingStartedChannel aus, um Oracle Content Management anzugeben, dass der Inhalt im Repository OCEGettingStartedRepository im Kanal OCEGettingStartedChannel veröffentlicht werden kann. Klicken Sie auf Speichern, wenn Sie fertig sind.

    Diese Abbildung zeigt den Bereich für die Repository-Definition mit "OCEGettingStartedChannel" im Feld "Veröffentlichungskanäle".

Contentmodelle erstellen

Im nächsten Schritt erstellen Sie ein Contentmodell. Sie können eine von zwei Methoden verwenden:

Oracle Content Management-Beispielassetpaket importieren

Sie können ein vorkonfiguriertes Oracle Content Management-Beispielassetpaket mit allen erforderlichen Inhaltstypen und -assets für dieses Tutorial herunterladen. Falls gewünscht, können Sie auch ein eigenes Contentmodell erstellen, anstatt das Beispielassets-Pack herunterzuladen.

Sie können eine Kopie des in diesem Tutorial verwendeten Inhalts aus dem Oracle Content Management Samples Asset Pack hochladen. Dadurch können Sie mit den Inhaltstypen experimentieren und den Inhalt ändern. Wenn Sie das Oracle Content Management Samples Asset Pack importieren möchten, laden Sie das Asset Pack-Archiv OCESamplesAssetPack.zip herunter, und extrahieren Sie es in ein Verzeichnis Ihrer Wahl:

  1. Laden Sie das Oracle Content Management Samples Asset Pack (OCESamplesAssetPack.zip) von der Oracle Content Management-Seite für Downloads herunter. Extrahieren Sie die heruntergeladene ZIP-Datei in einen Speicherort auf Ihrem Computer. Nach dem Extrahieren enthält dieser Speicherort eine Datei mit dem Namen OCEGettingStarted_data.zip.

  2. Melden Sie sich als Administrator bei der Oracle Content Management-Webbenutzeroberfläche an.

  3. Wählen Sie im linken Navigationsmenü Inhalt, und wählen Sie dann Repositorys aus der Auswahlliste im Seitenheader aus. Wählen Sie jetzt OCEGettingStartedRepository aus, und klicken Sie in der oberen Aktionsleiste auf die Schaltfläche Inhalt importieren.

    Diese Abbildung zeigt die Seite "Repositorys", auf der das Element OCEGettingStartedRepository ausgewählt ist.

  4. Laden Sie OCEGettingStarted_data.zip von Ihrem lokalen Rechner in den Ordner Dokumente hoch.

    Diese Abbildung zeigt den Bildschirm zur Uploadbestätigung für die Datei OCEGettingStarted_data.zip.

  5. Wählen Sie nach dem Hochladen OCEGettingStarted_data.zip aus, und klicken Sie auf OK, um den Inhalt in das Asset-Repository zu importieren.

    Diese Abbildung zeigt die ausgewählte OCEGettingStarted_data.zip-Datei mit aktivierter Schaltfläche "OK".

  6. Nachdem der Inhalt erfolgreich importiert wurde, navigieren Sie zur Seite Assets, und öffnen Sie das Repository OCEGettingStartedRepository. Alle zugehörigen Bilder und Inhaltselemente wurden dem Asset-Repository hinzugefügt.

    Diese Abbildung zeigt das Repository OCEGettingStartedRepository mit allen Assets, die gerade importiert wurden.

  7. Klicken Sie oben links auf Alle auswählen und dann auf Veröffentlichen, um alle importierten Assets zum Veröffentlichungskanal hinzuzufügen, den Sie zuvor erstellt haben: OCEGettingStartedChannel.

    Diese Abbildung zeigt das Repository OCEGettingStartedRepository, wobei alle Assets ausgewählt sind und die Option "Veröffentlichen" in der Aktionsleiste sichtbar ist.

  8. Vor dem Veröffentlichen müssen Sie alle Assets validieren. Fügen Sie zuerst OCEGettingStartedChannel als ausgewählten Channel hinzu, und klicken Sie dann auf die Schaltfläche Validieren.

    Diese Abbildung zeigt die Seite "Validierungsergebnisse", wobei der Kanal OCEGettingStartedChannel im Feld "Kanäle" hinzugefügt, alle zu validierenden Assets und die Schaltfläche "Validieren" aktiviert sind.

  9. Nachdem die Assets validiert wurden, können Sie alle Assets im ausgewählten Channel veröffentlichen, indem Sie oben rechts auf die Schaltfläche Veröffentlichen klicken.

    Diese Abbildung zeigt die Seite "Validierungsergebnisse", wobei der Kanal OCEGettingStartedChannel im Feld "Kanäle" hinzugefügt, alle Assets validiert und die Schaltfläche "Veröffentlichen" aktiviert ist.

Anschließend können Sie auf der Seite Anlagen sehen, dass alle Assets veröffentlicht wurden. (Sie können das Symbol über dem Assetnamen angeben.)

Diese Abbildung zeigt die Seite "Anlagen", auf der alle Anlagen abgelegt wurden.

Nachdem Sie das Oracle Content Management Samples Asset Pack importiert haben, können Sie mit dem Erstellen des Blogs in Android beginnen.

Eigenes Contentmodell erstellen

Anstatt das Oracle Content Management Samples Asset Pack zu importieren, können Sie auch ein eigenes Contentmodell erstellen.

Für dieses Tutorial verwenden wir den Inhaltstyp "OCEGettingStartedHomePage", um den Startbildschirm für unseren Blog zu erstellen. Diese Homepage besteht aus einer Liste von Blog-Themen, die auf dem Bildschirm angezeigt werden sollen.

Diese Abbildung zeigt den Startbildschirm für die Demosite Cafe Supremo.

So erstellen Sie Inhaltstypen für das Contentmodell:

  1. Melden Sie sich als Administrator bei der Oracle Content Management-Webbenutzeroberfläche an.
  2. Wählen Sie im linken Navigationsmenü Inhalt aus, und wählen Sie dann Assettypen aus der Auswahlliste im Seitenheader aus.
  3. Klicken Sie oben rechts auf Erstellen.
  4. Wählen Sie diese Option, um einen Inhaltstyp (kein digitaler Assettyp) zu erstellen. Wiederholen Sie diesen Vorgang für alle erforderlichen Inhaltstypen.

Diese Abbildung zeigt das Dialogfeld "Assettyp erstellen" in der Oracle Content Management-Webbenutzeroberfläche.

Wir erstellen vier Inhaltstypen mit jeweils eigenen Feldern:

Der erste Inhaltstyp, OCEGettingStartedHomePage, muss die folgenden Felder enthalten:

Anzeigename Feldtyp Erforderlich Rechnername
Unternehmensname Einwertiges Textfeld X company_name
Firmenlogo Einwertiges Textfeld X company_logo
Themen Mehrfachwert-Referenzfeld X Themen
Kontakt-URL Einwertiges Textfeld X contact_url
URL Einwertiges Textfeld X about_url

So sollte Ihre OCEGettingStartedHomePage-Contenttypdefinition aussehen:

Diese Abbildung zeigt die Definition für den Inhaltstyp "OCEGettingStartedHomePage". Sie enthält folgende Datenfelder: Firmenname, Unternehmenslogo, Themen, Kontakt-URL und Info-URL.

Der zweite Inhaltstyp, OCEGettingStartedTopic, muss das folgende Feld enthalten:

Anzeigename Feldtyp Erforderlich Rechnername
Thumbnail Bildfeld mit einem Wert X Thumbnail

So sollte der Inhaltstyp OCEGettingStartedTopic aussehen:

Diese Abbildung zeigt die Definition für den Inhaltstyp "OCEGettingStartedTopic". Es enthält dieses Datenfeld: Thumbnail.

Der dritte Inhaltstyp, OCEGettingStartedAuthor, muss die folgenden Felder enthalten:

Anzeigename Feldtyp Erforderlich Rechnername
Avatar Bildfeld mit einem Wert X Avatar

So sollte der Inhaltstyp OCEGettingStartedAuthor aussehen:

Diese Abbildung zeigt die Definition für den Inhaltstyp "OCEGettingStartedAuthor". Es enthält dieses Datenfeld: Avatar.

Der vierte und der letzte Inhaltstyp, OCEGettingStartedArticle, müssen die folgenden Felder aufweisen:

Anzeigename Feldtyp Erforderlich Rechnername
Veröffentlichungsdatum Einzelwert-Datumsfeld X published_name
Autor Einzelwert-Referenzfeld X Autor
Bild Bildfeld mit einem Wert X Bild
Bildunterschrift Einwertiges Textfeld X image_caption
Inhalt des Artikels Einzelwert-Großtextfeld X article_content
Thema Einzelwert-Referenzfeld X Thema

So sollte der Inhaltstyp OCEGettingStartedArticle aussehen:

Diese Abbildung zeigt die Definition für den Inhaltstyp "OCEGettingStartedArticlePage". Es enthält folgende Datenfelder: Veröffentlichungsdatum, Autor, Bild, Bildbeschriftung, Artikelinhalt und Thema.

Nachdem Sie die Inhaltstypen erstellt haben, können Sie diese Inhaltstypen dem zuvor erstellten Repository OCEGettingStartedRepository hinzufügen:

  1. Melden Sie sich als Administrator bei der Oracle Content Management-Webbenutzeroberfläche an.
  2. Navigieren Sie zu OCEGettingStartedRepository.
  3. Bearbeiten Sie das Repository, und geben Sie unter Anlagentypen alle vier neu erstellten Inhaltstypen an. Klicken Sie auf Speichern, um die Änderungen zu speichern.

Diese Abbildung zeigt die Seite "Repository bearbeiten" in Oracle Content Management mit den vier neu erstellten Inhaltstypen, die mit dem Repository OCEGettingStartedRepository verknüpft sind.

Nachdem Sie die Inhaltstypen zum Repository hinzugefügt haben, können Sie das Repository OCEGettingStartedRepository auf der Seite Assets öffnen und mit dem Erstellen der Inhaltselemente für alle Inhaltstypen beginnen.

Diese Abbildung zeigt Inhaltselemente auf der Seite "Anlagen" in der Oracle Content Management-Webbenutzeroberfläche mit Optionen auf der linken Seite für Sammlungen, Kanäle, Sprachen, Typen, Auswahl von Inhaltselementen und Status.

Aufgabe 2: Bloganwendung in Android erstellen

Um unsere Oracle Content Management-Inhalte in einer Android-Anwendung zu nutzen, können wir das in Kotlin geschriebene Android-Blogbeispiel verwenden, das als Open-Source-Repository in GitHub verfügbar ist.

Hinweis: Beachten Sie, dass die Verwendung des Android-Beispiels optional ist und wir es in diesem Tutorial für den schnellen Einstieg verwenden. Sie können auch Ihre eigene Android-Anwendung in Java oder Kotlin erstellen, da beide mit dem SDK kompatibel sind.

Die Erstellung des Blogs in Android besteht aus folgenden Schritten:

  1. Klonen Sie das Beispiel-Repository und das Android-SDK, und veröffentlichen Sie das SDK lokal
  2. Android-Anwendung konfigurieren
  3. REST-API für Oracle Content Management zum Abrufen von Inhalt verwenden

Beispiel-Repository und Android-SDK klonen und SDK lokal veröffentlichen

Das Android-Blogbeispiel ist als Open-Source-Repository unter GitHub verfügbar.

Sie müssen das Beispiel zunächst von GitHub auf Ihren lokalen Rechner und das Android-SDK von GitHub klonen, falls noch nicht geschehen.

Wenn Sie über Ihren Beispielcode und das SDK verfügen, um das Android-SDK im Beispielprojekt zu nutzen, müssen Sie das SDK in Ihrem lokalen Maven-Repository erstellen und veröffentlichen, damit es vom Beispielprojekt verwendet werden kann. Öffnen Sie das Android-SDK-Projekt in Android Studio, und führen Sie die Aufgabe publishToMavenLocal aus, um das SDK zu erstellen und im lokalen Maven-Repository zu veröffentlichen.

Android-Beispiel in Android Studio öffnen

Wie bei jeder Android-Anwendung müssen Sie es in Android Studio importieren, damit Sie es von dort in einem Android-Emulator oder -Gerät erstellen und ausführen können. Der Beispielcode ist bereits mit dem Server und dem Veröffentlichungskanal vorkonfiguriert, die zum Abrufen von Daten für die Bloganwendung verwendet werden.

REST-API für Oracle Content Management zum Abrufen von Inhalt verwenden

Die REST-API für Content Delivery bietet Zugriff auf veröffentlichte Assets in Oracle Content Management. Veröffentlichte Assets umfassen Inhaltselemente und digitale Assets sowie ihre Formatvarianten. Wir können jetzt die REST-API für Content Management nutzen, um Inhalte abzurufen, damit wir sie in unserer Bloganwendung wiedergeben können.

Die Datei src/.../samples/blog/MainActivity.kt enthält eine Funktion zum Erstellen des Objekts ContentDeliveryClient, das zum Aufrufen der REST-API verwendet wird. Die folgende Funktion ist eine vereinfachte Version der Funktion aus der Beispielanwendung, in der die verwendeten Werte angezeigt werden.

   fun createDeliveryClient() {

        // preferences for cache
        val cacheEnabled = true

        // the server url and channel token for blog data
        val serverUrl = "https://ocemobile-oce0002.cec.ocp.oraclecloud.com"
        val channelToken = "b9ea60be0abf7255934cd2202fcf1314"


        val settings = ContentSettings()
        if (cacheEnabled) {
            // enable caches, using default settings
            settings.enableCache(appContext.cacheDir)
        }

        // SDK: create client API we'll use to make calls
        deliveryClient =
                ContentSDK.createDeliveryClient(
                        serverUrl,
                        channelToken,
                        settings)
    }

Die Kernklassen, die zum Abrufen von Daten zum Auffüllen der Blog-Beispielanwendung verwendet werden, befinden sich im Paket "viewmodel" und haben das Suffix "Repository". Beispiel: Die Datei HomePageRepository.kt enthält Methoden zum Abrufen von Daten für die Homepage der Bloganwendung, einschließlich der Liste der Themen, die auf der Homepage angezeigt werden.

Homepage-Daten

Die Homepage erfordert mehrere Datenaufrufe, um alle Daten abzurufen:

  1. Zuerst werden Elemente im Channel abgefragt, die dem Homepage-Typ entsprechen.
  2. Rufen Sie dann die Details für jedes Thema ab.

Im Folgenden finden Sie die Funktion, die das SDK verwendet, um Daten für die Homepage abzurufen. Diese Funktion zeigt die verwendeten Werte an, während die Beispielanwendungsfunktion Konstanten verwendet.

  private fun getHomePage(): HomePage {

        // SDK: create search request to get home page
        val getHomePageRequest = SearchAssetsRequest(ContentApi.deliveryClient)
                .type("OCEGettingStartedHomePage")    // search by content type
                .name("HomePage")    // ...and by content name
                .linksNone()        // do not include links in the response
                .fieldsAll()        // do include all fields

        val searchResult = getHomePageRequest.fetchResult()

        // from the search result, only expect a single home page
        val contentItems = searchResult.contentItems

        // handle situation where no data is returned
        if (contentItems.isNullOrEmpty())
            throw ContentException(ContentException.REASON.itemNotFound, "No home page found for type")

        // get first itme in home page data
        val item = contentItems.first()

        // convert list of ids into topic list
        val topicList = item.getReferenceListIds("topics").map { Topic(it) }
        // grab the topic type from one of the references
        topicType = item.getReferenceListField("topics").first().value.type

        return HomePage(
                companyName = item.getTextField("company_name"),
                logoImageUrl = item.getDigitalAssetField("company_logo").getThumbnailUrl(),
                contactUrl = item.getTextField("contact_url"),
                aboutUrl = item.getTextField("about_url"),
                topics = topicList.associateBy { it.id }) // convert list to map

    }

Das Objekt SearchAssetsRequest im obigen Code erstellt die Anforderung, und die Funktion fetchResult() erstellt einen synchronen REST-Aufruf ähnlich der Anforderung unten, um die Homepagedaten abzurufen.

GET content/published/api/v1.1/items?q=(type eq "OCEGettingStartedHomePage" AND name eq "HomePage")?fields=all&links=none&channelToken={channelToken}

Themenseite

Im Artikelbildschirm werden alle Artikel für ein bestimmtes Thema angezeigt. Wir verwenden dasselbe Muster wie für die Homepage. Dieses Mal wird jedoch nach Inhaltselementen des Typs OCEGettingStartedArticle gesucht, die das Thema referenzieren, dessen Themen-ID ausgewählt ist. Außerdem wird gezeigt, wie Sie einen asynchronen Methodenaufruf mit dem SDK ausführen. Weitere Einzelheiten finden Sie in der Datei ArticlesRepository.kt. Im Folgenden finden Sie jedoch die Core-Methode mit dem verwendeten Muster und den verwendeten Werten.

// SDK: create search request to get all the articles
// sort by published_date field in descending order
   
val searchRequest = SearchAssetsRequest(ContentApi.deliveryClient)
        .type("OCEGettingStartedArticle")                // get "article" type
        .fieldEquals("topic", topicId)  // match topic id (e.g. drinks, recipes)
        .sortByField("published_date")  // sort by published date (optional)
        .sortOrderDescending(true)
        .linksNone()            // no need for links (optional)

// SDK: make request to get articles using async callback method
   
searchRequest.fetchAsync {response ->
     // successful SDK call?
     if (response.isSuccess) {
         // process the list and display in ui
      } else {
         // handle error case
      }
  }   
  

Artikelseite

Auf dem einzelnen Artikelbildschirm wird ein einzelner Artikel angezeigt, der Bildschirm enthält jedoch Inhalt des Autors, der ein separater Inhaltstyp ist. Um ein Inhaltselement sowie alle Inhaltselemente abzurufen, die es referenziert, verwenden Sie die Methode expand() beim Erstellen des Anforderungsobjekts wie unten gezeigt, um fields.author abzurufen. Details befinden sich in AritcleDetailRepository.kt. Im Folgenden finden Sie jedoch das Core-Codemuster:

// make a call to get the article, expanding the "author" field

val request  = GetContentItemRequest(ContentApi.deliveryClient, articleId)
       .expand("author")     // only expand the author field
       .linksNone()

// get the article detail as an asynchronous call

request.fetchAsync {response ->
     // successful SDK call?
     if (response.isSuccess) {
         // process the list and display in ui
      } else {
         // handle error case
      }
  }   

Da wir nun unsere Datenabfragen haben, können wir die Antworten in unserer Android-Anwendungs-UI wiedergeben.

ViewModel-Klassen für Android

Die Bloganwendung ist als standardmäßige Android-Anwendung ViewModel strukturiert. Es gibt viele Online-Ressourcen, die beschreiben, wie ViewModel in Android verwendet und in Kotlin implementiert wird.

Komponentenstruktur

Für jeden Bildschirm in der Anwendung gibt es drei Kernklassen:

Die Klassen im Artikellistenbildschirm sind beispielsweise:

Aufgabe 3: Anwendung für Deployment vorbereiten

Nachdem wir unsere Android-Bloganwendung erstellt haben, müssen wir sie in einem mobilen Emulator oder Gerät aus Android Studio testen, damit wir alle Probleme debuggen und eine Vorschau der Anwendung anzeigen können, bevor sie live geht.

Schlussfolgerung

In diesem Tutorial haben wir eine Bloganwendung für Android erstellt, die Sie unter GitHub finden können. Diese Website verwendet Oracle Content Management als Headless-CMS. Nachdem wir Oracle Content Management mit einem Kanal veröffentlichter Inhalte für das Tutorial der Blogwebsite eingerichtet und konfiguriert haben, haben wir die Android-Site installiert und ausgeführt, um die erforderlichen Inhalte abzurufen und die Site zu erstellen.

Weitere Informationen zu wichtigen Oracle Content Management-Konzepten finden Sie in der Dokumentation.

Weitere Beispiele finden Sie auf der Oracle Content Management-Seite Beispiele im Oracle Help Center.