Funciones de caché en Jitterbit Studio
Introducción
El almacenamiento en caché en la nube permite almacenar datos temporalmente en la nube. El valor en caché es visible para todas las operaciones que se ejecutan en el mismo ámbito hasta que la caché expira, independientemente de cómo se haya iniciado una operación o en qué agente se ejecute.
Al almacenar datos en Harmony, en lugar de depender de almacenes de datos locales o específicos de agentes, los datos pueden compartirse entre operaciones separadas y a través de proyectos.
Antes de usar las funciones ReadCache o WriteCache (descritas a continuación), ten en cuenta estas notas importantes:
- Al definir una caché para un entorno, se deben usar nombres de caché únicos en los proyectos para evitar la sobrescritura involuntaria de valores. Si la intención es compartir datos entre proyectos, entonces se requiere compartir el mismo nombre de caché.
- Estas funciones solo funcionan durante el tiempo de ejecución. Si se intenta probar un script u operación que incluya estas funciones, se generarán errores.
- Los valores de
WriteCacheyReadCacheno son accesibles a través de la Consola de Administración. - Por defecto,
WriteCacheyReadCache(combinados) están limitados a un máximo de 100 llamadas por minuto para una organización.
Los ejemplos que utilizan ReadCache y WriteCache se cubren tanto dentro de las funciones individuales como en los Ejemplos a continuación.
Casos de uso
Los siguientes son varios ejemplos de casos de uso donde puede desear utilizar el almacenamiento en caché en la nube:
- Supón que hay dos cadenas de operación, Cadena A y Cadena B, en un solo proyecto. Estas cadenas se ejecutan por separado. Con un solo agente, el almacenamiento temporal puede compartirse entre las cadenas. Pero en un entorno de múltiples agentes, no se puede utilizar el almacenamiento temporal ya que es local al agente que ejecuta una operación en lugar de al proyecto en su conjunto. Si el Agente 1 ejecuta Cadena A y el Agente 2 ejecuta Cadena B, entonces los datos generados por Cadena A no están disponibles para Cadena B. Usar el almacenamiento en caché en la nube en lugar de almacenamiento temporal supera este problema.
- Los datos pueden compartirse entre operaciones asincrónicas dentro de un proyecto.
- Los errores que se generan en diferentes operaciones podrían almacenarse en una caché común. Al acumular resultados de operaciones de esta manera, se pueden construir alertas más completas.
- Los tokens de inicio de sesión pueden compartirse entre operaciones.
- Las funciones
WriteCacheyReadCachepueden usarse para compartir datos entre proyectos. Antes de que el almacenamiento en caché en la nube estuviera disponible, todas las operaciones relacionadas debían estar dentro del mismo proyecto, lo que podría llevar a proyectos muy grandes. Al usar el almacenamiento en caché en la nube, los proyectos grandes ahora pueden dividirse en proyectos más pequeños, lo que permite un acceso a permisos más granular, así como la compartimentación del desarrollo y las pruebas.
ReadCache
Declaración
type ReadCache(string name[, long expirationSeconds, string scope])
Sintaxis
ReadCache(<name>, <expirationSeconds>, <scope>)
Parámetros requeridos
name: Hasta 256 caracteres.
Parámetros opcionales
expirationSeconds: Número de segundos antes de que el valor en caché expire. El valor predeterminado es 30 minutos (1800 segundos). El máximo es 30 días (2592000 segundos). Cuando se utiliza paraReadCache, el valor en caché expirará en este número de segundos después de una lectura exitosa. Si no se especifica una expiración o se especifica una expiración no positiva, entonces la expiración del valor en caché será la expiración de la última escritura.scope: Determina si el alcance de la caché es para el proyecto actual. El alcance de la caché puede ser"project"o"environment". (Las formas más cortas"proj"y"env"también son aceptadas.) El alcance predeterminado es"project"si no se especifica un alcance o se especifica una cadena vacía. El valor en caché es visible para todas las operaciones que se ejecutan en el mismo alcance hasta que expire, independientemente de cómo se inició esa operación o en qué agente se ejecuta la operación.
Descripción
Lee de una caché común almacenada en Harmony.
Ejemplos
// Read a cached value in the default scope (project)
myToken = ReadCache("authToken");
// Read a cached value in the "env" scope
myToken = ReadCache("authToken", "", "env");
// Read a cached value in the environment scope with a default timeout
lastTimeStamp = ReadCache("lastTimeStamp", -1, "env");
WriteCache
Declaración
void WriteCache(string name, type value[, long expirationSeconds, string scope])
Sintaxis
WriteCache(<name>, <value>, <expirationSeconds>, <scope>)
Parámetros requeridos
name: Hasta 256 caracteres.value: No puede exceder 1MB.
Parámetros opcionales
expirationSeconds: Número de segundos antes de que el valor en caché expire. El valor predeterminado es 30 minutos (1800 segundos). El máximo es 30 días (2592000 segundos). Si no se especifica una expiración o se especifica una expiración no positiva, entonces la expiración del valor en caché se renovará utilizando la expiración de la última escritura. El tiempo máximo de expiración permitido es establecido por su organización y/o Harmony.scope: Determina si el alcance de la caché es para el proyecto actual. El alcance de la caché puede ser"project"o"environment". (Las formas más cortas"proj"y"env"también son aceptadas.) El alcance predeterminado es"project"si no se especifica un alcance o se especifica una cadena vacía. El valor en caché es visible para todas las operaciones que se ejecutan en el mismo alcance hasta que expire, independientemente de cómo se inició esa operación o en qué agente se ejecuta la operación.
Descripción
Escribe en una caché común almacenada en Harmony.
Advertencia
El límite predeterminado para usar WriteCache es un máximo de 100 llamadas por minuto por organización.
Ejemplos
// Write a value to the cache in the default scope ("project")
WriteCache("authToken", myToken);
// Write a value (a timestamp using the Now() function)
// to the cache in the environment ("env") scope with a default timeout
WriteCache("lastTimeStamp", Now(), -1, "env");
// Writing a value without specifying an expiration or scope
// $authToken would be generated from a login operation
WriteCache("authToken", $authToken);
// Write a value to the cache in the "env" scope
// No expiration specified
WriteCache("City", "Houston", "", "env");
Ejemplos
Ejemplo 1: Alcance del proyecto
// Write a value to the cache in the default scope (project)
WriteCache("authToken", myToken);
// Read the cached value in the default scope (project)
myToken = ReadCache("authToken");
Ejemplo 2: Alcance del entorno
// Write a value (a timestamp using the Now() function)
// to the cache in the environment ("env") scope with a default timeout
WriteCache("lastTimeStamp", Now(), -1, "env");
// Read the cached value in the environment scope with a default timeout
lastTimeStamp = ReadCache("lastTimeStamp", -1, "env");
Ejemplo 3: Sin segundos de expiración o alcance
// Writing a value without specifying an expiration or scope
// $authToken would be generated from a login operation
WriteCache("authToken", $authToken);
// Reading the cached value:
myToken = ReadCache("authToken");
Ejemplo 4: Usar solo el alcance
Este ejemplo incluye especificar el entorno en el parámetro scope, y establecer el tiempo de espera como una cadena vacía. Los expiration_seconds pueden ser una cadena vacía, un número negativo (como "-1"), o un número de segundos hasta 30 días (2592000 segundos).
// Escribiendo especificando solo el entorno
WriteCache("City", "Houston", "", "env");
Ejemplo 5: Usar solo los segundos de expiración
Este ejemplo especifica una expiración de 300 segundos. Los expiration_seconds pueden ser una cadena vacía, un número negativo (como "-1"), o un número de segundos hasta 30 días (2592000 segundos).
// Escribiendo especificando la expiración en segundos
WriteCache("City", "Houston", "300");
Lectura del valor en caché. El valor en caché se devolverá solo si la llamada se realiza dentro de los 300 segundos posteriores a la escritura; de lo contrario, se devolverá un valor nulo:
// Leyendo el valor en caché
city = ReadCache("City");