Este es el ejemplo de un código para visualizar JSON o un objeto dinámico.
Muestra cómo iterar sobre object, get property values y sus rutas.
InterSystems Caché es un multi-modelo de DBMS y la aplicación server. See más detalles aquí.
Descargar Evaluación de Caché.
Este es el ejemplo de un código para visualizar JSON o un objeto dinámico.
Muestra cómo iterar sobre object, get property values y sus rutas.
InterSystems anuncia la Versión de Mantenimiento (Maintenance Release, MR) 2018.1.9 de Caché, Ensemble and Health Connect HSAP. Es una versión de mantenimiento con muchas actualizaciones en una gran variedad de áreas.
Los kits completos de instalación de producto se pueden descargar de la página de distribución de software del Centro de Soporte Internacional (WRC):
Para más información sobre las correcciones en esta versión, consultad las Notas de Cambios de la Versión.
Hola Comunidad:
En este artículo, enumero 5 funciones bastánte útiles de SQL, con sus explicaciones y algunos ejemplos de consultas👇🏻
Las 5 funciones son:
¡Empezamos!
Para resolver el error <PROTECT>, hay que eliminar el atributo de solo lectura de la base de datos de la biblioteca de todo el sistema (IRISLIB para InterSystems IRIS, CACHELIB para Caché/Ensemble/HealthShare (basado en Caché))
Una vez se haya terminado de importar la rutina, hay que acordarse de volver a cambiarla a solo lectura.
[Versión 2013.1 y superior]
[Portal de Gestión] > [Administración] > [Configuración] > [Configuración de Sistema] > [Bases de Datos Local] Desmarcad "Mount Read-Only" (Montar solo lectura) en el enlace del nombre de la base de datos.
.png)
Si el sistema no se para durante 24 horas, los archivos journal serán eliminados a las 0:30 según la "Configuración de la eliminación de archivos journal".
Una posible causa de que los archivos journal permanezcan más tiempo del establecido en la "Configuración de la eliminación de archivos journal" es que hay transacciones que permanecen abiertas.
En ese caso, se podrá eliminar el archivo journal buscando procesos que estén ejecutando transacciones y finalizando las transacciones.
Si se establece una relación y hay una gran cantidad de n en una proporción de 1:n, se puede consumir una gran cantidad de memoria debido al procesamiento secuencial de la relación.
Después de hacer referencia a un objeto de muchos lados en un programa y cambiarlo internamente, simplemente liberar la variable que contiene el OREF (eliminarla, establecer otro valor, etc.) no liberará el objeto de muchos lados ni el objeto de relación. Ésta es la causa.
Al instalar IRIS, todos los eventos de auditoría del sistema no están habilitados.
¿Cuál es la forma más rápida de activar todos los eventos?
Se puede obtener usando el comando Size query de la clase del sistema %SYS.GlobalQuery.
A continuación os dejo unos ejemplos de uso.
*Por favor comprueba la documentación de la clase para ver el detalle de las columnas y parámetros.
set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(or CACHE.DAT) folder
set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
do rs.Execute(dir) // You can also specify a mask with the 3d parameter
while (rs.Next()) {
set gname= rs.Get("Name") // global name
set gsize= rs.La cache de las consultas SQL puede ser purgada mediante programación usando el método Purge* de la clase %SYSTEM.SQL.
*Para ver el detalle de cada uno de los métodos, por favor consulta los siguientes enlaces:
① Comando para borrar todas las consultas SQL cacheadas en el sistema
Do $SYSTEM.SQL.PurgeAllNamespaces()
② Comando para borrar las consultas SQL cacheadas en el namespace actual
// borra todas las consultas SQL cacheadas en el namespace actual
Do $SYSTEM.SQL.
Cuando ejecutéis comandos del SO, utilizad el comando $ZF(-100).
do $ZF(-100,"",program,args) // Execute the Windows command [synchronously].do $ZF(-100,"/ASYNC",program,args) // Executes a Windows command [asynchronously].Cuando ejecutéis comandos de la shell del SO, como mkdir o copy, hemos de especificar /SHELL.
do $zf(-100,"/shell /async","mkdir","c:\temp\x")Las definiciones de clases creadas por los usuarios se almacenan en clases de definición de clases. Estas se pueden utilizar para obtener una lista de definiciones de clases desde un programa.
Nota: Las clases de definición de clase se refieren a todas las clases contenidas en el paquete %Dictionary.
En el siguiente código de muestra, se obtiene una lista de definiciones de clases utilizando la consulta Resumen de la clase %Dictionary.ClassDefinitionQuery.
Class ISJ.Utils
{
ClassMethod ClassInfo()
{
#dim ex As %Exception.Para crear un error definido por el usuario, hemos de preparar un XML que describa el código de error y el mensaje correspondiente que desea utilizarse como error definido por el usuario.
Hemos de establecer el código de error como un número entero negativo.
<?xml version="1.0" encoding="UTF-8" ?Necesitaba averiguar en tiempo de ejecución si el último test había fallado o no.
Después de investigar un poco, aquí está el código:
ClassMethod isLastTestOk() As %Boolean { set in = ##class(%UnitTest.Result.TestInstance).%OpenId(^UnitTest.Result) for i=1:1:in.TestSuites.Count() { #dim suite As %UnitTest.Result.TestSuite set suite = in.TestSuites.GetAt(i) return:suite.Status=0 $$$NO } quit $$$YES }
Se puede ocultar el código fuente exportando/importando solo el *.obj que se genera después de compilar el programa fuente.
El ejemplo de ejecución de comandos especifica EX1Sample.obj y EX2Sample.obj, que se generan al compilar EX1Sample.mac y EX2Sample.mac, como destinos de exportación y los exporta al segundo archivo de argumentos.
Después de pasarlo a otro namespace, se usa el archivo XML exportado para realizar la importación.
🐞🐛▶ Existe una herramienta muy útil que nos permite depurar código visualmente usando diferentes colores.

🧩👨💻 Por ejemplo, si tenemos un Business Process, podemos seguir el flujo de ejecución del código escribiendo distintas variaciones de LOGS.
La información sobre las propiedades definidas en una clase se puede obtener usando las siguientes clases del sistema:
%Dictionary.PropertyDefinition
El ejemplo de descripción del código es el siguiente.
El significado de cada valor de tiempo de espera es el siguiente.
1. [Tiempo de espera de respuesta del servidor]
Si el procesamiento de IRIS/Caché (ejecución de rutina o consulta) no finaliza dentro de este tiempo establecido, el navegador devolverá un error.
Por ejemplo, si este valor es 60 segundos y se necesitan 90 segundos para ejecutar una rutina/método/consulta, se producirá un error.
Una herramienta (utilidad ^GLOBUFF) está disponible para verificar el uso de la memoria caché de la base de datos para cada global.
La utilidad se puede ejecutar directamente o mediante programación en el namespace %SYS .
Así se ejecutaría directamente:
ObjectScript permite pasar cualquier número de argumentos utilizando arrays. Se hace añadiendo ... después del nombre del argumento.
Os muestro un ejemplo. En la sentencia del ejemplo, la información del argumento se establece en una variable global (una variable almacenada en la base de datos) para que pueda ser fácilmente verificada después de que se ejecute el método.
Class TEST.ARGTEST1 Extends %RegisteredObject
{
ClassMethod NewMethod1(ArEn el siguiente ejemplo, un archivo de imagen se codifica en una cadena Base64 en una propiedad de clase, se guarda, se decodifica la cadena en Base64 y se restaura en otro archivo.
【Classe ejemplo】
Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}
【Cuando se importa】
set x=##class(User.test).%New() // create a new object
// prepare an image
set file=##class(%File).%New("c:\temp\Mii.png")
do file.Open("RUK\BIN\")
for {
if file.Se pueden recuperar estos datos utilizando el esquema INFORMATION_SCHEMA.
INFORMATION_SCHEMA es un esquema de sistema y no se muestra por defecto en el menú SQL del Portal de Gestión.
El método para mostrarlo es el siguiente:
.png)
El SQL para obtener el ID, el nombre del campo (COLUMN_NAME), el tipo de datos (DATA_TYPE) y la descripción (DESCRIPCIÓN) de la tabla especificada (Sample.
El lenguaje ObjectScript de InterSystems no permite definir métodos con el mismo nombre pero utilizando diferentes argumentos.
En general, se suele clasificar Objectscript como un lenguaje de programación dinámico. En ObjectScript se puede controlar libremente qué argumentos se utilizan cuando se ejecuta un método, así que a diferencia de otros lenguajes como Java, que no son lenguajes de programación dinámicos, no es necesario distinguir estrictamente los métodos por el número de argumentos en la fase de compilación.
El lenguaje ObjectScript, por tanto, no contiene la característica conocida como overloading o sobrecarga como tal.
A menudo recibimos preguntas sobre los cambios en la lista de plataformas y frameworks que están soportados por la plataforma de datos InterSystems IRIS. Esta publicación pretende compartir los cambios recientes, así como la información más actualizada sobre los cambios que vienen, aunque predecir el futuro es difícil y esto no debe considerarse como una hoja de ruta cerrada.
Dicho esto, vamos con la actualización…
Puedes evitar este error especificando un objeto de tipo stream como argumento de la función %ToJSON usando durante la generación del string JSON desde el objeto dinámico.
A continuación podéis ver un ejemplo.
USER>set temp=##class(%Stream.TmpCharacter).%New()
USER>set jsonobj={}
USER>set jsonobj.pro1=["a","b","c","d"]
USER>set jsonobj.pro2=["あ","い","う","え"]
USER>do jsonobj.%ToJSON(temp)
USER>write temp.Size
51
USER>write temp.Read()
{"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]}Podéis consultar la documentación si queréis más detalles al respecto.
De cara a la reconstrucción de los índices de una clase persistente/tabla, hay que utilizar el método %BuildIndices(), proporcionado por dicha clase. Para ello hay que especificar los valores de inicio y fin de los ID para los cuales se quieren reconstruir índices en los argumentos del método.
Por ejemplo, para reconstruir el índice NameIDX y el índice ZipCode en la clase Sample.Person sólo para ID=10 a 20, ejecutad el siguiente código (el rango de ID se especifica en los argumentos quinto y sexto).
Podéis ver el espacio libre disponible para la base de datos usando la opción "Free space view" (Ver espacio libre) en el Management Portal: System Operation > Databases.
Y se puede obtener mediante programación a través la consulta FreeSpace de la clase del sistema SYS.Database.
.png)
Se puede obtener mediante la consulta AllFields de la clase %SYS.ProcessQuery.
Para más detalles, consultad el documento Process (Job)【IRIS】/Process (Job).
Un ejemplo de ejecución en el terminal es el siguiente:
USER>set stmt=##class(%SQL.Statement).%New()
USER>set st=stmt.%PrepareClassQuery("%SYS.ProcessQuery","AllFields")
USER>write st // you can call %Execute() when st = 1
1
USER>set rset=stmt.%Execute()
USER>while rset.%Next() { write rset.%Get("JobNumber"),"-",rset.%Get("Pid"),"-",rset.%Get("OSUserName"),"-",rset.%Get("CurrentDevice"),"-",rset.Si el valor de una variable local es un OREF o no se puede determinar usando $IsObject(). Sea v la variable que desea verificar,
$IsObject(v)=1 // v is an OREF
$IsObject(v)=0 // v is not an OREF
$IsObject(v)=-1 // v is an OREF but does not point to a valid objectTenga en cuenta que $IsObject(v) dará un error UNDEFINED si v no está definido.
Para evitar errores UNDEFINED, se recomienda utilizar $Get así:
$IsObject($Get(v))※ Utilizad este método si queréis comparar bases de datos que se han replicado mediante mirror, shadow o algún otro mecanismo.
Podéis utilizar la utilidad DATACHECK para comparar globals. (Consultad la documentación para más información: Descripción general de DataCheck [IRIS])
***
Las comparaciones de rutinas usan la rutina del sistema %RCMP o el Portal de Administración.
Hola desarrolladores, actualmente estoy haciendo una demostración sobre la creación de una interfaz de usuario haciendo análisis de datos y configurando una prueba de rendimiento con objetos de datos. Por lo tanto, usar la "Utilidad de generación/población" podría ayudarme a generar automáticamente algunos datos de muestra con los que puedo jugar.
En esta publicación, me gustaría compartir mi experiencia con el uso de la utilidad Populate, incluido el uso del parámetro POPSPEC.
1.