ESM-konfiguraation kuvaus
Tässä dokumentissa kuvataan Efecte-alustan XML-skeemat. XML-skeemoja on kaksi:
- Skeema malleille, jotka määrittävät tietokortit.
- Skeema tietokorteille.
Tämä dokumentti on tarkoitettu Efecten käyttäjille ja integraatiotoimittajille, joiden on ymmärrettävä Efecten XML-skeemat.
Kommentit ja parannusehdotukset voi osoittaa seuraavaan osoitteeseen: servicedesk@efecte.com.
Tämä dokumentti on tarkoitettu Efecte-asiakkaiden tekniselle henkilöstölle, joka haluaa ymmärtää Efecten XML-skeemojen tarjoamat mahdollisuudet. Tilanteita, joissa Efecten XML-skeemoja tarvitaan, ovat esimerkiksi:
- Datan siirtäminen olemassa olevista järjestelmistä Efecteen.
- Efecten integroiminen olemassa oleviin tietojärjestelmiin.
- Efecte-datan päivittäminen Efecte Inspectorin keräämällä datalla.
Tässä dokumentissa käytetään seuraavia nimiä ja lyhenteitä:
Nimi |
Kuvaus |
Attribuutti |
Attribuutit ovat Efecten tietohierarkian pienimpiä tiedon rakennuspalikoita. Ne nimeävät tietokortin kentät ja määrittävät sallittujen tietotyyppien säännöt ja ominaisuudet. |
Luokka |
Mallia luodessa voit ryhmitellä yhdessä tyypillisesti esiintyviä attribuuttijoukkoja luokan alle, jotta voit käyttää ryhmää uudelleen myös muissa malleissa. |
Roikkuva viittaus |
Viittaus tietokortista toiseen tietokorttiin, joka ei sisällä mitään dataa. |
Tietokortti |
Tietokortti on paikka, johon tieto tallennetaan Efectessä ja josta se näytetään käyttäjille. Tietokortti perustuu malliin, joka määrittää tietokortin ulkoasun ja sallitun tietosisällön. |
Tietokortin kenttä |
Tietokortin kentät tallentavat osan tietokortin tiedoista. Tietokortin kenttä määritellään siihen liittyvällä attribuutilla. |
Upotettu viittaus |
Vanhempi–lapsi-suhde mallien ja siten niitä edustavien tietokorttien välillä. |
HMAC |
Sanoman todennus salauksellisen tiivistefunktion (MD5 tai SHA-1) avulla yhdessä jaetun salaisen avaimen kanssa. XML-tuonteja voidaan tehdä ulkoisista järjestelmistä HMAC:n avulla. |
Viittaus |
Viittaus on linkki attribuutista malliin tai malleihin tai ulkoiseen osoitteeseen. Tietokortilla viittaus näkyy linkkinä tietokortista toiseen tietokorttiin tai ulkoiseen osoitteeseen. |
Malli |
Malli koostuu luokista ja attribuuteista, jotka määrittävät esimerkiksi tietokorttien ulkoasun ja sallitun sisällön. |
XML |
XML tulee sanoista Extensible Markup Language. Se on tapa esittää hierarkkisesti jäsenneltyä dataa ihmisen luettavassa muodossa. |
Mallin määrittely
Mallit määrittävät Efecte-tuotteiden tietokorttien tietorakenteen. Mallit sisältävät luokkia, jotka toimivat attribuuttien säiliöinä. Attribuutit määrittävät tietokortin kenttien ominaisuudet, kuten tietotyypin ja sen, miten kyseinen tietotyyppi syötetään ja esitetään, eli syötteen ja tulosteen tyypin. Alla oleva kuva näyttää mallien ja tietokorttien välisen suhteen. Huomaa, ettei luokkien ja datan välillä ole näytettyä suhdetta, koska luokkia käytetään pääasiassa tulostedatan järjestämiseen. Luokkia voidaan käyttää myös datan jakamiseen mallien välillä – niitä ”ylikuormitetaan”, eikä niitä käytetä vain tulostedatan järjestämiseen

Katso Efecte Administration Manual -käsikirjasta lisätietoja mallirakenteesta. Seuraavien kappaleiden tarkoituksena on selittää Template XML -rajapinnan toimintaa. Mallirakenteen ymmärtäminen auttaa ymmärtämään paremmin varsinaista tietokortin XML-rajapintaa.
Template XML -vienti
Template XML -vienti voidaan tehdä Efecten selainpohjaisesta käyttöliittymästä tai Efecte Web API:n kautta. Syntyvä XML-tiedosto sisältää valitut mallit ja kaikki niiden ominaisuudet. Kun malleja kopioidaan eri Efecte-instanssien välillä, on tärkeää, että kaikki toisiinsa viittaavat mallit viedään yhdessä, jotta nämä viittaukset luodaan automaattisesti uudelleen, kun XML tuodaan toiseen Efecte-instanssiin.
Configuration Transport Tool (CTT) -työkalua voidaan käyttää avuksi mallien vienti- ja tuontiprosessissa. Huomaa, että se voi käsitellä vain yhtä mallia kerrallaan. Lisätietoja CTT:stä löytyy artikkelista Configuration Transport Tool .
Template XML -tuonti
Malleja voidaan tuoda Efecte-instanssiin Efecten selainpohjaisen käyttöliittymän kautta. Olemassa olevan mallihierarkiadatan synkronointia tai päivitystä ei tehdä, mikä tarkoittaa, että mallit luodaan uusina malli-instansseina, vaikka samoilla tunnistetiedoilla olisi jo olemassa malli. Tämä toiminta voi muuttua tulevissa Efecte-versioissa.
Tietokortin määrittely
Tietokortin XML-muotoa käytetään tietokorttidatan siirtämiseen Efecten ja ulkoisten järjestelmien välillä. Efecten verkkokäyttöliittymä ja Web API tarjoavat mahdollisuuden luoda uusia tietokortteja ja päivittää olemassa olevia. Seuraavat luvut selittävät ensin, miten tietokortin tuonti toimii, ja jatkavat sitten vientitoiminnon selittämisellä.
Tietokorttien tuonti
Tuonnin perusteet
Tuonnit kohdistuvat aina tiettyyn malliin. Esimerkiksi käyttäjien tuomiseksi ulkoisista järjestelmistä Efectessä on oltava olemassa käyttäjämalli. Tuonnin tuloksena joko luodaan uusia tietokortteja tai päivitetään olemassa olevia.
Malli määrittää tietokortin tietotyypit, joten tuotavat tietotyypit tulisi ottaa huomioon mallia luotaessa tietojen tuontia varten. Jos esimerkiksi käyttäjiä tuodaan ja ulkoinen käyttäjädata sisältää syntymäajan, Efecte-malli tulisi luoda niin, että siinä on myös vastaava päivämääräkenttä.
Tietokortin tuonti tukee kaikkia Efecte-alustan tukemia attribuuttityyppejä:
Tietotyyppi |
Datan muodon rajoitukset |
Merkkijono |
Enimmäispituus määritetään tiedostossa framework.properties. Oletusarvo on 450 merkkiä. Tietokannat tukevat eri pituuksia, joten jos merkkijonon pituutta kasvatetaan oletuksesta, tietokannan rajoitukset tulee ottaa huomioon. |
Numero |
Numeroa rajoittaa Javan integer-tyyppi: –2^31 – 2^31, sekä mahdolliset tietokannan rajoitukset. Yleensä tietokannat tukevat vähintään saman arvoalueen kuin Java-integer. |
Desimaaliluku |
Desimaaliluvun muoto määritetään tiedostossa framework.properties. Voit asettaa halutun tarkkuuden desimaaliluvuille. Java BigDecimal ja tietokannan lukualue määrittävät desimaalilukujen kelvollisen arvoalueen. |
Päivämäärä |
Päivämäärän syöttömuoto annetaan tiedostossa framework.properties. Jos alkuperäisessä datassa on eri muoto, joko alkuperäinen data on muunnettava noudattamaan Efecten muotoa, tai syötteen päivämäärämuoto on lisättävä Efecteen. Päivämäärän minimi- ja maksimiarvot voidaan määrittää framework.properties-tiedostossa, ja ne ovat myös tietokannasta riippuvaisia. |
Päivämäärä ja aika |
Päivämäärän ja ajan syöttömuoto annetaan tiedostossa framework.properties. Jos alkuperäisessä datassa on eri muoto, joko alkuperäinen data on muunnettava noudattamaan Efecten muotoa, tai syötteen muoto on lisättävä Efecteen. Päivämäärän minimi- ja maksimiarvot voidaan määrittää framework.properties-tiedostossa, ja ne ovat myös tietokannasta riippuvaisia. |
Teksti |
Tekstiä rajoittavat vain laitteistorajat (RAM ja kiintolevytila). |
Viittaukset |
Viittauksilla on samat rajoitukset kuin merkkijonoilla. |
Upotetut viittaukset |
Upotetuilla viittauksilla on samat rajoitukset kuin merkkijonoilla. |
Ulkoiset viittaukset |
Ulkoisilla viittauksilla on samat rajoitukset kuin merkkijonoilla. |
Ulkoista dataa voidaan tuoda mihin tahansa näistä tyypeistä, jos valitun tyypin validointi onnistuu. Validointi tarkistaa tyypin oikeellisuuden sekä muut mahdolliset rajoitteet, kuten yksilöllisyyden ja sen, onko arvo pakollinen.
Saapuvan tietokortin täsmääminen malliin
Saapuvan XML-datan oikea tietokorttityyppi – eli malli – määritetään mallikoodin avulla, jonka tulisi olla yksilöllinen Efecte-instanssin mallien joukossa. Vastaavasti tietokortin kentät täsmätään saapuvaan XML-dataan attribuuttikoodien avulla. Jos siis tuomme tietokoneiden tietokortteja Efecteen ja olemme käyttäneet tietokonemallille mallikoodia ”computer”, meidän on käytettävä samaa koodia saapuvan XML:n template-elementissä. Seuraava XML-ote näyttää template-elementin, joka saa XML-datan täsmäämään tietokoneen malliin perustuvaan tietokorttiin.
<template code="computer"/>
Saapuvan tietokortin täsmääminen olemassa olevaan
Jotta saapuva tietokortin XML voidaan täsmätä Efectessä olemassa olevaan tietokorttiin, on oltava olemassa tietokortin kenttä, joka on määritetty yksilölliseksi mallin attribuuttiasetuksissa. Efecten tuonti tulkitsee saapuvan datan mallin tietojen perusteella, ja kun yksilöllinen kenttä löytyy, Efecte yrittää täsmätä sen olemassa olevien tietokorttien dataan. Jos täsmäys löytyy, olemassa olevaa tietokorttia päivitetään.
Viittauskentät
Jos tuotavilla tietokorteilla on viittauskenttiä (määritetty mallihierarkian attribuutin tietotyyppiasetuksella), nämä viittaukset luodaan tuonnissa täsmäämällä XML:n attribuutti-elementin value-elementin data olemassa olevien Efecte-tietokorttien yksilöllisiin kenttäarvoihin. Jos meillä on helpdesk-tikettitietokortti, jolla on viittauskenttä asiakasmalliin, XML:ssämme voisi olla seuraavanlaisia rivejä oikean asiakkaan viittauksen luomiseksi.
<attribute code="job_client"> <value>job.client@company.com</value></attribute>
Jos asiakasmallin määrittelyssä on sähköpostikenttä, joka on määritetty yksilölliseksi, ja Efectessä on olemassa asiakkaan tietokortti, jolla on sama sähköpostiosoite kuin yllä olevassa XML:ssä, saisimme viittauksen tuodun tiketin ja olemassa olevan asiakkaan välille.
Roikkuvat viittaukset
Joskus tietokortti, joka viittaa toiseen tietokorttiin, tuodaan Efecteen ennen kuin se tietokortti, johon se viittaa, on tuotu. Tässä tapauksessa voidaan käyttää roikkuvien viittausten toimintoa viittauksen luomiseksi etukäteen. Efecte tekee tämän luomalla tyhjän tietokortin viitatun tietokortin paikalle. Kun varsinainen viitattu tietokortti tuodaan, se päivittää tyhjän tietokortin, ja lopputuloksena Efectessä on molemmat tietokortit sekä niiden välinen viittaus.
Upotetut viittaukset
Upotetut viittaukset on tarkoitettu vanhempi–lapsi-tietokorttirakenteiden luomiseen, joissa lapsitietokortin elinkaari riippuu vanhempikortista. Kun kortin vanhempikortti poistetaan, myös lapsi poistetaan. Mikään muu tietokortti ei myöskään voi viitata lapseen; se on kokonaan vanhempansa omistuksessa. Vanhempi–lapsi-tietokorttisuhteet voidaan tuoda Efecteen, mutta rajoituksella: vanhempi ja sen lapset on tuotava samassa XML-dokumentissa, ja niiden on käytettävä embeddedreference-elementtiä ilmaisemaan niiden välinen viittaus. Tässä esimerkki siitä, miltä upotettu viittaus näyttää XML-muodossa vanhempientiteetin sisällä:
<attribute code="embedded_display"> <embeddedreference id="559122" name="DISP0001"/></attribute>
Tämän jälkeen samassa XML:ssä olisi myös varsinainen upotettu tietokortti, jolla on täsmäävä id.
<entity id="559122" name="DISP0001">
Tietokortin muistiinpanot
Tietokortin muistiinpanoja voidaan luoda myös XML-tuontirajapinnan kautta. Tässä esimerkkiote XML:stä, joka näyttää yhden muistiinpanon:
<note creator="user_1" timestamp="21.01.2004 00:42" follow-references="false"> <name>Should this card be deleted?</name> <text><![CDATA[I think that this card could be removed from the system. Am I correct?]]></text></note>
Tietokortin tuontiesimerkki
Efecte Asset -tuotteessa on oletusmallivalikoimassa malli nimeltä Computer. Havainnollistamme nyt skenaarion, jossa uusi tietokone luodaan Efecteen XML-tuontirajapinnan kautta. Lyhyyden vuoksi XML on lyhennetty sisältämään vain muutaman tietokortin kentän. Tässä XML:
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity name="COMPUTER001">
<template code="computer"/>
<attribute code="software">
<value>ATI Display Driver</value>
<value>Java Web Start</value>
</attribute>
<attribute code="host_name">
<value>computer001</value>
</attribute>
</entity>
</entityset>Kuten XML:stä näkyy, tuotu tietokone sisältää kaksi kenttää: software ja host name. Tarvitsemme nyt vain sen, että Computer-mallimme koodi on ”computer” ja että näillä kahdella kentällä on täsmäävät koodit tietokonemallissa. Oletetaan, että host name on tietokoneiden tietokorttien yksilöllinen tunniste.
Computer-mallimme software-attribuutti on määritetty viittaukseksi Software-malliin. Tämä tarkoittaa, että meillä on erilliset tietokortit jokaiselle ohjelmistotyypille. Tuonnin aikana viittaukset luodaan täsmäämällä XML:n value-elementtien sisältö Efecte-instanssin yksilöllisiin kenttiin. Tämä tarkoittaa, että esimerkissämme meidän on täytynyt määrittää vähintään yksi attribuutti yksilölliseksi, ja kyseisen attribuutin määrittämien varsinaisten datakenttien tulisi sisältää ohjelmistojen nimet. Kuten luvussa 3.1.5 esiteltiin, voimme käyttää roikkuvan viittauksen tilaa ohjelmistokorttien luomiseen tietokonetuontien yhteydessä.
Tuontipyynnön lähettäminen
Tietokortin XML-tuontirajapintaan pääsee käsiksi muutamalla eri tavalla. Helpoin tapa suorittaa tuonteja on Efecten selainpohjaisen käyttöliittymän kautta. Dataa voidaan tuoda myös lähettämällä XML HTTP POST -pyyntönä määritettyyn Efecte-URL-osoitteeseen. Ulkoiselle ohjelmistolle on luotava sanoman todennuskoodi (HMAC), joka lähetetään parametrina HTTP-pyynnössä. Efecte tarjoaa tuontityökaluja, jotka auttavat tiivisteiden luomisessa ja ulkoisen datan muuntamisessa hyväksyttävään XML-muotoon.
Efecte 4.0 esitteli web API:n, joka on suositeltu tapa tuoda tietokortteja Efecteen. HMAC:n luontityökaluja ei tarvita, koska käytössä on HTTP BASIC -todennus; tarvitaan vain käyttäjätunnus ja salasana. On tärkeää käyttää web API:a HTTPS:n kautta, jotta luottamuksellista tietoa ei siirretä selkotekstinä.
Tietokorttien vienti
Tietokortteja voidaan viedä Efectestä XML-muodossa. Efecten hakutoimintoja voidaan käyttää määrittämään vietävien tietokorttien joukko. Liitteissä on esimerkki siitä, miltä viety tietokortin XML näyttää. Kuten huomaat, XML-muoto on melko samanlainen kuin tuontimuoto. Tietokortin XML-skeemassa on monia valinnaisia attribuutteja, koska tuontitilanteissa tarvitaan yleensä vain osa attribuuteista, kun taas vientimuodossa tarvitaan enemmän attribuutteja tietokortin muistiinpanojen, upotettujen viittausten ja vastaavien säilyttämiseksi.
Efecte Service Management Tool (ESM) tarjoaa kaksi eri API:a: Web API ja REST API (joka on korvaamassa edellisen), joita voidaan käyttää tietokorttien hakuun. Tämä mahdollistaa tietokorttitiedon saamisen ulos Efectestä.
Liitteet
Mallihierarkian kuvaus
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
Efecte Template hierarchy XML Schema Definition
$Revision: 19053 $
$Date: 2006-03-14 15:07:15 +0200 $
-->
<xs:element name="templateset">
<xs:complexType>
<xs:sequence>
<xs:element ref="template" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="template">
<xs:complexType>
<xs:sequence>
<xs:element ref="id" minOccurs="0" maxOccurs="1"/>
<xs:element ref="code" minOccurs="1" maxOccurs="1"/>
<xs:element ref="name" minOccurs="1" maxOccurs="1"/>
<xs:element ref="description" minOccurs="0" maxOccurs="1"/>
<xs:element ref="system-code" minOccurs="1" maxOccurs="1"/>
<xs:element ref="protected" minOccurs="1" maxOccurs="1"/>
<xs:element ref="reference-cascade" minOccurs="1" maxOccurs="1"/>
<xs:element ref="class" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="id" type="xs:string"/>
<xs:element name="code" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
<xs:element name="system-code" type="xs:string"/>
<xs:element name="protected" type="xs:boolean"/>
<xs:element name="reference-cascade" type="xs:boolean"/>
<xs:element name="class">
<xs:complexType>
<xs:sequence>
<xs:element ref="id" minOccurs="0" maxOccurs="1"/>
<xs:element ref="name" minOccurs="1" maxOccurs="1"/>
<xs:element ref="order" minOccurs="1" maxOccurs="1"/>
<xs:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="order" type="xs:nonNegativeInteger"/>
<xs:element name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element ref="id" minOccurs="0" maxOccurs="1"/>
<xs:element ref="code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="name" minOccurs="1" maxOccurs="1"/>
<xs:element ref="primary" minOccurs="0" maxOccurs="1"/>
<xs:element ref="datatype" minOccurs="1" maxOccurs="1"/>
<xs:element ref="references" minOccurs="0" maxOccurs="1"/>
<xs:element ref="description" minOccurs="0" maxOccurs="1"/>
<xs:element ref="default" minOccurs="0" maxOccurs="1"/>
<xs:element ref="multivalue" minOccurs="1" maxOccurs="1"/>
<xs:element ref="output-is-always-shown" minOccurs="1" maxOccurs="1"/>
<xs:element ref="static" minOccurs="1" maxOccurs="1"/>
<xs:element ref="static-values" minOccurs="0" maxOccurs="1"/>
<xs:element ref="hierarchy" minOccurs="1" maxOccurs="1"/>
<xs:element ref="hierarchy-leafs-only" minOccurs="1" maxOccurs="1"/>
<xs:element ref="special" minOccurs="1" maxOccurs="1"/>
<xs:element ref="expand-references-automatically" minOccurs="1" maxOccurs="1"/>
<xs:element ref="expand-complete-output-automatically" minOccurs="1" maxOccurs="1"/>
<xs:element ref="import-referenced-data-to-referrer" minOccurs="1" maxOccurs="1"/>
<xs:element ref="handler" minOccurs="0" maxOccurs="1"/>
<xs:element ref="header" minOccurs="0" maxOccurs="1"/>
<xs:element ref="footer" minOccurs="0" maxOccurs="1"/>
<xs:element ref="large-text" minOccurs="1" maxOccurs="1"/>
<xs:element ref="query-hidden" minOccurs="1" maxOccurs="1"/>
<xs:element ref="output-hidden" minOccurs="1" maxOccurs="1"/>
<xs:element ref="query-header-hidden" minOccurs="1" maxOccurs="1"/>
<xs:element ref="output-header-hidden" minOccurs="1" maxOccurs="1"/>
<xs:element ref="field-width" minOccurs="1" maxOccurs="1"/>
<xs:element ref="field-height" minOccurs="1" maxOccurs="1"/>
<xs:element ref="space-demand" minOccurs="1" maxOccurs="1"/>
<xs:element ref="order" minOccurs="1" maxOccurs="1"/>
<xs:element ref="selected" minOccurs="1" maxOccurs="1"/>
<xs:element ref="unique" minOccurs="1" maxOccurs="1"/>
<xs:element ref="required" minOccurs="1" maxOccurs="1"/>
<xs:element ref="protected" minOccurs="1" maxOccurs="1"/>
<xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="primary" type="xs:boolean"/>
<xs:element name="datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="date"/>
<xs:enumeration value="datetime"/>
<xs:enumeration value="embeddedreference"/>
<xs:enumeration value="externalreference"/>
<xs:enumeration value="float"/>
<xs:enumeration value="integer"/>
<xs:enumeration value="reference"/>
<xs:enumeration value="string"/>
<xs:enumeration value="text"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="references">
<xs:complexType>
<xs:sequence>
<xs:element name="reference" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="default" type="xs:string"/>
<xs:element name="multivalue" type="xs:boolean"/>
<xs:element name="output-is-always-shown" type="xs:boolean"/>
<xs:element name="static" type="xs:boolean"/>
<xs:element name="static-values">
<xs:complexType>
<xs:sequence>
<xs:element ref="static-value" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="static-value">
<xs:complexType>
<xs:sequence>
<xs:element ref="value" minoccurs="0" maxOccurs="1"/>
<xs:element ref="static-value" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="value" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="value" type="xs:string"/>
<xs:element name="hierarchy" type="xs:boolean"/>
<xs:element name="hierarchy-leafs-only" type="xs:boolean"/>
<xs:element name="special" type="xs:boolean"/>
<xs:element name="expand-references-automatically" type="xs:boolean"/>
<xs:element name="expand-complete-output-automatically" type="xs:boolean"/>
<xs:element name="import-referenced-data-to-referrer" type="xs:boolean"/>
<xs:element name="handler" type="xs:string"/>
<xs:element name="header" type="xs:string"/>
<xs:element name="footer" type="xs:string"/>
<xs:element name="large-text" type="xs:boolean"/>
<xs:element name="query-hidden" type="xs:boolean"/>
<xs:element name="output-hidden" type="xs:boolean"/>
<xs:element name="query-header-hidden" type="xs:boolean"/>
<xs:element name="output-header-hidden" type="xs:boolean"/>
<xs:element name="field-width" type="xs:nonNegativeInteger"/>
<xs:element name="field-height" type="xs:nonNegativeInteger"/>
<xs:element name="space-demand">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="selected" type="xs:boolean"/>
<xs:element name="unique" type="xs:boolean"/>
<xs:element name="required" type="xs:boolean"/>
<xs:element name="metadata">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>Template XML -esimerkki
<?xml version="1.0" encoding="UTF-8"?>
<templateset>
<template>
<id>171</id>
<code>client_contact</code>
<name>Contact</name>
<system-code>client</system-code>
<protected>false</protected>
<reference-cascade>false</reference-cascade>
<class>
<id>279</id>
<name>Contact information</name>
<order>0</order>
<attribute>
<code>contact_first_name</code>
<name>First name</name>
<datatype>string</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>false</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>1</field-height>
<space-demand>3</space-demand>
<order>100</order>
<selected>false</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
<attribute>
<name>Photo</name>
<datatype>externalreference</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>true</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<handler>com.bitmount.equipment.entitydatahandler.plugin.ImageHandler</handler>
<large-text>false</large-text>
<query-hidden>true</query-hidden>
<output-hidden>true</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>100</order>
<selected>false</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
<attribute>
<code>contact_last_name</code>
<name>Last name</name>
<datatype>string</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>false</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>1</field-height>
<space-demand>3</space-demand>
<order>200</order>
<selected>false</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
<attribute>
<code>contact_full_name</code>
<name>Full name</name>
<primary>true</primary>
<datatype>string</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>true</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<handler>com.bitmount.equipment.entitydatahandler.plugin.AttributeCombinerHandler</handler>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>1</field-height>
<space-demand>3</space-demand>
<order>300</order>
<selected>true</selected>
<unique>true</unique>
<required>false</required>
<protected>false</protected>
<metadata name="contact_first_name" value="20"/>
<metadata name="contact_last_name" value="10"/>
<metadata name="separator" value=","/>
</attribute>
<attribute>
<code>contact_company</code>
<name>Company</name>
<datatype>string</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>true</static>
<static-values>
<static-value>
<value>Company 1</value>
</static-value>
<static-value>
<value>Company 2</value>
</static-value>
</static-values>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>false</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>1</field-height>
<space-demand>1</space-demand>
<order>350</order>
<selected>false</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
<attribute>
<code>email</code>
<name>Email</name>
<datatype>string</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>false</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>1</field-height>
<space-demand>3</space-demand>
<order>400</order>
<selected>true</selected>
<unique>true</unique>
<required>true</required>
<protected>false</protected>
</attribute>
<attribute>
<code>contact_phone_number</code>
<name>Phone number</name>
<datatype>string</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>false</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>1</field-height>
<space-demand>1</space-demand>
<order>450</order>
<selected>false</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
<attribute>
<code>contact_address</code>
<name>Address</name>
<datatype>text</datatype>
<multivalue>false</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<special>false</special>
<expand-references-automatically>false</expand-references-automatically>
<expand-complete-output-automatically>false</expand-complete-output-automatically>
<import-referenced-data-to-referrer>false</import-referenced-data-to-referrer>
<large-text>false</large-text>
<query-hidden>false</query-hidden>
<output-hidden>false</output-hidden>
<query-header-hidden>false</query-header-hidden>
<output-header-hidden>false</output-header-hidden>
<field-width>25</field-width>
<field-height>4</field-height>
<space-demand>3</space-demand>
<order>600</order>
<selected>false</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
</class>
</template>
</templateset>Efecten tietokortin XML-skeema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="entityset">
<xs:complexType>
<xs:sequence>
<xs:element ref="entity" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- entity element contains the data for one card -->
<xs:element name="entity">
<xs:complexType>
<!-- entity element contains either scanner error or data elements -->
<xs:choice>
<xs:element ref="error" minOccurs="1" maxOccurs="1"/>
<xs:group ref="standardEntityElements"/>
</xs:choice>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="ip" type="xs:string" use="optional"/>
<!-- If card is marked as hidden, it is not defaultly shown in -->
<!-- Efecte UI. This mode is used for Efecte Help closed jobs -->
<xs:attribute name="hidden" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="error" type="xs:string"/>
<xs:group name="standardEntityElements">
<xs:sequence>
<xs:element ref="template" minOccurs="1" maxOccurs="1"/>
<xs:element ref="attribute" maxOccurs="unbounded"/>
<xs:element ref="note" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
<xs:element name="template">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="code" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element ref="header" minOccurs="0"/>
<xs:choice>
<xs:element ref="value" maxOccurs="unbounded"/>
<xs:element ref="reference" maxOccurs="unbounded"/>
<xs:element ref="embeddedreference" maxOccurs="unbounded"/>
<xs:element ref="externalreference" maxOccurs="unbounded"/>
</xs:choice>
<xs:element ref="footer" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="code" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="reference">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="name" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="embeddedreference">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="name" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="externalreference">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="location" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="header" type="xs:string"/>
<xs:element name="value" type="xs:string"/>
<xs:element name="footer" type="xs:string"/>
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element ref="name" minOccurs="1" maxOccurs="1"/>
<xs:element ref="text" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="creator" type="xs:string" use="required"/>
<xs:attribute name="timestamp" type="xs:string" use="optional"/>
<xs:attribute name="follow-references" type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="text" type="xs:string"/>
</xs:schema>Efecten tietokortin XML-esimerkki 1 (viety Efectestä)
<?xml version="1.0" encoding="ISO-8859-15"?>
<entityset>
<entity id="230626" name="Amarillion Amanda">
<template id="26" name="Contact" code="client"/>
<attribute id="1100" name="Last name" code="last_name">
<value>Amarillion</value>
</attribute>
<attribute id="1099" name="First name" code="first_name">
<value>Amanda</value>
</attribute>
<attribute id="1584" name="Company" code="company">
<reference id="230404" name="Customer Company"/>
</attribute>
<attribute id="1974" name="Title" code="title">
<value>Senior Manager</value>
</attribute>
<attribute id="1112" name="Email" code="email">
<value>amanda.amarillion@customercompany.com</value>
</attribute>
<attribute id="1101" name="Full name" code="full_name">
<value>Amarillion Amanda</value>
</attribute>
<attribute id="1201" name="ID" code="person_number">
<value>CLIENT10379</value>
</attribute>
<attribute id="1206" name="Direct phone" code="direct_phone">
<value>555 5555</value>
</attribute>
<attribute id="2194" name="Mobile phone" code="gsm">
<value>055 555 5555</value>
</attribute>
<attribute id="458456" name="Department" code="department">
<value>LEGAL</value>
</attribute>
</entity>
</entityset>
Efecten tietokortin XML-esimerkki 2 (Efecte Inspectorin palauttama)
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity name="COMPUTER001">
<template code="computer"/>
<attribute code="computer_name">
<value>COMPUTER001</value>
</attribute>
<attribute code="scanning_date">
<value>2004-05-21 14:22:27</value>
</attribute>
<attribute code="ram">
<value>1023</value>
<footer>MB</footer>
</attribute>
<attribute code="software">
<value>ArGoSoft Mail Server Pro</value>
<value>ATI Display Driver</value>
<value>BEA WebLogic Platform 8.1</value>
<value>F-Secure Anti-Virus for Windows NT Server</value>
<value>F-Secure BackWeb</value>
<value>F-Secure Management Agent</value>
<value>Internet Explorer Q831167</value>
<value>Java Web Start</value>
</attribute>
<attribute code="computer_product_serial">
<value></value>
</attribute>
<attribute code="bios_serial_number">
<value></value>
</attribute>
<attribute code="mother_board_serial_number">
<value>AZMV30807979</value>
</attribute>
<attribute code="display_adapter">
<value>Radeon 7000 / Radeon VE</value>
</attribute>
<attribute code="processor_count">
<value>1</value>
</attribute>
<attribute code="system_environment_variables">
<value>ComSpec=%SystemRoot%\system32\cmd.exe</value>
<value>NUMBER_OF_PROCESSORS=1</value>
<value>OS=Windows_NT</value>
<value>Os2LibPath=%SystemRoot%\system32\os2\dll;</value>
<value>PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH</value>
<value>PROCESSOR_ARCHITECTURE=x86</value>
<value>PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 7, GenuineIntel</value>
<value>PROCESSOR_LEVEL=15</value>
<value>PROCESSOR_REVISION=0207</value>
<value>Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Resource
Kit\</value>
<value>TEMP=%SystemRoot%\TEMP</value>
<value>TMP=%SystemRoot%\TEMP</value>
<value>windir=%SystemRoot%</value>
</attribute>
<attribute code="service">
<value>Alerter</value>
<value>F-Secure BackWeb</value>
<value>beasvc mydomain_myserver</value>
<value>Efecte Inspector Proxy</value>
<value>Background Intelligent Transfer Service</value>
<value>Computer Browser</value>
<value>Distributed File System</value>
<value>DHCP Client</value>
<value>Logical Disk Manager</value>
<value>DNS Server</value>
<value>DNS Client</value>
<value>Event Log</value>
<value>COM+ Event System</value>
<value>F-Secure Gatekeeper Handler Starter</value>
<value>F-Secure Network Request Broker</value>
<value>F-Secure Management Agent</value>
<value>Intersite Messaging</value>
<value>Kerberos Key Distribution Center</value>
<value>Server</value>
<value>Workstation</value>
<value>License Logging Service</value>
<value>TCP/IP NetBIOS Helper Service</value>
<value>Mercury</value>
<value>Messenger</value>
<value>Distributed Transaction Coordinator</value>
<value>Net Logon</value>
<value>Network Connections</value>
<value>File Replication Service</value>
<value>NT LM Security Support Provider</value>
<value>Removable Storage</value>
<value>Plug and Play</value>
<value>IPSEC Policy Agent</value>
<value>Protected Storage</value>
<value>Remote Access Auto Connection Manager</value>
<value>Remote Access Connection Manager</value>
<value>Efecte Remote</value>
<value>Remote Registry Service</value>
<value>Remote Procedure Call (RPC) Locator</value>
<value>Remote Procedure Call (RPC)</value>
<value>Security Accounts Manager</value>
<value>Task Scheduler</value>
<value>RunAs Service</value>
<value>System Event Notification</value>
<value>SoundMAX Agent Service</value>
<value>Print Spooler</value>
<value>Telephony</value>
<value>Terminal Services</value>
<value>Distributed Link Tracking Server</value>
<value>Distributed Link Tracking Client</value>
<value>Windows Time</value>
<value>Windows Management Instrumentation</value>
<value>Windows Management Instrumentation Driver Extensions</value>
<value>Automatic Updates</value>
<value>Efecte Inspector Agent</value>
</attribute>
<attribute code="windows_domain">
<value>TEST</value>
</attribute>
<attribute code="host_name">
<value>computer001</value>
</attribute>
<attribute code="domain">
<value>mydomain.com</value>
</attribute>
<attribute code="bios_date">
<value>10/25/02</value>
</attribute>
<attribute code="system_type">
<value>x86</value>
</attribute>
<attribute code="system_manufacturer">
<value>D850MV</value>
</attribute>
<attribute code="system_model">
<value>MV85010A</value>
</attribute>
<attribute code="hard_disk">
<value>Maxtor 6E040L0 (atapi)</value>
</attribute>
<attribute code="drive">
<value>C:\ 30.87 GB / 38.28 GB</value>
</attribute>
<attribute code="cdrom">
<value>HL-DT-ST DVD-ROM GDR8161B (atapi)</value>
</attribute>
<attribute code="drive_capacity">
<value>38.28</value>
<footer>GB</footer>
</attribute>
<attribute code="processor_speed">
<value>2407</value>
<footer>MHz</footer>
</attribute>
<attribute code="last_logged_user">
<value>Administrator</value>
</attribute>
<attribute code="os">
<value>Windows 2000 Server</value>
</attribute>
<attribute code="service_pack">
<value>Service Pack 4</value>
</attribute>
<attribute code="product_id">
<value>51876-335-7841125-05307</value>
</attribute>
<attribute code="ip_address">
<value>10.1.1.51</value>
<value>10.1.1.50</value>
</attribute>
<attribute code="ip_type">
<value>static</value>
</attribute>
<attribute code="default_gateway">
<value>10.1.1.1</value>
</attribute>
<attribute code="subnet_mask">
<value>255.255.255.0</value>
<value>255.255.255.0</value>
</attribute>
<attribute code="mac_address">
<value>00-04-75-C2-2F-51</value>
</attribute>
<attribute code="network_adapter">
<value>3Com EtherLink PCI</value>
</attribute>
<attribute code="fully_qualified_domain_name">
<value>computer001.mycompany.com</value>
</attribute>
<attribute code="processor_vendor">
<value>Intel</value>
</attribute>
<attribute code="processor_model">
<value>Intel(R) Pentium(R) 4 CPU 2.40GHz</value>
</attribute>
<attribute code="users">
<value>Administrator</value>
</attribute>
<attribute code="inspector_agent_version">
<value>2.0.20</value>
</attribute>
<attribute code="unique_id">
<value>c14a2a0f-b0d5-4019-bbb28018efef318b</value>
</attribute>
</entity>
</entityset>Table of Contents