Skip to main content

JDitoRecordContainer

This page provides generated reference documentation for the JDitoRecordContainer data model.

A JDitoRecordContainer has JDito code as data source

Overview

PropertySummary
titleSingular title of the model, e.g. Surname
descriptionShort technical description of the model in plain text.
documentationContains the documentation of the data model in the popular AsciiDoc format (.adoc). The documentation should be set by the developer to explain different…
filterExtensionsThe filter extensions given
jDitoRecordAliasAlias on which the processes of this JDito records field are executed.
recordFieldMappingsMapping that determines how the data of the JDito recordContainer is linked to the entity-fields. Example: If you return in the contentProcess per row 5…
aggregateFieldMappingsMapping of aggregateFields of the JDITO recordContainer
isPageableDetermines if the recordContainer "knows" how to process data blockwise or not. Since you can do in the JDito-record-container everything you want, you need to…
supportsFilterExtensionGroupingThis will enable filterExtensions even on non-pageable RecordContainers for grouping. Be aware of the consequences of enabling the support of filterExtensions…
isFilterableDetermines if the recordContainer "knows" how to filter data or not. Since you can do in the JDito-record-container everything you want, you need to implement…
isGroupableDetermines if the recordContainer is able to group data or not. Since you can do in the JDito-record-container everything you want, you need to implement…
isRequireContainerFilteringIn some situations (for example searching in a lookup component on a not pageable recordContainer), filtering is then done on clientSide. If you want to…
isSortableDetermines if the recordContainer "knows" how to sort data or not. Since you can do in the JDito-record-container everything you want, you need to implement…
contentProcessProcess that has to return the current content; return a 2D-array via result.object(...). There are - depending on configured properties - a lot of…
rowCountProcessProcess that has to return the current amount of records. Whenever possible you should implement this process to increase performance of the system. This is…
hasDependentRecordsIf your records are interdependent, for example in a parent-child structure for trees, you should use this flag. This has effects when deleting records because…
onInsertProcess that is executed when a record is to be stored in the JDito.
onUpdateProcess that is executed when a record is to be updated in the JDito.
onDeleteProcess that is executed when a record is to be deleted in the JDito.
cacheTypeDefines the type for the caching of this record container. If no cacheType is selected, it will default to "NONE" and no cache will be used for this record…
cacheKeyProcessProcess that will return the computed cache key for the given cache request. The cache request is defined through the given local variables. It's expected to…

title

Type: String
Constraints: Verification: TITLE_LENGTH

Singular title of the model, e.g. Surname


description

Type: String

Short technical description of the model in plain text.


documentation

Type: String

Contains the documentation of the data model in the popular AsciiDoc format (.adoc). The documentation should be set by the developer to explain different aspects (like purpose, concept, etc.) of the data model that he designed.
You may want to add the plugin "AsciidoctorJ" to your ADITO Designer in order to modify AsciiDoc files.


filterExtensions

Type: FilterExtensions

The filter extensions given


jDitoRecordAlias

Type: String

Alias on which the processes of this JDito records field are executed.


recordFieldMappings

Type: Mappings

Mapping that determines how the data of the JDito recordContainer is linked to the entity-fields. Example: If you return in the contentProcess per row 5 columns of data (=an array that contains arrays with 5 elements) you have to specify in the recordFieldMapping 5 entity-fields where the value of the respective row are mapped.
This means: You need to specify the correct amount and order of fields in the mapping.


aggregateFieldMappings

Type: Mappings

Mapping of aggregateFields of the JDITO recordContainer
Usage see: recordFieldMappings


isPageable

Type: Boolean
Default: false

Determines if the recordContainer "knows" how to process data blockwise or not. Since you can do in the JDito-record-container everything you want, you need to implement paging yourself. Therefor, you get extra $local-variables in the contentProcess.


supportsFilterExtensionGrouping

Type: Boolean
Default: false
Requires: isPageable = false

This will enable filterExtensions even on non-pageable RecordContainers for grouping. Be aware of the consequences of enabling the support of filterExtensions (and filterExtensionSets): This will result in several queries for the recordContainer when grouped by a filterExtension (each group and entry will be an extra query). This will have an impact to the performance of loading the data (all data will be loaded).
In a JDito-RecordContainer the grouping needs to be implemented, see the "isGroupable" property for details on how to implement group-rows.


isFilterable

Type: Boolean
Default: false

Determines if the recordContainer "knows" how to filter data or not. Since you can do in the JDito-record-container everything you want, you need to implement applying a filter yourself. Therefor, you get extra $local-variables in the contentProcess.


isGroupable

Type: Boolean
Default: false

Determines if the recordContainer is able to group data or not. Since you can do in the JDito-record-container everything you want, you need to implement applying a group yourself. Therefor, you get extra $local-variables in the contentProcess. If isGroupable is not set, the client does the grouping. This means that the RecordContainer does not have to implement any logic for groupings.
If isGroupable is set, grouping logic must be implemented. Various $local variables are available to make this easier.\

  • $local.grouped: Contains the current grouping. This variable only exists if there is a grouping. If $local.grouped is set, the following three fields must be placed in front of the result array in the ContentProcess of the RecordContainer in this order:
    childCount\
    • groupValue\
    • groupTitle\
  • $local.startrow: Contains the start index of entries to be loaded.\
  • $local.pagesize: Contains the maximum number of entries which can be returned\
  • $local.order: Contains the fields and the corresponding order as a map in the following format: e.g. "ATTRIBUTE_TYPE.displayValue" -> "UP"\
  • $local.filter: Contains the filter properties as a map with the following entries: "filter", "permissions", "subset", "ids", "excludedIds"\
  • $local.filters: Contains all filter properties as a search condition in form of a JSON\
  • $local.userfilter: Contains vars.get("$local.filter").filter; as a search condition in form of a JSON\
  • $local.idvalues: Contains the IDs which are loaded as a String array\
  • $local.idvaluesExcluded: Contains the IDs which are excluded when loading the data\
  • $local.fieldhints: Contains a map with two entries - aggregateFields in form of an array and recordFields in form of an array

isRequireContainerFiltering

Type: Boolean
Default: false

In some situations (for example searching in a lookup component on a not pageable recordContainer), filtering is then done on clientSide. If you want to prevent filtering on the clientSide (which is very reasonable from a performance perspective) you can force with this property(=true) that filtering shall always be done by the recordContainer.


isSortable

Type: Boolean
Default: false

Determines if the recordContainer "knows" how to sort data or not. Since you can do in the JDito-record-container everything you want, you need to implement sorting mechanisms yourself. Therefor, you get extra $local-variables in the contentProcess.


contentProcess

Type: String

Process that has to return the current content; return a 2D-array via result.object(...). There are - depending on configured properties - a lot of $local-variables that might be set which you should handle in your contentProcess. For example the $local.idvalues variable is very important when it comes to reloading specific records.

Parameters

$local.idvalues
  One-dimensional array of ID's

$local.startrow
  The index of the first line

$local.pagesize
  Number of data records

$local.order
  JSON Object that determines the sort order

$local.userfilter
  Specified a filter for the user

$local.filter
  Specifies a filter

$local.filters
  Array of JSON objects with field, operator and value

$local.grouped
  Name of grouped field. Null if no grouping exisits.


rowCountProcess

Type: String

Process that has to return the current amount of records. Whenever possible you should implement this process to increase performance of the system. This is because in certain situations the amount of records is needed and if you do determine the amount of records the system needs to call the contentProcess only to get the count of elements. If you're able to determine the amount of records faster and with less resources you should do this in this process so that only this process needs to be called for determining the count of records.

Parameters

$local.filter
  Specifies a filter

$local.filters
  Array of JSON objects with field, operator and value


hasDependentRecords

Type: Boolean
Default: false

If your records are interdependent, for example in a parent-child structure for trees, you should use this flag. This has effects when deleting records because now the data structure is always rebuilt => a refresh is triggered after deletion.


onInsert

Type: String

Process that is executed when a record is to be stored in the JDito.
As localvar, $local.uid (ID of the record) and $local.rowdata (entry as JSON) are available here.
It is not possible to return values from this process.

Parameters

$local.uid
  Value of the ID column

$local.rowdata
  Contains all data of the currently processed line as JSON


onUpdate

Type: String

Process that is executed when a record is to be updated in the JDito.
As localvar, $local.uid (ID of the record) and $local.rowdata (entry as JSON) are available here.
It is not possible to return values from this process.

Parameters

$local.uid
  Value of the ID column

$local.rowdata
  Contains all data of the currently processed line as JSON


onDelete

Type: String

Process that is executed when a record is to be deleted in the JDito.
As localvar, $local.uid (value of the ID column) and $local.rowdata (entry as JSON) are available here.
It is not possible to return values from this process.

Parameters

$local.uid
  Value of the ID column

$local.rowdata
  Contains all data of the currently processed line as JSON


cacheType

Type: ERecordContainerCacheType
Default: NONE
Requires: isPageable = false

Defines the type for the caching of this record container. If no cacheType is selected, it will default to "NONE" and no cache will be used for this record container. "NONE": Caching is disabled for this record container. "GLOBAL": A global cache store for all users on the current server will be used for this record container. "SESSION": A cache store which is scoped to the current user will be used for this record container.


cacheKeyProcess

Type: String
Requires: isPageable = false

Process that will return the computed cache key for the given cache request. The cache request is defined through the given local variables. It's expected to return a string, which acts as a unique key for the cache request. If null is returned, the current cache request will never be cached.

Parameters

$local.idvalues
  One-dimensional array of ID's

$local.filters
  Array of JSON objects with field, operator and value

$local.order
  JSON Object that determines the sort order

$local.grouping
  Array of strings with the grouped fields