Dateianhänge

Es besteht die Möglichkeit, eine Datei an einem Datensatz im Monitor anzufügen. Damit haben Anwender die Möglichkeit, sich diese Datei anzuschauen oder die Datei herunterzuladen.

Dateiquelle

Der BPC-Monitor unterstützt das Abrufen von Dateien direkt aus OpenSearch und als Referenz über eine HTTP-Proxy-Backend-Connection (zum Beispiel aus INUBIT).

Dateien im OpenSearch

Sie können Dateien im BPC-OpenSearch speichern. Eine Datei wird in diesem Fall direkt im Monitor-Datensatz angehängt.

Die Dateien sollten als Base64-String kodiert sein und im Datensatz unter einem dataIndex hinterlegt werden. Damit die Datei mit dem richtigen Namen sowie Format wiederhergestellt werden kann, muss der Datensatz folgende Informationen enthalten:

  • Name der Datei

  • MIME-Type

Die Namen der Spalten, welche diese Informationen enthalten müssen bei den Einstellungen der Spalte, welche die Dateidaten enthält, vorgenommen werden (Siehe Konfiguration: Datei-Spalte).

Der Datensatz, welcher die Datei beinhaltet, kann über einen BPC-Log-Service oder über einen Index-Request an OpenSearch hinzugefügt werden. Folgendes Beispiel zeigt einen Datensatz mit Dateianhang:

   {
      "PROCESSID": "2",
      "TEXT": "This is second test object",
      "FILEID": "foodmenu.xml",
      "filename": "foodmenu.xml",
      "contentType": "application/xml",
      "DATA": "PGJyZWFrZmFzdF9tZW51Pgo8Zm9vZD4KPG5hbWU+QmVsZ2lhbiBXYWZmbGVzPC9uYW1lPgo8cHJpY2U+JDUuOTU8L3ByaWNlPgo8ZGVzY3JpcHRpb24+VHdvIG9mIG91ciBmYW1vdXMgQmVsZ2lhbiBXYWZmbGVzIHdpdGggcGxlbnR5IG9mIHJlYWwgbWFwbGUgc3lydXA8L2Rlc2NyaXB0aW9uPgo8Y2Fsb3JpZXM+NjUwPC9jYWxvcmllcz4KPC9mb29kPgo8Zm9vZD4KPG5hbWU+U3RyYXdiZXJyeSBCZWxnaWFuIFdhZmZsZXM8L25hbWU+CjxwcmljZT4kNy45NTwvcHJpY2U+CjxkZXNjcmlwdGlvbj5MaWdodCBCZWxnaWFuIHdhZmZsZXMgY292ZXJlZCB3aXRoIHN0cmF3YmVycmllcyBhbmQgd2hpcHBlZCBjcmVhbTwvZGVzY3JpcHRpb24+CjxjYWxvcmllcz45MDA8L2NhbG9yaWVzPgo8L2Zvb2Q+Cjxmb29kPgo8bmFtZT5CZXJyeS1CZXJyeSBCZWxnaWFuIFdhZmZsZXM8L25hbWU+CjxwcmljZT4kOC45NTwvcHJpY2U+CjxkZXNjcmlwdGlvbj5MaWdodCBCZWxnaWFuIHdhZmZsZXMgY292ZXJlZCB3aXRoIGFuIGFzc29ydG1lbnQgb2YgZnJlc2ggYmVycmllcyBhbmQgd2hpcHBlZCBjcmVhbTwvZGVzY3JpcHRpb24+CjxjYWxvcmllcz45MDA8L2NhbG9yaWVzPgo8L2Zvb2Q+Cjxmb29kPgo8bmFtZT5GcmVuY2ggVG9hc3Q8L25hbWU+CjxwcmljZT4kNC41MDwvcHJpY2U+CjxkZXNjcmlwdGlvbj5UaGljayBzbGljZXMgbWFkZSBmcm9tIG91ciBob21lbWFkZSBzb3VyZG91Z2ggYnJlYWQ8L2Rlc2NyaXB0aW9uPgo8Y2Fsb3JpZXM+NjAwPC9jYWxvcmllcz4KPC9mb29kPgo8Zm9vZD4KPG5hbWU+SG9tZXN0eWxlIEJyZWFrZmFzdDwvbmFtZT4KPHByaWNlPiQ2Ljk1PC9wcmljZT4KPGRlc2NyaXB0aW9uPlR3byBlZ2dzLCBiYWNvbiBvciBzYXVzYWdlLCB0b2FzdCwgYW5kIG91ciBldmVyLXBvcHVsYXIgaGFzaCBicm93bnM8L2Rlc2NyaXB0aW9uPgo8Y2Fsb3JpZXM+OTUwPC9jYWxvcmllcz4KPC9mb29kPgo8L2JyZWFrZmFzdF9tZW51Pg=="
   }

Datei-Referenz mit HTTP-Proxy

Dateien können in einem separaten System (zum Beispiel INUBIT) aufbewahrt werden und über eine konfigurierte HTTP-Proxy-Verbindung aufgerufen werden. Wie Dateien dort gespeichert werden, hängt von der Einstellung im INUBIT ab.

Die Dateien sollen über einen REST-Endpunkt bereitgestellt werden, sodass diese sich vom BPC aus herunterladen lassen (siehe auch Konfiguration des Herunterladens von Dateien im Monitor).

Konfiguration des Herunterladens von Dateien im Monitor

Nachdem eine Datei oder eine Referenz zur Datei am Monitor-Datensatz gespeichert wurde, sind folgende Einstellungen nötig, um das Herunterladen der Datei zu ermöglichen.

Konfiguration: Datei-Spalte

Legen Sie in der Spaltenkonfiguration (column_config oder column_historyConfig für Parent- oder Child-Indizes) in den Einstellungen der Spalte, welche die Dateiinhalte oder -Referenzen enthält, ein Einstellungsobjekt fileConfig an.

Dieses Setting muss die Felder columnFileName und columnContentType konfigurieren, welche den Namen der Spalte des Dateinamens bzw. des Content-Types definiert. Optional kann mit dem Feld dataSource bestimmt werden, dass Dateien stets aus einer bestimmten Quelle (OpenSearch, (INUBIT) HTTP-Proxy) kommen. Es werden die Optionen OpenSearch, BackendConnection, und auto angeboten. Im Fall von auto (default) wird anhand des Inhalts der Dateispalte versucht, die Quelle zu bestimmten.

Beispiel
{
    ...
    "dataIndex": "DATA",
    "xtype": "attachmentcolumn",
    "text": "REFFILE",
    ...
    "fileConfig": {
        "columnFileName": "filename",
        "columnContentType": "contentType",
        "dataSource": "auto"
    }
}

Das Beispiel konfiguriert, dass sich Dateiinhalte oder -Referenzen in dem OpenSearch-Feld DATA befinden. Der dazugehörige Dateiname befindet sich in der Spalte filename, der dazugehörige Content-Type in der Spalte contentType.

Bei der Einstellung "dataSource": "auto" wird versucht, den Inhalt der Dateispalte als Base64-kodierten String zu interpretieren. Schlägt das Dekodieren fehl, wird der Wert als URL-Parameter directory in der Abfrage zum konfigurierten HTTP-Proxy gesendet.

Konfiguration: Herunterladen aus INUBIT

Falls die Datei von INUBIT heruntergeladen werden soll, sind folgende Einstellungen notwendig:

  • Function_InubitBackendConnection (inubit_proxyId):
    INUBIT Backend Connection.

  • Function_InubitBaseURL (inubit_baseUrl):
    Fester Bestandteil in allen URLs zum INUBIT.

  • Function_FileDownloadEndpoint (inubit_referenceEndpoint):
    Es soll gesetzt werden, unter welchem INUBIT-Endpunkt Dateien heruntergeladen werden können.

  • Monitor_ProcessID (column_id):
    Die Abfrage enthält Information zur Prozess-ID als URL-Parameter, deshalb soll die dazugehörige Spalte gesetzt werden.

  • Monitor_HistoryID (column_historyId):
    Falls das Herunterladen sich auf den Child-Prozess bezieht, soll die ID des Child-Prozesses in der Abfrage zum INUBIT als URL-Parameter enthalten sein. Die dazugehörige Spalte muss deshalb gesetzt werden.

Nachdem alles konfiguriert ist, hat die URL folgende Struktur:

{Protokoll}://{Domain}/{inubit_baseUrl}/{inubit_referenceEndpoint}?directory={Inhalt der Datei-Spalte}&processid={processId}&childid={childId}

Konfiguration: Aktion "Herunterladen"

Das Herunterladen von Dateien kann über eine Anhang-Spalte (attachment column) ausgelöst werden. Die Konfiguration der Spalte sieht wie folgt aus:

   {
      "xtype": "attachmentColumn",
      "width": 200,
      "minWidth": 64,
      "text": "Download"
   }

Konkreter Anwendungsfall

Dieses Beispiel zeigt, wie eine Base64-kodierte Datei über den Logservice in OpenSearch geschrieben und anschließend aus dem Monitor-Child-Grid heruntergeladen werden kann.

Anlegen einer Logservice-Instanz

Die Konfiguration der Logservice-Instanz erfolgt mit folgenden Parametern:

  • Instanz-ID: myTestLogger

  • OpenSearch-Index: myTestIndex

  • OpenSearch-History-Index: myTestChildIndex

Daten über die Logservice-API in OpenSearch schreiben

Die zu speichernden Daten enthalten eine Base64-kodierte Datei. Diese sollten in einer separaten Datei hinterlegt werden.

In diesem Beispiel wird eine Datei namens logservice.json mit folgendem Inhalt erstellt:

{
    "entries": [
        {
            "parent": {
                "processid": 3,
                "name": "hello world",
                "lastupdate": "2017-05-17T15:28:23.181Z"
            },
            "children": [
                {
                    "parentid": 3,
                    "childid": 1,
                    "langertext": "Dieser Text",
                    "lastupdate": "2017-05-17T15:28:23.181Z",
                    "datei": "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQMAAABIeJ9nAAAABlBMVEUAAAD///+l2Z/dAAAADElEQVQIHWNwYGgAAAFEAMGoX3f9AAAAAElFTkSuQmCC",
                    "filename": "food.png",
                    "contentType": "application/png"
                }
            ]
        }
    ]
}

Wichtige Attribute:

  • datei – enthält die Base64-codierte Datei.

  • contentType – gibt den MIME-Type der Datei an.

  • filename – der Name, unter dem die Datei gespeichert werden soll.

Daten per cURL an die Logservice-API senden

Im nächsten Schritt werden die Daten per cURL-Befehl an die Logservice-API gesendet.

Voraussetzungen:

  • Die Datei logservice.json befindet sich im aktuellen Verzeichnis.

  • Ein gültiger API-Key ist vorhanden. (siehe hier)

  • Eine BackendConnection des Typs HTTP Proxy wurde eingerichtet. (siehe hier)

curl -H "X-ApiKey: 1f697af5-c147-3d94-c529-e06f3f15bb87" \
     -H "Content-Type: application/json" \
     -XPOST 'http://localhost:8181/cxf/bpc-logservice/log/myTestLogger' \
     -d @logservice.json

Anlegen einer Monitorinstanz

Die Monitorinstanz benötigt folgende Konfiguration:

  • OpenSearch Index (data_index): myTestIndex

  • OpenSearch Historien-Index (data_history_index): myTestChildIndex

  • Spalte-ID (column_id): processid

  • History-ID (column_historyId): parentid

  • Zusätzliche History-ID (column_historySubId): childid

  • Backend-Connection (inubit_proxyId): Auswahl der erstellten Backend-Connection

  • Inline-Detailansicht (detailView_inline): true

Außerdem muss die Spalte, welche Dateien oder Dateireferenzen enthält, entsprechend konfiguriert sein (Siehe Konfiguration: Datei-Spalte):

{
    ...
    "dataIndex": "datei",
    "text": "Datei",
    ...
    "fileConfig": {
        "columnFileName": "filename",
        "columnContentType": "contentType",
        "dataSource": "auto"
    }
}

Datei herunterladen

Um die hochgeladene Datei herunterzuladen, kann wie folgt vorgegangen werden:

  1. Zur Monitorinstanz navigieren.

  2. Die Detailansicht der ersten und einzigen Datenzeile öffnen.

  3. In der ersten Spalte der Detailansicht befindet sich der Download-Button.

file attachment

Nach dem Klick auf den Download-Button sollte die Datei heruntergeladen werden.