ESM Listenerin elinkaari
Yleiskatsaus
Kuuntelijan elinkaaressa on kolme tai neljä vaihetta riippuen siitä, onko kyseessä pre save- vai post save -kuuntelija:
- Tietokortin tallennus: Kuuntelija laukeaa tietokorttia tallennettaessa.
- Lähde-ehtojen tarkistus: Lähde-ehdot tarkistetaan.
- Kohde-ehtojen tarkistus (vain post-save-kuuntelijoilla): Kohdetietokorttien joukko määritellään kohde-ehtojen perusteella. Tämä vaihe tapahtuu vain, jos kuuntelija on post save -kuuntelija.
-
Toimintojen suorittaminen: Yksi tai useampi toiminto suoritetaan kohdetietokortille.
- Pre save -kuuntelijan tapauksessa kohdetietokortti on niin sanottu "lähde"-tietokortti, joka "isännöi" kuuntelijaa.

Tietokortin tallennus
Kuuntelija laukeaa tietokorttia tallennettaessa.

Kuuntelijoiden laukaiseminen

Käsittelijöiden ja kuuntelijoiden suoritusjärjestys

Kuuntelijat, käsittelijät ja Visual Workflow Automation
- Workflow-toimintoja ei suoriteta viimeisenä pre-save-kuuntelijana. Se alkaa ensimmäisestä workflow-solmusta (tai viimeksi käsitellystä solmusta) ja käsittelee yhdellä suorituskerralla useita solmuja, kunnes se saapuu solmuun (kuten Timer tai Approval), joka ei salli sen jatkaa eteenpäin.
- Visual Workflow Automationin __initialization__ tapahtuu tallennussyklin pre-save-osan lopussa.
- Visual Workflow Automationin __Processing__ tapahtuu tallennussyklin post-save-osan lopussa.
Lähde-ehtojen tarkistus
Jokaisella kuuntelijalla on lähde-ehdot, jotka määrittävät, milloin kuuntelijan tulisi reagoida tapahtumaan. Ehto voisi esimerkiksi olla seuraavanlainen:
(attribute "state" old value != attribute "state" new value) && (attribute "state" new value == "closed")Ehdot voivat olla paljon monimutkaisempia "and"- ja "or"-operaattoreilla ja jopa sisäkkäisiä. Jos lähdetietokortti täsmää ehtoihin, suoritus etenee.

Pre-Save-kuuntelija

Post-Save-kuuntelija

AND-esimerkki

OR-esimerkki

Yhdistetty lähde-ehto (Combined SC)

Toteutetut lähde-ehdot
| Nimi | Kuvaus |
|---|---|
| CombinedSourceCondition | Yhdistää ehtoja (jotka voivat myös olla CombinedSourceConditioneja) AND- tai OR-operaattoreilla. XML:ssä uloin source_conditions-elementti on itsessään CombinedSourceCondition. |
| AlwaysTrueSourceCondition | Aina tosi, eli tietokortti täsmää aina tämän ehdon kanssa. |
| EntitySourceCondition |
|
| FolderSourceCondition | Onko tietokortti tietyssä kansiossa vai jossain toisessa (operator !=). |
| GuiEditSourceCondition | Tosi, kun lähdetietokorttia muokataan ESM-käyttöliittymästä. |
| NewDataCardSourceCondition | Ollaanko tallentamassa uutta tietokorttia: kyllä vai ei |
| PropertySourceCondition | Vertaa jotakin tietokortin kenttää (attribuuttia) ennen tallennusta tai sen jälkeen (current_value true tai false) toiseen kentän arvoon ennen tallennusta tai sen jälkeen jollakin operaattorilla. Tuetut operaattorit riippuvat tietotyypistä. |
| ValueSourceCondition | Vertaa jotakin kenttää (attribuuttia) ennen tallennusta tai sen jälkeen (current_value true tai false) johonkin vakioarvoon jollakin operaattorilla. Tuetut operaattorit riippuvat tietotyypistä, esim. viittausta ei voi verrata vakioon (kuten tietokortin id:hen tai nimeen). |
| ReferencePathValueSourceCondition | Vertaa jotakin viittauspolusta ($code1:code2:code3$) löytyvää arvoa ennen tallennusta tai sen jälkeen (current_value true tai false) johonkin vakioarvoon jollakin operaattorilla. Tuetut operaattorit riippuvat tietotyypistä. |
| ReferencePathPropertySourceCondition |
Tällä lähde-ehdolla voidaan verrata kahden sellaisen attribuutin arvoja, joista toinen tai molemmat voivat olla viittauksia. Näistä ensimmäinen voi olla viittaus paikalliseen (ei-viittaus) attribuuttiin, mutta toisen on oltava jonkin viitatun tietokortin attribuutti. Molemmilla attribuuteilla on oltava sama tietotyyppi.
Monikkoarvoiset attribuutit ja ehdon täsmäys:
|
Katso lisää esimerkkejä lähde-ehdoista tiedostosta SourceConditionExamples.xml:

Kohde-ehtojen tarkistus
Kohde-ehdot ovat samankaltaisia kuin ESM-käyttöliittymän hakuehdot. Kuuntelijan toiminnot suoritetaan tietokorteille, jotka täsmäävät ehtoihin. Huomaa, että lähdetietokortti tulisi sulkea pois näillä ehdoilla.
Esimerkki kohde-ehdosta voisi olla seuraava:
(template == "ticket") && (reference attribute "caused by" target == source data card) && (attribute "state" value == "open")



Huomio:
Jos kuuntelijan suorituksen aikana havaitaan mahdollinen ääretön silmukka → kuuntelijan suoritus päättyy ja näytetään virhe.
Esimerkiksi, jos kuuntelija A muokkaa tietokorttia B, se laukaisee kuuntelijan B, ja kuuntelija B muokkaa tietokorttia A.
Toteutetut kohde-ehdot
| Nimi | Kuvaus |
|---|---|
| CombinedTargetCondition | Yhdistää useita ehtoja (jotka voivat myös olla itsessään CombinedTargetConditioneja) yhdeksi AND- tai OR-operaattoreilla. |
|
ValueTargetCondition
|
Vertaa tietokortin attribuutin arvoa johonkin vakioon jollakin operaattorilla. Tuetut operaattorit riippuvat tietotyypistä, esimerkiksi viittauksia ei voi verrata tietokortin nimeen tai id:hen. Poikkeuksena on viittaus lähteeseen tai viittaus lähteestä (määritetään attribuutin koodilla). |
| PropertyTargetCondition | Vertaa tietokortin attribuutin arvoa johonkin toiseen attribuutin arvoon jollakin operaattorilla. Tuetut operaattorit riippuvat käytetyistä tietotyypeistä. |
| SourcePropertyTargetCondition | Vertaa kohdetietokortin attribuutin arvoa lähdetietokortin attribuutin arvoon jollakin operaattorilla. Tuetut operaattorit riippuvat käytetyistä tietotyypeistä. |
| EntityTargetCondition |
|
| SpecialTargetCondition |
Tällä ehdolla voidaan määrittää/tarkistaa seuraavat ominaisuudet:
|
Katso esimerkkejä kohde-ehdoista tiedostosta TargetConditionExamples.xml:

Toimintojen suorittaminen
Yksi tai useampi toiminto suoritetaan kohdetietokortille. Pre save -kuuntelijan tapauksessa kohdetietokortti on niin sanottu "lähde"-tietokortti, joka "isännöi" kuuntelijaa.

Toteutetut toiminnot
| Nimi | Pre save | Post Save | Kuvaus |
|---|---|---|---|
| AlwaysFailDataCard (Action) | Kyllä | Ei | Estää tietokortin tallentamisen. |
| ChangeDataCardValues | Kyllä | Kyllä | Asettaa arvon kenttään. |
| CopyDataCardValues | Kyllä | Kyllä | Kopioi arvon lähdetietokortista toisen attribuutin arvoksi tai kohdetietokortin attribuutin arvoksi. Voi kopioida myös viittausten takana olevia arvoja. Jos monikkoarvoinen, olemassa olevat arvot KORVATAAN. Monikkoarvot toimivat vain isäntätietokortilla, ei viittausten takana. |
| CopySourceReference | Kyllä | Ei | Luo viittauksen kohdetietokorteista lähdetietokorttiin. |
| CreateDataCard | Ei | Kyllä | Luo uuden tietokortin määritetyn mallin perusteella määritettyyn kansioon. Voi valinnaisesti lisätä viittauksia luojan ja luotujen tietokorttien välille sekä asettaa attribuuttien arvoja luotuun korttiin. Erikoistapauksena voi lisätä ajan, jolloin muokkaus Efecte-käyttöliittymässä aloitettiin |
| EntityDataCard | Kyllä | Ei | Siirtää tietokortin roskakoriin, palauttaa sen roskakorista, poistaa sen pysyvästi, piilottaa tai tekee tietokortin näkyväksi. |
| Expression(Action) | Kyllä | Kyllä | Suorittaa määritetyn Python-skriptin kohdetietokorteille. |
| FolderDataCard | Kyllä | Kyllä | Siirtää tietokortin tiettyyn kansioon. |
| SaveDataCard | Ei | Kyllä | Tallentaa tietokortin. Tämä mahdollistaa uusien arvojen laskemisen attribuuteille, joissa on käsittelijä (esim. ExpressionHandler tai vastaava). |
| SaveDataCardXmlToFile | Ei | Kyllä | Tallentaa tietokortin XML-muodossa määritettyyn tiedostoon ja kansioon. Huomaa, että tämä toiminto vaikuttaa vain tallennettavaan lähdetietokorttiin. Jos tiedosto on jo olemassa, se korvataan (tiedosto poistetaan ennen uuden tiedoston kirjoittamista). Toiminto yrittää ensin kirjoittaa XML:n väliaikaiseen tiedostoon ja nimeää sen sitten uudelleen määritetyksi tiedostoksi. Tällä estetään se, että kukaan lukisi tulostiedostoa ennen kuin se on kokonaan kirjoitettu. |
| SendDataCardXmlToWebService | Ei | Kyllä | HUOM: Nimessä ei ole "Action"-sanaa. Lähettää tietokortin XML-muodossa määritettyyn SOAP-verkkopalveluun. Huomaa, että tämä toiminto vaikuttaa vain tallennettavaan lähdetietokorttiin. |
| SendMailAction | Ei | Kyllä | Lähettää sähköpostia. |
| SendSourceChangedJMSMessage(Action) | Kyllä | Kyllä | Toiminto lähettää JMS-viestin jonoon, kun tietokortti tallennetaan. Viestin sisältö on koko tietokortti Efecte XML -muodossa. |
| TargetedSccmUpdate | Ei | Kyllä | Käynnistää kohdistetun SCCM-päivityksen. Käytetään vain yhdessä SccmIntegrationTaskin kanssa. |
| TransformDataCard | Ei | Kyllä | Toiminto muuntaa parhaillaan muokattavan tietokortin toiseksi tietokortiksi. Käyttää mallieditorin transformeissa määriteltyjä muunnossääntöjä ja kohdekansiota. |
| SendDataCardXmlToHttpAction | Ei | Kyllä | Lähettää tietokortin XML-muodossa valittuun verkkopalveluun. Huomaa, että tämä toiminto vaikuttaa vain tallennettavaan lähdetietokorttiin. |
Katso esimerkkejä kohde-ehdoista tiedostosta TargetConditionExamples.xml:

Table of Contents