Fejlesztői kézikönyv 6.3

XML Referencia 6.3

Effector Studio 6.3 összefoglaló

Effector Studio 6.3 kézikönyv

Fejlesztői kézikönyv 6.2

XML Referencia 6.2

Effector Studio 3.2 összefoglaló

Effector Studio 3.2 kézikönyv

Fejlesztői kézikönyv 5.5

XML referencia 5.5

Effector Studio 2.0 kézikönyv

Effector Studio 2.0 összefoglaló

Display definíció és a filterek kezelése v5.4.001

Az display definíciós objektumok (DDO) átfogják a rendszer teljes működését. Gyakorlatilag minden megjelenítő objektum mögött ott állnak. Segítségükkel megteremthető a kapcsolat a két legkülső réteg a UI és az adatbázis között. Természetesen több más rétegen keresztül. A display definíciós objektumok képesek felhasználni az üzleti objektumokat a megjelenítő komponensek kiszolgálása közben a különböző adatbázis műveletek elvégzéséhez. Például a mentést a BusinessObject végzi inplace editing esetében is. Azonban a DDO fő feladata, hogy adatforrásként funkcionáljon a legtöbb megjelenítő számára, és kezelje a számára felajánlott filtereket a felhasználói interakciók során.

Elhelyezkedése a rendszerben

Fizikai helye az XML csomag DisplayDefinition könyvtárában van. A fájlok elnevezésére itt is van megkötés. A fájl nevének a meg kell egyeznie a DisplayDefinition\Name node értékével, és hozzáadott feltételként a DD karakterlánccal kell kezdődnie.

Direkt sosem jelenik meg a DDO a rendszerben, azonban számos kapcsolódási ponttal rendelkezik a különböző megjelenítőkhöz:

DDO a rendszerben

Elérhető funkciók:

  • Adatforrás definíció
  • Oszlopok beállítása
  • Filterek meghatározása és összekapcsolása

Példa

<DisplayDefinition>
    <Name>DDCompany</Name>
    <SqlSelect>
        from Company as c with (nolock)
        where Deleted = 0 and 1=1
    </SqlSelect>
    <Columns>
        <Column name="CompanyID">
            <BusinessObject>BusinessObjectCompany</BusinessObject>
            <SqlName>c.CompanyID</SqlName>
            <IdColumn>CompanyID</IdColumn>
            <OutFilter type="Out">
                <Alias>Company_ID</Alias>
            </OutFilter>
        </Column>
        <Column name="Name">
            <BusinessObject>BusinessObjectCompany</BusinessObject>
            <SqlName>c.Name</SqlName>
            <IdColumn>CompanyID</IdColumn>
        </Column>
    </Columns>
    <InFilters>
        <InFilter alias="Company_ID">
            <MyField>CompanyID</MyField>
        </InFilter>
        <InFilter alias="Created_By_ID">
            <MyField>CreatedbyID</MyField>
        </InFilter>
    </InFilters>
</DisplayDefinition>

Adatforrás definíció

A DDO azonosítóját több XML fájlhoz hasonlóan a gyökér elemben (DisplayDefinition) szereplő Name node értéke tartalmazza. Az azonosító megadása kötelező, és a konvencióknak megfelelően meg kell egyeznie a fájl nevével.

Az adatforrás beállítását az SqlSelect node segítségével tehetjük meg. Ez a node alapesetben egy SQL mondat részletet tartalmaz az oszlopok meghatározás nélkül. Az oszlopok kitöltését a DD fogja elvégezni a /DisplayDefinition/Columns kollekcióban található Column elemek alapján. Ez az SQL mondat határozza meg azt, hogy milyen adatokat tölt be az adatbázisból az adott objektum. Ezek az adatok fognak az összerendelt megjelenítő komponensnek adatforrásul szolgálni.

        <SqlSelect>
            from Company as c with (nolock)
            where Deleted = 0 and 1=1
        </SqlSelect>

Felhasználható attribútumok:

  • Lehetőség van tárolt eljárás futtatására is adatforrásként. Ekkor a type attribútumot kell StoredProcedure-ra, valamint az SqlSelect node értékét a tárolt eljárás nevére állítani. Alapértelmezett értéke Select.
  • A distinct attribútum megadásával kapcsolható be az SQL szerver distinct funkciója. Értéke lehet true vagy false. Alapértelmezett értéke false.

Fontos!

Mi az 1=1 a példában? Az 1=1 kifejezést minden DDO where részébe ki kell írni. Erre azért van szüksége, mert a rendszer ezt a karakterláncot cseréli le a Filter-ek, PSearch-ök és más szűrésre alkalmas elemek által szolgáltatott feltételekre.

Oszlopok beállítása

Oszlopok definícióját a /DisplayDefinition/Columns kollekció Column elemeinek megadásával tehetjük meg. Minden Column node tartalmaz egy name attribútumot, amely a DDO-ban az oszlop azonosító szerepét játssza. Később a megjelenítők használatakor ez fogja a kapcsolatot megvalósítani a két oszlop definíció között. Vagy az SQL oszlop nevével egyezik meg, vagy az "alias"-ként használt karakterlánccal. Alias-t az as kulcsszóval definiálhatunk. Használatát a következő példa szemlélteti:

<SqlName>Count(e.EventId) as EventDB</SqlName>

A definícióban felhasználható node-ok a következők:

  • A BusinessObject node azt határozza meg, hogy az oszlop milyen üzleti objektumhoz tartozik. Alapvető szerepe van a táblázatban elérhető inplace edit funkció működésében.
  • Az SqlName node tartalmazza az oszlop SQL definícióját. Ennek ugyanolyan szintaktikai szabályoknak kell megfelelnie, mint egy SQL-es oszlop kifejezésnek. Nem csak oszlopnevet, hanem bonyolultabb al-lekérdezéséket is tartalmazhat, de ebben az esetben az eredményt egy "alias" névvel kell ellátni.

       <Column name="EventDB">
           <BusinessObject>BusinessObjectProjec</BusinessObject>
           <SqlName>Count(e.EventId) as EventDB</SqlName>
       </Column>
    

Hivatkozás másik oszlopra (Effector 5.4+)

A Column node isComposite nevű, logikai értéket felvehető opcionális attribútumának beállításával jelezhezjük a rendszernek, hogy az oszlop definíciójában a DDO egy másik oszlopára (illetve annak értékére) fogunk hivatkozni. A behelyettesítés az adatlekérdezés után történik meg. Ha hivatkozás a következő formátumban tehető meg: [##Column.Mezőnév##].

<Column name="ColumnA">
    <SqlName>ColumnA</SqlName>
</Column>
<Column name="ColumnB" isComposite="true">
    <SqlName>'Az A oszlop értéke: [##Column.ColumnA##]' AS ColumnB</SqlName>
</Column>

FileInterface használata fájlok letöltésére (Effector 5.4+)

A fájlok megtekintése/letöltése védett módba került a Effector 5.4-es verziójától kezdve. Ez annyit jelent, hogy egy közös FileInterface nevű szolgáltatás kezeli a fájl műveleteket. Ha például szeretnénk letölteni egy dokumentumot egy ChainListNode-ra kattintva, akkor a következő paraméterezést kell használnunk:

<Column name="FileInterfaceID" useFileInterface="true">
    <SqlName><![CDATA[CAST(d.DocumentID  AS VARCHAR(20)) as FileInterfaceID]]></SqlName>
    <IdColumn>DocumentID</IdColumn>
    <OutFilter type="Param">
        <Alias>FileInterfaceID</Alias>
    </OutFilter>
</Column>
<Column name="FileLink" isComposite="true">
    <SqlName><![CDATA['<a href="FileInterface?p=[##Column.FileInterfaceID##]&a=download" target="_blank">' + ISNULL(d.RenamedFilename,'') + '</a>' AS FileLink]]></SqlName>
    <IdColumn>DocumentID</IdColumn>
</Column>

A "FilteInterfaceID" nevű DDO column-ban megadjuk a fájl Document táblabeli egyedi azonosítóját, a rendszerrel pedig a useFileInterface nevű attribútum true értékre állításával közöljük, hogy az adott dokumentumhoz generáljon egy egyedi kulcsot, amely át fog adódni a "FileLink" nevű DDO column-nak azáltal, hogy az isComposite attribútum true-ra van állítva, és a definíciójában hivatkozunk a "FilteInterfaceID" nevű oszlopra.

Filterek meghatározása és összekapcsolása

A Filter fogalma a rendszerben - mint azt korábban említettük - a panelek és képernyők közötti kommunikációt megvalósító struktúrát, mechanizmust jelenti. Paraméterezése szempontjából kulcsfontosságú szerepet kap a DDO. A megjelenítők innen, a megjelenítő definíciós fájlból tudják, hogy az alattuk elhelyezkedő réteg milyen filtereket képes kezelni ki és bemenetként.

Kommunikáció(Filterek)

Minden filternek van típusa és neve (Alias). Ezek alapján értelmezi a rendszer az összekapcsolások során végbemenő kommunikációt. A filtereket lehet értelmezni és feldolgozni, vagy esetenként csak átereszteni és továbbítani a következő komponens felé. Ezeket a viselkedési módokat paraméterezéssel könnyen változtathatjuk.

  • Alias: A filternek egyik fontos tulajdonsága az Alias neve. Ezen a néven azonosítható az adott filter a panelek és képernyők közötti kommunikációban, valamint ez alapján juthatunk hozzá a hordozott értékhez is (Filter hivatkozás).
  • Típusa: A filterek Out vagy Param típusúak lehetnek.
    • Out típusú filterből mindig csak egy lehet aktív.
    • Param típusú filterek gyakran vesznek részt az EditForm-on egy-egy kontroll alapértelmezett érték szabályának kiértékelésében, vagy valamilyen más szabályban. A Template_ Alias névvel kezdődő filtereknek speciális jelentése van. Erről bővebben később ejtünk szót.

Filterek paraméterezése

A Filterek paraméterezéséhez több helyen kell beállításokat eszközölnünk.

Először is el kell döntetnünk, hogy az adott oszlop egy azonosító-e, ha azonosító, akkor paraméterezhető hozzá egy Filter, amely segítségével az értékét elküldhetjük a többi komponensnek. Ha nem azonosító jellegű az adat, akkor definiálhatunk hozzá egy azonosító mezőt. Ezt a definíciót az Column\IdColumn node segítségével tudjuk megtenni.

  • Az IdColumn node által meghatározott DDO oszlopot azonosítóként kezeljük, és az itt megadott oszlop fog Out filter típusként szerepelni a kimenő filterek között. A többi oszlop IdColumn-ja is szerepelni fog, de mint csak paraméter.
  • Az OutFilter node segítségével állíthatjuk be a kimenő filter Alias nevét valamint a type attribútum segítségével a korábban említett típusát.

       <OutFilter type="Out">
           <Alias>Company_ID</Alias>
       </OutFilter>
    

Példa

Az alábbi példa egy megfelelően felparaméterezett outfiltert mutat be. Ebben az esetben az oszlop saját maga is egy azonosítót reprezentál, és ezt az azonosítót fogja kimenő filterként használni a megfelelő felhasználói interakció során (általában oszlopra kattintás).

<Column name="CompanyID">
    <BusinessObject>BusinessObjectCompany</BusinessObject>
    <SqlName>c.CompanyID</SqlName>
    <IdColumn>CompanyID</IdColumn>
    <OutFilter type="Out">
        <Alias>Company_ID</Alias>
    </OutFilter>
</Column>
<Column name="CompanyName">
    <SqlName>c.Name AS CompanyName</SqlName>
    <IdColumn>CompanyID</IdColumn>
</Column>

Most hogy rendelkezünk kimenő filterekkel, megtehetjük a bejövő filterek beállítását is. Ezek azok a filterek, amelyeket a DDO-t használó megjelenítők értelmezni tudnak majd a használat során.

A bejövő filtereket a /DisplayDefinition/InFilters kollekció InFilter node-jai segítségével állíthatjuk be. Az itt felsorolt bejövő szűrők fogják a DDO által meghatározott eredménysorokat leszűrni. Itt általában egy tábla egyedi azonosítóját várjuk. Az itt felsorolt filterek segítségével előállított WHERE klózok fognak bekerülni a lekérdezés WHERE feltételében található 1=1 kifejezés helyére.

<InFilters>
    <InFilter alias="Company_ID">
        <MyField>c.CompanyID</MyField>
    </InFilter>
    <InFilter alias="Created_By_ID">
        <MyField>c.CreatedbyID</MyField>
    </InFilter>
</InFilters>
  • Az InFilter node alias attribútuma a bejövő szűrő nevét határozza meg. Az ilyen nevű Out típusú paramétert fogja tudni feldolgozni a megjelenítőnk, ez alapján fogja keresni a megfelelő filtereket a bejövő szűrőben.
  • Az InFilter node forward attribútuma hivatott arra, hogy szabályozza a filterek továbbítását a többi összekapcsolt komponens felé. Lehetséges értékei a true és false. true érték esetén a bejövő szűrőben szereplő adott alias-szal rendelkező paraméter a DDO Out-jába kerül.

Megjegyzés! Elavult beállítási lehetőség. A ForwardedFilters van helyette.

  • Az InFilter node MyField node-ja teremt kapcsolatot a bejövő szűrők és a DDO oszlopai között. Itt az SqlName-ben szereplő értéket kell megadni. Ez alapján fogja szűrni a lekérdezést a DDO.

Lehetőségünk van beállítani egy állandó továbbítási listát is, aminek eredménye kép a felvett alias-szal érkező bejövő szűrők továbbítva lesznek a kimenő szűrők közé.

<ForwardedFilters>
    <InOutFilter type="Parameter">Company_ID</InOutFilter>
    <InOutFilter type="Parameter">Project_ID</InOutFilter>
</ForwardedFilters>

Az InOutFilter node értéke határozza meg az alias nevet, a type attribútum, hogy milyen típussal kerüljenek be a kimenő szűrőbe. Out típusú filter csak akkor kerülhet továbbításra, ha nincs saját Out típusú filter.

A Template_* nevű filterek speciálisak, ezek hordozzák a kiválasztott üzleti objektum altípusát. Ha a felhozni kívánt szerkesztő képernyőn származtatott BusinessObject jelenik meg, akkor egy ilyen filter határozza meg, hogy melyik altípussal kell megnyitni az adott elemet szerkesztésre. (Például BusinessObjectProjectInfo esetén a Template_Project filterben fog az Info érték szerepelni.)

  • Legutóbb frissítve: 25 hét 5 napja
  • Effector