Členské metody ORDA pro získání informací o struktuře

Automaticky přeloženo z Deepl

„Jak mohu zjistit dataClass entity? Potřebuji ji, abych mohl psát obecné metody.“„Potřebuji informace o poli v dataClass: jaký je jeho typ? Je indexované? Je unikátní?„. To jsou typy otázek, které jsme od vás slyšeli na fóru. 4D v17 R5 poskytuje odpovědi: zavádí nové členské metody ORDA, které poskytují užitečné informace o vaší databázi. Čtěte dál, protože oceníte výhody, které přináší snížení velikosti vašeho kódu a jeho opakované použití a snadná údržba!

HDI: Příklad získávání informací o struktuře databáze pomocí ORDA

Nyní můžete získat informace související se strukturou, například číslo tabulky nebo pole. To může být užitečné při postupné integraci ORDA do vašeho klasického 4D kódu. Hlavním účelem těchto členských metod je však poskytnout vám způsob, jak psát obecný kód, který je použitelný bez ohledu na strukturu databáze.

Získání třídy dataClass entity nebo výběru entity

datová třída entity

Jaká radost mít chytrou entitu, která zná svou vlastní dataClass!

Na adrese . getDataClass() Členská metoda vrací objekt dataClass odpovídající entitě. Poté můžete zavolat libovolnou členskou metodu dostupnou na objektu dataClass.

V níže uvedeném příkladu voláme new() členskou metodu. Ta vytvoří novou entitu z poskytnuté entity a zkopíruje údaje o adrese. Obdržíme také objekt obsahující název vlastnosti a její hodnotu pro nově vytvořenou entitu.

C_OBJECT($1;$entity;$entityContent;$newEntity;$status)
C_OBJECT ($2;$attribute)

$entity :=$1
$attribute :=$2

$newEntity :=$entity.getDataClass().new()

$entityContent :=$entity.toObject("adresa.*")
//We copy address from the received entity
$newEntity.fromObject($entityContent)

//We fill the created entity with received property name and value
$newEntity [$attribute.name]:=$attribute.value
$status :=$newEntity.save()

datová třída pro výběr entit

Adresa getDataClass() member vrátí objekt dataClass odpovídající výběru entity. Níže uvedená metoda přijímá výběr entity a vytváří nové entity se stejnými údaji o adrese.

C_OBJECT($1;$inputSelection;$newEntitySelection)
C_COLLECTION ($esContent)
$inputSelection :=$1
alert (String($inputSelection.length) + " entity budou duplikovány")
$esContent :=$inputSelection.toCollection("adresa")
$newEntitySelection :=$inputSelection.getDataClass().fromCollection($esContent)
alert (String($newEntitySelection.length) + " entity byly vytvořeny")

získání informací o datové třídě

Adresa getInfo() member dostupná na objektu dataClass, vrací také užitečné informace. V níže uvedeném příkladu získáme ID odpovídající primárnímu klíči třídy Persons dataClass, a poté načteme odpovídající entity.

C_OBJECT($es;$settings)
$settings :=New object
$settings .parameters:=New object("receivedIds";getIds ())
// The getIds() method returns a collection of IDs
$settings .attributes:=New object("pk";ds.Persons.getInfo().primaryKey)
$es :=ds.Persons.query(":pk in :receivedIds";$settings)

atribut datové třídy

Ve verzi 4D V17.0 jste se naučili, že každý atribut dataClass je objekt. Nyní byly rozšířeny o konceptuální a strukturální informace.

Zde je rychlý příklad.

C_TEXT($text)
$text :=JSON Stringify(ds.Cats.ID)
//$text =
//{"name":"ID","kind":"storage","type":"number","indexed":true,
//"keywordIndexed":false,
"autoFilled":true,"mandatory":true,"unique":true,
//"fieldNumber":1,"fieldType":9}

Stáhněte si výše uvedený HDI a dozvíte se více! A nezapomeňte se podívat do centra dokumentů.

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.