Skip to main content

Dictionary

The dictionary defines each data item once: its label, its format, its rule (Boolean, list of values, lookup, sequence…), its default value and its translations. A query column that references an entry inherits that definition, so the same item reads the same way on every screen, chart and dashboard.

It is edited from Liberty Next → Build → Dictionary, which holds five kinds of records:

TabHolds
EntriesThe data items: label, format, rule, default, translations.
EnumsFixed lists of codes and labels, for the ENUM rule.
LookupsQueries that turn a code into a label, for the LOOKUP rule.
SequencesQueries that return the next number, for the SEQUENCE rule.
FrameworkOverrides of the lists the builders offer (formats, rules, datasource types…).

At a glance​

Scope:Sharedsales+Scan a tableExportDiscardSaveEntriesEnumsLookupsSequencesFramework+ Add entryfilter 4…CUSTOMER_STATUSCustomer statusDUE_DATEDue dateINVOICE_AMOUNTInvoice amountIS_ACTIVEActiveoverrideCUSTOMER_STATUSFind usagesRenameCloneGeneralRuleTranslationsAdvancedRulesLOOKUP ▾Rules valuesCUSTOMER_STATUSES ▾False valueDefaultAJustify— ▾SizeLookup paramsTYPE = CUSTOMERScopeshared, or one per connectorFive tabsentries, enums, lookups…Entry keyslabel shown underneathToolbarscan a table, export, saveRule tabrule, its value, defaultLookup paramsvalues for the query's :params

Scopes​

The Scope chips at the top choose which part of the dictionary is shown:

  • Shared — the entries every connector can use.
  • One scope per connector — entries, enums, lookups and sequences that only that connector's queries see. The + button adds a scope for an existing connector.

A query of the sales connector looks for an entry in the sales scope first, then in the shared scope. Two applications can therefore define the same key (STATUS) differently without clashing. The Framework tab is shared only.


How a column uses an entry​

A column of a query picks up the entry whose key matches its name (CUSTOMER_STATUS), or the entry named in its dd field when the names differ (an empty dd opts out). A label or format set on the column itself takes precedence over the entry's. See Connectors → Schema discovery and column hints.

On a screen, a column can also switch off the rule it inherits by setting the rule DISABLED — see Rules.


Entries​

The left-hand list shows each entry's key with its label underneath, and a filter field. Entry keys are written in upper case. The form on the right is split into tabs:

TabFieldEffect
GeneralLabelThe default label, used when no translation matches the user's language.
GeneralFormatHow the value is displayed and entered — see Formats.
RuleRulesThe rule applied to the item — see Rules.
RuleRules valuesThe rule's argument: the true value for BOOLEAN, the enum for ENUM, the lookup for LOOKUP, the sequence for SEQUENCE. The list changes with the rule.
RuleFalse valueBOOLEAN only: the value written when the box is unticked. Blank infers it from the true value (Y → N, 1 → 0, true → false); any other true value writes NULL.
RuleDefaultThe initial value when a new row is added.
RuleJustifyFor fixed-width character columns: right_blank (right-aligned, padded with spaces) or right_zero (right-aligned, padded with zeros). Applied to the written values and to the keys of the WHERE clause. Blank = left-aligned.
RuleSizeThe stored width of the item, used with Justify when the physical column is wider.
RuleDecimalsFor jdenumber, the implied decimal places of the stored integer; for the other numeric formats, the places shown (0 to 9).
RuleLookup paramsFixed values for the :params of the lookup's query (e.g. TYPE = CUSTOMER). The keys offered are the parameters the lookup declares.
Translationsone line per languageThe label in that language.
AdvancedOverrideMarks the entry as a local customisation: an upgrade package does not overwrite it.

The record bar offers Find usages, Rename, Clone and Delete. Renaming an entry, a lookup or a sequence updates its references in the other configuration files (screens, connectors, dictionary) and reloads; it asks to save pending changes first.

Formats​

FormatDisplayed as
text, textareaText, on one line or several.
number, integer, decimal, currencyA number.
date, datetime, timestampA date, with or without time. The form, the bulk edit and the filters offer the application's date picker: a field where the date can be typed (an impossible day goes back to the previous value) and a month calendar with Today and Clear, whose title opens a month and year chooser. A datetime or timestamp field adds a time field (hh:mm or hh:mm:ss). A value carrying its time zone (a PostgreSQL timestamptz) shows in the browser's local time; a value without a zone (Oracle DATE, JD Edwards dates) shows as stored.
jdedate, jdetimeA JD Edwards date (CYYDDD) or time (HHMMSS), shown as a regular date or time.
jdenumberA JD Edwards amount stored without its decimal point: with Decimals = 2, the stored 12345 reads and is entered as 123.45, and is written back as 12345. Filters are typed in real units; the Data Explorer totals and detail rows are scaled the same way. The scan of a JD Edwards table fills the decimals from the data dictionary.
booleanA tick or a cross.
passwordA masked value.
urlA link opening in a new tab; the form's field gets a button that opens it. Only http(s) addresses become links (www.… gets https://).
emailA mailto: link; the form's field gets a button that opens it. Only a value shaped like an address becomes a link.
colorThe code with a colour swatch beside it; in the form, the swatch opens the system colour picker. Hex codes and rgb() only.

For url, email and color, any other value stays plain text, and sorting, filtering and export keep the raw value.

The Framework tab can add values to this list.

Rules​

RuleEffect
BOOLEANThe value shows as a tick or a cross, and the form shows a check box. Rules values gives the true value (Y, 1, 01, true, T); False value the other one.
ENUMThe code shows with its label from the enum named in Rules values; the form offers the enum's values.
LOOKUPThe code shows with its label from the lookup named in Rules values; the form offers the lookup's rows in a searchable list.
SEQUENCEOn insert, the server fills the column with the next number of the sequence named in Rules values, inside the same transaction.
LOGINOn every insert or update, the server writes the signed-in user's name, in upper case, whatever the form sent. The form shows it already filled when a row is added.
SYSDATEOn insert or update, the server writes the current date and time (server local time) when no value was sent. The form shows today's date when a row is added.
PASSWORDOn write, the server encrypts the value with the master key (ENC:…) so that it can be decrypted when used — for connection passwords stored in a table. A blank password on update leaves the stored value unchanged. Pair it with the password format to mask the field.
DEFAULTOn insert or update, the Default value is written when the column comes empty.
DISABLEDSet on a screen column: cancels the rule inherited from the entry for that screen (for example an import screen whose rows already carry their dates).

The server-side rules (SEQUENCE, LOGIN, SYSDATE, PASSWORD, DEFAULT) apply to every write through the query — form, grid editing, API — not only to the form. A writable query can also stamp values explicitly with tokens such as {{LOGIN}} or {{SYSDATE}} — see Parameter binding.

Audit columns​

A rule applies to every write whose query binds the column:

ColumnRuleCondition
UPDATED_BYLOGIN—
UPDATED_ATSYSDATEThe column must come empty: keep it out of the dialog.
CREATED_BY, CREATED_ATLOGIN, SYSDATEOnly if the update query does not write them — otherwise each update would replace them.
IDSEQUENCEWhen the database does not number the rows itself.

The {{LOGIN}} / {{SYSTIMESTAMP}} tokens written in the insert and update queries are the simplest way to stamp these columns — see Audit trail.

---|---| | CREATED_BY, UPDATED_BY | LOGIN | | CREATED_AT, UPDATED_AT | SYSDATE | | ID | SEQUENCE (when the database does not number the rows itself) |

These columns need not appear in the form: the server fills them on every write, and the browser cannot change the user name.


Enums​

An enum is a fixed list of codes, for values known in advance (L / M / H for a priority).

FieldEffect
LabelThe name of the list.
ValuesOne line per code: Value (the stored code), Label (the text shown), and Translations of the label.
OverrideAs for entries.

An entry uses it with Rules = ENUM and Rules values = the enum's id.


Lookups​

A lookup is a query whose rows turn a code into a label — for values held in a table (statuses, countries, users).

FieldEffect
DescriptionWhat the lookup returns.
ConnectorThe connector of the query. Blank uses the connector of the column that references it.
QueryThe query returning the codes and labels. Buttons next to it edit the query, clone it, create one, or generate it from a table.
ValueThe result column holding the code.
LabelThe result column shown instead of the code.
Union sourcesFurther queries, possibly on other connectors or databases, whose rows are added to the list. Each must return the same columns as the main query.
Key columnsColumns that make the code unique when the same code has different labels (a code per company, for instance): the grid matches them against the row's columns of the same name.
Return paramsColumns that a screen column can copy into other fields of the form when a row is picked.
Display fieldsExtra columns shown next to the code and label in the list, to tell similar rows apart.
Filter fieldsDisplay fields that get filter chips at the top of the list.
OverrideAs for entries.

The lookup's query declares its own :params; their values come from the entry's Lookup params, or from the screen column. Cascading lists are built on the screen — see Sequences and lookups.


Sequences​

A sequence is a query that returns the next number, typically SELECT COALESCE(MAX(id), 0) + 1 FROM invoices.

FieldEffect
DescriptionWhat the sequence numbers.
ConnectorThe connector of the query. Blank uses the connector that fires it.
QueryThe query returning the next number. Its :params take their values from the row being inserted.
Dd idFires the sequence for every column whose entry has this key, even without the SEQUENCE rule. Blank limits it to the entries pointing at it.
ParamsThe parameters the query expects — for information.
OverrideAs for entries.

The sequence only fires on insert, inside the insert's transaction.


Framework​

The builders' drop-down lists (formats, rules, datasource types, HTTP methods, column alignments…) come from lists shipped with the framework. Override framework enum copies one of them here to change it: the copy replaces the shipped list. Removing the override brings back the shipped values.


Scan a table​

Scan a table creates entries from a real table instead of typing them one by one. The Generate dictionary items dialog asks for:

  • Connector — the connector to read;
  • Store under (app) — the scope the entries go to (the connector's by default);
  • Table to scan;
  • JD Edwards connector — strips the 2-character table prefix to reach the shared data item, and reads the JD Edwards data dictionary.

Scan lists one row per column. Columns that already have an entry are greyed out and marked (exists); they are never overwritten. Missing ones are ticked. Each row can be adjusted before it is added:

ColumnContent
LabelFilled from the JD Edwards data dictionary on a JD Edwards connector; blank otherwise.
FormatInferred from the column's SQL type.
Rule / Rule valueAn optional rule and its argument.
Lookup paramsValues for a lookup's parameters (TYPE=CUSTOMER).
DefaultA default value.
SourceWhere the proposal comes from.

Add N item(s) writes the ticked entries into the chosen scope and reloads the configuration. The Screen Creation Assistant runs the same scan in its Dictionary step.


Export​

Export downloads dictionary_entries.xlsx: one row per entry, every scope included, with its scope, key, label, format, rule, rule value, false value and default — handy to compare with the data dictionary of the source application.


Saving​

Save checks every entry, enum, lookup and sequence, writes the file and reloads the configuration: screens show the new labels on their next refresh. Discard drops the unsaved changes. Settings is open to superusers only.

Translated labels follow the user's language; how it is chosen is described in Translations.


What's next​