Általános működési leírás

Adatbázis leírás

Rendszer architektúra

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ó

BusinessObject

Az üzleti objektumok a rendszerben egy adattáblát, vagy egy adatbázis nézet kezelését valósítják meg, részt vesznek a folyamatok definiálásban, illetve további adatbázis műveleteket írhatnak le. A fájlokat a BusinessObject könyvtárba kell menteni. A fájlnévnek tükröznie kell az objektum nevét, és altípusát. A tábláknak tartalmaznia kell Deleted TINYINT mezőt, ami a rendszer tranzakció-kezeléséhez kell. Ha BO-hoz altípust is szeretnénk definiálni, akkor kell egy ObjectType VARHCAR(60) oszlop is.

/BusinessObject

Attribútumok:

  • mainbo: Ha az üzleti objektum leszármaztatott akkor az ős BusinesOBject neve, például BusinessObjectProjectISO esetén Project.
  • Name: Az üzleti objektum egyedi nevét a Name attribútum tartalmazza, például BusinessObjectProjectISO esetén ISO.

/BusinessObject/DefaultTable (String)

Az üzleti objektum adatbázisban lévő tábláját határozza meg. Ez a beállítás gyakran elmarad származtatott objektumok esetén (nincs kiegészítő adat).

/BusinessObject/UniqueID (String)

A DefaultTable beállításban jelzet tábla egyik oszlopa, amely a sor egyedi azonosításhoz kell. Származtatott üzleti objektumok esetén ez jellemzően U_ szokott lenni. A származtatott üzleti objektumnak a UniqueID oszlop neve nem lehet azonos a fő üzleti objektum UniqueID oszlop nevével. Ha a származtatott üzleti objektumnak nincs DefaultTable beállítása, akkor ez a beállítás is elhagyandó. A fő üzleti objektumok esetén ez a beállítás kötelező, és jellemzően autoincrementes int típusú a mező. Az egyedi azonosító nem lehet összetett kulcs.

/BusinessObject/RoleConnections

Egy üzleti objektum kapcsolatait írja le a tag. Ezek a kapcsolatok a mentési, törlési, adott esetben lekérdezési folyamatokat befolyásolják. Ez a tag egy gyűjtője a kapcsolatoknak, amelyek további tag-ekben vannak leírva. Egy kapcsolat a tag-ben van leírva.

/BusinessObject/RoleConnections/RoleConnection

Attribútumok:

  • type: Értéke lehet Relation, Descent. Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

    • Relation: A kapcsolat egy adatbázisban megszokott kapcsolatra utal. A kapcsolat egy gyerek-szülő viszonyt határoz meg.
    • Descent: A kapcsolat egy származtatást jelöl. A kapcsolat egy olyan üzleti objektumra mutat, amely az aktuális üzleti objektumot bővíti ki, a kapcsolat révén, további mezőkkel.
  • direction: A kapcsolat irányát jelzi. A kapcsolat lehet Parent vagy Child. Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás. Ha Parent, akkor az üzleti objektumban a kapcsolat által meghatározott tábla egyedi azonosítója szerepel, mint külső kulcs. Ha Child, akkor az üzleti objektumhoz kapcsolódó táblában szerepel az adott üzleti objektum egyedi kulcsa, mint külső kulcs.
  • RoleName: A kapcsolat elnevezése. A kapcsolatnak egyedi névvel kell rendelkeznie, a RoleConnections tag-en belül.
  • deletingmode: Az objektum törlési módját határozza meg. Lehetséges értékei AllowIfEmpty vagy Cascade. Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás. Ha az érték AllowIfEmpty, akkor az objektum csak akkor törölhető, ha nincs az adott kapcsolatban leírt táblában gyerek rekordja. Ha az értéke Cascade, akkor az objektum törlésekor a gyerek táblák azon sorai is törlődnek, amelyek erre az üzleti objektumokra mutatnak.

/BusinessObject/RoleConnections/RoleConnection/ToMinimum (String)

Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

A kapcsolat számosságát határozza meg. A lehetséges értékek halmaza a következő: 0, 1, N. A kapcsolt táblában levő adatok számosságának minimumát jelöli.

/BusinessObject/RoleConnections/RoleConnection/ToMaximum (String)

Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

A kapcsolat számosságát határozza meg. A lehetséges értékek halmaza a következő: 0, 1, N. A kapcsolt táblában levő adatok számosságának maximumát jelöli.

/BusinessObject/RoleConnections/RoleConnection/FromMinimum (String)

Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

A kapcsolat számosságát határozza meg. A lehetséges értékek halmaza a következő: 0, 1, N. A táblában levő adatok számosságának minimumát jelöli.

/BusinessObject/RoleConnections/RoleConnection/FromMaximum (String)

Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

A kapcsolat számosságát határozza meg. A lehetséges értékek halmaza a következő: 0, 1, N. A kapcsolt táblában levő adatok számosságának maximumát jelöli.

/BusinessObject/RoleConnections/RoleConnection/BusinessObject (String)

Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

A kapcsolat üzleti objektuma. Ezen keresztül határozódik meg a kapcsolatban szereplő tábla.

/BusinessObject/RoleConnections/RoleConnection/ConnectionIDField (String)

Megjegyzés! Az Effector 3.0.001-es verziójától nem használt beállítás.

A kapcsolatot meghatározó mező neve. Az aktuális üzleti objektum az egyedi azonosítójával fog az itt megadott oszlophoz kapcsolódni.

/BusinessObject/RoleConnections/RoleConnection/ConnectionTableName (String)

Ha a kapcsolat egy kapcsolótábla, akkor itt a kapcsolótábla nevét kell megadni. Idegen mező paraméterezésekor ez a beállítás határozza meg az adatbázis tábla nevét, amelyben az idegen mezőhöz tartozó érték van tárolva. Az idegen mező paraméterezésére lentebb lesz példa.

/BusinessObject/RoleConnections/RoleConnection/ConnectionTableID (String)

A két táblát összekötő mezőket tartalmazza. Ha több oszlop is szerepel a kapcsolatban, akkor több ConnectionTableID tag-nek kell szerepelnie. A tag értéke, azaz oszlop, amely ebben a BusinessObject-ban a kapcsolatban részt vesz, míg a name attribútum a kapcsolótáblában levő oszlop neve. Ez a beállítás az idegen mező paraméterezésében használt.

/BusinessObject/RoleConnections/RoleConnection/AliasValues (RuleValueType)

Az idegen vagy virtuális mező paraméterezéséhez 1:1 megfeleltetés kell. Elképzelhető olyan eset, hogy a kapcsolt táblában ez a feltétel csak akkor teljesül, ha további mezők értékeire szűrünk. Az BusinessObjectEvent Felelos oszlopa ilyen idegen mező. Az EventPeople táblában van tárolva az információ, Ahol az EventRoleID értéke 1.

Példa:

<AliasValues>
    <AliasValue name="EventRoleID" type="Constant" default="1" return="int">1</AliasValue>
</AliasValues>

Bővebben a Virtuális mező szakaszban olvashat erről.

/BusinessObject/Fields

Az üzleti objektum oszlopainak gyűjtő tag-je. Az oszlopok a tag-ben vannak definiálva.

/BusinessObject/Fields/Field

Attribútumok:

  • name: Az oszlop adatbázisbeli neve a name attribútum tartalmazza, ugyanakkor a name attribútum olyan oszlop nevet is definiálhat, amely fizikailag nincs az üzleti objektum táblájában, hanem egy másik táblában szerepel, mint kapcsoltadat. Ilyenkor a két tábla között az 1:1 kapcsolat követelmény, és alkalmazni kell két másik attribútumot is aliascolumn, aliasrolename. Az aliasrolename annak a RoleConnection neve, amely ezt a kapcsolatot leírja, az aliascolumn pedig a kapcsolt táblában található oszlop neve, amely az értéket tartalmazza.
  • aliascolumn: Opcionális beállítás, az idegen mező paraméterezésében használt beállítás. Bővebben a Virtuális mező szakaszban olvashat erről.
  • aliasrolename: Opcionális beállítás, az idegen mező paraméterezésében használt beállítás. Bővebben a Virtuális mező szakaszban olvashat erről.
  • type: Megjegyzés! Az Effector 3.0.001-es verziójától nem támogatott beállítás. Opcionális attribútum, értéke a doc lehetett.
  • doctype: Opcionális beállítás, ha az adott mező tartalma egy dokumentumra (Document tábla) hivatkozik, akkor meg kell adni annak a dokumentumnak a típusát. Bővebben a Dokumentum-kezelés szakaszban olvashat.
  • requestValidatorRegExp: Opcionális beállítás. Az Effector minden Request tartalmát ellenőriz, így megvizsgálja a mező tartalmát is. Alap esetben rengeteg karaktert nem fogad el az Effector. Ha olyan mezőt paraméterezünk, amely speciális karaktereket is tartalmaznak úgy meg kell mondanunk mit fogadjon el valid értékként a Request ellenőrzése során. Értéke egy reguláris kifejezés.
  • requestValidatorCharacterGroup: Opcionális beállítás. A requestValidatorRegExp beállításhoz hasonlóan a request tartalmán ellenőrzése során van szerepe, csak itt előre definiált csoportokat lehet választani.

    • Anything: bármi
    • AlphaNumeric: szám, betű, szóköz
    • OnlyAlpha: csak betű
    • OnlyNumber: csak szám
    • OnlyWhiteSpace: szóköz
    • OnlySpecialCharacters1: speciális karakterek első csoportja +-/* stb.
    • AlphaNumericWithSpecialCharacters1: Alpha numeric + specialcharacters1 csoport, ez az alapértelmezett érték
  • withEncryption: Opcionális beállítás. A mező értékét az adatbázisban titkosított formában tárolja a rendszer vagy sem. Értéke lehet true \ false. Alapértelmezett érték false. Csak VARCHAR mezőkre működik.
  • notLogged (Effector 5.2+): Opcionális beállítás. A mező értékének változását nem menti a rendszer az FSYS_Log táblába. Értéke lehet true \ false. Alapértelmezett érték false.

/BusinessObject/Fields/Field/DefaultValue (RuleValueType)

Opcionális node, új létrehozáskor a mező alapértékét határozza meg. Ez egy RuleValueType szabály ( lsd. Szabályok )

/BusinessObject/Triggers

Opcionális node, a folyamat léptetéshez szükséges triggereket fogja össze. Fontos! Adhoc esemény esetén ezek nem futnak le. Adhoc eseménynek nevezünk minden olyan eseménytípust, amely nem vesz részt folyamatban.

/BusinessObject/Triggers/Trigger

A triggerek a folyamatlépéseket vezérlik, meghatározzák, hogy egy üzleti objektumban történt esemény hatására mi történjen, mi jöjjön létre. A triggerek meghatározhatják, hogy az adott üzleti objektum milyen más üzleti objektumokban történt változásokra készüljön el. Például, ha készre állítunk egy eseményt, az kiválthatja egy újabb folyamatlépés létrejöttét, vagy egy másik folyamatlépés állapotának beállítását, vagy egy tetszőleges SQL utasítás végrehajtását is.

Attribútumok:

  • businessObject: Az az üzleti objektum, amely a triggert aktiválni fogja. (lehet Event, Project)
  • template: Az üzleti objektum template-je. A BusinessObject és a template határozza meg pontosan a kiváltó objektumot. (Pl: businessObject: Event, template: MegrendelesBekotes, akkor a kiváltó objektum a BusinessObjectEventMegrendelesBekotes, amely a BusinessObjectEventMegrendelesBekotes.xml állományban van leírva.)
  • type: meghatározza a kiváltott esemény típusát, ezek a típusok a következő értékeket vehetik fel

    • Create: Létrejön az új üzleti objektum
    • Modify: Az objektum módosítva lesz
    • Delete: Az objektum törölve lesz (sohasem használtuk, talán nem is működik)
    • RunSQL: Egy SQL utasítás lesz futtatva. Az SQL mondatot az SQL node-ban kell ilynknor megadni.
  • Group: Ha 0-tól eltérő az értéke, akkor a triggereket csoportba fogja ez az attribútum. Így egy esemény létrejöttét, több kiváltó eseményhez köthetjük. Az azonos group számmal rendelkező triggerek alkotnak egy csoportot. Ennek az értéke jelenleg mindig 0.
  • isAttachedWorkflow: Opcionális attribútum. Az Effector-ban olyan folyamatokat is lehet definiálni, amely egy másik párhozamosan folyamatban folytatódik. Értéke true vagy false lehet, alapértelmezés szerint false.
  • attachedWFTemplate: Opcionális attribútum, ha az isAttachedWorkflow attribútum értéke true, ekkor ebben az attribútumban kell megadni a kapcsolt folyamat típusát (Workflow ObjectType).

/BusinessObject/Triggers/Trigger/TriggerEvent (String)

Az az esemény, amely kiváltja a trigger aktiválását. Értéke lehet OkEvent, Created.

/BusinessObject/Triggers/Trigger/SQL

Opcionális node, ha a /BusinessObject/Triggers/Trigger type attribútuma RunSQL, akkor ebből a node-ból szedi, hogy milyen SQL-t kell lefutni. A RuleValueType-hoz hasonlóan itt is használhatjuk a mezőkre vagy munkamenet változókra hivatkozásokat.

/BusinessObject/Triggers/Trigger/Condition

Opcionális node, akkor kell használni, ha valamilyen feltételhez szeretnénk kötni a folyamat lépés létrejöttét.

Attribútumok:

  • type: A szabály a kiértékelés módja szerint milyen típusú. Értéke lehet Simple, SQL, Constant. Az értékek jelentése a Szabályok fejezetben van kifejtve a type attribútum szakaszban.

/BusinessObject/Triggers/Trigger/SetProperties

Ez a tag a Modify típusú trigger attribútum esetén határozza meg, hogy az üzleti objektum mely tulajdonságai, mire változzanak. Ez a tag, egy összetett elem.

Megjegyzés! Nem használt funkció.

/BusinessObject/Triggers/Trigger/SetProperties/Property

Attribútumok:

  • name: A BusinessObject-ben definiált mező neve.

/BusinessObject/Triggers/Trigger/SetProperties/Property/Value

Ebben a node-ban kell megadni, az értéket.

Attribútumok:

  • type: Az értékül adni kívánt érték típusa, nem használt.

Példa:

<SetProperties>
    <Property name="oszlop neve">
      <Value type="típus">érték</Value>
    </Property>
</SetProperties>

/BusinessObject/Methods

A BusinessObject egyes műveleti lépéseihez további üzleti logikát lehet rendelni, ez a node fogja össze ezek definiálását. Minden al node opcionális, és csak egy szerepelhet belőle.

/BusinessObject/Methods/AfterCreate

Létrehozás után lefuttatandó üzleti logika definiálása.

/BusinessObject/Methods/AfterCreate/ClassName

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy létrehozás után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterCreate/Module

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy létrehozás után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterCreate/Action

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy létrehozás után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterCreate/RunSQL

Opcionális node, ha nincs ClassName, Module, Action akkor értelmezi ezt a node-ot a rendszer. A node értéke a létrehozás után lefuttatni egy SQL kifejezés. A kifejezésben használni lehet a Field. Filter. Session. Special. hivatkozásokat (ugyanabban a formában, mint a szabályokban lehet). Az SQL a BusinessObject létrehozás után fog futni.

/BusinessObject/Methods/AfterDelete

Opcionális node, a törlés után lefuttatandó üzleti logika definiálása.

/BusinessObject/Methods/AfterDelete/ClassName

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy törlés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterDelete/Module

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy törlés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterDelete/Action

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy törlés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterDelete/RunSQL

Opcionális node, ha nincs ClassName, Module, Action akkor értelmezi ezt a node-ot a rendszer. A node értéke a törlés után lefuttatni egy SQL kifejezés. A kifejezésben használni lehet a Field. Filter. Session. Special. hivatkozásokat (ugyanabban a formában, mint a szabályokban lehet). Az SQL a BusinessObject létrehozás után fog futni.

/BusinessObject/Methods/AfterLoad

Opcionális node, a betöltés után lefuttatandó üzleti logika definiálása.

/BusinessObject/Methods/AfterLoad/ClassName

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy betöltés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterLoad/Module

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy betöltés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterLoad/Action

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy betöltés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterLoad/RunSQL

Opcionális node, ha nincs ClassName, Module, Action akkor értelmezi ezt a node-ot a rendszer. A node értéke a betöltés után lefuttatni egy SQL kifejezés. A kifejezésben használni lehet a Field. Filter. Session. Special. hivatkozásokat (ugyanabban a formában, mint a szabályokban lehet). Az SQL a BusinessObject létrehozás után fog futni.

/BusinessObject/Methods/AfterSave

Opcionális node, a mentés után lefuttatandó üzleti logika definiálása.

/BusinessObject/Methods/AfterSave/ClassName

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy mentés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterSave/Module

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy mentés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterSave/Action

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy mentés után melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/AfterSave/RunSQL

Opcionális node, ha nincs ClassName, Module, Action akkor értelmezi ezt a node-ot a rendszer. A node értéke a mentés után lefuttatni egy SQL kifejezés. A kifejezésben használni lehet a Field. Filter. Session. Special. hivatkozásokat (ugyanabban a formában, mint a szabályokban lehet). Az SQL a BusinessObject létrehozás után fog futni.

/BusinessObject/Methods/BeforeSave

Opcionális node, a mentés előtt lefuttatandó üzleti logika definiálása.

/BusinessObject/Methods/BeforeSave/ClassName

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy mentés előtt melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/BeforeSave/Module

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy mentés előtt melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/BeforeSave/Action

Opcionális node, a ClassName, Module, Action együtt határozzák meg közösen, hogy mentés előtt melyik .dll melyik metódusát kell futtatni. A dll-ben levő osztálynak az IEVIEditForm interface-t kell megvalósítania.

/BusinessObject/Methods/BeforeSave/RunSQL

Opcionális node, ha nincs ClassName, Module, Action akkor értelmezi ezt a node-ot a rendszer. A node értéke a mentés előtt lefuttatni egy SQL kifejezés. A kifejezésben használni lehet a Field. Filter. Session. Special. hivatkozásokat (ugyanabban a formában, mint a szabályokban lehet). Az SQL a BusinessObject létrehozás után fog futni.

/BusinessObject/Methods/OnValidate (RuleValueType)

Opcionális node. Mentés előtti ellenőrzést lehet végrehajtani. Ez egy RuleValueType, amelyről a Szabályok szakaszban olvashat. Ha a vissza térési érték boolean, akkor false esetén a rendszer nem engedi elmenti az BusinessObject-et és a message attribútumban megadott szöveget jeleníti meg a rendszer. Ha a visszatérési érték string, akkor, ha nem üres a szabály által visszaadott string, akkor meggátolja a mentést, és a visszaadott szöveget megjeleníti a felületen.

Példa:

<Methods>
    <OnValidate type="SQL" return="string" default="">
    <![CDATA[
        IF CAST('[##Field.Keszultseg##]' AS INT) < 1 OR CAST('[##Field.Keszultseg##]' AS INT) > 100 BEGIN
            SELECT '1 és 100 közötti értéket adjon meg!'
        END]]>
    </OnValidate>
    <AfterCreate>
        <RunSQL> <![CDATA[
            INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At)
            SELECT '[##Field.FeladatID##]', 'AfterCreate', GETDATE()]]>
        </RunSQL>
    </AfterCreate>

    <AfterLoad>
        <RunSQL>
            <![CDATA[
            INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At)
            SELECT '[##Field.FeladatID##]', 'AfterLoad', GETDATE()]]>
        </RunSQL>
    </AfterLoad>

    <BeforeSave>
        <RunSQL>
            <![CDATA[
            INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At)
            SELECT '[##Field.FeladatID##]', 'BeforeSave', GETDATE()]]>
        </RunSQL>
    </BeforeSave>

    <AfterSave>
        <RunSQL>
            <![CDATA[
            INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At)
            SELECT '[##Field.FeladatID##]', 'AfterSave', GETDATE()]]>
        </RunSQL>
    </AfterSave>
</Methods>

/BusinessObject/Rights

Ez a node opcionális. A rendszerben négy alapvető jog definiálható a BusinessObject-hez, ezeket a definíciókat gyűjti egy node alá.

/BusinessObject/Rights/Create (RuleValueType)

A BusinessObject létrehozása előtt lefuttatott szabály. Ha a szabály kiértékelése után false eredményt kap a rendszer, akkor meggátolja az üzleti objektum létrehozását.

/BusinessObject/Rights/Delete (RuleValueType)

A BusinessObject törlése előtt lefuttatott szabály. Ha a szabály kiértékelése után false eredményt kap a rendszer, akkor meggátolja az üzleti objektum törlését.

/BusinessObject/Rights/Modify (RuleValueType)

A BusinessObject módosítása előtt lefuttatott szabály. Ha a szabály kiértékelése után false eredményt kap a rendszer, akkor meggátolja az üzleti objektum módosítását.

/BusinessObject/Rights/View (RuleValueType)

A BusinessObject betöltése előtt lefuttatott szabály. Ha a szabály kiértékelése után false eredményt kap a rendszer, akkor meggátolja az üzleti objektum betöltését.

Példa:

<Rights>
    <Create type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN `true` ELSE `false` END
    </Create>
    <Delete type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN `true` ELSE `false` END
    </Delete>
    <Modify type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN `true` ELSE `false` END
    </Modify>
    <View type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') IS NOT NULL) THEN `true` ELSE `false` END
    </View>
</Rights>

Virtuális mező

A példában a Felelos mező egy virtuális vagy idegen mező, ide vonatkozó XML részletek:

<RoleConnection type="Relation" deletingmode="Cascade" direction="Child" RoleName="EventPeople">
    <ToMinimum>0</ToMinimum>
    <ToMaximum>1</ToMaximum>
    <FromMinimum>0</FromMinimum>
    <FromMaximum>1</FromMaximum>
    <BusinessObject>BusinessObjectPeople</BusinessObject>
    <ConnectionTableName>EventPeople</ConnectionTableName>
    <ConnectionTableID name="EventID">EventID</ConnectionTableID>
    <ConnectionTableID name="PeopleID">Felelos</ConnectionTableID>
    <AliasValues>
        <AliasValue name="EventRoleID" type="SQL" default="1" return="int">1</AliasValue>
    </AliasValues>
</RoleConnection>

<Field name="Felelos" aliascolumn="PeopleID" aliasrolename="EventPeople">
    <DefaultValue type="Constant" return="int">'[##Session.UserID##]'</DefaultValue>
</Field>

Mire jó? Egy felhasználási eseten keresztül röviden: A paraméterezés folyamán kialakított két fogalom: esemény, és esemény felelőse kapcsán

  • az eseményhez egy külön táblában tárolunk egy vagy több résztvevőt
  • így ez egy 1..n adatkapcsolat az Event, és a résztvevőket tartalmazó EventPeople tábla között
  • a résztvevők között szigorúan egy darab kiemelt ember van, ami az EventPeople.EventRoleID mező alapján van megkülönböztetve (minden különböző EventRoleID egy-egy szerepkörnek felel meg, ezek közül a „Felelős” az, ami most a megkülönböztetett)
  • ahhoz, hogy a BO ezt le tudja kérni, azaz összeállítsa a megfelelő SQL mondatot hozzá, illetve mentésnél tudja módosítani, a RoleConnection-t tudjuk segítségül hívni, a példában látható módon.

Az Field tag aliasrolename mondja meg, hogy melyik roleconnection mondja meg a kapcsolat táblának az adatát (amelyben a Felelos mezőhoz tartozó értéket ki lehet venni), az aliascolumn attribútum mondja meg, hogy mi az oszlop neve a kapcsolt objektumban.

A RoleConecction-ban résztvevő paraméterek:

<ConnectionTableName>EventPeople</ConnectionTableName>
<ConnectionTableID name="EventID">EventID</ConnectionTableID>
<ConnectionTableID name="PeopleID">Felelos</ConnectionTableID>
<AliasValues>
    <AliasValue name="EventRoleID" type="SQL" default="1" return="int">1</AliasValue>
</AliasValues>

Az EventPeople tábla ide vonatkozó mezői:

  • EventID: értéke a BusinessObjectEvent EventID mezője lesz

       <ConnectionTableID name="EventID">EventID</ConnectionTableID>`
    
  • PeopleID: értéke a BusinessObjectEvent Felelos mezője lesz

       <ConnectionTableID name="PeopleID">Felelos</ConnectionTableID>`
    
  • EventRoleID: Értéke 1 (felelős szerep) lesz

           <AliasValues>
               <AliasValue name="EventRoleID" type="SQL" default="1" return="int">1</AliasValue>
           </AliasValues>
    

Tehát összegezve új BusinessObjectEvent mentésekor az EventPeople táblában keletkezni fog egy sor, amelyben az EventID oszlop értéke a BusinessObjectEvent EventID mezője lesz, a PeopleID oszlop éréke a Felelos mezőben levő érték, és az EventRoleID értéke 1 lesz. Fontos! 1:1 megfeleltetés ilyenkor kötelező, ha egy meglévő üzleti objektumban utólag definiáltok ilyen idegen mezőt, akkor a kapcsolódó táblában rögzíteni kell a már meglévő adatbázis sorokhoz az üres értékeket tartalmazó sorokat.

Példa

<?xml version="1.0" encoding="iso-8859-2"?> <BusinessObject Name="Event"> <Caption>Esemény</Caption> <DefaultTable>Event</DefaultTable> <UniqueID>EventID</UniqueID> <RoleConnections> <RoleConnection type="Relation" deletingmode="Cascade" direction="Child" RoleName="EventPeopleN"> <ToMinimum>0</ToMinimum> <ToMaximum>N</ToMaximum> <FromMinimum>0</FromMinimum> <FromMaximum>N</FromMaximum> <BusinessObject>BusinessObjectPeople</BusinessObject> <ConnectionTableName>EventPeople</ConnectionTableName> <ConnectionTableID name="EventID">EventID</ConnectionTableID> <ConnectionTableID name="PeopleID">PeopleID</ConnectionTableID> <ConnectionTableID name="EventRoleID">EventRoleID</ConnectionTableID> </RoleConnection> <RoleConnection type="Relation" deletingmode="Cascade" direction="Child" RoleName="EventPeople"> <ToMinimum>0</ToMinimum> <ToMaximum>1</ToMaximum> <FromMinimum>0</FromMinimum> <FromMaximum>1</FromMaximum> <BusinessObject>BusinessObjectPeople</BusinessObject> <ConnectionTableName>EventPeople</ConnectionTableName> <ConnectionTableID name="EventID">EventID</ConnectionTableID> <ConnectionTableID name="PeopleID">Felelos</ConnectionTableID> <AliasValues> <AliasValue name="EventRoleID" type="SQL" default="1" return="int">1</AliasValue> </AliasValues> </RoleConnection> </RoleConnections> <Fields> <Field name="EventID"> </Field> <Field name="CompanyID"> </Field> <Field name="ProjectID"> </Field> <Field name="StartDate"> <DefaultValue type="Constant" return="datetime">'[##Special.Today##]'</DefaultValue> </Field> <Field name="EndDate"> <DefaultValue type="Constant" return="datetime">'[##Special.Today##]'</DefaultValue> </Field> <Field name="CreatedByID"> <Readonly>true</Readonly> <DefaultValue type="Constant" return="int">'[##Session.UserID##]'</DefaultValue> </Field> <Field name="Created"> <DefaultValue type="Constant" return="datetime">'[##Special.Today##]'</DefaultValue> </Field> <Field name="Description"> </Field> <Field name="Task"> <DefaultValue type="Constant">true</DefaultValue> </Field> <Field name="Done"> <DefaultValue type="Constant">false</DefaultValue> </Field> <Field name="Felelos" aliascolumn="PeopleID" aliasrolename="EventPeople"> <DefaultValue type="Constant" return="int">'[##Session.UserID##]'</DefaultValue> </Field> <Field name="ObjectType"> <DefaultValue type="Constant" return="" default="false" /> </Field> <Field name="Department"> <DefaultValue type="Constant">0</DefaultValue> </Field> <Field name="ParentEventID"> <DefaultValue type="Constant">0</DefaultValue> </Field> <Field name="RootEventID"> <DefaultValue type="Constant">0</DefaultValue> </Field> <Field name="RootEvent"> <DefaultValue type="Constant">false</DefaultValue> </Field> <Field name="PrivateEvent"> <DefaultValue type="Constant">false</DefaultValue> </Field> <Field name="AlreadyRead"> <DefaultValue type="Constant">false</DefaultValue> </Field> <Field name="WorkflowID"> <DefaultValue type="Constant">0</DefaultValue> </Field> </Fields> <Methods> <OnValidate type="SQL" return="string" default=""> <![CDATA[ IF CAST('[##Field.Keszultseg##]' AS INT) < 1 OR CAST('[##Field.Keszultseg##]' AS INT) > 100 BEGIN SELECT '1 és 100 közötti értéket adjon meg!' END]]> </OnValidate> <AfterCreate> <RunSQL> <![CDATA[ INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At) SELECT '[##Field.FeladatID##]', 'AfterCreate', GETDATE()]]> </RunSQL> </AfterCreate> <AfterLoad> <RunSQL> <![CDATA[ INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At) SELECT '[##Field.FeladatID##]', 'AfterLoad', GETDATE()]]> </RunSQL> </AfterLoad> <BeforeSave> <RunSQL> <![CDATA[ INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At) SELECT '[##Field.FeladatID##]', 'BeforeSave', GETDATE()]]> </RunSQL> </BeforeSave> <AfterSave> <RunSQL> <![CDATA[ INSERT INTO af_feladat_BOMethod_test (AF_FeladatID, Method, At) SELECT '[##Field.FeladatID##]', 'AfterSave', GETDATE()]]> </RunSQL> </AfterSave> </Methods> <Rights> <Create type="SQL" return="boolean" default="false"> SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN 'true' ELSE 'false' END </Create> <Delete type="SQL" return="boolean" default="false"> SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN 'true' ELSE 'false' END </Delete> <Modify type="SQL" return="boolean" default="false"> SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN 'true' ELSE 'false' END </Modify> <View type="SQL" return="boolean" default="false"> SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') IS NOT NULL) THEN 'true' ELSE 'false' END </View> </Rights> </BusinessObject>

  • Legutóbb frissítve: 8 hét 6 napja
  • Effector