Web- API kuvaus
Tässä osiossa kuvataan Efecte Web API ja ulkoisia sovelluksia, joita käytetään integroitumaan Efecten. API perustuu HTTP-protokollan standardiin. Efecte Web API -metodit kutsutaan Efecten URL-osoitteesta + /palvelunNimi, jossa palvelunNimi on kutsuttavan palvelun nimi. Esimerkiksi: https://localhost:8080/esm/search.ws tai Efecte-pilvessä https://base_url/api/itsm/search.ws .
Ennen Web API :n käyttöä tutustu lukuun ”Todennus”, jossa kuvataan Web API n todennus ja annetaan lisätietoja rooleista ja käyttöoikeuksista. Tässä luvussa käsitellään myös Web API -roolin ja -käyttäjän luomista. Web API -käyttäjän on oltava paikallinen ESM-tili, ei EIM-tili, jota käytetään pilviympäristöön kirjautumiseen.
Jotkin operaatiot voivat olla hitaita käsitellä. Esimerkiksi moniarvoisten viittausten tuontioperaatiot vievät yleensä enemmän aikaa kuin tuontioperaatiot ilman viittauksia. Myös monimutkaiset lausekkeet template-tiedostossa voivat olla hitaita tuonnin käsittelyssä. Tulokset tulisi aina suodattaa pois käyttämällä where-operaattoria ja esim. templateCode-operaattoria search.ws-tiedostossa.
DataCardImport-palvelu
Luodakseen uuden datakortin Efecteen käyttäjän on käynnistettävä dataCardImport-palvelu. Palvelu ottaa datakortin XML:n HTTP BODY -muodossa, joten kutsujan on tiedettävä luodun datakortin XML-syntaksi ja Efecte-skeema. Tässä dokumentissa ei määritellä XML-skeemaa, joten katso lisätietoja Efecte XML -skeeman kuvauksesta . createDataCards- parametrin arvoksi on asetettava true, kun uusia datakortteja luodaan.
Jotta voit muokata olemassa olevaa datakorttia, lähetetyssä XML-tiedostossa on oltava vähintään yksi datakorttikenttä, joka on määritelty Efectessä yksilölliseksi. Efecte yrittää sitten yhdistää saapuvat tiedot datakorttiin ja päivittää vastaavan kortin. updateDataCards -parametrin arvoksi on asetettava true, kun olemassa olevia datakortteja muokataan.
Kun datakortteja päivitetään, XML-attribuuttiarvot korvaavat olemassa olevat arvot ja ne kentät, joita ei ole XML:ssä, säilytetään sellaisina kuin ne ovat Efectessä. Jos haluat poistaa attribuuttiarvoja Efectestä, jätä XML:n value-elementti tyhjäksi ja käytä removeEmptyValues-parametria.
Huomaa, että integrointitarkoituksiin hyvä tapa käsitellä tuontia on tuoda vain yksi datakortti kerrallaan ja pitää liikenne kohtuullisella tasolla seuraavista syistä:
- Virheiden tarkastus on helpompaa, tällä tavoin tuonnin virheelliset yksiköt voidaan tunnistaa heti.
- Suurien tietokorttien tuonti voi aiheuttaa aikakatkaisuja.
HTTP-parametrit
Tässä on luettelo mahdollisista HTTP-parametreista, joita voidaan käyttää (DataCardImport-palvelun HTTP-parametrit):
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
päivitäTietokortit |
|
{tosi, epätosi} |
totta |
Päivitetäänkö täsmätyt datakortit |
createDataCards |
|
{tosi, epätosi} |
totta |
Luodaanko yhteensopimattomia datakortteja? |
luoStaticAttribuutit |
|
{tosi, epätosi} |
väärä |
Luodaanko uusia staattisia arvoja |
luoTyhjätViitteet |
|
{tosi, epätosi} |
väärä |
Luodaanko täsmäämättömät viitteet tyhjinä datakortteina? |
OhitaUniqueCheck |
|
{tosi, epätosi} |
väärä |
Ohitetaanko datakorttien kenttien yksilöllisyystarkistukset? |
rajoitettuPäivitysKansionId |
|
Efecten datakorttikansion voimassa oleva tunniste |
|
Määrittää kansion, johon datakortin päivitykset on rajoitettu. Tätä parametria voidaan lisätä useita kertoja. restrictUpdateToFolderCode-parametrin käyttö ei ole sallittua, kun restrictUpdateToFolderId on käytössä. |
rajoitettuPäivitysKansioonKoodi |
|
Efecten datakorttikansion voimassa oleva koodi |
|
Määrittää kansion, johon datakortin päivitykset on rajoitettu. Tätä parametria voidaan lisätä useita kertoja. restrictUpdateToFolderId-parametrin käyttö ei ole sallittua, kun restrictUpdateToFolderCo-parametri on käytössä. |
kansiotunnus |
Kyllä* |
Efecten datakorttikansion voimassa oleva tunniste |
|
Asettaa kansion ja folderId:n, johon uudet tuodut datakortit luodaan. |
kansiokoodi |
Kyllä* |
Efecten datakorttikansion voimassa oleva koodi |
|
Määrittää kansion folderCode-arvolla, johon uudet tuodut datakortit luodaan. |
poistaTyhjätArvot |
|
{tosi, epätosi} |
väärä |
Jos arvoksi on asetettu true, Efecte poistaa datakorttiarvot, jotka on merkitty XML:ssä tyhjällä arvoelementillä. |
versio |
|
Mitä DataCardImport-palvelun versiota tulisi käyttää vastauksessa |
|
Jos arvo on ”1.1”, palautetun XML:n juurielementti on aina <response>, eli käytetään tiedostoa web-api-import-response-1_1.xsd. Muussa tapauksessa käytetään tiedostoa web-api-import-response.xsd (juurielementti on <entity-import-report> tai <error>). |
* Parametreihin on sisällytettävä joko folderId tai folderCode
Virheet DataCardImportissa
Yleisesti ottaen, jos jokin pakollisista parametreista (lueteltu taulukossa 7) puuttuu tai sisältää virheellisiä arvoja, palautetaan Web API -virhe. Tämä pätee myös Web API todennus- ja valtuutusvirheisiin. (Lisätietoja Web API -virheistä on luvussa 5 Web API -virheet.)
Jos joidenkin datakorttien tuonnin aikana kuitenkin tapahtuu jotain muuta vikaa (esim. tuotujen korttien malli on konfiguroitu väärin), DataCardImport-palvelu palauttaa
Tuotavien arvojen tulee olla <value>-elementin sisällä. Jos arvoja tuodaan <reference>-elementtien sisällä, se luo virheellisiä viittauksia itse datakorttiin. Jos viittauksia tarvitaan, varmista, että web API käyttäjällä on pääsy viittaamaasi mallipohjaan, muuten viittausta ei luoda. Viittausten on oltava kohdistettuina mallipohjan ensisijaiseen arvoon.
Esimerkki pyynnöstä ja vastauksesta
Pyytää
Palvelu: dataCardImport.ws
URL-esimerkki:
https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_management
Viestin runko:
<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>Vastaus
<?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>Poista palvelu
Poistaakseen olemassa olevan datakortin Efectestä käyttäjän on käynnistettävä poistopalvelu. Palvelu voi poistaa datakortteja kahden eri kriteerin perusteella:
- Sisäisen datakortin tunnus (yksikkötunnus).
- Hakukysely; kyselyä vastaavat datakortit poistetaan.
HTTP-parametrit
Poista palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
tunnukset |
Kyllä* |
|
|
Pilkuilla erotettu luettelo sisäisten datakorttien (yksiköiden) tunnuksista, jotka tunnistavat poistettavat datakortit |
kysely |
Kyllä* |
|
|
EQL kysely, joka määrittää poistettavat datakortit. Kyselyn on oltava sellainen, että Search-verkkopalvelulle annettuna se palauttaisi tiedot Efecte-datakorttien XML (entiteettien XML) -muodossa, eli kyselyn on oltava muotoa "select entity from entity [...]". |
käytäRoskakoria |
|
{tosi, epätosi} |
väärä |
Oletusarvoisesti datakortit poistetaan pysyvästi; toisin sanoen niitä ei vain siirretä roskakoriin. Tämän parametrin asettaminen arvoon "true" tarkoittaa, että roskakoria käytetään samalla tavalla kuin datakorttien poistamisessa normaalisti Efecten web-käyttöliittymän kautta. Tässä tilassa datakortit poistetaan pysyvästi vain, jos ne olivat jo roskakorissa. |
* Jompikumpi kahdesta parametrista (ids, query) on pakollinen. Parametrit käsitellään tässä järjestyksessä, ja vain yksi otetaan huomioon palvelun yhdellä kutsukerralla. Jos sekä ids- että query-parametrit on määritetty, palvelu jättää query-parametrin huomiotta ja yrittää poistaa datakortteja vain ids-parametrin perusteella.
Esimerkki pyynnöstä ja vastauksesta, datakortin ja yksikkötunnuksen poistaminen
Pyytää
Palvelu: delete.ws
URL-esimerkki:
https://localhost:8080/esm/delete.ws?ids=15021
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-delete-report>
<successful-deletions count="1"/>
<failed-deletions count="0"/>
</entity-delete-report>Esimerkki pyynnöstä ja vastauksesta, datakortin poistaminen EQL llä
Pyytää
Palvelu: delete.ws
EQL : SELECT $efecte_id$, $subject$, $status$ FROM entity WHERE entity.template.code = 'tapaus' AND $efecte_id$='INC-000270'
URL-esimerkki:
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'
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<entity-delete-report>
<successful-deletions count="1"/>
<failed-deletions count="0"/>
</entity-delete-report>Hakupalvelu
Datakorttien hakemiseen Efecte tarjoaa dataCardSearch-verkkopalvelun, joka vastaanottaa EQL (Efecte Query Language) -kyselyn ja palauttaa tulokset XML-muodossa. Lisätietoja EQL -kyselyiden muodostamisesta on luvussa 2.
Hakupalvelun palauttama XML on jossakin seuraavista kolmesta muodosta:
- Entiteetti-XML
- XML-malli
- "Yleinen" XML
Entity XML ja Template XML on kuvattu Efecte XML Schema Description -dokumentissa . "Yleinen" XML-muoto on kuvattu esimerkkien avulla alla. Huomaa, että yleinen muoto voi sisältää kokonaisia Entity XML- ja Template XML -esiintymiä EQL kyselystä riippuen.
Päivämääräarvot palautetaan aina muodossa vvvv-KK-pp HH:mm:ss z ISO 8601 -standardin mukaisesti. Huomaa, että aikavyöhykkeen nimi lisätään loppuun. Käytetty aikavyöhyke on aina JVM:n tai tietokannan oletusaikavyöhyke. Huomaa, että jos ”useiden aikavyöhykkeiden tuki” on käytössä, tämä voi poiketa Entity XML:stä, jossa päivämäärä- ja aika-arvot säädetään web-palvelun käyttäjän aikavyöhykeasetuksen mukaan.
Desimaaliluvuissa käytetään desimaalierottimena pistettä (.). Vastauksen XML:ssä käytetty merkistökoodaus riippuu webservice.response.encoding -kehyksen ominaisuudesta. Oletuskoodaus on UTF-8.
Jos poistettuja tai piilotettuja datakortteja ei tarvitse näyttää, käytä kyselyparametrissa entity.deleted=0 tai entity.hidden=0 .
Yleinen tulos XML
Mahdollisia tietotyyppielementtejä yleisille hakutuloksille:
Elementti |
Muistiinpanoja |
<päivämäärä> |
Käytetty kuvio on aina vvvv-KK-pp HH:mm:ss z. |
<desimaali> |
Desimaaliluvut; desimaalierotin on aina "." (piste) |
<kokonaisluku> |
Kokonaisluvut |
<merkkijono> |
Monet Efecte-tietotyypit (ei vain "teksti" ja "merkkijono", vaan myös "ulkoiset viittaukset" jne.) tulostetaan merkkijonona |
<tyhjä> |
Null-arvot ovat erikoistapaus. Esimerkiksi merkkijonoattribuutti, jolla on null-arvo, ei näy muodossa <string></string> tai <string>null</string>, vaan yksinkertaisesti muodossa <null/>. |
HTTP-parametrit
Hakupalvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
kysely |
Kyllä |
Mikä tahansa kelvollinen EQL kysely |
|
Määrittää hakukyselyn. Lisätietoja on luvussa 2. |
attribuuttikoodit |
|
Mikä tahansa kelvollinen attribuuttikoodi mallista |
|
Palauttaa vain annetut mallineen attribuuttikoodit |
Esimerkki pyynnöstä ja vastauksesta, palauttaa vain entiteettien nimet
Yksinkertaiseen EQL kyselyyn vastauksena palautetaan dokumentti, joka koostuu <string>-arvoista suoraan <result>-elementin alapuolella.
Pyytää
Palvelu: search.ws
EQL : SELECT entity.name FROM entity WHERE entity.folder.name = 'Tapahtumien hallinta'
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20entity.name%20from%20entity%20where%20entity.folder.name%20%3D%20'Tapahtumahallinta'
Vastaus
<?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>Esimerkki pyynnöstä ja vastauksesta, mallineen attribuuttikoodien avulla
Kun valitset useita kenttiä, tulokset ryhmitellään seuraavasti:
Pyytää
Palvelu: search.ws
EQL : SELECT $efecte_id$, $subject$, $status$ FROM entity WHERE entity.template.code = 'tapaus'
URL-esimerkki:
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'
Vastaus
<?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>Esimerkki pyynnöstä ja vastauksesta, palautuskansion nimi ja viitetietojen kohde
Tässä tapauksessa yleinen XML-tulos sisältää siihen "upotettuina" kokonaiset Entity XML -dokumentit sekä yksinkertaiset <string>-arvot:
Pyytää
Palvelu: search.ws
EQL : SELECT entity.folder.name, entity.referenceData.target FROM entity WHERE entity.templateId = 2597
URL-esimerkki:
https://localhost:8080/esm/search.ws?query= select%20entity.folder.name%2C%20entity.referenceData.target%20from%20entity%20where%20entity.templateId%20%3D%202597
Vastaus
<?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>Esimerkki pyynnöstä ja vastauksesta, palauta annetut attribuutit käyttämällä attribuuttikoodeja
attrbuteCodes määrittää, mitkä attribuutit palautetaan vastausviestissä. Tällä tavoin web- API ei palauta attribuutteja, joita käyttäjä ei tarvitse.
Pyytää
Palvelu: search.ws
EQL : SELECT entiteetti FROM entiteetti WHERE template.code='workstation'
Attribuuttikoodit: efecte_id, työaseman_malli, tila
URL-esimerkki:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,workstation_model,status&query=select%20entity%20from%20entity%20where%20template.code%20%3D%20'workstation'
Vastaus
<?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-palvelu
Tiedostometatietopalvelua käytetään hakemaan tietoja datakorttiin liitetyistä tiedostoliitteistä. Jos datakortti sisältää useita liitteitä sisältäviä kenttiä, kaikkien liitteiden tiedot palautetaan samanaikaisesti. Tämä tekee API vähemmän yksityiskohtainen.
Efecte 4.2:sta lähtien metatietopalvelu palauttaa kullekin liitteelle nimen lisäksi myös näyttönimen. Nimi on sisäinen tiedostonimi (esim. ”20180717_1.xml”), jota käytetään tunnisteena tehtäessä pyyntöjä tiedostojen latauspalvelulle (katso seuraava osio). Näyttönimi on liitetiedoston alkuperäinen nimi, joka on yleensä helpommin luettava (esim. ”readme.txt”).
HTTP-parametrit
FileMetaData-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
entiteettitunnus |
Kyllä |
Järjestelmän minkä tahansa datakortin tunnus, siis kokonaisluku |
|
Määrittää datakortin, jonka tiedostometatiedot noudetaan. |
Esimerkki pyynnöstä ja vastauksesta
Pyytää
Palvelu: fileMetadata.ws
URL-esimerkki:
https://localhost:8080/esm/fileMetadata.ws?entityId=15048
Vastaus
<?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>Tiedostojen latauspalvelu
Tiedostonlatauspalvelua käytetään Efectessä oleviin datakortteihin liitettyjen tiedostojen lataamiseen. Tiedostot palautetaan HTTP-vastauksessa.
Asiakkaan tulisi aina ensin tarkistaa vastauksen HTTP-statuskoodi. Vastauksen runko voidaan tulkita pyydetyksi tiedostoksi vain, kun statuskoodi on ”200 OK”. Muita palvelun tyypillisesti asettamia statuskoodeja ovat:
- 400 Virheellinen pyyntö – Jos jotkin pakollisista parametreista puuttuvat.
- 403 Kielletty – Jos verkkopalvelun käyttäjällä ei ole käyttöoikeuksia määritettyyn kohteeseen.
- Tietokortti tai attribuutti.
- 404 Ei löydy – Jos pyydettyä tiedostoa ei löydy.
Näissä virhetilanteissa HTTP-vastauksen runko on XML-virheilmoitus, jossa on tarkempia tietoja.
HTTP-parametrit
FileDownload-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
entiteettitunnus |
Kyllä |
Kokonaisluku |
|
Määrittää datakortin, johon pyydetty tiedosto on liitetty. |
attribuutin tunnus |
Kyllä |
Kokonaisluku |
|
Määrittää datakortin kentän, johon pyydetty tiedosto on liitetty. |
tiedostonimi |
Kyllä |
Jousi |
|
Määrittää pyydetyn tiedoston nimen. Tämä vastaa liitteen nimielementtiä (ei näyttönimeä), jonka metatietopalvelu palauttaa. |
Esimerkki pyynnöstä ja vastauksesta
Pyytää
Palvelu: tiedoston lataus.ws
URL-esimerkki:
https://localhost:8080/esm/fileDownload.ws?entityId=15048&attributeId=2696&fileName=20180717_1.xml
Vastaus
Tässä tapauksessa vastaus näyttää tietoja tiedostosta
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<item>
<title>Computer</title>
<price>1000</price>
<company>Customer</company>
</item>
<inventory>Tiedostonlatauspalvelu
Tiedoston lähetyspalvelua käytetään tiedostojen lataamiseen Efecte-datakortille. Tiedoston lähetyspalvelu jäsentää HTTP-pyyntöjä, jotka ovat RFC 1867:n "Form-based File Upload in HTML" -standardin mukaisia. Eli jos HTTP-pyyntö lähetetään POST-metodilla ja sisältötyypillä "multipart/form-data". Tarvittaessa on mahdollista lähettää useita tiedostoja kerralla.
Datakortti on luotava ennen kuin tiedosto voidaan ladata siihen! FileUpload-palvelu ei luo uutta datakorttia.
HTTP-parametrit
FileUpload-palvelun HTTP-parametrit:
Parametrin nimi |
Pakollinen |
Mahdolliset arvot |
Oletus |
Kuvaus |
entiteettitunnus |
Kyllä |
Kokonaisluku |
|
Määrittää datakortin, johon ladattu tiedosto liitetään. |
attribuutin tunnus |
Kyllä |
Kokonaisluku |
|
Määrittää datakortin kentän, johon ladattu tiedosto liitetään. |
toimintotyyppi |
|
Jousi |
|
”Lisää” tarkoittaa, että ladattu tiedosto lisätään muiden valitussa kentässä mahdollisesti jo olevien tiedostojen joukkoon. ”set” tarkoittaa, että ladattu tiedosto korvaa valitussa kentässä jo olevat tiedostot. Oletusarvoinen toiminto on ”set”. |
Esimerkki pyynnöstä ja vastauksesta
Pyytää
Palvelu: fileUpload.ws
URL-esimerkki:
https://localhost:8080/esm/fileUpload.ws?entityId=14938&attributeId=2696&operationType=set
Sisältötyyppi: moniosainen/lomakedata
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<attachment-upload-result>
<attachment>
<name>20180717_15.xml</name>
</attachment>
</attachment-upload-result>Vaiheittainen esimerkki datakortin luomisesta ja tiedoston lataamisesta siihen
Tämä vaiheittainen esimerkki näyttää kaikki tiedoston lataamiseen tyhjästä tarvittavat vaiheet. Tärkeimmät ominaisuudet on lihavoitu. Se koostuu seuraavista vaiheista:
- Datakortin tuonti (luonti).
- Tietokortin entityId-kysely.
- Tiedostoliiteattribuutin mallipohjien attribuutti-Id:n selvittäminen.
- Tiedostoa ladataan luotuun datakorttiin.
Ensimmäinen datakortti on luotava:
Pyytää
Palvelu: dataCardImport.ws
URL-esimerkki:
https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_management
Viestin runko:
<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>Vastaus
<?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>Ennen kuin tiedosto voidaan ladata, entityId- ja attributeId-tiedot on tiedettävä juuri luodun datakortin liitetiedostoille. Alla on kysely, jota voidaan käyttää entityId-arvon hakemiseen ja muiden tietojen validointiin:
Pyytää
Palvelu: search.ws
EQL : SELECT entity FROM entity WHERE template.code='incident' AND $created$>'NOW-1m' AND $created$<'NOW'
Attribuuttikoodit: efecte_id, tiedostoliitteet, tila, aihe, kuvaus, luotu
URL-esimerkki:
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'
Vastaus
<?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>AttributeId voidaan hakea esimerkiksi seuraavilla metodeilla:
Hallintasivun kautta valitsemalla oikean mallin ja muokkaamalla attribuuttia, jonka attribuutin tunnuksen tarvitsemme. Kun attribuutti avataan, id on viimeisen /-merkin jälkeiset numerot, esim.:
https://localhost:8080/esm/EfecteFrameset.do#/admin/templates/edit/2597/2680/2696
Hakupalvelun käyttäminen mallipohjan hakemiseen.
Kyselymallin kaava:
Pyytää
Palvelu: search.ws
EQL : SELECT template FROM template WHERE template.code='tapaus'
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20template%20from%20template%20where%20template.code='tapaus'
Vastaus
Vastauksesta meidän on löydettävä <attribute> , jossa <code> on liitetiedoston attribuutin attribuuttikoodi, ja tästä attribuutista haluamme saada <class-attribute-id> :n arvon, kuten:
…
<attribute>
<id>2695</id>
<class-attribute-id>2696</class-attribute-id>
<code>file_attachments</code>
<name>File attachments</name>
…Nyt kun meillä on entityId ja attributeId , voimme ladata tiedoston:
Pyytää
Palvelu: fileUpload.ws
URL-esimerkki:
https://localhost:8080/esm/fileUpload.ws?entityId=19221&attributeId=2696&operationType=set
Sisältötyyppi: moniosainen/lomakedata
Vastaus
<?xml version="1.0" encoding="utf-8"?>
<attachment-upload-result>
<attachment>
<name>20180904_1.xml</name>
</attachment>
</attachment-upload-result>Tietokortin kaavan hakeminen
Efecte-datakortin metatiedot eli tiedot siitä, mitä kenttiä se voi sisältää ja niiden ominaisuudet, ovat saatavilla dataCardSearch-verkkopalvelun kautta EQL -kyselyllä pohjiin. Tässä on esimerkki EQL -kyselystä, joka valitsee kaikki pohjat:
VALITSE mallipohja mallipohjasta
URL-esimerkki:
https://localhost:8080/esm/search.ws?query=select%20template%20from%20template%20where%20template.code='tapaus'
Turvallisuus
Salaus
HTTP-perustodennus lähettää tunnistetiedot selkokielisenä, joten HTTPS:n käyttö on olennaista.
Todennus
Efecte web API -palvelut todennetaan HTTP-perustodennuksella. Sinun on luotava Efectelle tunnistetiedot käyttääksesi web-palveluita. (Luo käyttöoikeuspuussa rooli, jolla on oikeudet käyttää Efecte Web API -palveluita, ja lisää yksi tai useampi käyttäjä kyseiseen rooliin.) Kaikki toiminnot suoritetaan todennetun Efecte-käyttäjän käyttöoikeuksilla. Nämä käyttöoikeudet määrittävät, mihin malleihin, määritteisiin ja kansioihin web-palvelun käyttäjä voi käyttää.
Root-käyttäjää ei tule käyttää Web API -käyttäjänä, koska hänellä on pääsy kaikkeen. Siksi rootin käyttö voi olla vaarallista. Web API -ongelmia tutkittaessa Web API -käyttäjän ylentäminen root-tasolle voi kuitenkin olla hyödyllistä vain sen tarkistamiseksi, onko käyttöoikeuksissa ongelmia vai johtuvatko ongelmat itse Web API -pyynnöstä.
Web API -käyttäjän luominen
- Luo rooli ja valitse Web API -tuotteen käyttöoikeudet.
- Lisää kansion käyttöoikeudet roolille.
- Lisää roolille mallipohjan käyttöoikeudet.
- Luo web API käyttäjä.
- Lisää käyttäjä aiemmin luotuun rooliin.
- Testaa, että pystyt suorittamaan halutut toiminnot web- API kautta. Voit tehdä tämän selaimessa komennolla /search.ws?query=select count(id) entiteetistä.
Table of Contents