#ObjectScript

2 Seguidores · 231 Publicaciones

InterSystems ObjectScript es un lenguaje de programación para operar con datos mediante cualquier modelo de datos que se encuentre en InterSystems Data Platform (Objetos, relacionales, valores clave, documentos, globales) y desarrollar lógica empresarial para aplicaciones del lado del servidor en InterSystems Data Platform.

Consultar la documentación.

Artículo Estevan Martinez · oct 9, 2019 1m read

¡Hola Comunidad!

Tengo una pregunta para todos: en ObjectScript tenemos la variable cls para las clases y mac para el código, y ambas se compilan dentro de int en el código. ¿Hay alguna razón para utilizar mac en lugar de cls  para las clases no-persistentes?

En mi opinión, los beneficios de utilizar cls son:

1. Herencia y otras funciones de la Programación Orientada a Objetos (POO) 

2. Código auto-documentado 

En el caso de mac, una ventaja visible es que es más sencillo llamar al terminal:

do method^Utils(p1,p2)

frente a 

do ##class(Package.Utils).method(p1,p2)

¿Tú cuál prefieres ut

0
0 183
Artículo Bernardo Linarez · oct 8, 2019 3m read

¡Hola a tod@s!

En este artículo me gustaría destacar la importancia de utilizar el Tiempo Universal Coordinado (UTC) para el registro del horario en todos los sistemas y aplicaciones. Especialmente si está desarrollando aplicaciones con un alcance mundial.

Quienes trabajen en ENSEMBLE sabrán que cualquier registro del horario se guarda como la hora correspondiente al UTC. Otros seguramente saben que las funciones de conversión $ZDATETIME y $ZDATETIMEH tienen un parámetro de control-3 , el cual actúa de una manera muy diferente al resto, ya que transforma una cadena con formato $HOROLOG en ot





wink

0
0 168
Artículo Jose-Tomas Salvador · ago 14, 2019 5m read

La funcionalidad de Sincronización de Objetos no es nueva, estaba presente en Caché, pero quería explorar un poco más en profundidad cómo funciona. Siempre he pensado que la sincronización automática de una base de datos es compleja en sí misma pero, para algunos escenarios muy particulares quizá no sea tan difícil. Así que he considerado un caso de uso muy simple (OK, quizá el caso típico, no descubro nada... pero si es común y funciona, es bueno wink ). Puedes bajar el código de GitHub y compilarlo en tu sistema, generar automáticamente datos de ejemplo y jugar un poco con ello. Está hecho para













0
1 190
Artículo Nancy Martínez · ago 7, 2019 7m read


¡Hola a tod@s!

Este artículo es una pequeña descripción general de una herramienta que permitirá entender las clases y su estructura, dentro de los productos de InterSystems: desde IRIS hasta Caché, Ensemble y HealthShare.

En resumen, con esta herramienta se visualiza una clase o un paquete completo, se muestran las relaciones que existen entre las clases y proporciona toda la información que se encuentra disponible para los desarrolladores y líderes de equipos sin necesidad examinar el código, utilizando el Studio.

Si estás aprendiendo a utilizar los productos de InterSystems,  o simplemente estás interesado en aprender algo nuevo sobre las soluciones que ofrece la tecnología de InterSystems, ¡eres más que bienvenido a leer la descripción general de ObjectScript Class Explorer!

0
0 631
Artículo Kurro Lopez · jul 17, 2019 12m read


Las clases de consulta en InterSystems Caché son una herramienta muy útil que separa las consultas SQL del código Object Script de Caché. Básicamente funciona de la siguiente manera: supongamos que quiere utilizar la misma consulta SQL con distintos argumentos en varios lugares diferentes. En este caso, puede evitar la duplicación del código si declara el contenido de la consulta como una clase de consulta y después llama a esta consulta por su nombre. Este método también es conveniente para las consultas personalizadas, donde el desarrollador define con cuál de las tareas obtendrá la siguiente fila. ¿Esto le parece interesante? Entones, ¡siga leyendo!

0
0 802
Artículo Alberto Fuentes · jul 9, 2019 4m read

¡Hola! Me gustaría revisitar hoy con vosotros un artículo muy útil de Amir Samary donde se detalla cómo ejecutar un comando del sistema operativo desde IRIS / Caché / Ensemble de forma interactiva.

Con frecuencia es necesario ejecutar algún comando externo, como por ejemplo un programa Python o un script de bash desde Caché/Ensemble. Existen dos formas principales:

  • $ZF(-100) - Ejecuta un comando como un proceso hijo. La ejecución puede ser síncrona o asíncrona. Permite redireccionar la entrada y salida estándar a ficheros. Esta función reemplaza a las obsoletas $ZF(-1), $ZF(-2).
  • CPIPE - Ejecuta e
0
0 613
Pregunta Evgeny Shvarov · jun 29, 2019

¡Hola chicos!

Como saben, hay dos (al menos) formas de obtener el valor almacenado de una propiedad de una clase InterSystems IRIS si se conoce el ID de una instancia (o un registro).

1. Obtenerlo mediante la propiedad de una instancia con "Acceso a objetos":

ClassMethod GetPropertyForID(stId As %Integer) As %String

{

set obj=..%OpenId(stId)

return obj.StringData

} +++ ++ 
 

2. Obtenerlo mediante una columna del registro con "acceso SQL":

ClassMethod GetColumnForID(stId As %Integer) As %String

{

&sql(select StringData into :sd from Ideal.StoredData where id = :stId)

return sd

}
1
0 199
Artículo Nancy Martínez · jun 28, 2019 9m read

¡Hola Comunidad!

En este artículo encontrarán algunosejemplos de conversiones y operaciones que les pueden resultar útiles. También incluyo enlaces a la documentación donde se puede obtener másinformación.

Cuando escribíesto, la hora del Este "Eastern Daylight Time" estaba activa en el Caché de mi sistema.

0
0 998
Anuncio Nancy Martínez · jun 18, 2019

Hola a todos,

Nuestro compañero en la Comunidad @Dmitry Maslennikov  liberó la última versión de la extensión VSCode para ObjectScript hace ya un tiempo, y es momento de hacer alguna revisión de lo que aporta esta versión.

¿Qué hay de nuevo en esta versión?

  • Se ha añadido una propiedad a export, "objectscript.export.addCategory" si se habilita utiliza el comportamiento previo, añade la carpeta categoría a la carpeta de exportación, se encuentra deshabilitada por defecto
  • Se ha añadido un menú de acciones en el Servidor, haciendo clic en la información del servidor desde la barra de estado. Abre el Portal de Gestión,  la referencia de clases de la documentación y alterna la conexión.
  • Sugerencias a nivel de clases: en ##class, Extends, As, CompileAfter, DependsOn, PropertyClass
  • Sugerencia al usar $SYSTEM con clases del paquete %SYSTEM
  • Importar y compilar carpeta o fichero desde el menú de contexto en el explorador de ficheros
  • Explorador del Servidor, ahora es posible abrir cualquier otro Namespace
  • Sugerencia en el uso de Macros

Para más detalles, pueden ver los siguientes ejemplos:

0
0 271
Artículo Dmitry Maslennikov · jun 17, 2019 2m read

¡Hola a tod@s! Hoy traigo buenas noticias para la Comunidad:

Hace unos días, GitHub se actualizó con la última versión del proyecto linguist, que se utiliza para reconocer los tipos de código fuente en los repositorios. Ayuda a determinar qué lenguaje de programación se ha utilizado en cada archivo del repositorio. La sección de estadísticas del repositorio muestra los resultados del trabajo de este módulo.

 

Además, se puede buscar en todos los repositorios disponibles de GitHub para cualquier idioma elegido.

0
0 346
Artículo Jose-Tomas Salvador · jun 12, 2019 2m read

Aquí tienes una divertida prueba para ver cómo de bien conoces ObjectScript.

¿Cuál será el resultado de cada una de las siguientes sentencias?

write 5 * 10 + 1

write 1 + 5 * 10

write 1 + 0 / 10

write 0 && 0 = 0

write 0 = 0 && 0

write 1 && 1 = 1

write 1 = 1 && 1

write 2 && 2 = 2

write 2 = 2 && 2

write "1 APPLE" + "2 BANANAS"

write "-1" + "1-2"

write +"+-+-+-5"

write "1D7P"-1

write "1E6F"-1

write 0 = "FOO"

write 0 = +"FOO"

write 0 = ''"FOO"

write "10X" - " 5" - "5"

write "10-5"

write +"10-5"

write @"10-5"

write 5_"1"-1

write "5"-1
0
0 216
Pregunta Kurro Lopez · mayo 16, 2019

Hola a todos,

Tengo una clase que quiero serializar a JSon. Entonces estoy usando el objeto% ZEN.Auxiliary.jsonProvider)

 set myClass = ## class (myapp.myclass).% New () 
 
 
 
 set myClass.property1 = "value 1" 
 
 
 
 establecer myClass.property2 = "valor 2" 
 
 
 
 establecer myClass.property3 = " valor 3 "
 
 
 
 do ## class (% ZEN.Auxiliary.jsonProvider).% WriteJSONStreamFromObject (.tStream, myClass ,,, 1," ed ") 
 
 
 
 write tStream.Read () 

Por definición de myclass, todas las propiedades están serializadas, eso está bien. Pero no quiero serializar la propiedad3

1
0 294
Anuncio David Reche · mayo 17, 2019

¡Hola Comunidad!

Echad un vistazo al nuevo vídeo "Coding Talk" ("Charlas sobre programación") en el Canal de YouTube de la Developer Community:

Crea tu primer código con InterSystems ObjectScript, usando IRIS Community, Github, Docker and VSCode

En este video, presentado por @Evgeny Shvarov, aprenderás a crear clases de InterSystems ObjectScript, ejecutarlo en un contenedor docker con InterSystems IRIS Community Edition, editarlo y compilarlo en Visual Studio Code y, por último, subirlo a Github.

Además...

Echa un vistazo al resto de vídeos "Coding Talks" en una Lista de reproducción ("

yes

0
0 200
Anuncio David Reche · mayo 15, 2019

¡Hola Comunidad!

Echad un vistazo al nuevo webinar disponible en el Canal de YouTube de la Developer Community: herramientas para trabajar con Intersystems IRIS en proyectos de Machine Learning. El webinar ha sido grabado por dos Ingenieros de Ventas de InterSystems: @Sergey Lukyanchikov y @Eduard Lebedyuk.

"Herramientas de Machine Learning (Python, ObjectScript, Interoperability, Analytics) para InterSystems IRIS"

0
0 115
Artículo Alberto Fuentes · mayo 9, 2019 1m read

Me gustaría compartir un trabajo de André-Claude Gendron del CIUSSS de l'Estrie - CHUS (Canadá) presentado en un InterSystems Summit.  

Consiste en un framework de generación de objetos simulados (mocks) que puede utilizarse para construir UnitTests.

Un objeto simulado (o mock) no es más que un objeto que imita el comportamiento de objetos reales de forma controlada. Estos objetos simulados se utilizan en las pruebas unitarias (UnitTest) para simular objetos o dependencias que sean necesarias para la clase que se quiera probar. Lo explica muy bien su presentación:

La presentación detalla varios

0
0 969
Anuncio David Reche · abr 24, 2019

¡Hola a todos!

Hoy es miércoles y por eso tenemos un nuevo video en nuestro Canal de YouTube, grabado en un nuevo formato, "Coding Talks":  

Autor del vídeo: @Evgeny Shvarov 

Objetivo del vídeo: Cómo implementar una solución sobre InterSystems IRIS mediante ObjectScript utilizando Docker, con un ejemplo de un repositorio de código dockerizado.

0
0 156
Artículo Alberto Fuentes · abr 17, 2019 2m read

El archivo workmgr_simple.prj_.zip contiene un ejemplo simple de paralelización con $system.WorkMgr 

El ejemplo utiliza diferentes procesos (trabajadoresworkers) para actualizar pedazos de una misma tabla .

¿En qué consiste el ejemplo?

  • Crea una tabla con 100 filas.
  • Divide la tabla en distintos pedazos (cada pedazo es un grupo de filas) sobre las que actuarán los trabajadores.
  • Inicializa $system.WorkMgr y asigna los pedazos en que se ha dividido la tabla a los procesos trabajadores:
    • Cada proceso trabajador actualiza las filas del pedazo de la tabla que le haya tocado.
    • En este caso, la actualización

0
0 130
Artículo Jose-Tomas Salvador · abr 16, 2019 2m read

Hace algunas semanas estaba leyendo un libro de Stephen Hawking y Leonard Mlodinow, El Gran Diseño. En un momento dado, intentando definir cosas como ¿por qué existimos?, ¿por qué utilizamos los modelos que utilizamos en física?,... bueno, ya sabéis, ese tipo de cosas... los autores se refirieron al ejemplo del Juego de la Vida inventado por el matemático John Conway en 1970... Básicamente el quería mostrar que un sistema con unas leyes fundamentales realmente simples (Física) podría evolucionar y "vivir" hasta convertirse en un sistema más complejo (Química) en el cual "algo" (humanos) podría descubrir su propio modelo y reglas complejas que explicasen su realidad... las reglas para este modelo determinista que el expuso eran tan básicas que pensé que sería divertido implementarlas en ObjectScript cuando tuviera un rato libre... hay otras implementaciones en JavaScript y en otros lenguajes... pero no en ObjectScript… y ¡!había que corregir eso!!… así que ¡aquí lo tienes!

0
0 315
Artículo Kurro Lopez · abr 16, 2019 3m read

A veces, necesitamos copiar parte de las propiedades de un objeto en otro diferente.

La forma mas facil sería hacer lo siguiente:

Set obj1.FirstName = obj2.FirstName

Set obj1.SecondName = obj2.SecondName

¿Que sucede si el objeto contiene un gran número de propiedades? ¿Y si solo necesitamos extraer un importante grupo de datos, y complementar la información en otro objeto?

Tenemos las siguientes clases:

Class Kurro.PersonalInfo Extends %Library.SerialObject
{
 /// Code of personal
 Property Code As %String;
 
 /// First name of personal
 Property FirstName As %String;
 
 //
0
0 294