文章 Jingwei Wang · 十二月 29, 2021 5m read

$HOROLOG($H)

表示当前的本地日期和时间,是由两个整数值组成的字符串,这些整数是计数器,是InterSystems IRIS存储格式,不是用户可读的日期和时间。

ddddd,sssss

代码示例:

w $H,!
 
北京时间2021年12月29日15:15:30时,输出结果为:
 
66107,54930

第一个整数,ddddd,是当前日期,表示为自1840年12月31日以来的天数,其中第1天是1841年1月1日。这个日期到达的最大年年限是9999年12月31日,所以这个整数的最大值是2980013。$HOROLOG不能直接用于表示1840年到9999年范围之外的日期

第二个整数,sssss,是当前的时间,表示为从当天午夜开始的秒数计数。系统将时间字段从0递增到86399秒。当午夜时分达到86399时,系统将时间字段重置为0,并将日期字段增加1。

你可以通过调用Horolog()方法获得相同的当前日期和时间信息,如下所示。

WRITE $SYSTEM.SYS.Horolog()

$NOW()

$NOW()返回当前进程的本地日期和时间,是InterSystems IRIS存储格式,不是用户可读的日期和时间。

ddddd,sssss.ffffff

代码示例:

w $NOW(),!

北京时间2021年12月29日15:15:30时,输出结果为:

66107,54930.
0
0 291
文章 Jingwei Wang · 十二月 29, 2021 4m read

dformat :












描述
1 MM/DD/[YY]YY : 07/01/97 或 02/22/2018
2 DD Mmm [YY]YY : 01 Jul 97
3 YYYY-MM-DD :2018-02-22 (ODBC时间格式:默认值在下面的tformat部分有描述) 默认情况下,这种格式与当前的地区设置无关 如果要使用你当前的日期和时间的地区设置与这种格式,请将localeopt设置为0。
4 DD/MM/[YY]YY :01/07/97 或 22/02/2018
5 Mmm [D]D, YYYY :Jul 1, 1997
6 Mmm [D]D YYYY :Jul 1 1997
7 Mmm DD [YY]YY :Jul 01 1997
8 YYYYMMDD :19970701
9 Mmmmm [D]D, YYYY :July 1, 1997
10 W (2) :一个星期的日数,从0(星期日)到6(星期六)编号。
0
0 190
文章 Jingwei Wang · 十二月 23, 2021 6m read

正如你在我的简介中看到的,我在一所大学教书,我想分享我对IRIS(或之前的Caché)教学的看法。

已经有一段时间了,但我还记得在今年早些时候看到YURI MARX GOMES关于 "用InterSystems对象和SQL开发 "一系列课程。他对第1天第2天第3天的课程内容进行了简要的描述,并附有讲师Joel Solon的评论。我心想,分享我自己的经验可能会有趣。

在我真正写下我教给学生的东西之前,先简单介绍一下我的经历。

在我毕业拿到硕士学位回到大学工作后,我们系决定更新我们的课程,在普通课程中增加几门新课程。其中一门是 "后关系型数据库"。它是为研究生第一年的学生讲授的。开始时,它包括72小时的讲座和72小时的实践。现在变为秋季学期72小时的讲座和36小时的实践。

由于我是一名新员工,而且是一名年轻有为的员工,我被赋予了讲授这门新学科的职责。我感到惊讶和惊恐是不言而喻的。首先,我根本没有任何教学方面的实践经验。其次,我只有夏天的三个月时间来学习一项对我来说完全陌生的技术并准备课程的讲授。幸运的是,我已经知道了应该教授哪个数据库。这个数据库就是InterSystems Caché。

总之,我或多或少地准备好了,然后我亲爱的学生们的问题开始了。例如,为什么他们必须学习这个数据库,他们在哪里以及如何使用这个数据库,等等。

1
0 371
文章 Jingwei Wang · 十二月 22, 2021 5m read

IRIS 2019.4 预览版中发布了/api/monitor服务,以Prometheus格式展示IRIS指标,但没有正式公布。对于任何想要使用IRIS指标作为其监控和警报解决方案的一部分的人来说,这是一个大新闻。该API是新的IRIS 系统警报和监控(SAM)解决方案的一个组成部分,将在IRIS的一个即将到来的版本中发布。

然而,你不必等待SAM开始规划和试用这个API来监控你的IRIS实例。在未来的文章中,我将深入挖掘可用的指标和它们的含义,并提供交互式仪表盘的例子。但首先,让我从一些背景和一些问题和答案开始。

IRIS(和Caché)总是在收集关于它自己和它所运行的平台的几十个指标。一直以来都有多种收集这些指标的方法来监控Caché和IRIS。我发现,很少有安装使用IRIS和Caché内置的解决方案。例如,History Monitor仪表盘作为性能和系统使用指标的历史数据库已经存在很长时间了。然而,没有明显的方法来展现这些指标,并实时监测系统。

IRIS平台的解决方案正在从运行在几个企业内部的实例上的单体应用程序,转向分布式解决方案部署在 "任何地方"。对于许多用例,现有的IRIS监控选项并不适合这些新的模式。InterSystems没有使用陈旧的方法,而是寻找当前流行的、经过验证的开源解决方案进行监控和警报。

普罗米修斯?

0
0 308
文章 Jingwei Wang · 十一月 2, 2021 4m read

InterSystems 技术概要

技术概要(First Look)是为用户提供InterSystems IRIS的关键技术和选项的实践经验的简短文档,其中涉及到的许多技术都可以在免费的评估实例上体验所有这些技术都可以在已授权的InterSystems IRIS实例上完成。

部署

技术概要:InterSystems 云管理器(First Look: InterSystems Cloud Manager)

介绍InterSystems 云管理器,为您展示如何利用它在公有云上部署InterSystems产品。

技术概要: 容器中的InterSystems 产品(First Look: InterSystems Products in Containers)

介绍Docker容器和在容器中运行InterSystems产品。

InterSystems IRIS 基础:安装(InterSystems IRIS Basics: Installation

指导用户完成InterSystems IRIS的单实例安装,以便与其它技术概要(First Looks)一起使用。

架构

技术概要:使用InterSystems分布式缓存扩展系统的用户容量

介绍了使用由ECP支持的分布式缓存来扩展用户容量。

1
1 813
文章 Jingwei Wang · 十月 28, 2021 32m read
目录

技术概要:InterSystems IRIS 和 UIMA

本技术概要(First Look)快速介绍了 InterSystems IRIS® 数据平台如何实施和补充非结构化信息管理架构 (UIMA)。在简要概述 UIMA 以及 InterSystems IRIS 如何对其进行补充之后,您将有机会通过基本的动手练习来在实际应用中了解 InterSystems IRIS。

0
0 247
文章 Jingwei Wang · 十月 28, 2021 23m read
目录

技术概要:InterSystems API 管理器

本文档将向您介绍InterSystems API管理器(InterSystems API Manager ,IAM),解释了它的工作原理,并让您开始在自己的实例上探索它的功能。

InterSystems API管理器是如何工作的?

InterSystems API管理器是 InterSystems IRIS®数据平台的一个组件,它允许您利用由 InterSystems IRIS 应用程序暴露或消费的微服务和 API。作为 InterSystems IRIS的 服务器和应用程序之间的 API 网关(gateway),API 管理器使您能够更有效地监视和控制服务器端 API 和客户端应用程序之间的调用流量。

0
0 277
文章 Jingwei Wang · 九月 28, 2021 5m read

本文档介绍了如何在 InterSystems IRIS®数据平台中使用 Java 网关(Gateway)与 Java 组件进行互操作。在本文中,您将首先创建一个示例 JAR 文件。然后,您将在 InterSystems IRIS 管理门户(Management Portal)中创建并启动 Java  网关(Gateway)。您将以编程方式导入创建的示例 JAR 文件。最后,您将在 ObjectScript 中创建并操作一些代理类(proxy class)和对象(object)。

为了让您体验 Java 网关(Gateway ),而又不陷入细节困境,我们保持了简单的探索。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 Java 网关(Gateway)引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 Java 网关(Gateway )的探索与真实的情况相混淆!本文档末尾提供的参考资料将使您对在生产中使用 Java 网关(Gateway)的情况有一个很好的了解。

要浏览所有的技术概要(First Look),包括下面描述的可以在免费的社区版(Community Edition)实例上执行的那些,请参见InterSystems 技术概要

2
0 283
文章 Jingwei Wang · 九月 27, 2021 32m read

CodeMirror { height: auto; } .CodeMirror.cm-s-inner { background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; background-position: inherit; background-repeat: inherit; } .CodeMirror-scroll { overflow: auto hidden; z-index: 3; } .CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); } .

0
0 481
文章 Jingwei Wang · 九月 26, 2021 6m read

本文解释了如何使用 InterSystems IRIS Native 从 .NET 应用程序访问 InterSystems IRIS®数据平台 globals。IRIS Native 还允许您运行ObjectScript 方法、函数和Routine。在本文中,您首先将连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。所有这些活动都将在 .NET 应用程序中执行。

为了让您体验 IRIS Native,而又不陷入细节困境,本次探索特意设计得很简洁。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 IRIS Native 引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 IRIS Native 的探索与真实的情况相混淆!

Globals 简介

InterSystems IRIS 提供了一种易于使用的方法来将数据存储在持久的多维数组中。global 是存储在 InterSystems IRIS 物理数据库中的多维数组。在应用程序中,globals 到物理数据库的映射基于当前命名空间,命名空间提供一个或多个物理数据库的逻辑统一视图。

0
0 278
文章 Jingwei Wang · 九月 22, 2021 9m read

为什么要连接系统?

连接系统可以让一个系统处理来自非本系统的信息。例如,以下场景需要连接系统:

  • 为了提高效率,最初设计为执行单一功能的系统需要集成。例如,您可以通过集成跟踪库存、订购材料、记录销售和控制运输的各个系统来提高效率。
  • 系统合并后,在不同机构中执行相同功能的系统需要协同工作才能使统一的机构有效。

将系统连接在一起时,您可能会面临一些挑战,例如:

  • 不同系统使用不同的通信协议:一个系统可能使用TCP,另一个系统使用SOAP,第三个系统使用REST。
  • 不同系统使用不同格式或基于不同标准的不同消息。
  • 需要保证消息成功传递到正确的系统,并能够检测和纠正故障。
  • 必须监控传输消息的系统,如果一次消息过多,则为消息提供一个队列,并监控整体系统性能以确保没有任何障碍。

虽然可以编写自定义应用程序来连接系统,但开发一款InterSystems IRIS® 产品要容易得多,也快得多。

InterSystems IRIS 提供了一个框架,允许连接系统,并最大限度地减少或消除对自定义代码的需求。
 

Production介绍

InterSystems IRIS Production是一个集成框架,用于轻松连接系统和开发互操作性应用程序。产品Production提供包含各种消息格式和通信协议的内置连接。

0
0 288
文章 Jingwei Wang · 九月 22, 2021 2m read

Object Script(四)

面向脚本


类的主要类型









类型

适用目的

Persistent

持久化对象 够将对象保存到数据库中(写入磁盘),单独存储.

Serial

在持久化对象内部存储的对象,随持久化对象存储,不单独存储.

在给此对象中的属性赋值之前,不需要调用%New()来创建新的对象。如果此对象的属性包含在一个持久化类中,那么此对象的属性将被存储在持久化类的范围内。

Registered

临时的类和对象,不持久化(方法会保存).

Abstract

当类的属性被设置为abstract的时候,该类即被声明为抽象类,不能被实例化.

Datatype


数据类型,只包含数据验证和转换的方法.

CSP

用于处理HTTP事件

类成员



类型

适用目的

Properties

一个属性包含类的一个实例的数据.

Methods

实例方法和类方法(在其他语言中称为静态方法)。

0
0 379
文章 Jingwei Wang · 九月 21, 2021 1m read

Object Script(三)

面向脚本


  • Routine

可将routine看做全局可调用的函数,一个函数是一个执行程序(Roution),它执行一个操作(例如,将一个字符串转换为其对应的ASCII码值)并且可以返回一个值。

语法结构:

Routine可以有一个标签,ObjectScript代码,以及结尾的注释,所有这些元素都是可选的。可以使用";"或"//"来表示注释。对于多行注释,用"/*"标记注释的开头,用 "*/"标记注释的结尾。

结构示例:

标签

      ObjectScript代码

end


  • 创建Routine示例

Studio创建:

打开Studio,点击左上角新建文件。选择General->ObjectScript Routine

将下段代码填写入建好的Routine。

        hello ; hello world routine
            write !, "hello world"
          write !, "bye"
      end quit  ; end

Terminal调用:

打开Terminal,执行下段代码,即可检查结果。

    do ^hello
0
1 332
文章 Jingwei Wang · 八月 25, 2021 4m read

Object Script(二)

ObjectScript没有定义任何保留字:你可以自由地使用任何字作为标识符(如变量名)。为了达到这个目的,ObjectScript使用了一组内置的命令以及特殊的字符(比如函数名的"$"前缀),以便将标识符与其他语言元素区分开来。






示例

含义

abc^def

调用routine中的一个标签:

def是一个routine,abc是该routine中的一个标签。

i%abcdef


i%<PropertyName>

用于从实例变量自身的Get或Set访问器方法中引用该变量,或者绕过其Get或Set方法

abc->def


这种语法只在InterSystems的SQL语句中可以使用。它指定了一个隐含的左外连接。abc是你正在查询的类中的一个对象值字段,def是子类中的一个字段。

abc?def


一个问号是模式匹配操作符,测试变量abc中的值是否与def中指定的模式相匹配

abc[def


左括号([)是二进制包含运算符。

0
0 468
文章 Jingwei Wang · 八月 25, 2021 3m read

Object Script(一)


  • 概况

ObjectScript是一种用于在InterSystems IRIS数据平台上快速开发编程语言,它是面向对象的弱类型脚本语言,非常适用于各种应用,包括业务逻辑、应用集成和数据处理。

在这里,我将主要介绍ObjectScript的命令脚本,类,方法和Routine等使用方式和语法规范。如有任何疑问,可在InterSystems开发者社区进行深入讨论。

  • IDE选择

可以使用InterSystems IRIS内置的StudioVisual Studio Code(需要安装Object Script扩展)来查看和编辑代码。这里我们使用InterSystems IRIS内置Studio来做示例。

如果你已安装InterSystems IRIS或者InterSystems HS 等任何InterSystems产品,找到右下角的图标 ,单击鼠标右键,点击Studio,如下图所示:

输入用户名和密码(用户名:superuser 密码:安装时自己设置的密码),即可进入到Studio开发环境,如下图所示:

 


  • Terminal

可以直接打开InterSystems IRIS的终端尝试执行ObjectScript的简单指令。

0
1 798