Logické operace s výběry entit

Automaticky přeloženo z Deepl

Série ORDA pokračuje! V tomto příspěvku se podíváme, jak používat logické operátory na výběry entit!

Tyto operace umožňují získat průniky, sjednocení nebo rozdíly mezi dvěma výběry entit, stejně jako je tomu u klasických 4D množin.

Příklad logických operátorů na výběrech entit

V klasickém 4D používáte množiny k provádění logických operací nad několika výsledky dotazů. Po každém dotazu musíte vytvořit množinu, provést logickou operaci nad množinami a nakonec aktualizovat aktuální výběr příslušné tabulky pomocí výsledné množiny. To je poněkud těžké! Naštěstí se s ORDA věci výrazně odlehčují! Při každém dotazu získáte výběr entit, na který lze přímo aplikovat logické operátory!

ORDA poskytuje následující metody pro provádění logických operací nad dvěma výběry entit:

and(): získá průnik mezi dvěma výběry entit (entity patřící do obou).

or(): získá sjednocení mezi dvěma výběry entit (entity patřící do jednoho nebo do druhého).

minus(): získá rozdíl mezi dvěma výběry entit (entity patřící do jednoho a nepatřící do druhého)

Tyto metody lze také aplikovat na výběr entit a jednotlivé entity.

Příklad:

Příklad vydá za tisíc slov! Podívejme se na zaměstnance a jejich stravovací preference.

KLASICKÝ 4D:

//A named selection "meat" is created before
// ...
QUERY BY ATTRIBUTE([Zaměstnanec];[Zaměstnanec]food; "ryba";=;True)
CREATE SET ([Zaměstnanec]; "ryba")
USE NAMED SELECTION ("maso")
CREATE SET ([Zaměstnanec]; "maso")
UNION ("ryba"; "maso"; "výsledek")
USE SET ("výsledek")
CLEAR SET ("maso")
CLEAR SET ("ryba")
CLEAR SET ("výsledek")

ORDA:

Zde máme metodu, která jako parametr přijímá výběr entit. Vracíme sjednocení výběru entit $eatingMeat a výběru entit $eatingFish.

C_OBJECT($eatingFish;$1;$eatingMeat;$result)

$eatingMeat :=$1
//Get employees eating fish
$eatingFish :=ds.Employee.query("food.fish=:1";True)
//Get the union of the 2 entity selections $eatingMeat and $eatingFish
$result:=$eatingMeat.or($eatingFish)
$0 :=$result

Avatar
• Product Owner • Marie-Sophie Landrieu-Yvert se připojila k programovému týmu 4D jako Product Owner v roce 2017. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Marie-Sophie vystudovala inženýrskou školu ESIGELEC a svou kariéru zahájila jako inženýrka v IBM v roce 1995. Podílela se na různých projektech (projekty údržby nebo výstavby) a pracovala jako vývojářka Cobol. Poté pracovala jako UML designer a Java developer. V poslední době byly jejími hlavními rolí analyzovat a psát funkčních požadavky a koordinovat obchodní a vývojové týmy.