DataStore
Um Datastore é o objeto de interface subministrado por ORDA para referenciar e acessar a uma base de dados. Objetos Datastore
são retornado pelos comandos abaixo:
- ds: um atalho para datastore principl
- Open datastore: para abrir qualquer datastore remota
Resumo
.cancelTransaction() cancela a transação |
.clearAllRemoteContexts() permite desativar qualquer acesso de dados em web admin port, incluindo as sessões Data Explorer in WebAdmin |
.dataclassName : 4D. DataClass contém uma descrição do dataclass |
.encryptionStatus(): Object devolve um objecto que fornece o estado de encriptação para o ficheiro de dados actual |
.flushAndLock() descarrega o cache do datastore local e impede outros processos de realizar operações de escrita na base de dados |
.getAllRemoteContexts() : Collection retorna True se Data Explorer acesso for desativado para a sessão de trabalho |
.getInfo(): Object devolve um objecto que fornece informação sobre o datastore |
.getRemoteContextInfo(contextName : Text) : Object retorna um objeto que contém informações sobre a otimização de contexto contextName na datastore. |
.getRequestLog() : Collection devolve os pedidos ORDA registados na memória do lado do cliente |
.locked() : Boolean retorna Verdadeiro se o datastore local estiver actualmente bloqueado |
.makeSelectionsAlterable() estabelece todas as seleções de entidade como editável como padrão nas datastore de aplicação atuais. |
.provideDataKey( curPassPhrase : Text ) : Object .provideDataKey( curDataKey : Object ) : Object permite oferecer uma chave de criptografia de dados para o arquivo de dados atual da datastore e detecta se a chave corresponder com os dados criptografados. |
.setAdminProtection( status : Boolean ) permite desativar qualquer acesso de dados em web admin port, incluindo as sessões Data Explorer in WebAdmin |
.setRemoteContextInfo( contextName : Text ; dataClassName : Text ; attributes : Text {; contextType : Text { ; pageLength : Integer}}) .setRemoteContextInfo( contextName : Text ; dataClassName : Text; attributesColl : Collection {; contextType : Text { ; pageLength : Integer }} ) .setRemoteContextInfo( contextName : Text ; dataClassObject : 4D. DataClass ; attributes : Text {; contextType : Text { ; pageLength : Integer }}) .setRemoteContextInfo( contextName : Text ; dataClassObject : 4D. DataClass ; attributesColl : Collection {; contextType : Text { ; pageLength : Integer }} ) conecta os atributos de dataclass especificados ao contexto de otimização contextName |
.startRequestLog() .startRequestLog( file : 4D.File ) .startRequestLog( file : 4D.File ; options : Integer ) .startRequestLog( reqNum : Integer ) inicia o registo dos pedidos ORDA no lado do cliente ou no lado do servidor |
.startTransaction() inicia uma transação no processo atual na base de dados que corresponde à base de dados à qual se aplica |
.stopRequestLog() pára qualquer registo de pedidos ORDA na máquina a que é chamado (cliente ou servidor) |
.unlock() remove o bloqueio actual das operações de escrita no datastore, se este tiver sido definido no mesmo processo |
.validateTransaction() aceita a transação |
ds
Histórico
Release | Mudanças |
---|---|
18 | Suporte do parámetro localID |
17 | Adicionado |
ds { ( localID : Text ) } : cs. DataStore
Parâmetro | Tipo | Descrição | |
---|---|---|---|
localID | Text | -> | ID local del armazém de dados remoto a devolver |
Resultados | cs. DataStore | <- | Referencia ao armazém de dados |
|
Descrição
O comando ds
devolve uma referência ao datastore que corresponde à base de dados 4D actual ou à base de dados designada por localID.
Se omitir o parâmetro localID (ou se passa uma string vazia ""), o comando devolve uma referência ao armazém de dados que coincide com a base de dados local de 4D (ou a base de datos de 4D Server em caso de abrir uma base de dados remota em 4D Server). O armazém de dados se abre automaticamente e está disponível diretamente através de ds
.
Também pode obter uma referencia em um datastore remoto aberto passando seu id local no parâmetro localID. O armazém de dados deve ter sido aberto previamente com o comando Open datastore
pelo banco de dados atual (local ou componente). A identificação local se define quando se utilizar este comando.
O escopo do id local do banco de dados no qual o armazen de dados foi aberto.
Se não encontrar nenhum armazém de dados localID, o comando devolve Null.
Os objectos disponíveis no site cs. Datastore
são mapeados a partir da base de dados alvo no que respeita às regras gerais da ORDA.
Exemplo 1
Usar a datastore principal do banco de dados 4D:
$result:=ds. Employee.query("firstName = :1";"S@")
Exemplo 2
var $connectTo; $firstFrench; $firstForeign : Object
var $frenchStudents; $foreignStudents : cs. DataStore
$connectTo:=New object("type";"4D Server";"hostname";"192.168.18.11:8044")
$frenchStudents:=Open datastore($connectTo;"french")
$connectTo.hostname:="192.168.18.11:8050"
$foreignStudents:=Open datastore($connectTo;"foreign")
//...
//...
$firstFrench:=getFirst("french";"Students")
$firstForeign:=getFirst("foreign";"Students")
//getFirst method
//getFirst(localID;dataclass) -> entity
#DECLARE( $localId : Text; $dataClassName : Text ) -> $entity : 4D. Entity
$0:=ds($localId)[$dataClassName].all().first()
Open datastore
Histórico
Release | Mudanças |
---|---|
20.3 | New passwordAlgorithm property |
18 | Adicionado |
Open datastore( connectionInfo : Object ; localID : Text ) : cs. DataStore
Parâmetro | Tipo | Descrição | |
---|---|---|---|
connectionInfo | Object | -> | Propriedades de conexão utilizadas para alcançar o armazém de datos remoto |
localID | Text | -> | Id para assignar ao armazém de dados aberto na aplicação local (obrigatorio) |
Resultados | cs. DataStore | <- | Objeto do armazém de dados |
|
Descrição
localID is a local alias for the session opened on remote datastore. If localID already exists on the application, it is used. Otherwise, a new localID session is created when the datastore object is used.
O banco de dados connectionInfo 4D deve estar disponível como armazém de dados remoto, ou seja:
- seu servidor web deve ser lançado com http ou https ativado,
- sua opção Expor como servidor REST deve estar marcada,
- se dispõe de ao menos uma licença cliente.
Se não se encontrar nenhum banco de dados coincidente, Open datastore
devolve Null.
localID é um alias local para a sessão aberta no armazém de dados remoto. Se localID já existir na aplicação, se utiliza. Em caso contrário, se cria uma nova sessão localID quando se utiliza o objeto datastore.
Os objectos disponíveis no site cs. Datastore
são mapeados a partir da base de dados alvo no que respeita às regras gerais da ORDA.
Quando abrir a sessão, as sentenças abaixo são equivalentes e devolvem uma referência sobre o mesmo objeto datastore:
$myds:=Open datastore(connectionInfo;"myLocalId")
$myds2:=ds("myLocalId")
//$myds e $myds2 são equivalentes
Passe em connectionInfo um objeto que desceva o armazém de dados remoto ao que quiser se conectar. Pode conter as propriedades abaixo (todas as propriedades são opcionais menos hostname):
Propriedade | Tipo | Descrição |
---|---|---|
hostname | Text | Nome ou endereço IP da database remota + ":" + número de porta (o numero de porta é obrigatório) |
user | Text | Nome de usuario |
senha | Text | Senha de usuario. By default, the password is sent in clear form, therefore it is strongly recommended to use encrypted communications by passing true in the tls property. |
idleTimeout | Longint | Tempo de espera da sessão de inatividade (em minutos) depois do qual a sessão é fechada automaticamente por 4D. Se omitido, o valor por defeito é 60 (1h). Se for omitido, o valor normal é 60 minutos (1hora) O valor não pode ser inferior a 60: se definir um valor inferior, o tempo de espera se eleva até 60). Para saber mais informação, consulte Fechamento de sessões. |
tls | Parâmetros | Utilize uma conexão segura(*). Se omitido, false por defeito. Se for omitido, o normal é falso Usar uma conexão segura é recomendado sempre que possível. |
passwordAlgorithm | Text | Pass "4d-rest-digest" if the server validates the password using the Validate password command with the digest parameter set to true . |
type | Text | Deve ser "4D Server" |
(*) Se tls for true, se utiliza o protocolo HTTPS se:
- HTTPS for ativado no armazém de dados remoto
- o número de porto especificado coincide com o porto HTTPS configurado nos ajustes do banco de dados
- um certificado válido e uma chave privada de criptografia estão instalados no banco de dados. Senão é mostrado o erro "1610 - A remote request to host xxx has failed"
Exemplo 1
Conexão a uma datastore remota com usuário/ senha/ timetou/ tls
var $connectTo : Object
var $remoteDS : cs. DataStore
$connectTo:=New object("type";"4D Server";"hostname";"192.168.18.11:8044")
$remoteDS:=Open datastore($connectTo;"students")
ALERT("This remote datastore contains "+String($remoteDS. Students.all().length)+" students")
Exemplo 2
Conexão a uma datastore remota sem usuário ou senha:
var $connectTo : Object
var $remoteDS : cs. DataStore
$connectTo:=New object("type";"4D Server";"hostname";\"192.168.18.11:4443";\
"user";"marie";"password";$pwd;"idleTimeout";70;"tls";True)
$remoteDS:=Open datastore($connectTo;"students")
ALERT("This remote datastore contains "+String($remoteDS. Students.all().length)+" students")
Exemplo 3
Trabalhando com várias datastores remotas:
var $connectTo : Object
var $frenchStudents; $foreignStudents : cs. DataStore
$connectTo:=New object("hostname";"192.168.18.11:8044")
$frenchStudents:=Open datastore($connectTo;"french")
$connectTo.hostname:="192.168.18.11:8050"
$foreignStudents:=Open datastore($connectTo;"foreign")
ALERT("They are "+String($frenchStudents. Students.all().length)+" French students")
ALERT("They are "+String($foreignStudents. Students.all().length)+" foreign students")
Gestão de erros
Em caso de erro, o comando devolve Null. Se não for possível acessar o armazem de dados remotos (endereço incorreto, servidor web não inciiado, http e https não habilitados...), se produz o erro 1610 " Uma petição remota ao host XXX falhou". Pode interceptar este erro com um método instalado por ON ERR CALL
.