new ModelDef()
Abstração da definição do modelo de dados a partir de uma classe. Pode ser entendido como um mapeamentos objeto-relacional, na camada MVC.
Extends
- ClassDef
Members
-
cache :ClassDefCache
-
Objeto utilizado para guardar informações de cache associadas a uma definição de modelo de dados de uma classe. Quando uma definição é modificada, todas as informações no cache associadas a ela são descartadas. O sistema também poderá realizar descarte das informações a qualquer momento por outros critérios, como limite do tamanho do cache ou redução do consumo de memória da aplicação.
Importante: como o cache a princípio é mantido durante toda a vida do sistema, não utilize-o para guardar dados de informações úteis apenas para um processamento específico que não será reutilizado em outro momento da vida de uma sessão.Type:
- ClassDefCache
-
cachedData :boolean|CachedDataOptions
-
Determina a existência de replicação de dados da tabela em disco.
Type:
- boolean | CachedDataOptions
- Deprecated:
-
- Utilize #cacheStrategy.
-
cachedFields :Array.<string>
-
Determina quais campos serão armazenados no cache local. Conceito desligado na versão 4.0 ou superior.
Type:
- Array.<string>
-
cachedVfsContent :boolean
-
Determina como será armazenado o conteúdo dos arquivos da VFS (coluna iContent) desta classe. Caso seja
true
, o conteúdo dos arquivos será armazenado diretamente na tabela iVfs, fazendo parte do cache local. Caso sejafalse
, o conteúdo será armazenado na tabela iVfsLob apenas na base de dados, sendo necessária uma consulta ao banco de dados na leitura do conteúdo do arquivo.Importante: arquivos do tipos "application/x-config", "application/x-model", "application/x-view" e "application/x-class" sempre são armazenados diretamente na tabela iVfs, independentemente do valor desta propriedade.
Type:
- boolean
-
cacheStrategy :TableCacheStrategy
-
Define a estratégia de cache da tabela associada a esta classe no cache local dos Engines.
Type:
- TableCacheStrategy
-
classChangePolicy :number
-
Indica a forma como se valida a mudança de classe dos registros.
Type:
- number
-
classDefManager :ClassDefManager
-
Gestor de definições de classe.
Type:
- ClassDefManager
-
classFieldName :string
-
Indica qual é o nome do campo na tabela que irá relacionar a classe no registro.
Type:
- string
-
dataDictionary :string
-
Ajuda sobre o que representa a tabela no nível da classe. Aqui devem ser abordados assuntos técnicos e relacionados a estrutura e relacionamentos entre as tabelas
Type:
- string
-
<non-null> datasourceDefaultFilters :Array.<string>
-
Indica quais campos serão filtros da consulta de um datasource.
Type:
- Array.<string>
- Deprecated:
-
- Yes
-
dbIndexSpace :string
-
Indica em qual tablespace serão criados os índices da tabela definida por esta classe ou uma de suas filhas.
Type:
- string
-
<non-null> dbSums :Array
-
Utilize a API nova de tabela de soma.
Type:
- Array
- Deprecated:
-
- Yes
-
dbTableSpace :string
-
Indica em qual TABLE_SPACE as tabelas serão criadas.
Type:
- string
-
displayName :string
-
Nome de execução desta classe. Caso não seja informada, será o nome da classe que definiu este modelo.
Type:
- string
-
displayOrder :number
-
Ordem de exibição da classe, quando exibida em menus ou em conjunto com classes irmãs. Se nenhum valor for fornecido, a ordem considerada é a ordem alfabética.
Type:
- number
-
fieldClass :function
-
Determina qual é a classe que é utilizada para construção de campos no Mapeamento objeto-relacional. O método ModelDef#field retornará uma instância da classe apresentada nesta propriedade. Ou seja, se existir um campo criado para o nome de campo fornecido, uma instancia da classe em fieldClass é fornecido se não houver é criada uma e retornada.
Type:
- function
-
fields :FieldList
-
Campos definidos na classe de dados e na hierarquia de classes mãe.
Type:
- FieldList
-
findOrder :number
-
Determina a ordem de pesquisa dentro do x-find nas classes. A ordenação é realizada para todas as classes que possuem x-find na hierarquia da mãe para os filhos.
Type:
- number
-
groups :FieldGroupSet
-
Conjunto de grupos de campo.
Type:
- FieldGroupSet
-
hasOwnJustToGroup :boolean
-
Propriedade que indica se o justToGroup foi definido explicitamente para a classe corrente.
Type:
- boolean
-
help :string
-
Ajuda conceitual sobre uma determinada classe. É importante que o help não informe conceitos técnicos ou de interface. Essas informações devem estar descritas na propriedade dataDictionary.
Type:
- string
-
<non-null> indexes :Array.<string>
-
Índices que devem ser criados no cache local na inicialização do sistema.
Type:
- Array.<string>
- Deprecated:
-
- Propriedade não mais utilizado pelo Engine. Os valores declarados serão ignorados pelo sistema.
-
integerDatabaseType :string
-
Tipo de dado que deve ser utilizado na base de dados para os campos do tipo "integer".
O tipo "integer" é um opção legada que existia antes da criação dos tipos "int64" e "int32".
Type:
- string
-
justToGroup :boolean
-
Determina se a classe utilizada é somente para agrupamento.
Type:
- boolean
-
keyFieldName :string
-
Informa qual é o campo chave da tabela.
Type:
- string
-
lookupDisplayFieldName :string
-
Informação de um determinado registro que será fornecida a partir de uma API implementada no servidor para ser exibida em casos de relação entre tabela(aka lookup).
Type:
- string
-
managedDatabaseSchema :boolean
-
Indica se os processos de atualização devem modificar o esquema da tabela definido por esta classe. Deve ser
true
para as tabelas gerenciadas pelo sistema efalse
para as tabelas criadas e mantidas por sistemas de terceiros.Importante: esta configuração deve ser realizada apenas no arquivo x-model ou x-class que definiu a tabela por meio da propriedade tableName.
Type:
- boolean
-
memoDbType :string
-
Tipo de dado que representa o campo memo no banco. Esse tipo pode variar para os diversos bancos que o Engine suporta.
Type:
- string
-
metaClass :number
-
Campo classe utilizado na tabela classe.
Type:
- number
-
occurrenceLimit :number
-
Máxima quantidade de ocorrências a serem pesquisadas durante a pesquisa de um x-finder.
Type:
- number
-
<non-null> onLookupAddResult :Event
-
Evento que filtra ocorrências válidas. Esse evento apresenta a característica de disparar os listeners definidos nas classes ancestrais.
Type:
- Event
- Deprecated:
-
- Este evento não é emitido pelo Web Framework. Utilize o evento "lookupAddResult" do campo lookup.
-
ownFields :Array.<Field>
-
Array com os campos criados ou potencialmente modificados na definição do modelo da classe de dados indicada por #key. Diferente de #fields, não farão parte desta coleção os campos herdados da classe-mãe que não tenham sido acessados ou modificados nesta definição de classe.
Type:
- Array.<Field>
-
realm :string
-
Determina o realm a qual esta classe/diretório da Virtual File System está associado. Requisições HTTP que executem scripts contidos neste diretório utilizarão ambientes JavaScripts do realm informado. Veja module:@nginstack/engine/lib/classdef/RealmConfig para mais detalhes sobre a configuração de realms.
Type:
- string
-
session :Object
-
Sessão do usuário que invocou a criação da definição de modelo.
Type:
- Object
-
sourceType :SourceType
-
Indica o tipo de fonte que foi utilizado para criar esta definição.
Type:
- SourceType
-
tableName :string
-
Nome da tabela que o modelo objeto-relacional da classe irá mapear.
Type:
- string
-
transactionLogMaxDays :number
-
Quantidade máxima de dias em que os logs serão mantidos na base. Para realizar a limpeza é necessário executar o processo localizado em: Admin > Auditoria > Limpar tabela de Log.
Type:
- number
-
upgradeChangesTableStructure :boolean
-
Indica se os processos de atualização devem modificar o esquema da tabela definido por esta classe.
Type:
- boolean
- Deprecated:
-
- Utilize #managedDatabaseSchema.
-
upgradeMustSyncRecords :boolean
-
Indica se os processos de atualização devem sincronizar os registros negativos da tabela configurada por esse x-class. Por padrão, apenas as tabelas que participam do cache local têm os seus registros sincronizados. Esse comportamento pode ser modificado por meio de uma configuração explícita desta propriedade.
Importante: Essa configuração deve ser realizada apenas em x-class que definem uma tabela por meio da propriedade tableName.Type:
- boolean
- See:
-
versionFieldName :string
-
Nome do campo que guardará as versões do registro.
Type:
- string
Methods
-
<static> declareArray(obj, name)
-
Declara um array dentro de um objeto, respeitando as definições declaradas na hierarquia de classes.
Parameters:
Name Type Description obj
ModelDef Objeto aonde o array será declarado.
name
string Nome do array que foi declarado.
-
<static> declareCloneableObject(obj, propertyName, initialValue)
-
Declara um objeto que pode sofrer o processo de clonagem em um outro objeto.
Parameters:
Name Type Description obj
ModelDef Objeto onde será criado a propriedade.
propertyName
string Nome da propriedade.
initialValue
* Valor inicial.
-
<static> declareEvent(obj, name)
-
Declara um getter para um evento em um determinado objeto, respeitando as definições de hierarquia.
Parameters:
Name Type Description obj
ModelDef Objeto que terá um evento declarado.
name
string Nome do evento
-
<static> declareGetterOfObjectProperty(obj, propertyName, objectClassName)
-
Declara um Getter que manipula uma instância de uma determinada classe Javascript em um objeto, respeitando as definições declaradas na hierarquia de classes.
Parameters:
Name Type Description obj
ModelDef Objeto aonde o getter será declarado
propertyName
string Nome da propriedade.
objectClassName
string Nome da classe que irá construir uma instância.
-
<static> declareObject(obj, name)
-
Declara um objeto em outro objeto respeitando as definições declaradas na hierarquia de classes.
Parameters:
Name Type Description obj
ModelDef Objeto aonde será declarado o objeto.
name
string Nome do objeto.
-
canAddAdaptedListeners()
-
Determina se os eventos declarados utilizando a API antiga antiga de eventos (onNomeEvento) serão ignorados.
Por padrão, os listeners adicionados utilizando a API antiga de eventos serão ignorados caso sejam definidos em um arquivo do tipo x-class quando solicitado o modelo (getModelDef) de uma classe que não está configurada em modo estrito.
Returns:
- Type
- boolean
-
clone()
-
Cria uma cópia desta definição de modelo de dados.
Returns:
- Type
- ModelDef
Example
var modelDef = classDefManager.getModelDef(ClassKeys.LICENSES); var modelDefWithoutEvents = modelDef.clone(); modelDefWithoutEvents.offAll(); modelDefWithoutEvents.fields.map(function (fld) { fld.offAll(); });
-
declareCloneableObject(propertyName, initialValue)
-
Declara um objeto que pode sofrer o processo de clonagem.
Parameters:
Name Type Description propertyName
string Nome da propriedade.
initialValue
* Valor inicial.
-
declareEvent(name)
-
Declara um getter para um evento na definição de classe, respeitando as definições declaradas na hierarquia de classes.
Parameters:
Name Type Description name
string Nome do evento.
-
declareGetterOfObjectProperty(propertyName, objectClassName)
-
Declara um Getter que manipula uma instância de uma determinada classe Javascript na instância da camada de modelo, respeitando as definições declaradas na hierarquia de classes.
Parameters:
Name Type Description propertyName
string Nome da propriedade.
objectClassName
string Nome da classe que irá construir uma instância.
-
declareObject(name)
-
Declara um objeto na instância da camada de modelo, respeitando as definições declaradas na hierarquia de classes.
Parameters:
Name Type Description name
string Nome do objeto.
-
field(name [, type] [, size])
-
Obtém ou cria um campo na classe de dados. Este método retornará o campo existente com o nome informado ou criará um caso não exista. Nesse último caso, é obrigatório informar o tipo do campo. Tipos suportados:
"string" - Tipo utilizado para campos que conterão texto;
"password" - Tipo utilizado para campos que conterão senhas;
"masterdetail" - Tipo utilizado para criar uma relação de 1 para N entre duas classes. Para utilizar esse tipo de campo é obrigatório o preenchimento das seguintes propriedades:- classKey: indica a classe de dados que contém os registros detalhes da relação.
A classe de dados que definiu o campo do tipo "masterDetail" é a classe considerada
mestre da relação;
- masterFieldNames: indica os campos da classe de dados mestre que devem ser utilizados
para filtrar os registros da classe de dados detalhe.
- detailFieldNames: indica os campos da classe de dados detalhe que serão filtrados
com os valores dos campos masterFieldNames da classe mestre.
Pseudo-código para obtenção dos registros detalhes:
var tabelaDetalhe = classes.getCachedDataSet(field.classKey); var camposMestre = getFieldValues(field.masterFieldNames); tabelaDetalhe.indexFieldNames = field.detailFieldNames; detail.setRange(camposMestre, camposMestre);
"int64" - Tipo utilizado para campos que conterão números inteiros de 64 bits. Campos que armazenem chaves ou versões do sistema devem utilizar este tipo.
"int32" - Tipo utilizado para campos que conterão números inteiros de 32 bits. Deve ser utilizado para valores contidos na faixa de [-Math.pow(2, 31) ~ Math.pow(2, 31) - 1] e que não sejam chaves e versões do sistema. Para esses últimos, deve ser utilizado o tipo "int64".
"integer" - Tipo legado que existia antes da criação dos tipos "int64" e "int32". O tipo "integer" será mapeado para um desses dois tipos de acordo com o valor retornado pela propriedade #integerDatabaseType.
"number" - Tipo utilizado para campos que conterão números decimais. Por padrão terão duas casas decimais.
"latitude" - Tipo utilizado para campos que conterão números decimais para representar latitudes. Por padrão terão até cinco casas decimais e a parte inteira conterá até três casas.
"longitude" - Tipo utilizado para campos que conterão números decimais para representar longitudes. Por padrão terão até cinco casas decimais e a parte inteira conterá até três casas.
"angle" - Tipo utilizado para campos que conterão números decimais para representar ângulos. Por padrão terão duas casas decimais e a parte inteira conterá até três casas.
"memo" - Tipo utilizado para campos que conterão textos longos (mais de 4000 caracteres). "date" - Tipo utilizado para campos que conterão datas.
"combo" - Tipo utilizado para campos que conterão listas de opções ou combinação de outros tipos.
"time" - Tipo utilizado para campos que conterão horas. Utilizado para trabalhar com tempo.
"boolean" - Tipo utilizado para campos que conterão valores lógicos ou booleanos.
"file" - Tipo utilizado para campos que conterão arquivos.Parameters:
Name Type Argument Description name
string Nome do campo a ser obtido ou criado.
type
string <optional>
Tipo do campo. Opcional quando for solicitado um campo existente.
size
number <optional>
Tamanho do campo em caracteres. Obrigatório apenas para os tipos "string" e "password".
Returns:
- Type
- Field
- classKey: indica a classe de dados que contém os registros detalhes da relação.
A classe de dados que definiu o campo do tipo "masterDetail" é a classe considerada
mestre da relação;
-
fileAttributes(vfsKey)
-
Informa os atributos de um determinado arquivo na tabela iVfs. Os atributos servem para informar se um arquivo será exibido, informar nome, ordem de exibição e permissão de controle. A tabela iVfs representa o sistema de arquivos virtuais, ou seja, são arquivos que estão sendo armazenados diretamente no banco e são replicados para o cache local
Parameters:
Name Type Description vfsKey
number Chave do arquivo.
Returns:
Atributos do arquivo.
- Type
- Object
-
findField(name)
-
Pesquisa por um campo definido dentro da classe, caso encontre, retorna o campo encontrado.
Parameters:
Name Type Description name
string Nome do campo.
Returns:
- Type
- Field
-
getClassDef(classKey)
-
Prefira usar module:@nginstack/engine/lib/classdef/ClassDefManager.getViewDef.
Parameters:
Name Type Description classKey
- Deprecated:
-
- Yes
Returns:
- Type
- ViewDef
-
getClassDefWithEvent(eventName [, skipCurrentClass])
-
Obtém a primeira definição da camada de visão na hierarquia com base no nome de um evento registrado por declareEvent. A instância resultante é encontrada a partir da instância da camada de visão ou de modelo da classe corrente. Caso não encontre, nenhuma instância é retornada.
Parameters:
Name Type Argument Description eventName
string Nome do evento.
skipCurrentClass
boolean <optional>
Escapar a classe corrente, se essa opção for true a busca pela instância irá iniciar a partir da classe pai. Em caso de não haver classe pai, a busca será iniciada pela classe Raiz.
- Deprecated:
-
- Este método suporta apenas os eventos customizados declarados pelo método #declareEvent, não podendo ser utilizado para os eventos padrão do sistema. Seu uso não é mais recomendado, devendo o seu uso ser substituído por uma lógica customizada equivalente. Ele será eliminado no futuro.
Returns:
-
Definição da camada de visão obtida a partir de uma propriedade.
- Type
- ViewDef
-
- Type
- *
-
getClassDefWithObjectProperty(propertyName [, skipCurrentClass])
-
Obtém a primeira definição da camada de visão na hierarquia com base no nome de uma propriedade da API de definição. A instância resultante é encontrada a partir da instância da camada de visão ou de modelo da classe corrente. Caso não encontre, nenhuma instância é retornada.
Parameters:
Name Type Argument Description propertyName
string Nome da propriedade
skipCurrentClass
boolean <optional>
Escapar a classe corrente, se essa opção for true a busca pela instância irá iniciar a partir da classe pai. Em caso de não haver classe pai, a busca será iniciada pela classe Raiz.
Returns:
Definição da camada de visão obtida a partir de uma propriedade.
- Type
- ViewDef
-
getExtraFilterExpression()
-
Obtém uma expressão com os filtros extras para esta classe de dados. Os filtros extras são configurados por meio da propriedade Field#permissionFilterFieldName dos campos e possibilitam que o administrador configure permissões dos usuários levando em consideração outros campos além da classe do registro. Esse recurso é útil quando a classe do registro não é suficiente para segmentar corretamente as permissões dos usuários e outros campos, como o Estabelecimento associado ao registro, podem ser utilizados para determinar as permissões.
- See:
-
- #getExtraFilterFields
- Field#permissionFilterFieldName
Returns:
Caso a classe tenha filtros extras configurados, será retornada uma expressão de filtro que consiste dos campos de permissões concatenados por ";". Caso o nome do campo seja diferente do campo de permissão, será utilizada a expressão "[field.name] in [field.permissionFilterFieldName]". A expressão retornada deve ser utilizada nas APIs de DataSet que filtram as permissões do usuário, como Classes#getCachedDataSet e DataSet#setView. Caso não haja filtros extras configurados, será retornada uma string vazia.
- Type
- string
Example
var modelDef = classDefManager.getModelDef(ClassKeys.LICENSES); var filteredDataSet = classes.getCachedDataSet(ClassKeys.LICENSES, session.userKey, modelDef.getExtraFilterExpression());
-
getExtraFilterFields()
-
Obtém os campos desta classe que foram configurados como filtro extra de permissão por meio da propriedade Field#permissionFilterFieldName.
- See:
-
- #getExtraFilterExpression
- Field#permissionFilterFieldName
Returns:
Array com os campos que possuem a propriedade Field#permissionFilterFieldName informada.
- Type
- Array.<Field>
Example
var modelDef = classDefManager.getModelDef(ClassKeys.LICENSES); var extraFilterFields = modelDef.getExtraFilterFields(). if (extraFilterFields.length === 0) { this.alert('Classe de licenças não possui campos de filtro de permissão extra.'); }
-
getFieldsAsStringList()
-
Pega todos os campos definidos na classe e hierarquia de classes mãe. Irá obter um StringList a partir do fieldList da classe.
- Deprecated:
-
- Mantido apenas por compatibilidade para quem ainda precisa utilizar um StringList como repositório de fields
Returns:
Objeto StringList com todos os campos definidos para a classe e com os definidos nas classes mãe
- Type
- StringList
-
getFieldsByProperty(propertyName)
-
Retorna uma lista de campos cuja propriedades tenham os valores informados.
Parameters:
Name Type Argument Description propertyName
* <repeatable>
Há múltiplas formas de definição dos parâmetros, veja o exemplo abaixo.
Returns:
Lista de campos.
- Type
- Array.<Field>
Example
//Propriedade e valor: //Nessa forma serão obtidos os campos que possuem as propriedades fornecidos //com os respectivos valores. getFieldsByProperty('prop', valor, 'prop2', valor2); //Array de propriedades e de valores: //Nessa forma serão fornecidos dois arrays, o primeiro array é o de propriedades //que se relaciona com o segundo array, que é o de valores, pelo índice. getFieldsByProperty(['prop', 'prop2'], [valor, valor2]); //Através de um callback //Nesta forma são obtidos os campos de acordo com a regra definida no callback. getFieldsByProperty(function (field) { return field.required === true; });
-
getKeySchema()
-
Estrutura de dados de uma chave do banco DBKey. Essa estrutura será utilizada nos casos em que houver a necessidade de validar dados ou tratar dados na camada de apresentação.
Returns:
JSON que representa a estrutura de dados de uma DBKey, ou seja, é a representação de uma relação entre registros do banco de dados.
- Type
- string
-
getLookupDisplay(sender, value [, event])
-
Obtém o valor de exibição a partir de um evento onLookupDisplay anexado a um objeto disparador.
Parameters:
Name Type Argument Description sender
Object Objeto disparador.
value
* Valor que deve ser exposto para o evento.
event
Event <optional>
Evento opcional que deve ser informado em substituição ao padrão onLookupDisplay.
Returns:
Valor de exibição.
- Type
- string
-
getNormalizedDef(classKey)
-
Obtém uma instância da definição da classe de acordo com a herança que foi projetada para a hierarquia. Ou seja se o protótipo da definição da primeira classe for de modelo todas as outras instâncias de classe que forem montadas a partir da execução serão instâncias de modelo também. Caso o protótipo na hierarquia seja construído a partir da definição de visão (uwi.classdef.ViewDef) sempre será obtida uma instância de visão durante o uso deste método.
Parameters:
Name Type Description classKey
number Chave da classe.
Returns:
Definição obtida.
- Type
- ModelDef
-
hasEvent(eventName)
-
Determina se um evento foi declarado na definição da classe.
Parameters:
Name Type Description eventName
string Nome do evento.
Returns:
True se o evento houver sido declarado na definição de classe.
- Type
- boolean
-
hasObjectProperty(propertyName)
-
Determina se a definição de classe possui uma propriedade.
Parameters:
Name Type Description propertyName
string Nome da propriedade
Returns:
True se houver definição da propriedade na classe.
- Type
- boolean
-
hasObjectPropertyDeclaredInThisClass(propertyName)
-
Determina se uma definição de classe declarou uma determinada propriedade.
Parameters:
Name Type Description propertyName
string Nome da propriedade.
Returns:
True se a propriedade houver sido declarada na definição da classe.
- Type
- boolean
-
hasOwnFields()
-
Indica se há campos declarados nesta classe. Caso não haja, os campos dessa classe serão os mesmos da classe mãe.
Returns:
- Type
- boolean
-
hasOwnFileAttributes()
-
Indica se os atributos do arquivo foram informados nesta classe.
- See:
Returns:
True se os atributos foram informados, false caso contrário.
- Type
- boolean
-
hideFiles(files)
-
Oculta os arquivos informados no menu principal.
Importante: Arquivos ocultos com o atributo permissionControlEnabled falso não serão visíveis nos processos de permissão.Parameters:
Name Type Description files
Array.<number> Chaves dos arquivos que serão ocultos.
- See:
-
- ModelDef#fileAttributes
-
init( [opt_parentDef])
-
Método utilizado pelo gerenciador de classes para sinalizar que a definição deve ser inicializada. Ele é executado logo após a criação da definição.
Parameters:
Name Type Argument Description opt_parentDef
ClassDef <optional>
Definição pai da definição que está sendo criada.
-
resetJustToGroup()
-
Define justToGroup e hasOwnJustToGroup como false, implementando assim a definição padrão.
-
setFieldsProperties()
-
Este método cria ou seta as propriedades informadas com os valores informados em cada campo da definido nos parâmetros. Para utilizar esse método existem diversas formas de o invocar, veja os exemplo abaixo.
Example
// Array de campos com callback para setar as propriedades: fl.setFieldsProperties([field1, field2], function (field) { field.prop = valor; field.prop2 = valor2; }); // Array com os nomes dos campos com callback para setar as propriedades: fl.setFieldsProperties(['campo1','campos2'], function (field) { field.prop = valor; field.prop2 = valor2 }); // String com o nomes dos campos separados por virgula ou ponto e virgula como primeiro // parâmetro. // Array com nomes das propriedades a serem definidas como segundo parâmetro. // Array com os valores a serem definidos nas propriedades de mesmo índice como terceiro // parâmetro. fl.setFieldsProperties('campo1,campos2', ['prop', 'prop2'], [valor, valor2]); // Ainda na forma anterior pode ser utilizado o caractere '*' para obter todos os campos. fl.setFieldsProperties('*', ['prop', 'prop2'], [valor, valor2]); // Lista de strings separados por vírgula ou ponto e virgula com os nomes dos campos a // serem alterados como primeiro parâmetro. // Os parâmetros seguintes são os nomes das propriedades com os valores que devem ser // atribuídos. fl.setFieldsProperties('campo1,campos2', 'prop', valor, 'prop2', valor2);
-
toJSONSchema()
-
Cria uma representação JSON desta definição do modelo.
Returns:
- Type
- string
-
toString()
-
Retorna uma string que informa qual a chave do x-class ao qual a instância foi criada.
Returns:
- Type
- string
Events
-
afterCancel
-
Evento emitido após o cancelamento de uma inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição. Importante: no momento da emissão deste evento o DataSet já concluiu o cancelamento da edição ou inserção, portanto a propriedade data não terá os dados do registro cancelado.
Type: DataEvent
-
afterDelete
-
Evento que será emitido após a exclusão de um registro associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.Type: DataEvent
-
afterEdit
-
Evento emitido depois de uma edição de um registro associado a classe de dados ter sido iniciada. Seu uso é recomendado para atualizar informações que indiquem o momento ou o usuário que está realizando a modificação.
Type: DataEvent
Example
// O exemplo abaixo pega o último horário em que o registro entrou em edição e grava // este valor em um campo somente leitura para o usuário on('afterEdit', function (evt) { evt.data.modificado = new Date(); evt.data.modificador = session.userKey; });
-
afterInsert
-
Evento emitido após a inserção de um registro associado a classe de dados. Seu uso é recomendado para sugerir os valores dos campos do novo registro, simplificando o preenchimento dos dados para o usuário.
Type: DataEvent
-
afterPersist
-
Evento emitido após o post e antes do afterPost, ou ainda, no caso de remoção de um registro ele deverá ser executado depois do delete e antes do afterDelete com o objetivo de fornecer a versão de alteração realizada pela persistência dos dados.
Type: AfterPersistEvent
Example
var logger = Logger.getLogger('package.MyClass'); this.on('afterPersist', function (evt) { logger.info('Registro ' + evt.key + ' da classe ' + evt.classKey + ' foi gravado com sucesso. Alteração: ' + evt.action + '. Versão: ' + evt.version); });
-
afterPost
-
Evento emitido depois da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.Type: DataEvent
Example
on('afterPost', function (evt) { if (evt.data.recordCount > 5) { logger.debug('Registrado mais de 5 registros'); } })
-
beforeCancel
-
Evento emitido antes de cancelar a inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição, ou para realizar algum tipo de confirmação, no caso deste evento estar sendo emitido em um contexto de interface.
Type: DataEvent
-
beforeDelete
-
Evento emitido antes da exclusão de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a remoção de um registro em uma classe de dados.
Type: DataEvent
Example
on('beforeDelete', function (evt) { if (session.userKey !== Users.ADMINISTRATOR) { throw new Error('Apenas o usuário "administrator" pode excluir este registro.'); } });
-
beforeEdit
-
Evento emitido antes da edição de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a edição de um registro da classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não encontra-se em estado de edição, portanto o registro corrente não deve ser modificado.Type: DataEvent
-
beforeInsert
-
Evento emitido antes da inserção de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a inserção de um novo registro em uma classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não possui dados do registro a ser inserido, portanto o registro corrente não deve ser modificado.Type: DataEvent
-
beforePersist
-
Evento emitido após o beforePost e antes do post, ou ainda, durante a remoção de um registro esse evento será executado depois do beforeDelete e antes do delete com intuito de fornecer os valores originais e modificados.
Caso haja uma regra configurada nesse evento o post da grade será responsável por persistir todas as informações que estejam na propriedade "transaction", que é uma instância do tipo Transaction. O intuito é armazenar datasets que devem ser persistidos junto com a alteração do registro.Type: BeforePersistEvent
Example
this.on('beforePersist', function (evt) { var evento = evt.transaction.getOrSet('erp.beforePersistEvent', function () { var evento = new DataSet(); dbCache.copyStructure('EVENTO', evento); evento.create(); return evento; }); if (evt.action === ApplyUpdatesAction.UPDATE && evt.beforeValues.uf !== evt.afterValues.uf) { evento.append(); // cria um registro na tabela evento com base evt.beforeValues e evt.afterValues evento.post(); } });
-
beforePost
-
Evento emitido antes da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar validações se os dados do registro não ferem regras de negócio.
Type: DataEvent
Example
// O exemplo abaixo verifica se os valores nos campos "password" e "confirmPassword" // são iguais, ou seja, se o usuário digitou uma senha e a confirmou corretamente, // em caso negativo exibe um erro, impedindo que o registro seja inserido.<br> // O evento recebe os seguintes parâmetros:<br> on('beforePost', function (evt) { if (evt.data.password !== evt.data.confirmPassword) { throw new Error('A nova senha e a confirmação são diferentes. Digite novamente a senha.'); } });
-
lookupDisplay
-
Evento emitido quando o sistema precisa obter o valor de exibição de uma chave desta classe de dados. Os listeners registrados deverão preencher a propriedade LookupDisplayEvent#displayValue do evento emitido para informar o valor de exibição da chave indicada por LookupDisplayEvent#key.
Type: LookupDisplayEvent
Example
this.on('lookupDisplay', function (evt) { evt.displayValue = DBKey.from(evt.key, 'NOME'); });
-
validate
-
Evento emitido antes da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar validações se os dados do registro não ferem regras de negócio.
Type: DataEvent
- Deprecated:
-
- Utilize o evento beforePost.