Beschreibung der Web API Effekte
Dieser Abschnitt beschreibt die Efecte Web API und die Integration externer Anwendungen in Efecte. Die API basiert auf dem Standard-HTTP-Protokoll. Die Methoden der Efecte Web API werden über die Efecte-URL + /serviceName aufgerufen, wobei serviceName der Name des gewünschten Dienstes ist. Beispiel: https://localhost:8080/esm/search.ws oder in der Efecte-Cloud https://base_url/api/itsm/search.ws .
Bevor Sie die Web- API verwenden, lesen Sie bitte das Kapitel „Authentifizierung“. Es beschreibt die Authentifizierung an der Web API und bietet zusätzliche Informationen zu Rollen und Berechtigungen. In diesem Kapitel wird auch die Erstellung von Web- API Rollen und -Benutzern beschrieben. Der Web- API Benutzer muss ein lokales ESM-Konto sein, kein EIM-Konto, das für die Anmeldung in der Cloud-Umgebung verwendet wird.
Einige Vorgänge können langsam verarbeitet werden. Beispielsweise dauert der Import von mehrwertigen Referenzen normalerweise länger als der Import ohne Referenzen. Auch komplizierte Ausdrücke in Vorlagen können die Verarbeitung von Importen verlangsamen. Sie sollten Ergebnisse immer mithilfe von „where“ und z. B. „templateCode“ in search.ws herausfiltern.
DataCardImport-Dienst
Um eine neue Datenkarte in Efecte zu erstellen, muss der Benutzer den Dienst dataCardImport aufrufen. Der Dienst verwendet Datenkarten-XML als HTTP-BODY, daher muss der Aufrufer die XML-Syntax und das Efecte-Schema für die erstellte Datenkarte kennen. Dieses Dokument spezifiziert das XML-Schema nicht. Informationen dazu finden Sie in der Efecte-XML-Schemabeschreibung . Der Parameter createDataCards muss beim Erstellen neuer Datenkarten auf „true“ gesetzt werden.
Um eine vorhandene Datenkarte zu ändern, muss die gesendete XML-Datei mindestens ein Datenkartenfeld enthalten, das in Efecte als eindeutig definiert ist. Efecte versucht dann, die eingehenden Daten einer Datenkarte zuzuordnen und die entsprechende Karte zu aktualisieren. Der Parameter updateDataCards muss auf „true“ gesetzt werden, wenn vorhandene Datenkarten geändert werden.
Beim Aktualisieren von Datenkarten ersetzen XML-Attributwerte die vorhandenen Werte. Nicht in XML vorhandene Felder bleiben in Efecte unverändert. Wenn Sie Attributwerte aus Efecte entfernen möchten, lassen Sie das Wertelement in XML leer und verwenden Sie den Parameter removeEmptyValues.
Beachten Sie, dass es für Integrationszwecke eine gute Möglichkeit ist, Importe abzuwickeln, indem Sie jeweils nur eine Datenkarte importieren und den Datenverkehr aus den folgenden Gründen auf einem angemessenen Niveau halten:
- Die Fehlerprüfung ist einfacher, da fehlerhafte Entitäten aus dem Import sofort identifiziert werden können.
- Beim Importieren einer großen Menge an Datenkarten kann es zu Zeitüberschreitungen kommen.
HTTP-Parameter
Hier ist eine Liste der möglichen HTTP-Parameter, die verwendet werden können (HTTP-Parameter des DataCardImport-Dienstes):
Parametername |
Erforderlich |
Mögliche Werte |
Standard |
Beschreibung |
updateDataCards |
{wahr, falsch} |
WAHR |
Werden übereinstimmende Datenkarten aktualisiert |
|
Datenkarten erstellen |
{wahr, falsch} |
WAHR |
Werden nicht übereinstimmende Datenkarten erstellt |
|
Erstellen Sie statische Attribute |
{wahr, falsch} |
FALSCH |
Werden neue statische Werte erstellt |
|
Leere Referenzen erstellen |
{wahr, falsch} |
FALSCH |
Werden nicht übereinstimmende Referenzen als leere Datenkarten erstellt |
|
ignoreUniqueCheck |
{wahr, falsch} |
FALSCH |
Werden die Eindeutigkeitsprüfungen für Datenkartenfelder ignoriert |
|
restrictUpdateToFolderId |
Gültige ID eines Datenkartenordners in Efecte |
Legt den Ordner fest, auf den die Aktualisierung der Datenkarte beschränkt ist. Dieser Parameter kann mehrfach angegeben werden. Die Verwendung des Parameters restrictUpdateToFolderCode ist nicht zulässig, wenn restrictUpdateToFolderId verwendet wird. |
||
restrictUpdateToFolderCode |
Gültiger Code eines Datenkartenordners in Efecte |
Legt den Ordner fest, auf den die Aktualisierung der Datenkarte beschränkt ist. Dieser Parameter kann mehrfach angegeben werden. Die Verwendung von restrictUpdateToFolderId ist nicht zulässig, wenn restrictUpdateToFolderCo de verwendet wird. |
||
Ordner-ID |
Ja* |
Gültige ID eines Datenkartenordners in Efecte |
Legt den Ordner mit der Ordner-ID fest, in dem neue importierte Datenkarten erstellt werden |
|
Ordnercode |
Ja* |
Gültiger Code eines Datenkartenordners in Efecte |
Legt den Ordner mit dem Ordnercode fest, in dem neue importierte Datenkarten erstellt werden |
|
Leere Werte entfernen |
{wahr, falsch} |
FALSCH |
Wenn auf „true“ gesetzt, entfernt Efecte Datenkartenwerte, die im XML mit einem leeren Wertelement gekennzeichnet sind |
|
Version |
Welche Version des DataCardImport-Dienstes soll als Antwort verwendet werden? |
Wenn der Wert „1.1“ ist, ist das Stammelement im zurückgegebenen XML immer <response>, d. h. es wird web-api-import-response-1_1.xsd verwendet. Andernfalls wird web-api-import-response.xsd verwendet (das Stammelement ist <entity-import-report> oder <error>). |
* Entweder folderId oder folderCode muss in den Parametern enthalten sein
Fehler beim DataCardImport
Wenn einer der erforderlichen Parameter (siehe Tabelle 7) fehlt oder ungültige Werte enthält, wird im Allgemeinen ein Web API Fehler zurückgegeben. Dies gilt auch für Web API Authentifizierungs- und Autorisierungsfehler. (Weitere Informationen zu Web API -Fehlern finden Sie in Kapitel 5 „Web- API Fehler“).
Wenn jedoch beim Importieren einiger Datenkarten etwas schief geht (z. B. die Vorlage der importierten Karten falsch konfiguriert ist), gibt der DataCardImport-Dienst zurück
Zu importierende Werte sollten sich im <value>-Element befinden. Werden Werte innerhalb von <reference>-Elementen importiert, entstehen fehlerhafte Verweise auf die Datenkarte selbst. Stellen Sie bei Bedarf sicher, dass der Web API Benutzer Zugriff auf die referenzierte Vorlage hat, da sonst keine Referenz erstellt wird. Verweise müssen auf den primären Wert der Vorlage ausgerichtet sein.
Beispielanforderung und -antwort
Anfrage
Dienst: dataCardImport.ws
URL-Beispiel:
https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_management
Nachrichtentext:
<entityset>
<entity>
<template code="incident"/>
<attribute code="subject">
<value>Test incident</value>
</attribute>
<attribute code="category">
<value>Testing</value>
</attribute>
<attribute code="impact">
<value>3. Low</value>
</attribute>
<attribute code="urgency">
<value>3. Low</value>
</attribute>
</entity>
</entityset>Antwort
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>09.07.2018 09:03:04</start-time>
<total-time>10,494</total-time>
<entities-handled-per-second>0,095</entities-handled-per-second>
<average-entity-handling-time>10,494</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>1</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>1</entities-created>
</entity-import-report>Dienst löschen
Um eine vorhandene Datenkarte aus Efecte zu entfernen, muss der Benutzer den Löschdienst aufrufen. Der Dienst kann Datenkarten anhand von zwei verschiedenen Kriterien löschen:
- Interne Datenkarten-ID (Entitäts-ID).
- Eine Suchanfrage; Datenkarten, die der Suchanfrage entsprechen, werden entfernt.
HTTP-Parameter
HTTP-Parameter des Dienstes löschen:
Parametername |
Erforderlich |
Mögliche Werte |
Standard |
Beschreibung |
IDs |
Ja* |
Durch Kommas getrennte Liste interner Datenkarten-IDs (Entitäts-IDs), die zu entfernende Datenkarten identifizieren |
||
Abfrage |
Ja* |
Eine EQL -Abfrage, die die zu entfernenden Datenkarten angibt. Die Abfrage muss so gestaltet sein, dass sie beim Senden an den Such-Webdienst Daten im XML-Format (Entity XML) der Efecte-Datenkarten zurückgibt, d. h. die Abfrage muss die Form „Entität aus Entität auswählen [...]“ haben. |
||
Mülleimer verwenden |
{wahr, falsch} |
FALSCH |
Standardmäßig werden Datenkarten dauerhaft entfernt, d. h. sie werden nicht einfach in den Papierkorb verschoben. Wenn Sie diesen Parameter auf „true“ setzen, wird der Papierkorb verwendet, ähnlich wie beim normalen Löschen von Datenkarten über die Efecte-Weboberfläche. In diesem Modus werden Datenkarten nur dann dauerhaft entfernt, wenn sie sich bereits im Papierkorb befanden. |
* Einer der beiden Parameter (IDs, Abfrage) ist erforderlich. Die Parameter werden in dieser Reihenfolge verarbeitet, und bei einem Aufruf des Dienstes wird nur einer berücksichtigt. Wenn sowohl IDs als auch Abfrageparameter angegeben sind, ignoriert der Dienst den Abfrageparameter und versucht nur, Datenkarten basierend auf dem ID-Parameter zu entfernen.
Beispiel für Anforderung und Antwort: Löschen einer Datenkarte mit Entitäts-ID
Anfrage
Dienst: delete.ws
URL-Beispiel:
https://localhost:8080/esm/delete.ws?ids=15021
Antwort
<?xml version="1.0" encoding="utf-8"?>
<entity-delete-report>
<successful-deletions count="1"/>
<failed-deletions count="0"/>
</entity-delete-report>Beispiel für Anforderung und Antwort: Löschen einer Datenkarte mit EQL
Anfrage
Dienst: delete.ws
EQL : SELECT $efecte_id$, $subject$, $status$ FROM entity WHERE entity.template.code = 'incident' AND $efecte_id$='INC-000270'
URL-Beispiel:
https://localhost:8080/esm/delete.ws?query=select%20%24efecte_id%24%20%2C%24subject%24%2C%20%24status%24%20from%20entity%20where%20entity.template.code%20%3D%20'incident'%20and%20%24efecte_id%24%3D'INC-000270'
Antwort
<?xml version="1.0" encoding="utf-8"?>
<entity-delete-report>
<successful-deletions count="1"/>
<failed-deletions count="0"/>
</entity-delete-report>Suchdienst
Für die Suche nach Datenkarten bietet Efecte den Webdienst dataCardSearch an, der eine EQL Abfrage (Efecte Query Language) entgegennimmt und die Ergebnisse als XML zurückgibt. Weitere Informationen zum Erstellen EQL Abfragen finden Sie in Kapitel 2.
Das vom Suchdienst zurückgegebene XML liegt in einem der folgenden drei Formate vor:
- Entitäts-XML
- XML-Vorlage
- „Generisches“ XML
Entity-XML und Template-XML werden im Dokument „Efecte XML Schema Description“ beschrieben. Das „generische“ XML-Format wird unten anhand von Beispielen erläutert. Beachten Sie, dass das generische Format je nach EQL Abfrage vollständige Instanzen von Entity-XML und Template-XML enthalten kann.
Datumswerte werden immer im Format jjjj-MM-tt HH:mm:ss z gemäß ISO 8601-Standard zurückgegeben. Beachten Sie, dass der Zeitzonenname am Ende angegeben wird. Die verwendete Zeitzone ist immer die Standardzeitzone der JVM oder Datenbank. Beachten Sie, dass die Unterstützung mehrerer Zeitzonen von Entity XML abweichen kann, wo Datums- und Uhrzeitwerte an die Zeitzoneneinstellung des Webdienstbenutzers angepasst werden.
Bei Dezimalzahlen wird ein Punkt (.) als Dezimaltrennzeichen verwendet. Die im Antwort-XML verwendete Zeichenkodierung hängt von der Framework-Eigenschaft webservice.response.encoding ab. Die Standardkodierung ist UTF-8.
Wenn gelöschte oder ausgeblendete Datenkarten nicht angezeigt werden müssen, verwenden Sie im Abfrageparameter entity.deleted=0 oder entity.hidden=0 .
Generisches Ergebnis-XML
Mögliche Datentypelemente für generische Suchergebnisse:
Element |
Hinweise |
<Datum> |
Das verwendete Muster ist immer jjjj-MM-tt HH:mm:ss z. |
<Dezimalzahl> |
Dezimalzahlen; Dezimaltrennzeichen ist immer „.“ (Punkt) |
<Ganzzahl> |
Ganzzahlen |
<Zeichenfolge> |
Viele Efecte-Datentypen (nicht nur „Text“ und „String“, sondern auch „externe Referenzen“ usw.) werden als String ausgegeben |
<null> |
Nullwerte sind ein Sonderfall. Beispielsweise wird ein String-Attribut mit einem Nullwert nicht als <string></string> oder <string>null</string> angezeigt, sondern einfach als <null/> |
HTTP-Parameter
HTTP-Parameter des Suchdienstes:
Parametername |
Erforderlich |
Mögliche Werte |
Standard |
Beschreibung |
Abfrage |
Ja |
Jede gültige EQL Abfrage |
Gibt die Suchanfrage an. Weitere Informationen finden Sie in Kapitel 2. |
|
Attributcodes |
Jeder gültige Attributcode aus der Vorlage |
Gibt nur die angegebenen Attributcodes für die Vorlage zurück |
Beispiel für Anfrage und Antwort, gibt nur Namen von Entitäten zurück
Als Antwort auf die einfache EQL -Abfrage wird ein Dokument zurückgegeben, das aus <string>-Werten direkt unter dem <result>-Element besteht.
Anfrage
Dienst: search.ws
EQL : SELECT entity.name FROM entity WHERE entity.folder.name = „Vorfallmanagement“
URL-Beispiel:
https://localhost:8080/esm/search.ws?query=select%20entity.name%20from%20entity%20where%20entity.folder.name%20%3D%20'Vorfallmanagement'
Antwort
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<string>Problems in CRM</string>
<string>Mobile phone not working</string>
<string>Test incident</string>
<string>API incident</string>
</result>Beispiel für eine Anfrage und Antwort unter Verwendung der Attributcodes der Vorlage
Bei der Auswahl mehrerer Felder werden die Ergebnisse gruppiert nach
Anfrage
Dienst: search.ws
EQL : SELECT $efecte_id$, $subject$, $status$ FROM entity WHERE entity.template.code = 'incident'
URL-Beispiel:
https://localhost:8080/esm/search.ws?query=select%20%24efecte_id%24%20%2C%24subject%24%2C%20%24status%24%20from%20entity%20where%20entity.template.code%20%3D%20'incident'
Antwort
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<row>
<string>INC-000270</string>
<string> Problems in CRM </string>
<string>1 - Untouched</string>
</row>
<row>
<string>INC-000273</string>
<string>Mobile phone not working</string>
<string>1 - Untouched</string>
</row>
<row>
<string>INC-000272</string>
<string>Test incident </string>
<string>2 - Solving</string>
</row>
</result>Beispiel für Anforderung und Antwort, Name des Rückgabeordners und Referenzdatenziel
In diesem Fall enthält das generische Ergebnis-XML vollständige, darin „eingebettete“ Entity-XML-Dokumente sowie einfache <string>-Werte:
Anfrage
Dienst: search.ws
EQL : SELECT entity.folder.name, entity.referenceData.target FROM entity WHERE entity.templateId = 2597
URL-Beispiel:
https://localhost:8080/esm/search.ws?query= select%20entity.folder.name%2C%20entity.referenceData.target%20from%20entity%20where%20entity.templateId%20%3D%202597
Antwort
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<row>
<string>Incident management</string>
<entity id="14549" name="18.06.2018 09:03">
<template id="5604" name="ValueChange" code="ValueChange"/>
<group id="834" name="system"/>
<attribute id="5610" name="Value" code="value">
<value>1 - Untouched</value>
</attribute>
<attribute id="5614" name="Modifier" code="creator">
<value>webapi</value>
</attribute>
</entity>
</row>
<row>
<string>Incident management</string>
<entity id="15066" name="18.06.2018 13:56">
<template id="5604" name="ValueChange" code="ValueChange"/>
<group id="834" name="system"/>
<attribute id="5610" name="Value" code="value">
<value>1 - Untouched</value>
</attribute>
<attribute id="5614" name="Modifier" code="creator">
<value>webapi</value>
</attribute>
</entity>
</row>
</result>Beispiel für Anforderung und Antwort: Geben Sie angegebene Attribute mithilfe von Attributcodes zurück
Attributcodes definieren, welche Attribute in der Antwortnachricht zurückgegeben werden. Auf diese Weise gibt die Web- API keine Attribute zurück, die der Benutzer nicht benötigt.
Anfrage
Dienst: search.ws
EQL : WÄHLEN Sie die Entität AUS der Entität, wobei template.code='workstation' ist.
Attributcodes: Effekt-ID, Workstation-Modell, Status
URL-Beispiel:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,workstation_model,status&query=select%20entity%20from%20entity%20where%20template.code%20%3D%20'workstation'
Antwort
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity id="19103" name="Test User">
<template id="1622" name="Workstation" code="workstation"/>
<group code="asset"/>
<attribute id="1628" name="Device model" code="workstation_model">
<reference id="19125" name="MacBook Pro 15"/>
</attribute>
<attribute id="1380" name="Status" code="status">
<value>2 - In use</value>
</attribute>
<attribute id="1311" name="Efecte ID" code="efecte_id">
<value>WS-000148</value>
</attribute>
</entity>
</entityset>FileMetaData-Dienst
Der Dateimetadatendienst wird verwendet, um Informationen zu den Dateianhängen einer Datenkarte abzurufen. Enthält die Datenkarte mehrere Felder mit Anhängen, werden die Informationen aller Anhänge gleichzeitig zurückgegeben. Dadurch wird die API weniger ausführlich.
Seit Efecte 4.2 gibt der Metadatendienst für jeden Anhang nicht nur den Namen , sondern auch den Anzeigenamen zurück. Der Name ist ein interner Dateiname (z. B. „20180717_1.xml“), der als Kennung bei Anfragen an den Datei-Download-Dienst verwendet wird (siehe nächster Abschnitt). Der Anzeigename ist der ursprüngliche Name der Anhangsdatei, der in der Regel besser lesbar ist (z. B. „readme.txt“).
HTTP-Parameter
HTTP-Parameter des FileMetaData-Dienstes:
Parametername |
Erforderlich |
Mögliche Werte |
Standard |
Beschreibung |
Entitäts-ID |
Ja |
ID einer beliebigen Datenkarte im System, also eine Ganzzahl |
Gibt die Datenkarte an, deren Dateimetadaten abgerufen werden. |
Beispielanforderung und -antwort
Anfrage
Dienst: fileMetadata.ws
URL-Beispiel:
https://localhost:8080/esm/fileMetadata.ws?entityId=15048
Antwort
<?xml version="1.0" encoding="utf-8"?>
<entity-attachment-metadata>
<entity id="15048">
<attribute id="2696" code="file_attachments">
<attachment>
<name>20180717_1.xml</name>
<displayname>test.xml</displayname>
<size>4871</size>
<last-modified>2018-07-17 09:35:12 EEST</last-modified>
</attachment>
</attribute>
</entity>
</entity-attachment-metadata>FileDownload-Dienst
Der Dateidownloaddienst wird zum Herunterladen von Dateien verwendet, die an Datenkarten in Efecte angehängt sind. Die Dateien werden in der HTTP-Antwort zurückgegeben.
Der Client sollte immer zuerst den HTTP-Statuscode der Antwort prüfen. Nur wenn der Statuscode „200 OK“ lautet, kann der Hauptteil der Antwort als angeforderte Datei interpretiert werden. Weitere Statuscodes, die der Dienst typischerweise setzt, sind:
- 400 Ungültige Anfrage – Wenn einige der erforderlichen Parameter fehlen.
- 403 Verboten – Wenn der Webdienstbenutzer keine Berechtigungen für das angegebene hat.
- Datenkarte oder Attribut.
- 404 Nicht gefunden – Wenn die angeforderte Datei nicht gefunden wurde.
In diesen Fehlersituationen ist der HTTP-Antworttext eine XML-Fehlermeldung mit ausführlicheren Informationen.
HTTP-Parameter
HTTP-Parameter des FileDownload-Dienstes:
Parametername |
Erforderlich |
Mögliche Werte |
Standard |
Beschreibung |
Entitäts-ID |
Ja |
Ganze Zahl |
Gibt die Datenkarte an, an die die angeforderte Datei angehängt ist. |
|
Attribut-ID |
Ja |
Ganze Zahl |
Gibt das Datenkartenfeld an, an das die angeforderte Datei angehängt wird. |
|
Dateiname |
Ja |
Zeichenfolge |
Gibt den Namen der angeforderten Datei an. Dies entspricht dem Namenselement eines Anhangs (nicht dem Anzeigenamen), wie es vom Metadatendienst zurückgegeben wird. |
Beispielanforderung und -antwort
Anfrage
Dienst: fileDownload.ws
URL-Beispiel:
https://localhost:8080/esm/fileDownload.ws?entityId=15048&attributeId=2696&fileName=20180717_1.xml
Antwort
In diesem Fall zeigt die Antwort Daten aus der Datei
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<item>
<title>Computer</title>
<price>1000</price>
<company>Customer</company>
</item>
<inventory>FileUpload-Dienst
Der Datei-Upload-Dienst dient zum Hochladen von Dateien auf eine Efecte-Datenkarte. Er analysiert HTTP-Anfragen, die RFC 1867 (Formularbasierter Datei-Upload in HTML) entsprechen. Dies gilt, wenn eine HTTP-Anfrage mit der POST-Methode und dem Inhaltstyp „multipart/form-data“ übermittelt wird. Bei Bedarf können mehrere Dateien gleichzeitig gesendet werden.
Die Datenkarte muss erstellt werden, bevor eine Datei hochgeladen werden kann! Der FileUpload-Dienst erstellt keine neue Datenkarte.
HTTP-Parameter
HTTP-Parameter des FileUpload-Dienstes:
Parametername |
Erforderlich |
Mögliche Werte |
Standard |
Beschreibung |
Entitäts-ID |
Ja |
Ganze Zahl |
Gibt die Datenkarte an, an die die hochgeladene Datei angehängt werden soll. |
|
Attribut-ID |
Ja |
Ganze Zahl |
Gibt das Datenkartenfeld an, an das die hochgeladene Datei angehängt werden soll. |
|
Vorgangstyp |
Zeichenfolge |
„Hinzufügen“ bedeutet, dass die hochgeladene Datei zu anderen Dateien hinzugefügt wird, die möglicherweise bereits im ausgewählten Feld vorhanden sind. „Setzen“ bedeutet, dass die hochgeladene Datei die bereits im ausgewählten Feld vorhandenen Dateien ersetzt. Die Standardoperation ist „Setzen“. |
Beispielanforderung und -antwort
Anfrage
Dienst: fileUpload.ws
URL-Beispiel:
https://localhost:8080/esm/fileUpload.ws?entityId=14938&attributeId=2696&operationType=set
Inhaltstyp: multipart/form-data
Antwort
<?xml version="1.0" encoding="utf-8"?>
<attachment-upload-result>
<attachment>
<name>20180717_15.xml</name>
</attachment>
</attachment-upload-result>Schritt-für-Schritt-Beispiel zum Erstellen einer Datenkarte und Hochladen einer Datei darauf
Dieses Schritt-für-Schritt-Beispiel zeigt alle erforderlichen Schritte zum Hochladen einer Datei aus dem Nichts. Wichtige Attribute sind fett gedruckt. Das Beispiel besteht aus folgenden Schritten:
- Datenkarte importieren (erstellen).
- Abfrage der Entity-ID der Datenkarte.
- Ermitteln der Vorlagenattribut-ID für das Dateianhangattribut.
- Datei wird auf die erstellte Datenkarte hochgeladen.
Erste Datenkarte muss erstellt werden:
Anfrage
Dienst: dataCardImport.ws
URL-Beispiel:
https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_management
Nachrichtentext:
<entityset>
<entity>
<template code="incident"/>
<attribute code="subject">
<value>File upload test</value>
</attribute>
<attribute code="impact">
<value>3. Low</value>
</attribute>
<attribute code="urgency">
<value>3. Low</value>
</attribute>
</entity>
</entityset>Antwort
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>04.09.2018 08:27:29</start-time>
<total-time>0,602</total-time>
<entities-handled-per-second>1,661</entities-handled-per-second>
<average-entity-handling-time>0,602</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>1</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>1</entities-created>
</entity-import-report>Bevor eine Datei hochgeladen werden kann, müssen die Entity-ID und die Attribut-ID für die Dateianhänge der gerade erstellten Datenkarte bekannt sein. Nachfolgend finden Sie eine Abfrage, mit der Sie die Entity-ID abrufen und auch andere Daten validieren können:
Anfrage
Dienst: search.ws
EQL : WÄHLEN Sie Entität AUS Entität, WO template.code='incident' UND $created$>'NOW-1m' UND $created$<'NOW'
Attributcodes: efecte_id, file_attachments, status, subject, description, created
URL-Beispiel:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,file_attachments,status,subject,description,created&query=select%20entity%20from%20entity%20where%20template.code%3D'incident'%20and%20%24created%24%3E'NOW-1m'%20and%20%24created%24%3C'NOW'
Antwort
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity id="19221" name="File upload test">
<template id="2597" name="Incident" code="incident"/>
<group code="incident_management"/>
<attribute id="2612" name="Incident ID" code="efecte_id">
<value>INC-000275</value>
</attribute>
<attribute id="2623" name="Status" code="status">
<value>1 - Untouched</value>
</attribute>
<attribute id="2632" name="Subject" code="subject">
<value>File upload test</value>
</attribute>
<attribute id="2789" name="Created" code="created">
<value>04.09.2018 08:27</value>
</attribute>
</entity>
</entityset>Die AttributeId kann beispielsweise mit folgenden Methoden abgerufen werden:
Wählen Sie über die Administrationsseite die richtige Vorlage aus und bearbeiten Sie das Attribut, dessen Attribut-ID wir benötigen. Wenn das Attribut geöffnet ist, ist die ID die Ziffer nach dem letzten /, z. B.:
https://localhost:8080/esm/EfecteFrameset.do#/admin/templates/edit/2597/2680/2696
Verwenden des Suchdienstes zum Abrufen des Vorlagenschemas.
Abfrage des Vorlagenschemas:
Anfrage
Dienst: search.ws
EQL : SELECT-Vorlage FROM Vorlage WHERE template.code='Vorfall'
URL-Beispiel:
https://localhost:8080/esm/search.ws?query=select%20template%20from%20template%20where%20template.code='incident'
Antwort
Aus der Antwort müssen wir <attribute> finden, wobei <code> der Attributcode des Dateianhangattributs ist, und aus diesem Attribut möchten wir den Wert von <class-attribute-id> erhalten, etwa:
…
<attribute>
<id>2695</id>
<class-attribute-id>2696</class-attribute-id>
<code>file_attachments</code>
<name>File attachments</name>
…Da wir nun über entityId und attributeId verfügen, können wir die Datei hochladen:
Anfrage
Dienst: fileUpload.ws
URL-Beispiel:
https://localhost:8080/esm/fileUpload.ws?entityId=19221&attributeId=2696&operationType=set
Inhaltstyp: multipart/form-data
Antwort
<?xml version="1.0" encoding="utf-8"?>
<attachment-upload-result>
<attachment>
<name>20180904_1.xml</name>
</attachment>
</attachment-upload-result>Datenkartenschema abrufen
Die Metadaten der Efecte-Datenkarte, d. h. Informationen zu den darin enthaltenen Feldern und deren Eigenschaften, können über den Webdienst dataCardSearch mit einer EQL -Abfrage an die Vorlagen abgerufen werden. Hier ist ein Beispiel für EQL -Abfrage, die alle Vorlagen auswählt:
SELECT-Vorlage FROM-Vorlage
URL-Beispiel:
https://localhost:8080/esm/search.ws?query=select%20template%20from%20template%20where%20template.code='incident'
Sicherheit
Verschlüsselung
Bei der HTTP-Basisauthentifizierung werden Anmeldeinformationen im Klartext gesendet. Daher ist die Verwendung von HTTPS unbedingt erforderlich.
Authentifizierung
Die Authentifizierung der Efecte-Web- API Dienste erfolgt über die HTTP-Basisauthentifizierung. Um die Webdienste nutzen zu können, müssen Sie die Anmeldeinformationen für Efecte erstellen. (Erstellen Sie im Berechtigungsbaum eine Rolle mit der Berechtigung zur Nutzung der Efecte-Web API Dienste und fügen Sie dieser Rolle einen oder mehrere Benutzer hinzu.) Alle Vorgänge werden mit den Berechtigungen des authentifizierten Efecte-Benutzers ausgeführt. Diese Berechtigungen definieren, auf welche Vorlagen, Attribute und Ordner der Webdienstbenutzer zugreifen darf.
Der Root-Benutzer sollte nicht als Web API Benutzer verwendet werden, da er Zugriff auf alles hat. Daher kann die Verwendung von Root gefährlich sein. Bei der Untersuchung von Problemen mit der Web API kann es jedoch hilfreich sein, den Web API Benutzer auf Root-Ebene zu befördern, um zu überprüfen, ob Probleme mit den Berechtigungen vorliegen oder ob die Probleme durch die Web API Anforderung selbst verursacht werden.
Web- API Benutzer erstellen
- Erstellen Sie eine Rolle und wählen Sie die Web API Produktberechtigung aus.
- Fügen Sie der Rolle Ordnerberechtigungen hinzu.
- Fügen Sie der Rolle Vorlagenberechtigungen hinzu.
- Erstellen Sie einen Web API Benutzer.
- Fügen Sie der zuvor erstellten Rolle einen Benutzer hinzu.
- Testen Sie, ob Sie die gewünschten Operationen über die Web API durchführen können. Dies können Sie im Browser mit /search.ws?query=select count(id) from entity tun.