DataStore
Un Datastore es el objeto de interfaz suministrado por ORDA para referenciar y acceder a una base de datos. Los objetos Datastore
son devueltos por los siguientes comandos:
- ds: a shortcut to the main datastore
- Open datastore: to open any remote datastore
Resumen
.cancelTransaction() cancela la transacción |
.clearAllRemoteContexts() borra todos los atributos de todos los contextos activos en el datastore |
.dataclassName : 4D.DataClass contiene una descripción de la clase de datos |
.encryptionStatus(): Object devuelve un objeto que suministra el estado de cifrado del archivo de datos actual |
.flushAndLock() vacía la caché del datastore local e impide que otros procesos realicen operaciones de escritura en la base de datos |
.getAllRemoteContexts() : Collection devuelve una colección de objetos que contienen información sobre todos los contextos de optimización activos en el datastore |
.getGlobalStamp() : Real returns the current value of the global modification stamp of the datastore |
.getInfo(): Object devuelve un objeto que proporciona información sobre el datastore |
.getRemoteContextInfo(contextName : Text) : Object devuelve un objeto que contiene información sobre el contexto de optimización contextName en el datastore |
.getRequestLog() : Collection devuelve las peticiones ORDA registradas en memoria del lado del cliente |
.locked() : Boolean devuelve True si el datastore local está bloqueado actualmente |
.makeSelectionsAlterable() define todas las selecciones de entidades como alterables por defecto en los datastores de la aplicación actual |
.provideDataKey( curPassPhrase : Text ) : Object .provideDataKey( curDataKey : Object ) : Object permite suministrar una llave de cifrado de datos para el archivo de datos actual del datastore y detecta si la llave coincide con los datos cifrados |
.setAdminProtection( status : Boolean ) permite deshabilitar cualquier acceso a datos en el puerto web admin, incluso para el Explorador de datos en sesiones WebAdmin |
.setGlobalStamp( newStamp : Real) define newStamp como nuevo valor para del marcador de modificación global actual del datastore |
.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 }} ) vincula los atributos de la dataclass especificada al contexto de optimización contextName |
.startRequestLog() .startRequestLog( file : 4D.File ) .startRequestLog( file : 4D.File ; options : Integer ) .startRequestLog( reqNum : Integer ) inicia el registro de peticiones ORDA del lado del cliente o del lado del servidor |
.startTransaction() inicia una transacción en el proceso actual en la base de datos que coincide con el datastore al que se aplica |
.stopRequestLog() detiene cualquier registro de las peticiones ORDA en la máquina en la que se llama (cliente o servidor) |
.unlock() elimina el bloqueo actual de las operaciones de escritura en el datastore, si se ha definido en el mismo proceso |
.validateTransaction() acepta la transacción |
.dataclassName
Historia
Lanzamiento | Modificaciones |
---|---|
17 | Añadidos |
.dataclassName : 4D.DataClass
Descripción
Cada dataclass en un datastore está disponible como propiedad del objeto DataStore. El objeto devuelto contiene una descripción de la clase de datos.
Ejemplo
var $emp : cs.Employee
var $sel : cs.EmployeeSelection
$emp:=ds.Employee //$emp contiene la dataclass Employee
$sel:=$emp.all() //obtiene una selección de entidades de todos los empleados
//también puede escribir directamente:
$sel:=ds.Employee.all()
.cancelTransaction()
Historia
Lanzamiento | Modificaciones |
---|---|
18 | Añadidos |
.cancelTransaction()
Parámetros | Tipo | Descripción | |
---|---|---|---|
No requiere ningún parámetro |
Descripción
La función .cancelTransaction()
cancela la transacción abierta por la función .startTransaction()
en el nivel correspondiente en el proceso actual para el datastore especificado.
La función .cancelTransaction()
cancela cualquier cambio realizado en los datos durante la transacción.
Puede anidar varias transacciones (subtransacciones). Si se cancela la transacción principal, también se cancelan todas sus subtransacciones, aunque se hayan validado individualmente mediante la función .validateTransaction()
.
Ejemplo
Ver el ejemplo de la función .startTransaction()
.
.clearAllRemoteContexts()
Historia
Lanzamiento | Modificaciones |
---|---|
19 R5 | Añadidos |
.clearAllRemoteContexts()
Parámetros | Tipo | Descripción | |
---|---|---|---|
No requiere ningún parámetro |
Descripción
La función .clearAllRemoteContexts()
borra todos los atributos de todos los contextos activos en el datastore.
Esta función se utiliza principalmente en el contexto de la depuración. Una cosa a tener en cuenta es que cuando se abre el depurador, éste envía peticiones al servidor y consulta todos los atributos de la clase de datos para mostrarlos. Esto puede sobrecargar sus contextos con datos innecesarios.
En estos casos, puedes utilizar .clearAllRemoteContexts()
para borrar sus contextos y mantenerlos limpios.
Ver también
.getRemoteContextInfo()
.getAllRemoteContexts()
.setRemoteContextInfo()
.encryptionStatus()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.encryptionStatus(): Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Object | <- | Información sobre el cifrado del almacén de datos actual y de cada tabla |
Descripción
La función .encryptionStatus()
devuelve un objeto que suministra el estado de cifrado del archivo de datos actual (es decir, el archivo de datos del datastore ds
). También se proporciona el estado de cada tabla.
Utilice el comando
Data file encryption status
para determinar el estado de encriptación de cualquier otro archivo de datos.
Valor devuelto
El objeto devuelto contiene las siguientes propiedades:
Propiedad | Tipo | Descripción | ||
---|---|---|---|---|
isEncrypted | Boolean | True si el archivo de datos está encriptado | ||
keyProvided | Boolean | True si se proporciona la llave de encriptación que coincide con el archivo de datos encriptados(*). | ||
tablas | Object | Objeto que contiene tantas propiedades como tablas encriptadas o codificadas. | ||
tableName | Object | Tabla encriptada o cifrada | ||
name | Text | Nombre de la tabla | ||
num | Number | Número de tabla | ||
isEncryptable | Boolean | Verdadero si la tabla está declarada como encriptada en el archivo de estructura | ||
isEncrypted | Boolean | True si los registros de la tabla están encriptados en el archivo de datos |
(*) Se puede suministrar la llave de encriptación:
- con el comando
.provideDataKey()
, - en la raíz de un dispositivo conectado antes de abrir el almacén de datos,
- con el comando
Discover data key
.
Ejemplo
Quiere saber el número de tablas encriptadas en el archivo de datos actual:
var $status : Object
$status:=ds.encryptionStatus()
If($status.isEncrypted) //the database is encrypted
C_LONGINT($vcount)
C_TEXT($tabName)
For each($tabName;$status.tables)
If($status.tables[$tabName].isEncrypted)
$vcount:=$vcount+1
End if
End for each
ALERT(String($vcount)+" encrypted table(s) in this datastore.")
Else
ALERT("This database is not encrypted.")
End if
.flushAndLock()
Historia
Lanzamiento | Modificaciones |
---|---|
20 | Añadidos |
.flushAndLock()
Parámetros | Tipo | Descripción | |
---|---|---|---|
No requiere ningún parámetro |
Descripción
La función .flushAndLock()
vacía la caché del datastore local e impide que otros procesos realicen operaciones de escritura en la base de datos. El datastore se pone en un estado consistente y congelado. Es necesario llamar a esta función antes de ejecutar una instantánea de la aplicación, por ejemplo.
Esta función sólo puede llamarse:
- on the local datastore (
ds
). - en entorno cliente/servidor, en la máquina servidor.
Una vez ejecutada esta función, las operaciones de escritura como .save()
u otras llamadas a .flushAndLock()
se congelan en todos los demás procesos hasta que se desbloquee el datastore.
Cuando se han realizado varias llamadas a .flushAndLock()
en el mismo proceso, se debe ejecutar el mismo número de llamadas a .unlock()
para desbloquear realmente el datastore.
El datastore se desbloquea cuando:
- la función
.unlock()
es llamada en el mismo proceso, o - el proceso que llamó a la función
.flushAndLock()
es eliminado.
Si el datastore ya está bloqueado desde otro proceso, la llamada a .flushAndLock()
se congela y se ejecutará cuando se desbloquee el datastore.
Se produce un error si la función .flushAndLock()
no puede ejecutarse (por ejemplo, se ejecuta en un 4D remoto), .
Ejemplo
Desea crear una copia de la carpeta de datos junto con su archivo de historial actual:
$destination:=Folder(fk documents folder).folder("Archive")
$destination.create()
ds.flushAndLock() //Bloquear operaciones de escritura de otros procesos
$dataFolder:=Folder(fk data folder)
$dataFolder.copyTo($destination) //Copiar la carpeta de datos
$oldJournalPath:=New log file //Cerrar el historial y crear uno nuevo
$oldJournal:=File($oldJournalPath; fk platform path)
$oldJournal.moveTo($destination) //Guardar el antiguo historial con datos
ds.unlock() //Nuestra copia ha terminado, ahora podemos desbloquear el datastore
Ver también
.getAllRemoteContexts()
Historia
Lanzamiento | Modificaciones |
---|---|
19 R5 | Añadidos |
.getAllRemoteContexts() : Collection
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Collection | <- | Colección de objetos contextos de optimización |
Modo avanzado: esta función está pensada para los desarrolladores que necesitan personalizar las funcionalidades por defecto de ORDA para configuraciones específicas. En la mayoría de los casos, no será necesario utilizarla.
Descripción
La función .getAllRemoteContexts()
devuelve una colección de objetos que contienen información sobre todos los contextos de optimización activos en el datastore.
Para obtener más información sobre cómo se pueden crear contextos, consulte Optimización cliente/servidor.
Cada objeto de la colección devuelta tiene las propiedades listadas en la sección .getRemoteContextInfo()
.
Ejemplo
El siguiente código define dos contextos y los recupera utilizando .getAllRemoteContexts()
:
var $ds : 4D.DataStoreImplementation
var $persons : cs.PersonsSelection
var $addresses : cs.AddressSelection
var $p : cs.PersonsEntity
var $a : cs.AddressEntity
var $contextA; $contextB : Object
var $info : Collection
var $text : Text
// Open remote datastore
$ds:=Open datastore(New object("hostname"; "www.myserver.com"); "myDS")
// Set context A
$contextA:=New object("context"; "contextA")
$persons:=$ds.Persons.all($contextA)
$text:=""
For each ($p; $persons)
$text:=$p.firstname+" lives in "+$p.address.city+" / "
End for each
// Set context B
$contextB:=New object("context"; "contextB")
$addresses:=$ds.Address.all($contextB)
$text:=""
For each ($a; $addresses)
$text:=$a.zipCode
End for each
// Get all remote contexts (in this case, contextA and contextB)
$info:=$ds.getAllRemoteContexts()
//$info = [{name:"contextB"; dataclass: "Address"; main:"zipCode"},
{name:"contextA";dataclass:"Persons";main:"firstname,address.city"}]
Este ejemplo sirve como demostración, no está pensado para una implementación real.
Ver también
.getRemoteContextInfo()
.setRemoteContextInfo()
.clearAllRemoteContexts()
.getGlobalStamp()
Historia
Lanzamiento | Modificaciones |
---|---|
20 R3 | Añadidos |
.getGlobalStamp() : Real
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Real | <- | Valor actual del marcador de modificación global |
Descripción
The .getGlobalStamp()
function returns the current value of the global modification stamp of the datastore.
Esta función sólo puede llamarse:
- on the local datastore (
ds
). - en entorno cliente/servidor, en la máquina servidor.
Para más información sobre el marcador global y el seguimiento de las modificaciones de datos, por favor consulte la página Uso del marcador global.
Ejemplo
var $currentStamp : Real
var $hasModifications : Boolean
$currentStamp:=ds.getGlobalStamp()
methodWhichCouldModifyEmployees //ejecutar código
$hasModifications:=($currentStamp # ds.getGlobalStamp())
Ver también
.getInfo()
Historia
Lanzamiento | Modificaciones |
---|---|
17 | Añadidos |
.getInfo(): Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Object | <- | Propiedades del almacén de datos |
Descripción
La función .getInfo()
devuelve un objeto que proporciona información sobre el datastore. Esta función es útil para configurar el código genérico.
Objeto devuelto
Propiedad | Tipo | Descripción | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | string | ||||||||||||||||
networked | boolean | ||||||||||||||||
localID | text | ID del almacén de datos en la máquina. Corresponde a la cadena localId dada con el comando Open datastore . Cadena vacía ("") para el almacén de datos principal. | |||||||||||||||
connection | object | Objeto que describe la conexión del almacén de datos remoto (no se devuelve para el almacén de datos principal). Propiedades disponibles:
|
- Si la función
.getInfo()
se ejecuta en un 4D Server o en un 4D monopuesto,networked
es False. - Si la función
.getInfo()
se ejecuta en un 4D remoto,networked
es True
Ejemplo 1
var $info : Object
$info:=ds.getInfo() //Ejecutado en 4D Server o 4D
//{"type":"4D","networked":false,"localID":""}
$info:=ds.getInfo() // Ejecutado en 4D remoto
//{"type":"4D","networked":true,"localID":""}
Ejemplo 2
En un almacén de datos remoto:
var $remoteDS : cs.DataStore
var $info; $connectTo : Object
$connectTo:=New object("hostname";"111.222.33.44:8044";"user";"marie";"password";"aaaa")
$remoteDS:=Open datastore($connectTo;"students")
$info:=$remoteDS.getInfo()
//{"type":"4D Server",
//"localID":"students",
//"networked":true,
//"connection":{hostname:"111.222.33.44:8044","tls":false,"idleTimeout":2880,"user":"marie"}}
.getRemoteContextInfo()
Historia
Lanzamiento | Modificaciones |
---|---|
19 R5 | Añadidos |
.getRemoteContextInfo(contextName : Text) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
contextName | Text | -> | Nombre del contexto |
Result | Object | <- | Descripción del contexto |
Modo avanzado: esta función está pensada para los desarrolladores que necesitan personalizar las funcionalidades por defecto de ORDA para configuraciones específicas. En la mayoría de los casos, no será necesario utilizarla.
Descripción
La función .getRemoteContextInfo()
devuelve un objeto que contiene información sobre el contexto de optimización contextName en el datastore.
Para obtener más información sobre cómo se pueden crear contextos de optimización, consulte optimización cliente/servidor.
Objeto devuelto
El objeto devuelto tiene las siguientes propiedades:
Propiedad | Tipo | Descripción |
---|---|---|
name | Text | Nombre del contexto |
main | Text | Atributo(s) asociado(s) al contexto (los nombres de atributos están separados por comas) |
dataclass | Text | Nombre de la clase de datos |
currentItem (opcional) | Text | Los atributos del [modo página](../ORDA/remoteDatastores.md#list-box-basado-en-una-selección-de entidades) si el contexto está vinculado a un list box. Se devuelve como Null o elemento de texto vacío si el nombre del contexto no se utiliza para un list box, o si no hay contexto para el elemento actual (currentItem) |
Como los contextos se comportan como filtros de atributos, si main se devuelve vacío, significa que no se aplica ningún filtro, y que el servidor devuelve todos los atributos de la dataclass.
Ejemplo
Ver el ejemplo de la sección .setRemoteContextInfo()
.
Ver también
.setRemoteContextInfo()
.getAllRemoteContexts()
.clearAllRemoteContexts()
.getRequestLog()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R6 | Añadidos |
.getRequestLog() : Collection
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Collection | <- | Colección de objetos, donde cada objeto describe una solicitud |
Descripción
La función .getRequestLog()
devuelve las peticiones ORDA registradas en memoria del lado del cliente. El registro de peticiones ORDA debe haber sido activado previamente utilizando la función .startRequestLog()
.
Esta función debe ser llamada en un 4D remoto, de lo contrario devuelve una colección vacía. Está diseñado para fines de depuración en configuraciones cliente/servidor.
Valor devuelto
Colección de objetos de petición apilados. La solicitud más reciente tiene el índice 0.
Para una descripción del formato del registro de peticiones ORDA, consulte la sección Peticiones de cliente ORDA.
Ejemplo
Vea el ejemplo 2 de .startRequestLog()
.
.isAdminProtected()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R6 | Añadidos |
.isAdminProtected() : Boolean
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Boolean | <- | True si el acceso al Explorador de Datos está desactivado, False si está activado (por defecto) |
Descripción
La función .isAdminProtected()
devuelve True
si se ha desactivado el acceso al Data Explorer para la sesión de trabajo.
Por defecto, se concede acceso al Data Explorer para las sesiones webAdmin
, pero se puede desactivar para evitar cualquier acceso a los datos por parte de los administradores (ver la función .setAdminProtection()
).
Ver también
.locked()
Historia
Lanzamiento | Modificaciones |
---|---|
20 | Añadidos |
.locked() : Boolean
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Boolean | <- | True si bloqueado |
Descripción
La función .locked()
devuelve True si el datastore local está bloqueado actualmente.
Puede bloquear el datastore utilizando la función .flushAndLock() antes de ejecutar una instantánea del archivo de datos, por ejemplo.
La función también devolverá True
si el datastore fue bloqueado por otra función de administración como el backup o el vss (ver .flushAndLock()).