...
Nota |
---|
|
Disponível à partir da versão 12.1.6 da linha RM. |
...
Serviço
Todos os dataserver's do RM poderão ser acessados via RESTful através da classe RMSRestDataServer. O contrato dessa classe é publicado do serviço RMSRestDataServer, sendo esse publicado automaticamente no endereço http://<servidor>:8051/RMSRestDataServer/getAvailableServices e os dados são transmitido no formato json. Por padrão esse serviço é publicado com suporte à CORS, o que permite que as páginas e o serviço em si sejam publicados em servidores diferente.
Os métodos disponibilizados pelo serviço são:
VerboGetAvailableServicesGET | /getavailableservices?name={name}&start={start}&limit={limit} |
GETGetExternalGrammarGET | /service/{serviceName}/schema |
GETGetWADLGET | /service/{serviceName} |
GETGetGET | /rest/{dataServerName}/{id} |
GETGet | Retorna o registro do dataserver especificado. |
GetAllGET | /rest/{dataServerName}?start={start}&limit={limit}& |
searchsearchGETGetAll | Retorna lista os registros do dataserver especificado. |
CreatePOST | /rest/{dataServerName} |
POSTCreate | Cria um registro utilizando o dataserver especificado. |
DeleteDELETE | /rest/{dataServerName}/{id} |
DELETEDelete | Remove um registro utilizando o dataserver especificado. |
PUT | /rest/{dataServerName}/{id} | Update | Atualiza o registro do dataserver especificado. |
PATCH | /rest/{dataServerName}/{id} |
PUTUpdate Partial | Atualiza parcialmente o registro do dataserver especificado. |
Obs.: Para utilizar dataserver de metadados, é necessário informar o nome da tabela no JSON. veja um exemplo no método Post (Create) acima.
Segurança por perfil
Todos os dataserver's do RM estão protegidos quando o acesso se dá via RMSRestDataServer. Para que a segurança seja ativada, é necessário que os DataServers sejam decorados com o atributo RMSServerSecurityInfo. Este atributo tem a mesma função que o atributo ActionInfo. Portanto, o módulo e o securityId informados devem ser iguais aos informados nas actions. Caso o atributo não seja encontrado, o acesso ao dataserver será negado.
Para cada DataServer, deve-se definir um ou mais atributos com os devidos parâmetros. Exemplo:
Expandir |
---|
title | RMSServerSecurityInfo |
---|
|
Image Added Image Added
|
Serialização das tabelas
vários DataSets incluem tabelas que não fazem parte da definição da entidade que o mesmo representa. Isso gera um erro ao realizar as operações do CRUD através do RMSRestDataServer. Para contornar esse problema, foram adicionadas as propriedade Master e Detail no enumerador TabProps. Essas propriedade devem ser utilizadas para marcar quais tabelas do DataSet serão serializadas. Exemplo:
Seja DS um dataset contém as tabelas A, B e C, sendo que a tabela A tem um relacionamento com a tabela B e a tabela C não faz parte da entidade que o dataset representa (somente dados de controle). Para que o serviço RMSRestDataServer funcione corretamente, a propriedade TabProps.Master deve ser adicionada à tabela A e a propriedade TabProps.Detail deve ser adicionada à tabela B.
Dessa forma somente as tabelas A e B serão serializadas, sendo a B um detalhe de A.
Atenção: Caso exista mais de uma tabela no DataSet marcada como “Master”, somente a primeira tabela, e suas filhas (caso existam), serão serializadas.
Bloco de código |
---|
language | c# |
---|
title | DataSetProps |
---|
|
DataProps.SetProps(gcoligada, TabProps.Caption, Properties.Resources.SGlbCaptionColigadas, TabProps.Id, "CODCOLIGADA;NOMEFANTASIA", TabProps.Master, true); |
Filtros
Ao utilizar o parâmetro &filter={filter}, será possível utilizar qualquer campo (desde que seja da tabela Master).
Aviso |
---|
Não são aceitos nos filtros campos de tabelas Detail! |