ESM-kuuntelijan yleiskatsaus
Datakorttikuuntelijat Matrix42 Professional
Datakorttien kuuntelijat ovat mekanismi liiketoimintalogiikan toteuttamiseen Matrix42 Professional (ESM). Ne on suunniteltu reagoimaan tiettyihin tapahtumiin M42 Pro -malleissa, mikä mahdollistaa automatisoidut toiminnot määriteltyjen ehtojen perusteella. Kun mallilla on kuuntelija, kaikki luodut datakortit voivat käynnistää kuuntelijan tallennettaessa:

Suoritusjärjestys: katso artikkeli ” Pro tallentaminen M42 Pro ”.
Datakorttikuuntelijoiden määrittäminen
Datakorttikuuntelijat konfiguroidaan XML-tiedostoilla, jotka määrittelevät kuuntelijan ominaisuudet ja toimintatavat. Konfigurointiprosessiin kuuluu:
- XML-konfiguraation luominen : Kuuntelijan toiminta ja ehdot määritellään XML-tiedostossa. Tämä tiedosto määrittää, miten kuuntelija toimii datakortin tapahtumien kanssa.
- Tuonti M42 Pro -mallipohjaan : Kun XML-määritys on luotu, se on tuotava asiaankuuluvaan M42 Pro -mallipohjaan. Tämä vaihe aktivoi kuuntelijan mallipohjassa.
- Kuuntelijoiden järjestyksen muuttaminen : Esitallennukset suoritetaan ensin niiden peräkkäisessä järjestyksessä ja sen jälkeen tallennuksen jälkeiset tallennukset samalla tavalla. On merkitystä sillä, mitkä tallennukset suoritetaan ensin. Aseta esimerkiksi validointikuuntelijat ensimmäisiksi esitallennuksessa. Siirrä kuuntelijat vastaamaan oikeaa suoritusjärjestystä.
Kuuntelijat voidaan myös viedä osana M42 Pro yleistä XML-määritystä, mikä mahdollistaa helpon replikoinnin ja käyttöönoton eri ympäristöissä.
Kuuntelijan toiminnallisuus ja liipaisinasetukset
Jokainen M42 Pro -malli voi sisältää yhden tai useamman kuuntelijan. Kun malliin liittyvä datakortti tallennetaan, kaikki kyseiseen malliin rekisteröidyt kuuntelijat saavat ilmoituksen tapahtumasta.
Kuuntelijat on määritetty reagoimaan tiettyihin tapahtumiin niiden Trigger-asetusten perusteella, jotka voivat olla joko:
- Tallennusta edeltävä liipaisin : Kuuntelija aktivoituu ennen datakortin tallentamista. Se muokkaa vain lähdedatakorttia .
- Tallennuksen jälkeinen liipaisin : Kuuntelija aktivoituu datakortin tallennuksen jälkeen. Se muokkaa vain muita datakortteja.
- Ellei ole erityistä tarvetta muokata lähdedatakorttia ja tarkoituksella laukaista toinen tallennussykli sille. Esimerkkitilanne on tila-arvon vaihtaminen tiketissä kuuntelijan kanssa, mutta halutaan laukaista DataCardHiddenState- ja ValueChange-käsittelijät heijastamaan muutosta sitä tehtäessä.

Kun kuuntelija käynnistetään, se arvioi, pitäisikö sen reagoida tapahtumaan. Tämä päätös perustuu määriteltyihin lähdeehtoihin, jotka ovat kuuntelijan kokoonpanossa asetettuja kriteerejä. Lähdeehdot määrittävät, vastaako lähdedatakortti (eli tallennettu datakortti) kuuntelijan toiminnan edellyttämiä parametreja. Vastaavasti, jos haluat kohdistaa muutokset tiettyihin toisen mallin kohdedatakortteihin, toimintoketjuosan alussa olevat kohdeehdot määrittävät kohteen/kohteet.
- Useita kuuntelijoita : Yksi mallipohja voi tukea useita kuuntelijoita, joista jokainen reagoi eri laukaisimiin tai ehtoihin.
- Ehdollinen logiikka : Kuuntelijat reagoivat tapahtumiin vain, jos määritetyt ehdot täyttyvät, mikä mahdollistaa tarkan hallinnan siitä, milloin ja miten liiketoimintalogiikkaa sovelletaan.
Parhaat käytännöt
Ole varovainen seuraavien suhteen: Rakenteiden luominen, joissa päivität samaa datakorttia useita kertoja eri tallennuksen jälkeisillä kuuntelijoilla. Ristiriidat kuuntelijoiden ja muiden käsittelijäpohjaisten funktioiden välillä.
Yleistä
Kuuntelijan XML-tiedostoa voidaan kommentoida <!-- foobar --> -osiossa, mutta kommentit poistetaan, kun kuuntelija on tuotu M42 Pro (eli kuuntelijoiden kommentointi on hyödyllistä vain, jos kuuntelijan "päätiedot" on tallennettu jonnekin muualle).
- Voit lisätä useamman kuin yhden toimintoketjun
- Jos esimerkiksi sinun pitäisi koskettaa useita eri kohdepohjia datakortteihin tallennuksen jälkeisessä kuuntelijassa samojen lähdeehtojen perusteella
- Vältä syvien/monitasoisten yhdistettyjen JA-TAI-JA..-ehtojen käyttöä, jotta kuuntelijakoodi pysyy ymmärrettävämpänä. Yritä sen sijaan joko yksinkertaistaa ehtoja tai tehdä monimutkaisempi logiikka lausekekoodissa apuattribuutin avulla.
- Vihje: lausekkeen apuattribuutti voidaan asettaa moniarvoiseksi merkkijonoksi, jolloin yhteen apuattribuuttiin voidaan asettaa useita arvoja, joita kuuntelijat voivat käyttää eri triggereinä.
XML
- Perinteinen menetelmä liiketoimintalogiikan luomiseen / kenttäpohjattomien automaattisten toimintojen suorittamiseen tietyllä mallilla.
Konfiguroitu luomalla sopiva XML-konfiguraatio.- Kuuntelijat otetaan käyttöön tuomalla tämä XML M42 Pro -mallipohjaan.
- Kuuntelijat voidaan viedä osana M42 Pro määritys-XML-tiedostoa.
- Järjestyksen asettaminen on asia, jota kannattaa harkita.
- Ensin esitallennukset järjestyksessä ja sitten jälkitallennukset mallin mukaisessa järjestyksessä.
- Tallennusta edeltävät kuuntelijat:
- Suoritetaan ja tarkistetaan jokaisen datakortin tallennuksen yhteydessä kaikkien käsittelijöiden jälkeen paitsi AutoMailSenderin ja TargetDeleterin.
- Käytetään "tämän" mallin datakorteilla.
- Tallennuksen jälkeiset kuuntelijat:
- Yleensä käytetään muiden "tämän" mallin datakorttiin liittyvien mallien datakorteilla.
- Voi sisältää kohdeehtoja.
- Voi käynnistää sekvenssin uudelleen toisella mallilla.
- Kohdemallineen käsittelijät suoritetaan näiden jälkeen
Merkkijonodatan siirtäminen viitekenttään muutos- tai kopiointitoiminnolla ei välttämättä toimi.
- Perinteisesti sinun on syötettävä entityid, jos haluat linkittää tiettyyn datakorttiin.
- Viittauksen kopioimisen viittaukseen pitäisi toimia.
- Viittausten linkittäminen lausekkeisiin on useimmissa tapauksissa helpompaa, mutta esimerkiksi muunnoksia tehtäessä saatat joutua käyttämään kuuntelijoita viittausten tekemiseen jälkikäteen.
Ole varovainen seuraavien suhteen:
- Luodaan rakenteita, joissa päivitetään samaa datakorttia useita kertoja eri tallennuskuuntelijoilla.
- Ristiriidat kuuntelijoiden ja muiden käsittelijäpohjaisten funktioiden välillä.
- Juoksujärjestyksen päättäminen.
MUISTA : Sinun on päivitettävä tilastolliset päivämäärä- ja aikatunnisteet kuuntelijan avulla, jos suljet datakortteja datecheckerillä – kuuntelijan automatisoinnilla. Tämä menetelmä on aloittelijan tapa tehdä se epätäydellisesti ja kiinteästi koodatulla tavalla, joka ei ole pitkällä aikavälillä joustava. Huomaa, että tämä ei ole mahdollista tilanteessa, jossa sinun pitäisi luoda ValueChanges-muuttujia. Joustavampi, mutta monimutkaisempi tapa on käyttää tallennuksen jälkeistä käsittelyä ja sitten käynnistää asianmukaiset käsittelijät (jotka voivat sitten vaihdella kokoonpanonsa mukaan kuuntelijoiden luomisen jälkeen).
Kuuntelijan tuominen
Kun M42 Pro tuo kuuntelijan, se validoi XML:n sisällön ja rakenteen:
- Annettu virheilmoitus on usein tulkimaton, kuten ”XML ei voi olla tyhjä”.
- Tarkista, että olet sulkenut kaikki XML-tagit </> ja että kaikki attribuuttikoodit ovat oikein jne.
- Tarkista kuuntelijan dokumentaatio ja varmista, ettet yritä tehdä mahdottomia asioita, kuten vertailla tekstikenttiä tai ulkoisia viittauskenttiä.
- Yritä poistaa tai muokata epäilyttäviä komponentteja ja yritä ilman niitä.
Lokikirjauksen ja virheenkorjauksen käyttö
- Voit yrittää poimia lisätietoja avaamalla joitakin näistä luokista ajonaikaista lokikirjausta varten ja asettamalla DEBUG-tason, kun yrität tuoda XML:n.
- com.bitmount.equipment.action.TemplateListenerImport tarkista tämä useimmissa tapauksissa
- com.bitmount.equipment.importing.ValidatingEntityXMLImporter
- com.efecte.datamodel.entity.listener.importing.XMLActionChainImporter
- com.efecte.datamodel.entity.listener.importing.XMLDataCardListenerImporter
- com.efecte.datamodel.entity.listener.importing.XMLSourceConditionsImporter
- com.efecte.datamodel.entity.listener.importing.XMLTemplatesDataCardListenerImporter
- Muista asettaa lokitiedostot takaisin INFO-tasolle kuuntelijoiden korjaamisen jälkeen, muuten tuotat valtavia määriä lokitiedostoja!!
- Kuuntelijan tuonti onnistui, mutta se ei toimi halutulla tavalla.
- Tarkista ajonaikaiset lokit ja aseta DEBUG-taso, niin näet, mikä laukaisee ja mikä ei.
- Lähdeolosuhteet
- com.efecte.datamodel.entity.listener.condition.(?????)
- Kohdeolosuhteet
- com.efecte.datamodel.entity.action.chain.condition.(?????)
- Toiminnot
- com.efecte.datamodel.entity.action.implementations.(?????)
- (?????) = jokainen XML-komponentti
- Lähdeolosuhteet
- Muista asettaa lokitiedostot takaisin INFO-tasolle kuuntelijoiden korjaamisen jälkeen, muuten tuotat valtavia määriä lokitiedostoja!!
- Kuuntelijoiden alustan asetukset
- datacard.listeners.run.as.root
Lipun tilan muutos
Jos muutat tiketin tilan arvoa kuuntelijan avulla, kannattaa ottaa huomioon seuraavat asiat:
- Tilastojen aikaleimat päivittyvät vastaavasti
- Tilan ValueChange-historia päivittyy vastaavasti
- Datakortin piilotus/näkyvyys päivittyy tarvittaessa.
- Jos asetat kentän, jossa on tallennusta edeltävä kuuntelija, älä odota lausekkeen toimivan sen perusteella, ellet tee sitä kuuntelijan sisällä!
- Jos poistat kuuntelijaan liittyvän attribuutin, kuuntelija ei toimi.
- Kuuntelija on poistettava, jotta kokoonpano voidaan viedä
- Useimmissa tapauksissa ongelma voidaan korjata luomalla poistettu attribuutti uudelleen samalla attribuuttikoodilla.
GuiMuokkaa
GuiEdit-ehto ei toimi seuraavissa tilanteissa:
- ValueButton-käsittelijää napsautettiin katselutilassa
- TicketReservation-käsittelijää napsautettiin katselutilassa
- EntityStateMail lähetetty katselutilassa
- WorklogHandler-kommentti lisätty katselutilaan
Lisää aina GuiEdit, kun suoritat AlwaysFailDataCardAction-funktion, jotta integraatiomuokkaukset eivät esty ja että nämä ovat aina järjestyksessä ensimmäisinä kuuntelijoina.
- Hallintakäyttöliittymän kautta näet vain kuuntelijoiden nimet ja järjestyksen, ja sinun on vietävä koko kokoonpano XML-muodossa tutkiaksesi kuuntelijoiden todellisia toimintoja.
Kuuntelijajärjestys
Pidä kuuntelijat ajojärjestyksessä: Esitallennukset suoritetaan ensin ja sitten jälkitallennukset.
Nimeäminen
Käytä johdonmukaista nimeämiskäytäntöä!
- Harkitse niiden nimeämistä siististi ja informatiivisesti, esimerkiksi sisällyttämällä useimmat näistä:
- Tallenna ennen käyttöä tai tallenna jälkikäteen
- Tilausnumero
- Lyhyt kuvaus
- mitä se tekee
- mikä/miksi se laukaisee
- Jos useampi henkilö hallinnoi tai kehittää
- Muokkauspäivämäärä
- Ehkä jopa muokkaajan nimikirjaimet tai lyhenteet
Esimerkkejä:
- presave.Copy kehitystiimi, jos arvo on tyhjä ja palvelu valittu-09.10.2019-AA
- presave.SET Ratkaistu SLA_04052021_MK-tiedostossa
- postsave.4. Viitteiden asettaminen, jos saapuva sähköposti generoidaan - 04.05.2017
Kuuntelijat – Nykyinen arvo tosi vs. Nykyinen arvo epätosi
current_value false = Vanha / Edellinen arvo
current_value true = Uusi / Nykyinen arvo
<source_condition>
<value>
<attribute>
<code>status</code>
<current_value>false</current_value>
</attribute>
<operator>=</operator>
<compared_value>01 - New</compared_value>
</value>
</source_condition>
<source_condition>
<value>
<attribute>
<code>status</code>
<current_value>true</current_value>
</attribute>
<operator>=</operator>
<compared_value>02 - Solving</compared_value>
</value>
</source_condition>