#Caché

5 Seguidores · 379 Publicaciones

  

InterSystems Caché es un multi-modelo de DBMS y la aplicación server. See más detalles aquí.

Documentación.

Descargar Evaluación de Caché.

Pregunta Yone Moreno · oct 27, 2021

En primer lugar gracias por su ayuda y tiempo

Necesitaríamos encontrar dentro del PID:3 cual cumple la siguiente condición:

PID 3.4.1 = "CAC" y PID 3.5 = "JHN"

Hemos estado investigando cómo podríamos hacerlo

Hemos conseguido obtener campos individuales en una petición de llamada de la siguiente manera:

request.GetValueAt("ORCgrp(1).ORC:OrderingProvider(1).IDNumber")

##class(Ens.Util.Time).ConvertDateTime(request.GetValueAt("PID:DateTimeofBirth"),"%Y%m%d","%Y-%m-%d")

 

Sin embargo, ¿cómo nos recomendarían buscar un campo específico en el PID que cumpla con un criterio específico?

1
0 132
Pregunta Yone Moreno · oct 14, 2021

En primer lugar, gracias por su tiempo leyendo esta pregunta y gracias por su ayuda.

Tenemos el siguiente caso de uso: necesitaríamos enviar con MTOM un zip que contenga un csv

Hemos leído, investigado, indagado:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.

9
0 466
Artículo Daniel Tamajon · oct 14, 2021 2m read

¡Hola Comunidad!

En esta ocasión os presento una nueva y potente función de nuestro analizador de código estático: objectscriptQuality

Cada vez que se publica una nueva versión de IRIS, seguramente preparas una guía de migración en la que tienes que dedicar mucho tiempo en la realización pruebas para encontrar dónde no cumple el código con la nueva versión. O quizás necesitas que el código sea compatible con varias versiones de IRIS o Caché.

0
0 117
Artículo Muhammad Waseem · sep 29, 2021 1m read

https://www.appeon.com/products/powerbuilder

Appeon PowerBuilder es una herramienta de desarrollo empresarial que permite crear componentes y aplicaciones empresariales basadas en datos.
Es un producto de una suite de Appeon que ofrece las herramientas para desarrollar aplicaciones cliente/servidor, web, móviles y distribuidas.

En este artículo, mostraré los pasos para conectarse a Caché con Appeon PowerBuilder usando ODBC.

0
0 385
Pregunta Kurro Lopez · sep 23, 2021

Hola comunidad,

Tengo una clase cliente SOAP que conecta con un WS Service. Esta estructura y configuracion es la misma para varios proveedores que están integerados con mi solución.

Si llamo a un proveedor, devuelve el XML esperado. Pero hay un proveedor que lanza un error:

ERROR #6243: HTTP request to SOAP WebService returned response with unexpected CONTENT-TYPE: application/wsdl+xml

He intentado asignar el ContentType al adapter.%Client con este valor, pero no funciona.

7
0 572
Artículo Rob Tweed · sep 23, 2021 1m read

En el núcleo de IRIS y Caché hay una arquitectura de base de datos muy interesante a la que, en M/Gateway Developments, nos referimos como "Almacenamiento Global".  Si alguna vez quisiste saber más sobre los fundamentos y las funciones de esta base de datos oculta, te interesará leer un completo análisis que hemos elaborado:

https://github.

0
0 197
Artículo Mathew Lambert · feb 28, 2020 2m read

¡Hola Comunidad!

ObjectScript tiene al menos tres formas de manejar errores (códigos de estado, excepciones, SQLCODE, etc...). La mayor parte del código del sistema usa estados, pero las excepciones son más fáciles de manejar por varias razones. Al trabajar con código heredado, se invierte un tiempo en traducir las distintas técnicas. Yo uso mucho estos fragmentos de código como referencia. Espero que también os sean útiles.

///Status from SQLCODE:set st = $$$ERROR($$$SQLError, SQLCODE, $g(%msg))  //embedded SQLset st = $$$ERROR($$$SQLError, rs.%SQLCODE, $g(r
4
1 423
Artículo Eduardo Anglada · sep 7, 2021 3m read
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones.  
Y NO cuenta con el servicio de soporte de InterSystems.
De vez en cuando, puedes encontrarte una situación en la que, por diferentes razones, ODBC es la única opción para acceder a un sistema remoto. Lo cual es suficiente mientras necesites examinar o cambiar tablas. Pero no puedes ejecutar directamente algunos comandos o cambiar algunos globals.
0
0 169
Artículo Mario Sanchez Macias · mayo 13, 2021 9m read

Aunque la integridad de las bases de datos Caché e InterSystems IRIS está completamente protegida de las consecuencias de un fallo de sistema, los dispositivos de almacenamiento físico sí que pueden fallar, corrompiendo los datos que almacenan.

Por esa razón, muchos sitios optan por realizar chequeos o verificaciones periódicas de integridad de bases de datos, sobre todo en coordinación con las copias de seguridad, para validar que se pueda confiar en una determinada copia de seguridad en caso de que ocurra algún desastre.

1
0 360
Artículo Kurro Lopez · ago 31, 2021 2m read

Como sabes, ObjectScript no tiene un comando o función de sistema FOREACH.
Pero tiene un amplio margen para la creatividad.

Pero la tarea es recorrer una matriz global o local y hacer algo PARA CADA elemento.

Hay dos posibles soluciones:

  • Crear una macro que genere las secuencias de código requeridas
  • Crear un comando extendido para realizar la acción.
0
0 180
Pregunta Laura Blázquez García · ago 20, 2021

Tengo una clase que parsea un XML para extraer toda la información. En este XML hay un atributo que tiene saltos de línea:

<record date="2021-08-11T14:25:21" entity="TEXTO"><OBSERVACIONES o="" n="Esto es un texto de prueba:
1. Contiene información importante
2. Es útil para el usuario
3. Sigue siendo una prueba"/></record>

Usando %XML.TextReader puedo acceder a toda la información del XML, pero esos saltos de línea se pierden. Esto es lo que obtengo:

Hay alguna forma de no perder los saltos de línea? He comprobado y los saltos de línea son los caracteres 13 y 10 ($Char(13) y $Char(10)).

2
0 907
Artículo Ricardo Paiva · ago 19, 2021 2m read
Este es el ejemplo de un código que funciona en Caché 2018.1.3 e IRIS 2020.2 
No se mantendrá sincronizado con las nuevas versiones 
¡Además NO cuenta con el servicio de Soporte de InterSystems!

Durante mi búsqueda de un snapshot de un objeto persistente, conocí una característica que me gustaría compartir, ya que podría ser útil en algunas situaciones especiales. Mi objetivo era tener una imagen del antes y el después durante las pruebas unitarias.

0
0 126
Artículo Eduardo Anglada · ago 12, 2021 3m read
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones.      
Y NO cuenta con el servicio de soporte de InterSystems.

En la mayoría de los casos, un global que se utiliza como almacenamiento predeterminado tiene solo 1 nivel de subíndice que representa el IDKEY.
Para un índice de globals podemos ver 2 o más niveles de subíndices.
Las matrices, las relaciones de herencia padre hijo o las clases persistentes que extienden una clase base, son ejemplos en los que vemos más niveles. Aunque todos estos globals son bastante uniformes.

0
0 186
Artículo Ricardo Paiva · sep 9, 2019 3m read

¡Hola desarroladores!

¿Os parece que las consultas sobre el rango de fechas son demasiado lentas? ¿Os parece que el rendimiento de SQL es bajo?  ¡Tengo un curioso truco que podría ayudaros a solucionar estos problemas! (¡Los desarrolladores de SQL odian que sepáis estas cosas!)*

Si tenéis una clase que guarda los registros de hora cuando se añaden datos, entonces esos datos se ordenarán con vuestros valores IDKEY, es decir, TimeStamp1 < TimeStamp2  si y solo si la condición ID1 < ID2 se cumple para todos los valores ID y TimeStamp en la tabla - entonces podéis utilizar esta información para aumentar el rendimiento de las consultas en relación con los rangos de TimeStamp. Echad un vistazo a la siguiente tabla:

1
0 1262
Artículo Ricardo Paiva · jul 29, 2021 2m read

En SQL, la condición más frecuente WHERE se relaciona principalmente con el contenido de las filas en las que trabajas.
Por lo tanto, debe calcularse y verificarse para cada fila a la que accedas.
Distinto es el caso (y por eso la llamé ESTÁTICA) de una condición WHERE independiente de las filas a las que accedes.

0
0 181
Artículo Alberto Fuentes · mayo 24, 2019 18m read

Al igual que con Pattern Matching, se pueden utilizar Expresiones Regulares para identificar patrones en textos en ObjectScript, sólo que con una potencia mucho mayor.

En este artículo se proporciona una breve introducción sobre las Expresiones Regulares y lo que puede hacerse con ellas en ObjectScript. La información que se proporciona aquí se basa en varias fuentes, entre las que destaca el libro “Mastering Regular Expressions” (Dominando las expresiones regulares) escrito por Jeffrey Friedl y, por supuesto, la documentación online de la plataforma.

3
1 1096
Artículo Mario Sanchez Macias · jul 19, 2021 17m read

Siguiendo la serie de artículos de mi compañero Murray vamos a centrarnos en el artículo donde analizamos la CPU.

Un cliente me pidió que le aconsejara sobre el siguiente escenario: sus servidores de producción se están acercando al final de su vida útil y es el momento de actualizar el hardware. También están pensando en consolidar los servidores por medio de la virtualización y quieren ajustar la capacidad, ya sea con servidores de hardware dedicado o virtualizados.

Hoy analizaremos la CPU. En artículos posteriores explicaré el enfoque para dimensionar correctamente otros "grupos alimenticios de hardware": la memoria y las Entradas/Salidas.

0
0 238
Pregunta Yone Moreno · jun 30, 2021

Hola, buenos días.

Necesitaríamos orientación, guía o apoyo de ustedes para realizar lo siguiente:

Nuestro objetivo es: lograr que el fichero ".stream" NO se guarde, en la carpeta: /opt/ensemble/[Entorno]/stream

Tenemos un Servicio REST, un Proceso y una Operacion REST

Desde la Operacion al Proceso existe un Mensaje Response: Mensajes.Response.HistoriaClinica.GetInformeResponse

con un pdf definido como:

Property pdf As %GlobalCharacterStream;

Además, desde el Proceso al Servicio nuestro Mensaje Response es: Mensajes.Response.Informes.v02r00.

1
0 266
Artículo Mathew Lambert · feb 15, 2021 9m read

Introducción y motivación {#RobustErrorHandlingandCleanupinObjectScript-IntroductionandMotivation}

Una unidad de código en ObjectScript (pongamos, un ClassMethod) puede producir una gran variedad de efectos secundarios inesperados cuando interactúa con partes del sistema que están fuera de su propio alcance y no han sido depuradas adecuadamente.

1
1 153
InterSystems Official Mario Sanchez Macias · jun 18, 2021

De vez en cuando, InterSystems discontinúa el desarrollo de una tecnología, cuando hay disponibles otras opciones mejores y más modernas. Sin embargo, el soporte a esas funcionalidades continúa de la misma forma que los productos fuera de la Versión Minima Soportada.

Deprecated (depreciado, obsoleto, en desuso) designa las herramientas o tecnologías que InterSystems ya no desarrolla de forma activa y para las que existen mejores opciones. La tecnología designada como deprecated no se debería utilizar para nuevosdesarrollos.

0
0 195
Artículo Eduardo Anglada · jun 9, 2021 3m read
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones      
¡NO está soportado por el servicio de soporte de InterSystems!   

Los globals en Caché, Ensemble e IRIS normalmente son invisibles a través de SQL. En este ejemplo se muestra cómo verlos desde SQL.

0
0 172
Artículo Kurro Lopez · jun 4, 2021 3m read

La cobertura del código y su optmización del rendimiento ya han surgido muchas veces, así que la mayoría de vosotors seguro que ya conocéis la herramienta SYS.MONLBL.

A menudo, un enfoque visual para revisar el código es mucho más intuitivo que los números puros. Este es principalmente el objetivo de esta serie de artículos. Esta vez vamos a hacer una pequeña excursión lejos de Python y sus herramientas, y vamos a explorar la generación de mapas de calor de los informes ^%SYS.MONLBL.

0
0 156
Artículo Alberto Fuentes · mayo 19, 2021 1m read

En Studio, podías abrir una clase directamente usando su nombre, sin tener que recorrer completamente el árbol de paquetes con un montón de clics hasta llegar a la clase deseada.

Con Ctrl + O o (File -> Open) podías escribir el nombre de la clase de forma sencilla, por ejemplo:

Pulsabas Enter y voilà!, la clase se abría.

¿Cómo se logra esto en VSCode?

0
0 1006