清除过滤器
问题
Liang Jianhui · 八月 24, 2022
InterSystems 有解析log文件的工具或者API吗? 您说的是哪个log呢? message Log ,alerts 还是event log? alerts.log
如果您是IRIS或者HC的2017.4版本以上的话,可以用REST API 接口 http://<IP>:<端口号>/api/monitor/alerts 我这边也找到了,非常感谢
公告
Claire Zheng · 一月 7, 2021
亲爱的社区用户,您好!
我们在 Global Masters上推出了商业服务奖励计划,这是一个绝佳的契机,您可以在开发者社区和我们的社交媒体上宣传贵公司的应用、解决方案和服务,甚至为您的 OEX 应用兑换 Google AdWords 推广!
$1,000 Google AdWords 推广代金券 兑换此奖励可在 Google Adwords 上推广您的 OEX 应用。我们将设置推广(关键字、描述、受众),并在推广结束后发送报告。 要求:应用程序应该在 InterSystems IRIS数据平台/IRIS医疗版 上工作,或是通过 IRIS 进行管理/开发的工具。
3,000 积分
开发者社区上的“NEWS”宣传块 兑换此奖励可在开发者社区上宣传您的服务、活动或职位空缺。时长:1 周。 显示在网站所有网页的右侧。 我们的设计人员将为您准备一个横幅。 要求:开发服务、活动或职位空缺应该与 InterSystems 技术相关。
1,500 积分
开发者社区上的 Open Exchange 项目推广 兑换此奖励可在开发者社区上推广您的 OEX 项目。1 周之内,所有社区访问者在网站所有网页右侧的“本周应用”板块中都会看到一个横幅,其中包含您的项目的可点击链接。
1,000 积分
InterSystems 支持的网络研讨会 如果您想针对开发者组织一次专业的网络研讨会,以介绍您的解决方案/工具和公司服务,那么请兑换此奖励,我们将帮忙组织。 您将获得:InterSystems 团队将建立一个在线网络研讨会;在 开发者社区和社交媒体上推广该网络研讨会;开发者社区上的登录页面;网络研讨会前演练和会议期间的技术支持。 要求:应用程序应该在 InterSystems IRIS数据平台/IRIS医疗版上工作,或是通过 IRIS 进行管理/开发的工具。
3,000 积分
让您的视频出现在 InterSystems 开发者 YouTube 频道上 您是否有描述InterSystems 数据平台相关的工具、解决方案或经验的YouTube 视频? 通过订购视频加速包提高您的 YouTube 视频流量:在 InterSystems 开发者 YouTube 频道上推广视频。 列入每月的“InterSystems 开发者视频”摘要。 这是一个示例。 在 Global Masters 和 InterSystems 开发者社交媒体上宣传。
1,500 积分
在开发者社区上发布您公司的标签 兑换此奖励可获得您公司在开发者社区上的标签,它也是一种公司描述,一个包含帖子和您的订阅者的区域。
5,000 积分
如果您还不是 Global Masters 会员,如何兑换?
➡️ 我们邀请您加入:
1. 使用您在开发者社区上的相同账密登录Global Masters 。
2. 回答“自定义你的程序。 从这里开始!”挑战中的 4 个问题(您会在挑战中看到)。
3. 您对 OEX 和开发者社区的贡献积分将在 3 天内自动授予。
4. 在奖励目录兑换奖励。
InterSystems 开发者社区每个月的访问量超过 35000 人。让世界了解您在 InterSystems 数据平台上构建的应用、解决方案和服务!
欢迎在下面的评论中提出您的问题。
* * *
有关 Global Masters 的其他信息:认识Global Masters倡导中心,从这里开始 欢迎几位把你们的相关单位和产品介绍发布出来,展现给全球客户。
@jingqi LIu @Weiwei Yang @Deming Xu @Botai Zhang @姚.鑫
文章
姚 鑫 · 二月 28, 2021
# 第一章 InterSystems SQL简介
InterSystems SQL提供对InterSystems IRIS®Data Platform数据库中存储的数据的无懈可击的标准关系访问。
InterSystems SQL提供以下优势:
- 高性能和可扩展性-InterSystems SQL提供优于其他关系数据库产品的性能和可扩展性。此外,InterSystems SQL可以在各种硬件和操作系统上运行;从笔记本电脑到高端多CPU系统。
- 与InterSystems IRIS对象技术集成-InterSystems SQL与InterSystems IRIS Object技术紧密集成。可以混合使用关系访问和对象访问数据,而不会牺牲任何一种方法的性能。
- 维护成本低-与其他关系数据库不同,InterSystems IRIS应用程序不需要在已部署的应用程序中重建索引和压缩表格。
- 支持标准SQL查询-InterSystems SQL支持SQL-92标准语法和命令。在大多数情况下,可以毫不费力地将现有关系应用程序迁移到InterSystems IRIS,并自动利用InterSystems IRIS更高的性能和对象功能。
可以将InterSystems SQL用于多种目的,包括:
- 基于对象和基于Web的应用程序-可以在InterSystems IRIS对象和Web Server Page应用程序中使用SQL查询来执行强大的数据库操作,如查找和搜索。
- 在线事务处理-InterSystems SQL为INSERT和UPDATE操作以及事务处理应用程序中常见的查询类型提供了出色的性能。
- 商业智能和数据仓库-InterSystems IRIS多维数据库引擎和位图索引技术的结合使其成为数据仓库式应用程序的最佳选择。
- 即时查询和报告-可以使用InterSystems SQL附带的功能齐全的ODBC和JDBC驱动程序连接到流行的报告和查询工具。
- 企业应用程序集成-InterSystems SQL Gateway使能够无缝地通过SQL访问ODBC或JDBC兼容的外部关系数据库中存储的数据。这使得在InterSystems IRIS应用程序中集成来自各种来源的数据变得容易。
# 架构
InterSystems SQL的核心由以下组件组成:
- 统一数据字典-存储为一系列类定义的所有元信息的存储库。InterSystems IRIS自动为统一字典中存储的每个持久类创建关系访问(表)。
- SQL处理器和优化器-一组程序,用于解析和分析SQL查询,确定给定查询的最佳搜索策略(使用复杂的基于成本的优化器),并生成执行查询的代码。
- InterSystems SQL Server-一组InterSystems IRIS服务器进程,负责与InterSystems ODBC和JDBC驱动程序的所有通信。它还管理频繁使用的查询的高速缓存;当同一查询被多次执行时,可以从查询高速缓存中检索其执行计划,而不必由优化器再次处理。
## 特点
InterSystems SQL包括一整套标准的关系型功能。这些措施包括:
- 定义表和视图(DDL或数据定义语言)的能力。
- 对表和视图(DML或数据操作语言)执行查询的能力。
- 能够执行事务,包括插入、更新和删除操作。执行并发操作时,InterSystems SQL使用行级锁。
- 为更高效的查询定义和使用索引的能力。
- 能够使用各种数据类型,包括用户定义的类型。
- 定义用户和角色并为其分配权限的能力。
- 定义外键和其他完整性约束的能力。
- 定义INSERT、UPDATE和DELETE触发器的能力。
- 定义和执行存储过程的能力。
- 能够以不同的格式返回数据:用于客户端访问的ODBC模式;用于在基于服务器的应用程序中使用的显示模式。
## 符合SQL-92
SQL-92标准在算术运算符优先级方面是不精确的;关于这一问题的假设因SQL实现而异。InterSystems SQL支持将系统配置为以下任一系统范围的SQL算术运算符优先级替代方案:
- InterSystems SQL可以配置为严格按照从左到右的顺序解析算术表达式,没有运算符优先级。这与ObjectScript中使用的约定相同。因此,3+3*5=30。可以使用括号来强制执行所需的优先顺序。因此,3+(3*5)=18。
- InterSystems SQL可以配置为使用ANSI优先级分析算术表达式,这为乘法和除法运算符提供了比加法、减法和串联运算符更高的优先级。因此,3+3*5=18。如果需要,可以使用括号覆盖此优先级。因此,(3+3)*5=30。
SQL运算符优先级的默认值取决于InterSystems IRIS版本。
InterSystems SQL支持完整的入门级SQL-92标准,但有以下例外:
- 不支持向表定义添加附加的CHECK约束。
- 不支持SERIALIZABLE(序列化)隔离级别。
- 分隔标识符不区分大小写;标准规定它们应该区分大小写。
- 在HAVING子句中包含的子查询中,应该能够引用该HAVING子句中“可用”的聚合。这不受支持。
## 拓展
- InterSystems SQL支持许多有用的扩展。其中许多都与InterSystems IRIS提供对数据的同步对象和关系访问这一事实有关。
其中一些扩展包括:
- 支持用户可定义的数据类型和函数。
- 以下对象引用的特殊语法。
- 支持子类化和继承。
- 支持对存储在其他数据库中的外部表进行查询。
- 用于控制表的存储结构以实现最高性能的多种机制。
## 互操作性
- InterSystems SQL支持多种与其他应用程序和软件工具互操作的方法。
## JDBC
InterSystems IRIS包括一个符合标准的第4级JDBC客户机(全部是纯Java代码)。
InterSystems JDBC驱动程序提供以下特性:
- 高性能
- 纯JAVA代码实现
- UNICODE支持
- 线程安全
可以将InterSystems JDBC与任何支持JDBC的工具、应用程序或开发环境一起使用。
## ODBC
InterSystems SQL的c语言调用级接口是ODBC。与其他数据库产品不同,InterSystems ODBC驱动程序是一个本机驱动程序——它不是构建在任何其他专有接口之上的。
InterSystems ODBC驱动程序提供以下功能:
- 高性能
- 可移植性
- 原生Unicode支持
- 线程安全
可以将InterSystems ODBC与支持ODBC的任何工具,应用程序或开发环境一起使用。
## 嵌入式SQL
在ObjectScript中,InterSystems SQL支持嵌入式SQL: **将SQL语句放置在方法(或其他代码)主体中的能力。使用嵌入式SQL,可以查询单个记录,或定义一个游标,然后使用该游标查询多个记录。嵌入式SQL已编译。默认情况下,它是在第一次执行(运行时)时进行编译的,而不是在包含它的例程进行编译时进行的。因此,在运行时检查SQLCODE错误很重要。** 还可以与包含嵌入式SQL的ObjectScript例程同时编译嵌入式SQL。
与InterSystems IRIS的对象访问功能结合使用时,嵌入式SQL的功能非常强大。例如,以下方法查找具有给定Name值的记录的RowID:
```
/// w ##class(PHA.TEST.SQL).FindByName("姚鑫")
ClassMethod FindByName(fullname As %String)
{
&sql(SELECT %ID INTO :id FROM Sample.Person WHERE Name = :fullname)
IF SQLCODE < 0 {
SET baderr="SQLCODE ERROR:"_SQLCODE_" "_%msg
RETURN baderr
} ELSEIF SQLCODE = 100 {
SET nodata="Query returns no data"
RETURN nodata
}
RETURN "RowID="_id
}
```
```
DHC-APP>w ##class(PHA.TEST.SQL).FindByName("姚鑫")
RowID=6
```
注意: 如果 Name 查处多条的话 id为查询的第一条数据
指定倒序,为最后一条。
```
&sql(SELECT %ID INTO :id FROM Sample.Person WHERE Name = :fullname order by ID desc)
```
```
DHC-APP>w ##class(PHA.TEST.SQL).FindByName("姚鑫")
RowID=14
```

# 动态SQL
作为其标准库的一部分,InterSystems IRIS提供了一个%SQL.Statement类,可以使用它来执行动态(即在运行时定义的)SQL语句。可以在ObjectScript方法中使用动态SQL。例如,下面的方法查询指定数量的21世纪出生的人。该查询选择1999年12月31日之后出生的所有人,按出生日期对所选记录进行排序,然后选择前x条记录:
```
/// w ##class(PHA.TEST.SQL).Born21stC("姚鑫")
ClassMethod Born21stC(x)
{
/// w ##class(PHA.TEST.SQL).Born21stC("1")
ClassMethod Born21stC(x)
{
SET myquery=2
SET myquery(1) = "SELECT TOP ? Name,%EXTERNAL(DOB) FROM Sample.Person "
SET myquery(2) = "WHERE DOB > 58073 ORDER BY DOB"
SET tStatement = ##class(%SQL.Statement).%New()
SET qStatus = tStatement.%Prepare(.myquery)
IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
SET rset = tStatement.%Execute(x)
DO rset.%Display()
WRITE !,"End of data"
q ""
}
```
```
DHC-APP>w ##class(PHA.TEST.SQL).Born21stC("2")
Name Expression_2
Ingrahm,Susan N. 02/10/2001
Goldman,Will H. 09/22/2002
2 Rows(s) Affected
End of data
```
准备查询时,该查询的优化版本将存储为缓存查询。该缓存查询被执行用于查询的后续调用,从而避免了每次执行查询时重新优化查询的开销。
## 限制
请注意InterSystems SQL的以下限制:
NLS可用于为单个全局变量以及当前运行的进程中的局部变量指定特定国家区域设置行为的$ORDER行为。InterSystems SQL可以在任何国家语言环境中使用和良好地工作。然而,InterSystems SQL当前的一个限制是,对于任何特定进程,它引用的所有相关全局变量都必须使用与当前进程区域设置相同的国家区域设置。 文章写得非常棒!学习! 学习到新知识sql动态查询,感谢!
文章
姚 鑫 · 三月 1, 2021
# 第二章 InterSystems SQL基础
本章概述了InterSystems SQL的特性,特别是那些SQL标准未涵盖的特性,或者与InterSystems IRIS®数据平台统一数据架构相关的特性。
本教程假定读者具备SQL知识,并不是为介绍SQL概念或语法而设计的。
本章讨论以下主题:
- 表
- 查询
- 权限
- 数据显示选项
- 数据排序类型
- 执行SQL
# 表
在InterSystems SQL中,数据显示在表中。每个表都包含许多列。一个表可以包含零个或多个数据值行。以下术语大体上等效:
数据术语 | 关系数据库术语| InterSystems IRIS术语
---|---|---
数据库 | 架构| 包
数据库 | 表 | persistent class(持久类)
字段 | 列 | 属性
记录 | 行 |
表有两种基本类型:基表(包含数据,通常简称为表)和视图(基于一个或多个表提供逻辑视图)。
## 模式与架构
SQL模式提供了一种将相关表,视图,存储过程和缓存查询的集合进行分组的方法。模式的使用有助于防止表级别的命名冲突,因为表,视图或存储过程的名称在其模式内必须唯一。应用程序可以在多个架构中指定表。
SQL模式与持久性类包相对应。通常,模式与其相应的程序包具有相同的名称,但是由于不同的模式命名约定或故意指定了不同的名称,因此这些名称可能有所不同。模式到程序包的映射在SQL到类名的转换中有进一步描述。
**模式是在特定的名称空间中定义的。模式名称在其名称空间内必须是唯一的。将第一个项目分配给它时,会自动创建一个模式(及其对应的程序包),从中删除最后一个项目时,会自动将其删除。**
可以指定一个限定或不限定的SQL名称,限定名称指定模式:schema.name。
非限定名不指定模式名。
如果不指定模式,InterSystems IRIS将提供如下模式:
- 对于DDL操作,InterSystems IRIS使用系统范围的默认架构名称。此默认值可配置。它适用于所有名称空间。
- 对于DML操作,InterSystems IRIS可以使用用户提供的模式搜索路径或系统范围内的默认模式名称。在动态SQL,嵌入式SQL和SQL Shell中,使用了不同的技术来提供模式搜索路径。
DML(data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL(Data Control Language):
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
要查看名称空间内的所有现有模式,请执行以下操作:
1. 在管理门户中,选择“系统资源管理器”,然后选择“ SQL”。使用页面顶部的Switch选项选择一个名称空间;这将显示可用名称空间的列表。选择一个名称空间。


2. 选择屏幕左侧的Schema下拉列表。这将显示当前名称空间中的架构列表。从该列表中选择一个模式;所选名称将出现在“模式”框中。

3. 如果有数据下拉列表允许选择表,视图,过程或缓存的查询,或所有属于模式的所有这些。设置此选项后,单击三角形以查看项目列表。如果没有项目,则单击三角形无效。

# 查询
在InterSystems SQL中,可以通过查询查看和修改表中的数据。粗略地说,查询有两种形式:查询数据(SELECT语句)和修改数据(INSERT,UPDATE和DELETE语句)。
可以通过多种方式使用SQL查询:
- 在ObjectScript中使用嵌入式SQL。
- 在ObjectScript中使用动态SQL。
- 调用使用CREATE PROCEDURE或CREATE QUERY创建的存储过程。
- 使用类查询。
- 使用来自各种其他环境的ODBC或JDBC接口。
# 权限
InterSystems SQL提供了一种通过权限来限制对表、视图等的访问的方法。
# 数据显示选项
InterSystems SQL使用SelectMode选项来指定如何显示或存储数据。
可用的选项有Logical、Display和ODBC。
数据在内部以逻辑模式存储,并且可以在这些模式中的任何一种中显示。
通过使用`LogicalToDisplay()`、`LogicalToODBC()`、`DisplayToLogical()`和`odbcological()`方法,每个数据类型类都可以在内部逻辑格式和显示格式或ODBC格式之间进行转换。
当显示SQL SelectMode时,将应用LogicalToDisplay转换,并对返回值进行格式化以便显示。
默认的SQL SelectMode是逻辑的;
因此,默认情况下返回值以存储格式显示。
SelectMode影响查询结果集数据显示的格式,SelectMode还影响应该提供数据值的格式,例如在WHERE子句中。
InterSystems IRIS根据存储模式和指定的SelectMode选择合适的转换方法。
所提供的数据值与SelectMode之间的不匹配可能导致错误或错误的结果。
例如,如果`DOB`是一个以`$HOROLOG`逻辑格式存储的日期,并且WHERE子句指定`DOB > 2000-01-01 `(ODBC格式),则SelectMode = ODBC返回预期的结果。
`SelectMode = Display`生成`SQLCODE -146`,无法将日期输入转换为有效的逻辑日期值。
`SelectMode =Logic`将 `2000-01-01`解析为逻辑日期值,并返回零行。
对于大多数数据类型,三种SelectMode模式返回相同的结果。
以下数据类型受SelectMode选项影响:
- 日期,时间和时间戳数据类型。 InterSystems SQL支持多种日期,时间和时间戳数据类型(`%Library.Date`,`%Library.Time`,`%Library.PosixTime`,`%Library.TimeStamp`和`%MV.Date`)。除`%Library.TimeStamp`外,这些数据类型对逻辑,显示和ODBC模式使用不同的表示形式。在其中的几种数据类型中,InterSystems IRIS以`$HOROLOG`格式存储日期。此逻辑模式内部表示包括从任意起始日期(1840年12月31日)起的天数的整数,逗号分隔符以及从当天午夜开始的秒数的整数。 InterSystems IRIS将`%PosixTime`时间戳存储为编码的64位带符号整数。在“显示”模式下,日期和时间通常以数据类型的FORMAT参数指定的格式显示,或者当前语言环境的日期和时间格式默认为`%SYS.NLS.Format`。美国语言环境的默认值为`DD / MM / YYYY hh:mm:ss`。在ODBC模式下,日期和时间始终表示为`YYYY-MM-DD hh:mm:ss.fff`。 `%Library.TimeStamp`数据类型还将这种ODBC格式用于逻辑和显示模式。
- `%LIST`数据类型。InterSystems IRIS逻辑模式使用两个非打印字符存储列表,这两个字符出现在列表中的第一个项目之前,并显示为列表项目之间的分隔符。在ODBC SelectMode中,列表项显示时列表项之间带有逗号分隔符。在Display SelectMode中,列表项显示时,列表项之间有空格分隔符。
- 指定`VALUELIST`和`DISPLAYLIST`的数据类型。如果处于显示模式,并且在字段具有`DISPLAYLIST`的表中插入一个值,则输入的显示值必须与`DISPLAYLIST`中的一项完全匹配。
- 空字符串和空BLOB(流字段)。在逻辑模式下,空字符串和BLOB由非显示字符`$CHAR(0)`表示。在显示模式下,它们由空字符串(“”)表示。
SQL SelectMode可以指定如下:
- 对于当前进程,请使用`$SYSTEM.SQL.SetSelectMode()`。
- 对于InterSystems SQL Shell会话,请使用SET SELECTMODE命令。
- 使用“显示模式”下拉列表,从管理门户“执行查询”用户界面(系统资源管理器,SQL)获得查询结果集。
- 对于动态SQL `%SQL.Statement`实例,请使用`%SelectMode`属性。
- 对于嵌入式SQL,请使用ObjectScript `#SQLCompile` Select预处理器指令设置。该伪指令允许使用第四个值Runtime,它将选择模式设置为RuntimeMode属性设置为:逻辑,显示或ODBC。 RuntimeMode的默认值为Logical。
- 对于使用SELECTMODE关键字的SQL命令CREATE QUERY,CREATE METHOD,CREATE PROCEDURE和CREATE FUNCTION。
- 通过使用`%EXTERNAL`,`%INTERNAL`和`%ODBCOUT`函数在SQL查询中的单个列。
# 数据排序
Collation种类决定了值的排序和比较方式,它是InterSystems SQL和InterSystems IRIS对象的一部分。
**可以指定排序规则类型作为字段/属性保护的一部分。除非另有说明,否则字符串字段/属性默认为命名空间默认排序规则。默认情况下,字符串的命名空间默认排序规则是SQLUPPER。
SQLUPPER排序规则将字符串转换为大写,以便排序和比较。因此,除非另有说明,字符串排序和比较不区分大小写。**
可以指定排序规则类型作为索引保护的一部分,或者使用索引字段的排序规则类型。
通过将排序函数应用于字段名,SQL查询可以覆盖未保护的字段/属性排序规则类型。ORDER BY子句指定查询的结果集序列;如果指定的字符串字段被保护为SQLUPPER,查询结果顺序不区分大小写。
# 执行SQL
InterSystems IRIS支持多种方法来编写和执行SQL代码。其中包括:
- 嵌入式SQL:嵌入在ObjectScript代码中的SQL代码。
- 动态SQL:使用`%SQL.Statement`类从ObjectScript中执行的SQL代码。
- `Execute()`方法:使用`%SYSTEM.SQL`类的`Execute()`方法执行SQL代码。
- 包含SQL代码的存储过程,使用CREATE PROCEDURE或CREATE Query创建。
- SQL Shell:从终端界面执行的SQL语句。
- 执行查询界面:从管理门户执行的SQL语句。
可以使用InterSystems IRIS对象(类和方法)执行以下操作:
- 持久性类(SQL表)。
- 定义索引。
- 定义并使用类查询。
关于动态SQL能再详细说说吗? 实用帖,非常好的学习知识,感谢!
文章
Claire Zheng · 四月 21, 2021
近日,InterSystems极客俱乐部举办了线上直播“InterSystems Caché系统运维培训”,这是系列视频之一。InterSystems中国资深售前顾问祝麟讲解了“InterSystems Caché系统安全”。
公告
Michael Lei · 六月 2, 2022
InterSystems 正式发布 InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1
InterSystems很高兴地宣布,InterSystems IRIS数据平台、InterSystems IRIS for Health和HealthShare Health Connect的2022.1版本现在已经发布(GA)。
发布亮点
平台更新
InterSystems IRIS 数据平台 2022.1 扩大了包括以下新的和更新的操作系统的生产环境支持::
Windows Server 2022
Windows 11
AIX 7.3
Oracle Linux 8
我们也很高兴地宣布我们同时支持用于开发环境的MacOS 12 (Monterey)的苹果 M1 和 Intel 芯片集。
更好开发
嵌入式Python – 在IRIS内部使用 Python 和 ObjectScript
互操作适配器- Kafka, AWS S3, AWS SNS 和 CloudWatch
重新设计了Production Extensions(PEX)的用户体验
速度、扩展与安全
在线数据分片再平衡Online Shard Rebalancing
自适应SQL
Journal & Stream 压缩
针对邮件支持TLS 1.3 和 OAuth 2
分析能力与AI
SQL Loader加载器
InterSystems Reports 部署优化
关于所有这些功能的更多细节可以在产品文档中找到:
InterSystems IRIS 2022.1 documentation 和 release notes
InterSystems IRIS for Health 2022.1 documentation 和 release notes
HealthShare Health Connect 2022.1 documentation 和 release note
如何获得软件
软件可以通过传统安装包和容器镜像两种形式获得。 关于可用的安装包和容器镜像的完整列表,请参考 Supported Platforms document.
每个产品的完整安装包可以通过WRC网站Software Distribution page 获取. 使用自定义安装选项,你可以选择你需要的选项,如InterSystems Studio和IntegratedML,以合理化安装范围。
InterSystems IRIS 、 IRIS for Health医疗版和所有相应部件的企业版 容器镜像可以通过以下命令从 InterSystems Container Registry 获得:
docker pull containers.intersystems.com/intersystems/iris:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/irishealth:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/iris-arm64:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/irishealth-arm64:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/iris-ml:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/iris-ml-arm64:2022.1.0.209.0
可用镜像的完整列表,请参考 the ICR documentation.
社区版 容器镜像也可以通过以下命令从 InterSystems Container Registry 获得:
docker pull containers.intersystems.com/intersystems/iris-community:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/irishealth-community:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/iris-community-arm64:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/irishealth-community-arm64:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/iris-ml-community:2022.1.0.209.0
docker pull containers.intersystems.com/intersystems/iris-ml-community-arm64:2022.1.0.209.0
InterSystems IRIS Studio 2022.1是一个独立的IDE,用于Microsoft Windows,可以通过WRC的组件下载页面下载。它与InterSystems IRIS和IRIS for Health 2022.1及以下版本一起使用。InterSystems还支持VSCode-ObjectScript插件,用于用Visual Studio Code为InterSystems IRIS开发应用程序,该插件可用于Microsoft Windows、Linux和MacOS。
我们在主要云市场上的相应列表将在未来几天内更新。
这个版本的版本号是2022.1.0.209.0。
InterSystems IRIS Studio 2022.1 是一个独立的IDE,用于Microsoft Windows,可以通过WRC的组件下载页面 下载。它支持InterSystems IRIS和IRIS for Health 2022.1及以下版本。InterSystems还支持VSCode-ObjectScript 插件,用于使用Visual Studio Code开发InterSystems IRIS应用程序,该插件可用于Microsoft Windows、Linux和MacOS。
我们在主要云市场上的相应列表将在未来几天内更新。
这个版本的版本号是2022.1.0.209.0。
公告
Michael Lei · 一月 23, 2023
InterSystems 很高兴地宣布,InterSystems IRIS、InterSystems IRIS for Health 和 HealthShare Health Connect 2022.1.2 的扩展维护版本现已推出。这些版本为 2022.1.0 和 2022.1.1 版本提供了一些选定的功能和错误修复。
您可以在这些页面上找到有关更改内容的更多信息:
InterSystems IRIS
InterSystems IRIS 医疗版
HealthShare HealthConnect
请通过开发者社区分享您的反馈,以便我们共同打造更好的产品。
如何获得软件
该软件以经典安装包和容器镜像的形式提供。有关可用安装程序和容器映像的完整列表,请参阅支持的平台网页。
每个产品的完整安装包都可以从 WRC 的软件分发页面获得。
安装包和预览密钥可从 WRC 的预览下载站点或通过评估服务网站获得。
InterSystems IRIS 和 IRIS for Health 的企业版和社区版的容器镜像以及所有相应的组件都可以从InterSystems Container Registry获得。
此版本中所有套件和容器的数量为2022.1.2.574.0 。
文章
姚 鑫 · 六月 8, 2021
# 第一章 InterSystems XML工具简介
介绍了如何使用 IRIS `XML`工具。
InterSystems IRIS为`XML`处理带来了对象的力量--可以使用对象作为`XML`文档的直接表示,反之亦然。由于InterSystems IRIS包括本机对象数据库,因此可以将此类对象直接用于数据库。此外,InterSystems IRIS提供了用于处理`XML`文档和`DOM`(文档对象模型)的工具,即使它们与任何InterSystems IRIS类无关。
# 用XML表示对象数据
有些InterSystems IRIS `XML`工具主要用于支持`XML`的类。要为类启用`XML`,需要将`%XML.Adaptor`添加到其超类列表中。`%XML.Adaptor`类使能够将该类的实例表示为XML文档。可以添加类参数和属性参数来微调投影。

对于启用了`XML`的类,数据可以采用以下所有形式:
- 包含在类实例中。根据类的不同,还可以将数据保存到磁盘,在磁盘中数据可以像其他持久类一样以所有相同的方式使用。
- 包含在`XML`文档中,可以是文件、流或其他文档。
- 包含在`DOM`(文档对象模型)中。
下图概述了用于在这些表单之间转换数据的工具:

`%XML.Writer`类使能够创建`XML`文档。输出目的地通常是文件或流。确定要包括在输出中的对象,系统根据在类定义中建立的规则生成输出。
`%XML.Reader`类使能够将合适的`XML`文档导入到类实例中。源通常是文件或流。要使用此类,需要指定类名和`XML`文档中包含的元素之间的关联。给定的元素必须具有相应类所需的结构。然后您逐个节点地阅读文档。这样做时,系统会创建该类的内存中实例,其中包含在`XML`文档中找到的数据。
`DOM`也是处理`XML`文档的有用方法。可以使用`%XML.Reader`类读取`XML`文档并创建表示它的`DOM`。在此表示中,`DOM`是一系列节点,可以根据需要在它们之间导航。具体地说,将创建`%XML.Document`的一个实例,该实例表示文档本身并包含节点。然后使用`%XML.Node`检查和操作节点。如果需要,可以使用`%XML.Writer`重新编写XML文档。
InterSystems IRIS `XML`工具提供了许多方法来访问和修改`XML`文档和`DOM`中的数据。
# 创建任意XML
还可以使用InterSystems IRIS `XML`工具创建和使用任意XML-即不映射到任何InterSystems IRIS类的`XML`。要创建任意XML文档,请使用`%XML.Writer`。该类提供了用于添加元素、添加属性、添加命名空间声明等的方法。
要创建任意DOM,请使用`%XML.Document`。该类提供了一个类方法,该方法返回具有单个空节点的DOM。然后根据需要使用该类的实例方法添加节点。
或者使用`%XML.Reader`读取任意XML文档,然后从该文档创建DOM。
# 访问数据
InterSystems IRIS `XML`工具提供了几种访问XML格式数据的方法。下图显示了摘要:

对于任何格式良好的XML文档,都可以使用以下类来处理该文档中的数据:
- `%XML.TextReader`-可以使用它逐个节点地读取和解析文档。
- `%XML.XPATH.Document`-可以使用它来获取数据,方法是使用引用文档中特定节点的`XPath`表达式。
在InterSystems IRIS中,DOM是`%XML.Document`的实例。该实例表示文档本身并包含节点。可以使用该类的属性和方法从`DOM`中检索值。可以使用`%XML.Node`检查和操作节点。
# 修改XML
InterSystems IRIS XML工具还提供了修改`XML`格式数据的方法。下图显示了摘要:

对于`XML`文档,可以使用`%XML.XSLT.Transformer`中的类方法执行`XSLT`转换并获得文档的修改版本。
对于DOM,可以使用`%XML.Document`的方法修改`DOM`。例如,可以添加或删除元素或属性。
# SAX解析器
InterSystems IRIS XML工具使用InterSystems IRIS SAX(Simple API For XML)解析器。这是一个内置的SAX XML验证解析器,使用标准`Xerces`库。`SAX`是一个解析引擎,它提供完整的XML验证和文档解析。InterSystems IRIS SAX使用高性能的进程内调入机制与InterSystems IRIS进程通信。使用此解析器,可以使用内置的InterSystems IRIS XML支持或通过在InterSystems IRIS中提供您自己的自定义`SAX`接口类来处理`XML`文档。
对于特殊应用程序,可以创建自定义实体解析器和内容处理程序。
可以使用行业标准的`XMLDTD`或模式验证来验证任何传入的`XML`,并且可以指定要解析的XML项。
# 其他XML工具
InterSystems IRIS `XML`支持包括以下附加工具:
- XML架构向导读取XML架构文档,并生成一组支持XML的类,这些类与架构中定义的类型相对应。可以指定一个包来包含类,以及控制类定义详细信息的各种选项。
- `%XML.Schema`类使能够从一组启用了XML的类生成XML架构。
- `%XML.Namespaces`类使能够检查XML命名空间以及其中的类,以查找InterSystems IRIS命名空间。
- `%XML.Security.EncryptedData`类和其他类使能够加密XML文档以及解密加密文档。
- `%XML.Security.Signature`类和其他类使能够对XML文档进行数字签名,以及验证数字签名。
# 使用XML工具时的注意事项
在使用任何类型的XML工具时,至少有三个一般要点需要考虑:
- 任何XML文档都有字符编码
- 将XML文档映射到类(文字或`SOAP`编码)有不同的方法
- 应该知道SAX解析器的默认行为
# 输入输出的字符编码
导出XML文档时,可以指定要使用的字符编码;否则,InterSystems IRIS会根据目标选择编码:
- **如果输出目标是文件或二进制流,则默认值为`“UTF-8”`**。
- 如果输出目标是字符串或字符流,则默认`为"UTF-16"`。
对于InterSystems IRIS读取的任何`XML`文档,文档的XML声明应该指示该文件的字符编码,并且文档应该按照声明的方式进行编码。例如:
```
```
但是,如果文档中未声明字符编码,InterSystems IRIS将假定:
- 如果输出目标是文件或二进制流,则默认值为`“UTF-8”`。
- 如果输出目标是字符串或字符流,则默认为`"UTF-16"`。
# 选择文档格式
使用`XML`文档时,必须知道将文档映射到InterSystems IRIS类时要使用的格式。同样,在创建`XML`文档时,需要指定编写文档时要使用的文档格式。`XML`文档格式如下:
- 文字表示文档是对象实例的文字副本。在大多数情况下,即使在使用`SOAP`时,也使用文字格式。除非另有说明,否则文档中的示例均使用文字格式。
- 编码的意思是按照`SOAP 1.1`标准或`SOAP 1.2`标准中描述的编码。`SOAP1.1`和`SOAP1.2`的细节略有不同。
以下小节显示了这些文档格式之间的差异。
## 文字格式
```java
Klingman,Julie G.
1946-07-21
W897
Bensonhurst
60302
Jung,Kirsten K.
Xiang,Charles R.
Frith,Terry R.
```
## 编码格式
相比之下,下面的示例以编码格式显示相同的数据:
```java
...
Jung,Kirsten K.
...
Quixote,Umberto D.
...
Chadwick,Mark L.
...
Klingman,Julie G.
1946-07-21
W897
Bensonhurst
60302
...
```
请注意编码版本中的以下差异:
- 输出的根元素包括`SOAP`编码命名空间和其他标准命名空间的声明。
- 本文档包括同一级别的人员、地址和医生元素。`Address`和`Doctor`元素列出了引用它们的`Person`元素使用的唯一`ID`。每个对象值属性都是这样处理的。
- 顶级`Address`和`Doctor`元素的名称与各自类的名称相同,而不是与引用它们的属性名称相同。
- 编码格式不包括任何属性。`GroupID`属性被映射为`Person`类中的属性。在文字格式中,此属性被投影为特性。但是,在编码版本中,属性被投影为元素。
- 对集合的处理方式不同。例如,列表元素具有属性`ENC:arrayType`.。
- 每个元素都有一个`xsi:type`属性的值。
注意:对于`SOAP1.2`,编码版本略有不同。要轻松区分版本,请检查SOAP编码命名空间的声明:
- 对于`SOAP1.1,SOAP`编码命名空间为`"http://schemas.xmlsoap.org/soap/encoding/"`
- 对于`SOAP1.2,SOAP`编码命名空间为`"http://schemas.xmlsoap.org/wsdl/soap12/"`
除非解析器可以使用这些其他模式,否则验证将失败。特别是对于WSDL文档,有时需要下载所有模式并编辑主模式以使用正确的位置。
它尝试解析所有实体,包括所有外部实体。(其他XML解析器也会这样做。)。这一过程可能很耗时,具体取决于它们所在的位置。具体地说,`Xerces `使用网络访问器来解析一些URL,并且实现使用阻塞I/O。因此,不会超时,网络获取可能会在错误条件下挂起,这在实践中很少见。
此外,`Xerces`不支持`https`;也就是说,它不能解析位于`https`位置的实体。
如果需要,可以创建自定义实体解析器,也可以禁用实体解析;
# IRIS支持的标准
IRIS XML支持遵循以下标准:
- XML 1.0 (https://www.w3.org/TR/REC-xml/)
- Namespaces in XML 1.0 (https://www.w3.org/TR/REC-xml-names/)
- XML Schema 1.0 (https://www.w3.org/TR/xmlschema-0/, https://www.w3.org/TR/xmlschema-1/, https://www.w3.org/TR/xmlschema-2/)
- XPath 1.0 as specified by https://www.w3.org/TR/xpath
- SOAP 1.1标准第5节指定的SOAP 1.1编码。
- SOAP1.2编码,如第3节第2部分: Adjuncts (https://www.w3.org/TR/soap12-part2/) of the SOAP 1.2 standard.
- XML Canonicalization Version 1.0 (also known as inclusive canonicalization), as specified by https://www.w3.org/TR/xml-c14n.
- XML Exclusive Canonicalization Version 1.0 as specified by https://www.w3.org/TR/xml-exc-c14n/, including the InclusiveNamespaces PrefixList feature (https://www.w3.org/TR/xml-exc-c14n/#def-InclusiveNamespaces-PrefixList)
- XML Encryption (https://www.w3.org/TR/xmlenc-core/)
InterSystems IRIS支持使用RSA-OAEP或RSA-1.5进行密钥加密,并支持使用AES-128、AES-192或AES-256对邮件正文进行数据加密。
- XML Signature using Exclusive XML Canonicalization and RSA SHA-1 (https://www.w3.org/TR/xmldsig-core/)
InterSystems IRIS提供两个XSLT处理器:
- Xalan处理器支持XSLT 1.0。
- Saxon处理器支持XSLT 2.0。
**注意:InterSystems IRIS不支持在一个元素中有多个名称相同的属性,每个属性位于不同的名称空间中。**
公告
Claire Zheng · 一月 28, 2022
亲爱的社区开发者们,大家好!
欢迎积极参与新一轮InterSystems开发者竞赛!
这次我们聚集Python!
🏆 InterSystems Python竞赛🏆
竞赛时间: 2022年2月7日 - 27日
奖金总额: $10000 - 更多获奖机会!
奖品
1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名 - $4,000
🥈 第二名 - $2,000
🥉 第三名 - $1,000
🌟 第四名-第十五名 - $100
2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名 - $1,000
🥈 第二名 - $750
🥉 第三名 - $500
如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个!
👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。
请注意,要在您的README文件中标注您的团队成员——社区用户profile
参赛时间安排
🛠 2月7日 - 20日: 应用开发、提交阶段。
✅ 2月21日 - 27日: 投票阶段。
注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用
主题
最新 发布 的 InterSystems IRIS 2021.2版本提供了 Embedded Python 功能,而且将 PEX 扩展到 Python. 我们邀请您在一个新的编程竞赛中使用嵌入式Python ! 也欢迎使用Python原生API或Python PEX的应用程序。
提交一个开源的应用程序,通过InterSystems IRIS或InterSystems IRIS for Health(医疗版)使用嵌入式Python或原生Python API或Python PEX。
一般要求
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition上运行。
该应用需开源并在GitHub上发布。
该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。
资源助力
1. 通过InterSystems IRIS开发Python应用:
Learning Path Writing Python Application with InterSystems
Embedded Python Documentation
Native API for Python Documentation
PEX Documentation
2. ObjectScript Package Manager (ZPM)初学者:
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
3. 如何将您的APP提交给大赛:
How to publish an application on Open Exchange
How to submit an application for the contest
4. 项目示例
interoperability-python
pex-demo
python-examples
WebSocket
AOC2021
Python Faker
5. 视频
Introduction to Embedded Python
Embedded Python: Bring the Python Ecosystem to Your ObjectScript App
Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side
Embedded Python with Interoperability
InterSystems IRIS Native Python API in AWS Lambda
参赛评比
投票规则即将发布,敬请期待!
So!
期待您的精彩提交– 加入我们的编程马拉松,赢取大奖!
❗️ Please check out the Official Contest Terms here.❗️
公告
Claire Zheng · 三月 14, 2022
亲爱的社区开发者们,大家好!
欢迎积极参与新一轮InterSystems开发者竞赛!
🏆 InterSystems开发者竞赛:Globals 🏆
竞赛时间: 2022年3月21日-4月10日
奖金总额: $10,000
主题
Globals或者直接数据访问(direct data access)——这是InterSystems IRIS 持久性引擎的核心。所有可以通过SQL、REST-API、ObjectScript、DocDB或Native API访问的IRIS数据都存储在globals中。
Globals引擎 负责InterSystems IRIS的性能、可靠性和可扩展性。
在这次竞赛中,我们邀请每个人贡献开源应用程序,该程序可使用InterSystems IRIS Globals来读取、存储和更改数据。我们邀请您使用Globals的强大功能,来实现对数据摄取和读取性能的利用,同时兼备存储模式的灵活性(存储模式允许引入任意数据模型实现)。
一般要求:
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition上运行。
该应用需开源并在GitHub上发布。
该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。
奖品:
1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名 - $4,000
🥈 第二名 - $2,000
🥉 第三名 - $1,000
🌟 第四名-第十五名 - $100
2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名 - $1,000
🥈 第二名 - $750
🥉 第三名 - $500
✨ 所有获奖者都将获得Global Masters徽章!
如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金。
关键参赛节点
🛠 应用开发、提交阶段
3月21日, 2022 (00:00 EDT): 竞赛启动
4月3日, 2022 (23:59 EDT): 提交截止
✅ 投票阶段:
4月4日, 2022 (00:00 EDT): 投票启动
4月10日, 2022 (23:59 EDT): 投票截止
注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个!
👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。
请注意,要在您的README文件中标注您的团队成员——社区用户profile
资源助力
1. 文档
Globals
2. IRIS初学者
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
3. ObjectScript Package Manager (ZPM) 初学者:
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
4. 如何将您的APP提交给大赛:
如何在InterSystems Open Exchange上发布应用程序
如何把参赛APP提交给大赛
需要帮助?
加入InterSystems' Discord server频道,或跟帖评论提出您的问题!
期待您的精彩提交!祝好运 👍
参与此次竞赛,您同意 遵守相关条款,请认真阅读。 参赛三部曲:
1. 注册社区用户;
2. 在InterSystems Open Exchange上发布应用程序;
3. 把参赛APP提交给大赛;
问题
Michael Lei · 七月 8, 2022
我现在在使用object script。如果把代码从 objectscript转成 Java 我需要做些什么? 可以参考官方文档:https://gettingstarted.intersystems.com/language-quickstarts/java-quickstart/