JDitoRecordContainer
This page provides generated reference documentation for the JDitoRecordContainer data model.
A JDitoRecordContainer has JDito code as data source
Overview
| Property | Summary |
|---|---|
| title | Singular title of the model, e.g. Surname |
| description | Short technical description of the model in plain text. |
| documentation | Contains the documentation of the data model in the popular AsciiDoc format (.adoc). The documentation should be set by the developer to explain different… |
| filterExtensions | The filter extensions given |
| jDitoRecordAlias | Alias on which the processes of this JDito records field are executed. |
| recordFieldMappings | 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… |
| aggregateFieldMappings | Mapping of aggregateFields of the JDITO recordContainer |
| isPageable | 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… |
| supportsFilterExtensionGrouping | This will enable filterExtensions even on non-pageable RecordContainers for grouping. Be aware of the consequences of enabling the support of filterExtensions… |
| isFilterable | 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… |
| isGroupable | 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… |
| isRequireContainerFiltering | 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… |
| isSortable | 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… |
| contentProcess | Process that has to return the current content; return a 2D-array via result.object(...). There are - depending on configured properties - a lot of… |
| rowCountProcess | 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… |
| hasDependentRecords | 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… |
| onInsert | Process that is executed when a record is to be stored in the JDito. |
| onUpdate | Process that is executed when a record is to be updated in the JDito. |
| onDelete | Process that is executed when a record is to be deleted in the JDito. |
| cacheType | 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… |
| cacheKeyProcess | 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… |
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