Attribute Metadata - ReferenceSearchFilter
Attribute Metadata - ReferenceSearchFilter
ReferenceSearchFilter voi sisältää useita suodattimissa käytettäviä attribuutteja. Lisäksi käytettävissä on useampia hakuoperaattoreita. Yhdelle attribuutille voidaan määrittää useita suodattimia: yksi suodatin yhtä lähde-kohde-mallipohjaparia kohden. Kun yksi suodatin on tallennettu, näkyviin tulee uusi tyhjä suodatintekstialue, johon voi määrittää uuden suodattimen.
Tällä hetkellä ReferenceSearchFilter -toimintoa voi käyttää minkä tahansa reference-attribuutin kanssa, jonka handler ei muuta attribuutin oletusmuokkausnäkymää. Tämä tarkoittaa, ettei ReferenceSearchFilter toimi esimerkiksi CategoryDropDownReferenceHandlerin kanssa.
ReferenceSearchFilter -toiminnon konfigurointi tehdään attribuutin metatietoeditorissa EQL Editorilla. Editorilla luotu suodatin muunnetaan automaattisesti muotoon Efecte Query Language (EQL).
Esimerkki reference-hakusuodattimen konfiguroinnista EQL editorilla.

On erittäin suositeltavaa olla muokkaamatta EQL:ää käsin ja käyttää sen sijaan EQL Editoria. Tämä varmistaa, että lähde- ja kohdemallipohjan asetukset tulevat sovelletuiksi.
Jos mallipohjien koodeja päivitetään, lähde- ja kohdemallipohjan asetukset menetetään, ja suodatin täytyy määrittää uudelleen editorilla.
Attribuutin metatietoeditori, jossa näkyy esimerkki ReferenceSearchFilter-konfiguraatiosta. Metatiedon arvo on EQL-kysely, jonka EQL Editor on luonut.

Lähdemallipohjan konfigurointi
Kuten yllä havainnollistettiin, suodattimen konfiguraatio sisältää editorin, jolla valitaan suodattimen lähde- ja kohdemallipohjat, täsmäytysehdot sekä tulosten järjestys. Tätä editoria käytetään myös muiden toimintojen konfiguroinnissa, joten se on selitetty artikkelissa EQL Editor, lukuun ottamatta source template -kenttää, joka on ominainen vain reference-hakusuodattimelle.
Source template on olennainen, jos muokattava attribuutti on liitetty useaan mallipohjaan ja eri mallipohjille halutaan eri suodattimet. Suodatin voidaan asettaa kaikille attribuutin sisältäville lähdemallipohjille. All-arvoa voi käyttää myös silloin, kun reference-attribuutti on liitetty vain yhteen mallipohjaan. Samaa suodatinta ei kuitenkaan voi liittää vain osaan mahdollisista lähdemallipohjista. Tällaista käyttöä varten täytyy luoda useita suodattimia kaikille tarvittaville lähdemallipohjille.
Suodatetun reference-haun käyttäminen
Suodatin otetaan käyttöön automaattisesti, eivätkä loppukäyttäjät oletusarvoisesti voi poistaa sitä käytöstä. Pääkäyttäjä voi halutessaan sallia loppukäyttäjien poistaa suodattimen käytöstä tietyllä attribuutilla — katso alta Suodattimen poiskytkennän salliminen loppukäyttäjille.
Suodattimen poiskytkennän salliminen loppukäyttäjille

Tämä asetus tallennetaan tavallisena attribuutin metatietona (nimi showDisableFilterButton), joten jos olet jo attribuutin metatietoeditorissa konfiguroimassa itse hakusuodatinta, voit yhtä hyvin asettaa sen suoraan siellä kohdassa Other Properties sen sijaan, että vaihtaisit näkymää — kumpikin tapa kytkee painikkeen päälle.

Kun tämä on käytössä, loppukäyttäjät näkevät reference-kentän vieressä suodatinkuvakkeen, jota napsauttamalla he voivat poistaa suodattimen käytöstä kyseisessä haussa. Katso käyttöoppaan kohdasta "Adding References to Data Cards", miltä tämä näyttää loppukäyttäjän näkökulmasta.
Tämä toimii samalla tavalla sekä Classic UI:ssa että Agent UI:ssa — konfiguroit sen kerran, ja molemmat käyttöliittymät noudattavat sitä, vaikka itse kuvake näyttää hieman erilaiselta niiden välillä (katso yllä linkitetty käyttöoppaan kohta).
Ei-täsmäävät suodatusehdot voidaan ohittaa ?-merkillä
Ehdot voivat sisältää reference-polkuja, jotka eivät ole kelvollisia, jos osa polusta puuttuu tietokortin datasta. Tällaiset polut voidaan merkitä "ohitettaviksi" käyttämällä hakuehdossa ?-merkkiä.
Esimerkiksi:
select entity from entity
where $mid_category$ in #referrer:?ce_mid_category#
and $mid_category$ in #referrer:?ce_low_category:mid_category#
and template.code = 'top_category'exclude-
?ce_mid_category- jos ce_mid_category-kentässä ei ole arvoa, ehto ohitetaan -
?#referrer:?ce_low_category:mid_category- josce_low_category-kentässä ei ole arvoa, ehto ohitetaan
?-merkkien lisääminen edellyttää tekstikentän muokkaamista käsin. EQL editor ei vielä tue tätä ominaisuutta. Aloita kyselyn luominen EQL editorilla. Valitse Source - ja Target -mallipohjat. Muokkaa ehtojen rungot ja tallenna. Lisää ?-merkit käsin jälkikäteen tekstikenttään.
Tätä ominaisuutta voidaan käyttää korvaamaan Handler - CategoryDropdownReference, jolloin arvoja voi alkaa valita myös keskimmäisiltä tasoilta.
Katso esimerkkimallipohjan konfiguraatio:
Reference-hakusuodattimen esimerkki - luokittelu yhtä mallipohjaa käyttäen
Kategoriaominaisuus voidaan toteuttaa käyttäen vain yhtä Category-mallipohjaa. Tämä sopii käytettäväksi, kun kaikilla luokittelun tasoilla on sama data. Tietokorttieditorissa käyttäjä voi aloittaa arvojen valinnan miltä tasolta tahansa. Luokittelu on puurakenne: kategorialla voi olla useita alakategorioita, mutta vain yksi ylätaso.
Luokittelumallipohjalla on oltava 3 attribuuttia. Mallipohjan koodi on "single_category_template".
-
Name: String-tyyppinen -
Children: monivalintainen reference-attribuutti, joka on kiinnitetty samaan mallipohjaan. Koodi “children” -
Parent: yksiarvoinen referenceChildren-attribuuttiin. Koodi "parent"
Tätä luokittelutapaa käyttävällä mallipohjalla voi olla niin monta alakategoriaa kuin tarvitaan. Alla on esimerkki kolmitasoisesta kategoriasta. Kiinnitä huomiota attribuuttikoodeihin, jotka tarkoittavat luokittelutasoja "first", "second" ja "third".
Ylimmän tason kategoria-attribuutti viittaa Category-mallipohjaan. Koodi on "first". Suodatuksen metatieto on:
select entity from entity
where $children$ in #referrer:?second#
and $children$ in #referrer:?third:parent#
and $parent:parent$ is null
and $parent$ is null
and template.code = 'single_category_template'Toisen tason kategoria-attribuutti viittaa Category-mallipohjaan. Koodi on "second". Suodatuksen metatieto on:
select entity from entity
where $parent$ in #referrer:?first#
and $children$ in #referrer:?third#
and $parent$ is not null
and $parent:parent$ is null
and template.code = 'single_category_template'Kolmannen tason kategoria-attribuutti viittaa Category-mallipohjaan. Koodi on "third". Suodatuksen metatieto on:
select entity from entity
where $parent$ in #referrer:?first:children#
and $parent$ in #referrer:?second#
and $parent$ is not null
and $parent:parent$ is not null
and template.code = 'single_category_template'Reference-hakusuodattimen esimerkki - luokittelu useaa mallipohjaa käyttäen
<?xml version="1.0" encoding="utf-8"?>
<templateset>
<template>
<id>269</id>
<code>single_category_template</code>
<name>Single category</name>
<system-code>bso</system-code>
<protected>false</protected>
<metadata>
<name>allow_copy_data_cards</name>
<value>true</value>
</metadata>
<class>
<id>612</id>
<template-class-id>1154</template-class-id>
<name>Single category</name>
<order>0</order>
<collapsed>false</collapsed>
<attribute>
<id>2762</id>
<class-attribute-id>3208</class-attribute-id>
<code>name</code>
<name>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>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>100</order>
<selected>true</selected>
<unique>false</unique>
<required>true</required>
<protected>false</protected>
</attribute>
<attribute>
<id>2863</id>
<class-attribute-id>3209</class-attribute-id>
<code>parent</code>
<name>Parent category</name>
<datatype>reference</datatype>
<references>
<reference>269</reference>
</references>
<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>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>200</order>
<selected>true</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
<metadata>
<name>isAllowSameDataMultipleTimes</name>
<value>0</value>
</metadata>
<metadata>
<name>isReferenceShowSelected</name>
<value>0</value>
</metadata>
<metadata>
<name>reference_show_mode</name>
<value>ALL</value>
</metadata>
</attribute>
<attribute>
<id>2867</id>
<class-attribute-id>3214</class-attribute-id>
<code>children</code>
<name>Children</name>
<datatype>backreference</datatype>
<references>
<reference>269</reference>
</references>
<multivalue>true</multivalue>
<output-is-always-shown>false</output-is-always-shown>
<static>false</static>
<hierarchy>false</hierarchy>
<hierarchy-leafs-only>false</hierarchy-leafs-only>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>300</order>
<selected>true</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
<metadata>
<name>backreference_269_3214</name>
<value>269_3209</value>
</metadata>
<metadata>
<name>isAllowSameDataMultipleTimes</name>
<value>0</value>
</metadata>
<metadata>
<name>isReferenceShowSelected</name>
<value>0</value>
</metadata>
<metadata>
<name>reference_show_mode</name>
<value>ALL</value>
</metadata>
</attribute>
</class>
</template>
<template>
<id>268</id>
<code>single_category_template_example</code>
<name>Single category template example</name>
<system-code>bso</system-code>
<protected>false</protected>
<metadata>
<name>allow_copy_data_cards</name>
<value>true</value>
</metadata>
<class>
<id>613</id>
<template-class-id>1155</template-class-id>
<name>Single category</name>
<order>0</order>
<collapsed>false</collapsed>
<attribute>
<id>2762</id>
<class-attribute-id>3213</class-attribute-id>
<code>name</code>
<name>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>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>50</order>
<selected>true</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
</attribute>
<attribute>
<id>2864</id>
<class-attribute-id>3210</class-attribute-id>
<code>first</code>
<name>First level</name>
<datatype>reference</datatype>
<references>
<reference>269</reference>
</references>
<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>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>100</order>
<selected>true</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
<metadata>
<name>empty_result_when_filter_invalid</name>
<value>true</value>
</metadata>
<metadata>
<name>filter_single_category_template_example->single_category_template</name>
<value>select entity from entity
where $children$ in #referrer:?second#
and $children$ in #referrer:?third:parent#
and $parent:parent$ is null
and $parent$ is null
and template.code = 'single_category_template'</value>
</metadata>
<metadata>
<name>isAllowSameDataMultipleTimes</name>
<value>0</value>
</metadata>
<metadata>
<name>isReferenceShowSelected</name>
<value>0</value>
</metadata>
<metadata>
<name>reference_show_mode</name>
<value>ALL</value>
</metadata>
</attribute>
<attribute>
<id>2865</id>
<class-attribute-id>3211</class-attribute-id>
<code>second</code>
<name>Second level</name>
<datatype>reference</datatype>
<references>
<reference>269</reference>
</references>
<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>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>200</order>
<selected>true</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
<metadata>
<name>empty_result_when_filter_invalid</name>
<value>true</value>
</metadata>
<metadata>
<name>filter_single_category_template_example->single_category_template</name>
<value>select entity from entity
where $parent$ in #referrer:?first#
and $children$ in #referrer:?third#
and $parent$ is not null
and $parent:parent$ is null
and template.code = 'single_category_template'</value>
</metadata>
<metadata>
<name>isAllowSameDataMultipleTimes</name>
<value>0</value>
</metadata>
<metadata>
<name>isReferenceShowSelected</name>
<value>0</value>
</metadata>
<metadata>
<name>reference_show_mode</name>
<value>ALL</value>
</metadata>
</attribute>
<attribute>
<id>2866</id>
<class-attribute-id>3212</class-attribute-id>
<code>third</code>
<name>Third level</name>
<datatype>reference</datatype>
<references>
<reference>269</reference>
</references>
<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>
<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>
<visibility>visible_always</visibility>
<field-width>40</field-width>
<field-height>1</field-height>
<space-demand>4</space-demand>
<order>300</order>
<selected>true</selected>
<unique>false</unique>
<required>false</required>
<protected>false</protected>
<metadata>
<name>empty_result_when_filter_invalid</name>
<value>true</value>
</metadata>
<metadata>
<name>filter_single_category_template_example->single_category_template</name>
<value>select entity from entity
where $parent$ in #referrer:?first:children#
and $parent$ in #referrer:?second#
and $parent$ is not null
and $parent:parent$ is not null
and template.code = 'single_category_template'</value>
</metadata>
<metadata>
<name>isAllowSameDataMultipleTimes</name>
<value>0</value>
</metadata>
<metadata>
<name>isReferenceShowSelected</name>
<value>0</value>
</metadata>
<metadata>
<name>reference_show_mode</name>
<value>ALL</value>
</metadata>
</attribute>
</class>
</template>
</templateset>Reference-hakusuodattimen esimerkki - luokittelu yhtä mallipohjaa käyttäen - entiteettijoukko
<?xml version="1.0" encoding="utf-8"?>
<entityset>
<entity id="7" name="A">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>A</value>
</attribute>
<attribute id="39" name="Children" code="children">
<reference id="8" name="A-A" code="parent"/>
<reference id="10" name="A-B" code="parent"/>
<reference id="12" name="A-C" code="parent"/>
</attribute>
</entity>
<entity id="8" name="A-A">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>A-A</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="7" name="A"/>
</attribute>
<attribute id="39" name="Children" code="children">
<reference id="9" name="A-A-A" code="parent"/>
</attribute>
</entity>
<entity id="9" name="A-A-A">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>A-A-A</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="8" name="A-A"/>
</attribute>
</entity>
<entity id="10" name="A-B">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>A-B</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="7" name="A"/>
</attribute>
<attribute id="39" name="Children" code="children">
<reference id="11" name="A-B-A" code="parent"/>
</attribute>
</entity>
<entity id="11" name="A-B-A">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>A-B-A</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="10" name="A-B"/>
</attribute>
</entity>
<entity id="12" name="A-C">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>A-C</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="7" name="A"/>
</attribute>
</entity>
<entity id="15" name="B">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>B</value>
</attribute>
<attribute id="39" name="Children" code="children">
<reference id="14" name="B-B" code="parent"/>
</attribute>
</entity>
<entity id="14" name="B-B">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>B-B</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="15" name="B"/>
</attribute>
<attribute id="39" name="Children" code="children">
<reference id="13" name="B-B-C" code="parent"/>
</attribute>
</entity>
<entity id="13" name="B-B-C">
<template id="11" name="Single category" code="single_category_template"/>
<group id="3" name="Single categories"/>
<attribute id="37" name="Name" code="name">
<value>B-B-C</value>
</attribute>
<attribute id="38" name="Parent category" code="parent">
<reference id="14" name="B-B"/>
</attribute>
</entity>
</entityset>Tyhjä tulos, kun hakusuodatinta ei voida soveltaa
Oletusarvoisesti, jos hakusuodatinta ei voida soveltaa (esim. reference-polku puuttuu), tulos sisältää kaikki mahdolliset tietokortit. Jos tämä arvo asetetaan todeksi (true), tulos on tyhjä. Oletusarvo on false.
Table of Contents