清除过滤器
文章
姚 鑫 · 九月 25, 2022
# 第四十三章 使用多个 IRIS 实例(三)
# `Windows` 上的 `iris` 命令
在 `Windows` 上,必须从 `install-dir\bin` 目录运行 `iris` 命令(或在命令中包含完整路径)。
- `iris all` 列出所有已安装实例的摘要信息,每行一个实例,如下所述。
注意:如果需要完整的信息,例如用于解析或报告目的,请使用 `iris list`。
```java
C:\InterSystems\IRISHealth\bin>iris all
Instance Version ID Port Directory
------------- ---------- ---- ---------
up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth
```
- `iris allw` 为每个实例列出与 `iris all` 相同的信息,而不包含长字段值。可能会产生超过 `80` 个字符的行。
```java
C:\InterSystems\IRISHealth\bin>iris allw
Instance Name Version ID Port Directory
------------------------------- ---------------------------- ----- --------------------------------
up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth
```
- `iris console instname [arguments]` 在操作系统命令窗口而不是终端窗口中打开 `Terminal` 。

- `iris force instname` 强制关闭实例。
- `iris help` 显示有关 `iris` 命令的最新信息。
```java
C:\InterSystems\IRISHealth\bin>iris help
usage:
iris start []
to start instance , optionally using the specified .cpf file.
An optional /EmergencyId=Username,Password can be used to start
InterSystems IRIS in emergency mode. When the EmergencyId argument
is supplied, the system starts up in emergency mode in which only the
baseline databases are mounted and access to InterSystems IRIS is
governed by InterSystems IRIS login using that username and password.
Emergency mode is supplied to give access in the event that privileged
users are not available or their password is forgotten. Emergency
startup is only available from an administrator account.
When InterSystems IRIS is started in emergency mode, the IRIS control
service is not used. This means that if you log out of Windows, all
the InterSystems IRIS processes will immediately exit.
or: iris startnostu
to start instance without running ^STU.
or: iris stop
to shut down instance .
or: iris stopnoshut
to shut down instance without running user shutdown routines.
or: iris stopstart
to shut down and restart instance .
Note: An optional /nofailover argument can be specified for stop,
stopnoshut, or stopstart to not trigger a mirror failover.
or: iris force
to force down instance .
or: iris [ run OR console OR terminal ]
to run InterSystems IRIS in programmer mode with
[ no-device OR console OR terminal ] for $Principal.
or: iris [ run OR console OR terminal ]
to run InterSystems IRIS routine in application mode with
[ no-device OR console OR terminal ] for $Principal.
or: iris [ run OR console OR terminal ]
to run InterSystems IRIS routine in in application
mode with [ no-device OR console OR terminal ] for $Principal.
or: iris runw []
to run InterSystems IRIS routine in application mode with
no input/output device for $Principal using the optional namespace.
When run from a batch script, iris will wait for the InterSystems IRIS
process to terminate before returning. The exit code from the InterSystems
IRIS process will be returned by iris.
Note: An optional /Title="Title string" can specify the console
or terminal title bar text.
or: iris iristraystart
to start IRISTray for instance .
or: iris iristraystop
to stop IRISTray for instance .
or: iris licmanagerstop
to stop licmanager running in instance .
or: iris all [> outputfile]
to list all installed instances.
or: iris allw [> outputfile]
to list (wide format) all installed instances.
or: iris list [] [> outputfile]
to list information about all installed instances or the
specified instance.
or: iris qlist [] [> outputfile]
to display a quick list of information about all installed
instances or the specified instance, in a format suitable
for parsing in command scripts.
The record for an instance contains fields separated by "^" (carats):
Field 1: instance name
Field 2: instance directory
Field 3: version identifier
Field 4: current status for the instance
Field 5: configuration file name last used
Field 6: SuperServer port number
Field 7: WebServer port number
Field 8: JDBC Gateway port number
Field 9: Instance status (e.g., ok, warn, alert)
Field 10: Product name of the instance
Field 11: Mirror Member Type (e.g., Failover, Disaster Recovery)
Field 12: Mirror Status (e.g., Primary, Backup, Connected)
or: iris serverlist [> outputfile]
to list information about all defined servers.
Note: When [> outputfile] is present, output is redirected
to the file instead of being displayed on the terminal.
or: iris telnetstop
to stop the InterSystems IRIS TELNET daemon.
or: iris telnettrace
to toggle the TELNET trace state.
or: iris iristrmdstop
to stop the InterSystems IRIS terminal daemon.
Note: iris often displays error information in a message box.
You can suppress the message box containing error information
by adding "quietly" (without the quotation marks) as the
final argument to the iris command.
or: iris help [display]
to show this help. If display is specified the help
is displayed in a browser window.
```
- `iris list [arguments]` 显示有关已安装 `IRIS` 实例的信息,如下所述。
```java
C:\InterSystems\IRISHealth\bin>iris list irishealth
Instance 'irishealth' (Custom installation)
directory: 'C:\InterSystems\IRISHealth'
versionid: '2022.1.0.114.0'
conf file: 'c:\intersystems\irishealth\iris.cpf' (SuperServer port = 51773, WebServer port = 52773)
status : 'running, since Mon Sep 12 08:08:58 2022'
Product : InterSystems IRISHealth
```
`instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris list MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。
- `iris qlist [参数]` 与 `iris list` 类似,但有附加信息。每个实例的输出(如下所述)在一行中给出,字段由插入符号 (`^`) 分隔。
`instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris qlist MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。
```java
C:\InterSystems\IRISHealth\bin>iris qlist irishealth
irishealth^C:\InterSystems\IRISHealth^2022.1.0.114.0^running, since Mon Sep 12 08:08:58 2022^c:\intersystems\irishealth\iris.cpf^51773^52773^^^IRISHealth^^
```
- `iris run instname [arguments]` 在没有 `$Principal` 的输入/输出设备的程序员模式下运行 IRIS。
- `iris runw instname 例程 [参数]` 在应用程序模式下运行命名的 `IRIS` 例程,没有 `$Principal` 的输入/输出设备。从批处理脚本运行时,该命令会等待 `IRIS` 进程终止,然后再从进程返回退出代码。
`namespace` — 在指定的命名空间中运行例程。
注意:如果使用指定了启动命名空间的用户帐户启动 `IRIS`,则命名空间参数无效(请参阅用户帐户属性)。
- `iris start instname [参数]` 启动实例。
注意:系统可能会提示以“紧急模式”启动。
完整的 `CPF` 路径 — 默认情况下, `IRIS` 从位于 `<install-dir>/mgr` 目录中的 `iris.cpf` 文件中读取某些设置。可以提供另一个 `.cpf` 文件的完整路径以供使用。
- `iris startnostu instname` 启动指定的实例而不运行`^STU`。
- `iris stop instname [参数]` 关闭实例。
`/nofailover` — 指定此可选参数以防止触发镜像故障转移。
- `iris stopnoshut instname [参数]` 使用 `INTNOSHUT^SHUTDOWN` 关闭命名实例。
**注意:只有实例所有者和 `irisusr` 可以在不登录终端的情况下运行 `INTNOSHUT^SHUTDOWN`。**
`/nofailover` — 指定此可选参数以防止触发镜像故障转移。
- `iris stopstart instname [参数]` 关闭实例后启动它。
`/nofailover` — 指定此可选参数以防止触发镜像故障转移。
- `iris terminal instname [参数]` 打开实例的 `Terminal` 。
`routine` — 在终端中以应用程序模式为 `$Principal` 运行命名的 `IRIS` 例程。 `"[label[+offset]]^routine"` — 指定要在用户模式下运行的 `ObjectScript` 程序的名称。除了指定的格式之外,还可以传递由字符串和`/`或数字文字组成的参数列表,以及省略的 (`void`) 参数,如下所示:
- `"routine[([parameter-list])]"`
- `"[label]^routine[([parameter-list])]"`
- `"##CLASS(package.class).method[([parameter-list])]"`
其中,例如,参数列表以“`string literal`”的形式指定,`-+-000123.45600E+07`,省略的参数作为 `$Data(parameter)=0` 传递给目标。
注意:空格和 `shell` 元字符必须以依赖于操作系统的形式引用。
命名空间 — 与例程一起使用,在指定的命名空间中运行例程。
注意:如果您用指定了启动命名空间的用户帐户启动 `IRIS`,则命名空间无效(请参阅用户帐户属性)。
## iris list, qlist, and all
#### `iris all`
列出有关一个或多个 `IRIS` 实例的以下信息:
- 实例状态,如下
- ``(状态不可用,登录已禁用)
- `dn`(关闭或已崩溃)
- `up` (running)
- `st` (starting or stopping)
- 实例名称
- `IRIS` 版本
- 超级服务器端口号
- 安装目录
#### `iris list`
列出有关一个或多个 `IRIS` 实例的以下信息:
- 实例名称(和安装类型)
- 安装目录
- `IRIS` 版本
- `IRIS` 参数 (`.cpf`) 文件的路径名
- 超级服务器和网络服务器端口号
- 实例状态,如下
- `running`
- `down`
- `starting or stopping`
- 不完整的启动或停止,登录被禁用
- 实例的系统健康状态,如果正在运行(不包括在 `Windows` 中)
- 镜像成员类型和状态(如果是镜像成员)
#### iris qlist
为一个或多个 `IRIS` 实例在单行上输出以下信息,以插入符号 (`^`) 分隔:
1. 实例名称(和安装类型)
2. 安装目录
3. `IRIS`版本
4. 实例状态
5. 当前配置参数文件的路径名,相对于安装目录。 `Windows` 系统改为显示完整路径。
6. 超级服务器端口号
7. 网络服务器端口号
8. `JDBC` 网关端口号
9. 实例的系统健康状态,如果正在运行(在 `Windows` 上总是空白)
10. 产品名称
11. 镜像成员类型(如果是镜像成员)
12. 镜像状态(如果是镜像成员)
13. 数据目录(如果适用)
公告
Claire Zheng · 四月 27, 2023
InterSystems 已修复了一个缺陷,该缺陷可能会导致使用 IBM POWER8 或更高版本的 POWER 处理器的 AIX 系统上的数据库和Journal日志文件损坏。只有在使用数据库或Journal日志加密时才会触发此缺陷。
当满足以下条件时,会触发此缺陷:
该环境使用数据库或Journal日志加密
该环境还使用数据元素加密
用于数据元素加密的加密密钥已停用
如果环境满足所有这些条件,则用于数据库或Journal日志加密的密钥计划可能会被损坏。
该缺陷存在于以下产品和基于这些产品的任何 InterSystems 产品中:
InterSystems IRIS ® –除 2022.1.3 和 2023.1 之外的所有版本
InterSystems IRIS for Health ™ ——除 2022.1.3 和 2023.1 之外的所有版本
HealthShare ® Health Connect –除 2022.1.3 和 2023.1 之外的所有版本
HealthShare ®解决方案——所有版本
请注意,此缺陷不会直接影响 HealthShare 解决方案,因为它们不使用数据元素加密功能。但是,如果 HealthShare 环境有一个使用上述数据元素加密功能的客户化定制,则它们必须遵循此警报中提供的补救措施。
InterSystems Caché® 和 InterSystems Ensemble® –从 2015.1 开始的所有版本
此缺陷的修复被标识为 RJF540,并将包含在所有未来版本中。
该修复也可以通过补丁Ad hoc 分发获得。
如果您对此警报有任何疑问,请联系全球响应中心。
文章
Tete Zhang · 二月 20, 2023
开发者您好!
这里向介绍@Lorenzo Scalese的OpenAPI-Suite (一个用于从OpenAPI 3.0生成 ObjectScript 代码的工具集)。这个工具集在 2023 年 InterSystems 开发工具大赛的21 个参赛作品中获得专家提名第三名。
目前 IRIS 最高支持OpenAPI 2.0 ,但是这个工具支持 OpenAPI 3.0 !
提供的功能如下。
在服务器端创建类(与 OpenAPI 2.0相同,首先创建使用 API First理念创建的 REST 调度类所需的类。)
创建客户端 HTTP 类
创建客户端Production(业务服务、业务流程、业务操作、Ens.Request、Ens.Response)
一个 Web 界面,允许您指定要从此工具生成哪些功能
从 OpenAPI 1.x、2.x 到 3.0 版的转换工具
关于各个功能的详细介绍,请参考@Lorenzo Scales撰写的文章《 OpenAPI Suite - Part 1 》和《 OpenAPI Suite - Part 2 》。
在本文中,我尝试了 1 个功能。其中,以下的应对方案非常好。
根据OpenAPI 3.0新增的Components对象的内容自动生成类的定义(在指定包下创建一个模型包,在那里创建可以实例化的类)
在POST或PUT的情况下,为了较为轻松地使用实施类(impl.cls)处理HTTP请求中传递的信息,我将Body中接收到的JSON数据设为了1中生成的类的实例,
目前,虽然需要进行一些手动更改,但是仅使用按原样创建的实例在 impl.cls 中叫 %Save() 方法也可以保存成功。 )
IRIS 提供了一种根据 OpenAPI 2.0 规范创建 REST 调度类的方法,但实际使用中它只创建要使用的类和根URL。
仅作为参考,这里是使用 IRIS 支持的 OpenAPI 2.0 创建的内容。
(以下示例使用了根据 OpenAPI2.0 规范创建的 JSON 示例。)
在下面的示例中,/crud 是根 URL,类是在 crud 包下创建的。
生成的类如下(左:impl.cls,右:spec.cls)
由于调度类(disp.cls)是一个不需要改动的类,所以这里展示了studio的这部分代码。
接下来介绍一下@Lorenzo Scalese的OpenAPI-Suite的成果。
使用它的过程非常简单。
从管理门户或Studio导入IPM (InterSystems Package Manager,以前称为 ZPM)客户端工具后,您只需运行以下命令,工具就可以使用了。
客户端工具导入可以导入到任意命名空间中。
从管理门户导入时,使用以下菜单:
管理门户 -> 系统资源管理器 -> 类 -> 选择要导入的命名空间 -> 单击导入按钮
转到您希望 REST 调度类存在的命名空间,并使用 ZPM 命令安装工具。
zpm "install openapi-suite"
安装过程中的画面显示
USER>zpm “安装 openapi-suite”
[USER|sslclient] 重新加载开始 (/usr/irissys/mgr/.modules/USER/sslclient/1.0.4/)[用户|sslclient] 重新加载成功[sslclient] 模块对象已刷新。[USER|sslclient] 验证开始[USER|sslclient] 验证成功[USER|sslclient] 编译开始[用户|sslclient] 编译成功[USER|sslclient] 激活开始[USER|sslclient] 配置开始[用户|sslclient] 配置成功[USER|sslclient] 激活成功[USER|yaml-utils] 重新加载开始 (/usr/irissys/mgr/.modules/USER/yaml-utils/0.1.2/)[USER|yaml-utils] 重新加载成功[yaml-utils] 模块对象已刷新。[USER|yaml-utils] 验证开始[USER|yaml-utils] 验证成功[USER|yaml-utils] 编译开始[USER|yaml-utils] 编译成功[USER|yaml-utils] 激活开始[USER|yaml-utils] 配置开始[USER|yaml-utils] 配置成功[USER|yaml-utils] 激活成功[USER|swagger-validator-cli] 重新加载开始 (/usr/irissys/mgr/.modules/USER/swagger-validator-cli/0.0.1/)[USER|swagger-validator-cli] 重新加载成功[swagger-validator-cli] 模块对象已刷新。[USER | swagger-validator-cli] 验证开始[USER|swagger-validator-cli] 验证成功[USER|swagger-validator-cli] 编译开始[USER|swagger-validator-cli] 编译成功[USER|swagger-validator-cli] 激活 START[USER|swagger-validator-cli] 配置开始[USER|swagger-validator-cli] 配置成功[USER|swagger-validator-cli] 激活成功[USER|swagger-converter-cli] 重新加载开始 (/usr/irissys/mgr/.modules/USER/swagger-converter-cli/0.0.2/)[USER|swagger-converter-cli] 重新加载成功[swagger-converter-cli] 模块对象已刷新。[USER | swagger-converter-cli] 验证开始[USER|swagger-converter-cli] 验证成功[USER|swagger-converter-cli] 编译开始[USER|swagger-converter-cli] 编译成功[USER|swagger-converter-cli] 激活开始[USER|swagger-converter-cli] 配置开始[USER|swagger-converter-cli] 配置成功[USER|swagger-converter-cli] 激活成功[USER|objectscript-openapi-definition] 重新加载开始 (/usr/irissys/mgr/.modules/USER/objectscript-openapi-definition/1.3.1/)[USER|objectscript-openapi-definition] 重新加载成功[objectscript-openapi-definition] 模块对象已刷新。[USER|objectscript-openapi-definition] 验证开始[USER|objectscript-openapi-definition] 验证成功[USER|objectscript-openapi-definition] 编译开始[USER|objectscript-openapi-definition] 编译成功[USER|objectscript-openapi-definition] 激活开始[USER|objectscript-openapi-definition] 配置开始[USER|objectscript-openapi-definition] 配置成功[USER|objectscript-openapi-definition] 激活成功[USER|io-redirect] 重新加载开始 (/usr/irissys/mgr/.modules/USER/io-redirect/1.0.2/)[USER|io-redirect] 重新加载成功[io-redirect] 模块对象已刷新。[USER|io-redirect] 验证开始[USER|io-redirect] 验证成功[USER|io-redirect] 编译开始[USER|io-redirect] 编译成功[USER|io-redirect] 激活开始[USER|io-redirect] 配置开始[USER|io-redirect] 配置成功[USER|io-redirect] 激活成功[USER|openapi-common-lib] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-common-lib/1.0.0/)[用户|openapi-common-lib] 重新加载成功[openapi-common-lib] 模块对象已刷新。[USER|openapi-common-lib] 验证开始[USER|openapi-common-lib] 验证成功[USER|openapi-common-lib] 编译开始[USER|openapi-common-lib] 编译成功[USER|openapi-common-lib] 激活开始[USER|openapi-common-lib] 配置开始[USER|openapi-common-lib] 配置成功[USER|openapi-common-lib] 激活成功[USER|openapi-server-gen] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-server-gen/1.0.0/)[USER|openapi-server-gen] 重新加载成功[openapi-server-gen] 模块对象已刷新。[USER|openapi-server-gen] 验证开始[USER|openapi-server-gen] 验证成功[USER|openapi-server-gen] 开始编译[USER|openapi-server-gen] 编译成功[USER|openapi-server-gen] 激活开始[USER|openapi-server-gen] 配置开始[USER|openapi-server-gen] 配置成功[USER|openapi-server-gen] 激活成功[USER|openapi-client-gen] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-client-gen/2.1.0/)[USER|openapi-client-gen] 重新加载成功[openapi-client-gen] 模块对象已刷新。[USER|openapi-client-gen] 验证开始[USER|openapi-client-gen] 验证成功[USER|openapi-client-gen] 编译开始[USER|openapi-client-gen] 编译成功[USER|openapi-client-gen] 激活开始[USER|openapi-client-gen] 配置开始[USER|openapi-client-gen] 配置成功[USER|openapi-client-gen] 激活成功[USER|openapi-suite] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-suite/1.0.0/)[用户|openapi-suite] 重新加载成功[openapi-suite] 模块对象已刷新。[USER | openapi-suite] 验证开始[USER|openapi-suite] 验证成功[USER|openapi-suite] 编译开始[USER|openapi-suite] 编译成功[USER | openapi-suite] 激活开始[USER|openapi-suite] 配置开始[USER|openapi-suite] 配置成功[USER|openapi-suite] 激活成功用户>
安装后,您可以通过以下 URL 访问该工具的相关信息。
http://localhost:端口号/openapisuite/ui/index.csp
示例)http://localhost:52773/openapisuite/ui/index.csp
在初始阶段,屏幕右下方的“Install On Server”按钮无法按下。似乎可以通过将值设置为以下全局变量来按下按钮。
(请在你安装工具的命名空间中用ZPM命令设置)
Set ^openapisuite .config( "web" , "enable-install-onserver" ) = 1
准备工作完成后,进行以下设置。
对于“Application package name”,选择类定义的包名称(示例中的 PetStore);对于“What do you want to generate?”问题,选择“REST Server”;对于“NameSpace”,选择要注册 REST 调度类的命名空间;对于“Web 应用程序名称”,指定已定义的根 URL(Web 应用程序路径)(示例中的 /pet1)。
之后,只需指定根据OpenAPI规范创建的JSON文件即可。示例中默认指定https://petstore3.swagger.io/api/v3/openapi.json ,我们可以直接使用这个文件路径。
最后,单击 Install On Server 按钮。
日志如下图所示,确认正常结束后点击关闭按钮。
通过该工具,将创建一个 Web 应用程序路径:/pet1。
从管理门户 -> 系统管理 -> 安全 -> 应用程序 -> Web 应用程序检查 /pet1 是否存在。
定义完成!
现在,让我们检查是否已经创建了记载输入路径对应的方法的disp(调度类)和实施代码的impl类。
类定义已经在 PetStore 包下创建完成!
与IRIS提供的OpenAPI 2.0的类不同的是,这里包含了model包和requests包。
在这个工具中,OpenAPI 3.0的Components对象中指定的信息被创建为可以生成实例的类定义。 (它继承了 %RegisteredObject 类)
Components对象Pet的信息可以在下方展开查看。
Components:Pet的规格
"Pet":{
"required":[
"name",
"photoUrls"
],
"type":"object",
"properties":{
"id":{
"type":"integer",
"format":"int64",
"example":10
},
"name":{
"type":"string",
"example":"doggie"
},
"category":{
"$ref":"#/components/schemas/Category"
},
"photoUrls":{
"type":"array",
"xml":{
"wrapped":true
},
"items":{
"type":"string",
"xml":{
"name":"photoUrl"
}
}
},
"tags":{
"type":"array",
"xml":{
"wrapped":true
},
"items":{
"$ref":"#/components/schemas/Tag"
}
},
"status":{
"type":"string",
"description":"pet status in the store",
"enum":[
"available",
"pending",
"sold"
]
}
},
"xml":{
"name":"pet"
}
},
根据此信息创建的类如下:
它在可以实例化的类中。
如果将super class从 %RegisteredObject 更改为 %Persistent 并编译,则可以将其用作可以在数据库中持久化储存的类。
此外,POST 请求将发送以下格式的 JSON 对象。
{ "id": 0,
"category": {
"id": 0,
"name": "Dog"
},
"name": "Hachi",
"photoUrls": [
"https://x.gd/1pbYK"
],
"tags": [
{
"id": 0,
"name": "Middle"
}
],
"status": "available"
}
能够将此 JSON 直接作为 Pet、Tag 和 Category 类下的实例会很好,因此又追加继承了 %JSON.Adaptor 。
另外,如果我要修改 Pet、Tag 和 Category,最好将super class的配置从 %RegisteredObject 更改为 %Persistent 和 %JSON.Adaptor 的多重继承。
在此之后,需要将接收到的Body信息更新到数据库中。
Request包下的类描述了这个过程的概要。以下示例显示了在向 /pet 发出 POST 请求时运行的类 (PetStore.requests.addPet.cls) 的内容。
如果你注意LoadFromRequest()方法,你会发现它在把可以处理HTTP请求的%request传递给参数request(在IRIS的REST调度类内部处理时,HTTP请求存储在%CSP.Request的一个实例中)。
request.Content
上面的执行可以得到Body中指定的JSON对象。
Do ..PetNewObject (). %JSONImport (request.Content)
这个类中虽然调用了以上方法,但由于该类中实际上并没有PetNewObject()方法,所以做了如下修改(生成一个Pet实例,将其设置为属性Pet,然后将接收到的JSON分配给实例处理)。
set ..Pet = ##class (PetStore.model.Pet). %New ()
do ..Pet . %JSONImport (request.Content)
这样就完成了接收到 HTTP 请求时的处理。剩下的就是impl.cls的实现了。
在初始状态下,以下方法没有任何描述。
ClassMethod addPet(messageRequest As PetStore.requests.addPet) As %Status
{ ; Implement your service here.
; Return {} $$$ThrowStatus ( $$$ERROR ( $$$NotImplemented ))
}
参数 messageRequest 指定了 PetStore.requests.addPet 类的一个实例,该实例在之前的流程中得到确认(根据 HTTP 请求中收到的 JSON 对象创建的实例在该实例的 Pet 属性中设置。)
改写如下,编译,大功告成!
ClassMethod addPet(messageRequest As PetStore.requests.addPet) As %Status
{
;Implement your service here.
; Return {} //$$$ThrowStatus($$$ERROR($$$NotImplemented))
set status= $$$OK
set status=messageRequest.Pet. %Save ()
return status
}
让我们来测试 POST 请求。
Pet、Category、和Tag都注册并添加数据成功了!
这个用例还是需要一些手动修改,但当我发现类定义是通过 OpenAPI 3.0 Components 对象自动生成的,让我觉得很便利!
大家也请试用一下。
文章
Claire Zheng · 十一月 1, 2022
医院管理者、信息中心、业务骨干,每个角色都有独特的业务诉求,InterSystems IRIS医疗版互联互通套件专为国内用户设计,截至2021年,InterSystems技术已助力一百余家医院通过四级及以上医院信息互联互通标准化成熟度评级,其中,五乙用户占全国30%以上。
公告
Claire Zheng · 四月 7, 2022
4月12日,新一期“极客俱乐部”在线分享即将推出,InterSystems中国技术总监乔鹏将分享“InterSystems数据平台与三级等保”这一主题,聊聊数据平台如何保护信息安全,以及如何配置、管理数据平台,以满足三级等保要求。点击链接报名参会,或扫描下方二维码参会。
公告
Claire Zheng · 十月 23, 2022
各位开发者社区的同学们,大家好!
经过一个多月的赛期,我们举办的🏆InterSystems开发者社区中文版首届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)即将步入尾声!
InterSystems开发者社区(中文版)首届技术征文大赛的“征文&投票”环节将于12小时后结束(截至10月23日24:00)!抓住最后的时间为你喜欢的作品投票吧!
10月24日19:30开始,我们将通过“InterSystems首届技术征文大赛线上分享会”发布获奖名单、进行征文作品分享&点评、探讨热门话题,同期还将举办多轮抽奖!
欢迎参会,锁定#腾讯会议
会议主题:InterSystems首届技术征文大赛线上分享会会议时间:2022/10/24 19:30-21:00 (GMT+08:00) 中国标准时间 - 北京
点击链接入会,或添加至会议列表:https://meeting.tencent.com/dm/nVHWgZcY5NfZ
#腾讯会议:372-615-324
文章
Claire Zheng · 一月 4, 2023
这是InterSystems 2022年全球峰会上InterSystems 医疗行业负责人 Don Wooklock 的分享,他认为,在数字医疗发展如火如荼的当下,经济、消费主义和技术三股力量正在推动医疗行业快速变革。我们面临着压力,但更多的是机遇,利用好市场能量,在具备变革精神的医疗卫生行业中,全力以赴!
文章
Michael Lei · 九月 13, 2022
医疗科技市场正处于强劲的演变之中。Gartner的医疗科技的波浪图展示了这些技术是什么,非常好地反映了医疗行业的数字化趋势。
其中很多技术都可以使用InterSystems的技术(ISC Health Tech)来实现:
知情同意管理使用InterSystems Healthshare Stack来做患者主索引和知情同意管理。
公告
jieliang liu · 一月 17, 2022
Hi 开发者们,
New video is already on InterSystems Developers YouTube:
⏯ Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side
深入指导如何将Python与ObjectScript并排使用,包括:
在ObjectScript中使用Python库
将参数传入 Python
在 ObjectScript 和 Python 之间转换类型
从Python中使用ObjectScript类
🗣 主讲人: @Robert.Kuszewski Product Manаger, Developer Experience, InterSystems
祝您观看愉快,并请继续关注 可以把Youtube 链接换成B站链接?谢谢
文章
Michael Lei · 四月 10, 2022
系统实用类:SYS.Database中的查询FreeSpace可以用来在任何时候检查磁盘上的自由空间。
下面是在IRIS终端中的尝试方法(进入%SYS命名空间,然后运行它)。
zn "%SYS"
set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute()
// 一次性显示所有
do rset.%Display()
输出结果示例如下。
*在命令执行的例子中,所有的数据库都放在同一个磁盘上,所以所有的磁盘空闲空间(DiskFreeSpace)返回相同的值。
Dumping result #1
DatabaseName Directory MaxSize Size ExpansionSize AvailableFreeDiskFreeSpace Status SizeInt AvailableNum DiskFreeSpaceNum ReadOnly
IRISSYS c:\intersystems\irishealth3\mgr\ 無制限 159MB 系统默认 ト 18MB 11.32 245.81GB マウント/RW 159 18 2517050
ENSLIB c:\intersystems\irishealth3\mgr\enslib\ 無制限 226MB システムデフォル ト 19MB 8.4 245.81GB マウント/R 226 19 2517051
<一部省略>
IRISTEMP c:\intersystems\irishealth3\mgr\iristemp\ 無制限 51MBシス テムデフォルト 49MB 96.07 245.81GB マウント/RW 51 49251705 0
USER c:\intersystems\irishealth3\mgr\user\ 無制限 31MB システムデフォル ト 8.5MB 27.41 245.81GB マウント/RW 31 8.5 2517050
如果你想指定你要参考的数据库目录,请执行以下操作。
// 使用$LISTBUILD()函数准备好要引用的数据库目录的完整路径。
set dbdir=$LISTBUILD("c:\intersystems\irishealth3\mgr","c:\intersystems\irishealth3\mgr\user")
set rset=stmt.%Execute(dbdir)
do rset.%Display()
如果你只想获得指定数据库目录的数据库名称(DatabaseName)、当前大小(Size)MB、可用自由空间(Available)MB、自由大小(Free)%、自由磁盘空间大小(DiskFreeSpace)GB,你可以执行以下流程(在VSCode或Studio中连接到%SYS命名空间时创建例程/类并编写代码)。
Class ZMyClass.Utils
{
ClassMethod GetDiskFreeSpace()
{
set dbdir=$LISTBUILD("c:\intersystems\irishealth3\mgr","c:\intersystems\irishealth3\mgr\user")
set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute(dbdir)
while(rset.%Next()) {
write rset.%Get("DatabaseName")," - ",
rset.%Get("Size")," - ",rset.%Get("Available")," - ",
rset.%Get("Free"),"% - ",rset.%Get("DiskFreeSpace"),!
}
}
}
注意:如果你把用户定义的例程或类放在%SYS名称空间中,创建它们的名称以Z开头,这样用户定义的源代码就会在升级安装后保留下来。
下面是一个运行的例子。
USER>zn "%SYS"
%SYS>do ##class(ZMyClass.Utils).GetDiskFreeSpace()
IRISSYS - 159MB - 18MB - 11.32% - 245.81GB
USER - 31MB - 8.5MB - 27.41% - 245.81GB
%SYS>
文章
Louis Lu · 十一月 2, 2021
本文档向您介绍 InterSystems IRIS®数据平台如何处理数据库加密,这是所有企业安全战略的重要组成部分。
本文档介绍了数据库加密的情况,并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南,您将创建一个密钥文件,激活该密钥文件,然后用它来加密一个数据库。这些活动被设计成只使用默认的设置和功能,这样您就可以熟悉该功能的基本原理,而不必处理那些离题的细节(尽管这些细节在执行实现时可能很重要)。有关数据库加密的完整文档,请参见 Encryption Guide(《加密指南》)。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
为什么数据库加密很重要
虽然加密并不能防止对机密或个人信息的所有不当或未经授权的使用或披露,但确保静止数据的加密为信息安全提供了一个重要的防御层。在数据库级别实施加密为您的信息保护控制提供了一个额外的维度。
此外,许多有关敏感信息或个人信息的法律和法规建议或要求处理数据的组织采用加密作为第一道防线。这些包括法律和法规,如:
《健康保险携带和责任法案》(Health Insurance Portability and Accountability Act,HIPAA )——要求安全保护健康(Secure Protected Health)信息是不可读、不可破译和不可恢复的
马萨诸塞州 201 《马萨诸塞州法规法典》(Code of Massachusetts Regulations,CMR) 17.00——要求个人信息在传输和静止时进行加密
纽约州 23 《纽约法典、规则和条例》 (NewYork Codes, Rules and Regulations,NYCRR) 500 部分——处理非公开信息的金融和其他涉及的组织必须利用加密作为保护数据的一种手段。
欧盟《通用数据保护条例》(General Data Protection Regulation,GDPR)——安全保障要求将加密作为一种保护控制考虑在内
意大利《个人数据保护法》(Personal Data Protection Code,PDPC)——《最低数据安全措施技术规范》(Technical Specifications on Minimum Data Security Measures)第 24 条要求对披露健康和性生活的数据进行加密处理
澳大利亚隐私原则(Australian Privacy Principles,APP)原则 4——强有力的加密实现解决了必要的隐私增强技术,以确保个人信息的安全
日本经济产业省(Ministry of Economy, Trade, and Industry,METI)指南——如果未加密的个人或机密信息遭到泄露,必须进行监管调查,因为根据《个人信息保护法》(Act on the Protection of Personal Information,APPI)第 20 条,个人信息的处理者有义务防止信息的泄漏、丢失或损坏
请注意,这些法律要求中有许多集中在数据泄露上,因为这是一种越来越普遍的现象,但目前的框架要求组织有义务通过适当的安全控制来解决风险,如基于角色的访问、密码保护、入侵检测、数据丢失预防和日志/审计 ——以及加密。加密本身并不能满足所有的强制性要求,但提供了一个安全的基础。数据库级别的加密
通过要求攻击者不仅要获得对系统或文件空间的访问权限,而且要有访问数据库的权限,从而加强了保护。这一附加层为组织、其客户和任何利益相关者提供了保证。
InterSystems IRIS 如何使用数据库加密
对于与数据库操作相关的活动,InterSystems IRIS 的加密和解密过程对用户是透明的。从终端用户或应用程序开发人员的角度来看,应用程序只需执行其常规活动(activity),数据就会自动在磁盘上加密。从系统管理员的角度来看,有几个简单的任务可以确保数据加密的发生;在执行这些任务后,加密的过程又是在背后执行的。
更重要的是,这些活动使用最少的处理器时间,所以它们对您的应用程序没有明显的影响。此外,由于我们数据库的构建方式,这些活动被高度优化。
加密和解密在密码块链接(Cipher Block Chaining,CBC)模式中使用美国政府高级加密标准(United States Government Advanced Encryption Standard,AES),通常简称为 AES CBC。InterSystems IRIS 支持 AES CBC 的所有合法密钥大小:128–、192–和 256–位密钥。
InterSystems IRIS 使用最快的可用实现(available implementation)执行加密和解密。只要有可能,加密和解密就会利用基于处理器的指令集及其固有的效率。现代英特尔(Modern Intel)和 IBM POWER8 处理器都有这样的指令。InterSystems IRIS 自动检测并使用这些指令,所以您不需要采取任何行动来实现它。在英特尔(Intel)处理器上,这些是高级加密标准新指令(Advanced Encryption Standard New Instructions,AES-NI);在 IBM 上,它们是 AES VMX 指令集。
您可以将数据库加密密钥存储在支持密钥管理互通协议(key management interoperability protocol,KMIP)的密钥管理服务器上,或者存储在包含数据库密钥加密副本的文件中。每个都有自己的优势:
KMIP 是一个 OASIS 标准协议,用于客户端与密钥管理系统通信。KMIP 服务器可以是专门的硬件设备,或是运行密钥管理软件的通用服务器。
当数据库加密密钥存储在文件中时,InterSystems 使用多层 AES 密钥封装算法对密钥进行加密,并使用 PBKDF2 算法派生出单个管理员密钥加密密钥,从而使字典攻击和暴力破解变得不切实际。
必须记住,虽然数据库加密是安全策略的一个组成部分,但它不能单独解决安全漏洞。其他工具,如动态数据保护,也是至关重要的。这就是为什么数据库加密是 InterSystems IRIS 为保护数据而提供的一整套工具的一部分。这些包括:
支持政府标准——您可以将 InterSystems IRIS 配置为使用经过验证符合联邦信息处理标准 140–2(Federal Information Processing Standards 140–2,FIPS 140-2)的库进行数据库加密。这在 Red Hat Linux 上是可用的。
保护选定的数据元素——被称为数据元素加密,该功能提供了一种编程方法,允许您只对记录的选定部分进行加密,如信用卡或身份识别号码。
保护动态数据——InterSystems IRIS 使用最新版本的传输层安全协议(Transport-Layer Security,TLS)保护动态数据。TLS 是保护数据通信的行业标准协议。
支持第三方授权——InterSystems IRIS 支持在第三方网站上使用资源的授权,就像在 web 上经常看到的通过 QQ 或微信登录以使用一个网站。这是通过开放授权框架(Open Authorization Framework)2.0 版(称为 OAuth 2.0)实现的,并可能包括通过另一层,称为 OpenID 连接(OpenID Connect)进行身份验证。
亲自尝试数据库加密
使用 InterSystems IRIS 数据库加密很容易。这个简单的程序将引导您完成设置加密数据库的基本步骤。
用前须知
要使用该程序,您需要一个运行中的 InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics: Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。
创建加密密钥
首先,创建一个密钥文件,其中自动包含一个数据库加密密钥:
使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中URL described for your instance(为您的实例描述的 URL),在浏览器中打开您的实例的管理门户(Management Portal)。
导航到 Create Encryption Key File(创建加密密钥文件)页面(System Administration(系统管理) > Encryption(加密) > Create New Encryption Key File(创建新的加密密钥文件)):
在 Create Encryption Key File(创建加密密钥文件)页面上:
在 Key File(密钥文件)字段中,输入密钥文件的名称和路径。当您点击 Browse(浏览)按钮时,文件选择对话框(File Selection Dialog) 默认在实例的 install-dir/mgr 目录中打开(其中 install-dir 是 InterSystems IRIS 安装目录),例如, C:\InterSystems\IRIS\mgr\testkeys.key;您可以在所有类型的实例上使用此目录,或者在主机或容器文件系统中选择另一个位置。
在 Administrator Name(管理员名称) 、Password(密码)和 Confirm Password(确认密码)字段中,输入值如 testadmin 和 password。这只是一个示例,所以不要重复使用您在开发环境中使用的密码。
选择靠近页面顶部的 Save(保存) 按钮。
您刚刚在 C:\InterSystems\directory 里创建了 testkeys.key 密钥文件,其中有一个密钥,您可以用它来进行数据库加密。InterSystems IRIS 会显示一条带有密钥的信息,如
有关创建密钥文件及其初始密钥的详细信息,请参见 Create a Key File(《创建密钥文件》)。
激活加密密钥
接下来,激活您刚刚创建的密钥:
在管理门户(Management Portal)中,进入 Database Encryption(数据库加密)页面(System Administration(系统管理) > Encryption(加密) > Database Encryption(数据库加密))。
在数据库加密(Database Encryption)页面,选择 Activate Key(激活密钥) 按钮:
在 Key File(密钥文件) 字段中,输入您创建的密钥文件的位置,如 C:\InterSystems\IRIS\mgr\testkeys.key。
在 Administration Name(管理员名称) 和 Password(密码) 字段中,输入您指定的值(testadmin和 password)。
选择 Activate(激活) 按钮。
您可以在这个页面上看到密钥 ID:
有关激活密钥的详细信息,请参见 Activate a Database Encryption Key from a Key File(《从密钥文件中激活数据库加密密钥》)。
创建加密数据库
现在,您可以创建一个加密数据库:
再次在管理门户(Management Portal)中,进入 Namespaces(命名空间) 页面(System Administration(系统管理) > Configuration(配置) > System Configuration(系统配置) > Namespaces(命名空间))。
在 Namespaces(命名空间)页面上,选择 Create New Namespace(创建新的命名空间)。这将显示 New Namespace (新的命名空间) 页面:
在 New Namespace (新的命名空间)页面,输入您要创建的加密数据库的名称,如 ENCDB。
在 Select an existing database for Globals(为 Globals 选择现有的数据库)下拉菜单旁边,选择 Create New Database(创建新的数据库)按钮。这将显示 Database Wizard(数据库向导):
在 Database Wizard(数据库向导)的第一页,在 Enter the name of your database(输入您的数据库名称) 字段中,输入您要创建的数据库的名称,如 ENCDB。输入一个数据库的目录,如 C:\InterSystems\IRISmgr\ENCDB。在该页面上,选择 Next(下一步)。
在下一页,将 Encrypt database(加密数据库)的值从 No 更改为 Yes。在该页面上,选择 Finish(完成)。
回到 New Namespace(新的命名空间)页面,在 Select an existing database for Routines(为例程选择现有的数据库)下拉菜单中,选择您刚刚创建的数据库,如 ENCDB。
选择靠近页面顶部的 Save(保存)按钮,然后在生成的日志的末尾选择 Close(关闭)。
现在您已经创建了一个名为 ENCDB 的加密数据库,它使用 InterSystems IRIS 在您创建密钥文件时创建的密钥。您可以像使用未加密的数据库一样使用这个数据库。由于 InterSystems IRIS 隐藏了所有的加密和解密机制,您可以用通常的方式执行所有的操作,所有数据都会被加密。
有关创建命名空间及其相关数据库的更多详细信息,请参见 InterSystems IRIS System Administration Guide(《InterSystems IRIS 系统管理指南》)中"Configuring InterSystems IRIS(配置 InterSystems IRIS)"一章中的 "Create/Modify a Namespace(创建/修改命名空间)"。有关背景信息, 请参见 Orientation Guide for Server-Side Programming(《服务器端编程指导手册》)中的“Namespaces and Databases(命名空间和数据库)”。
查看加密数据
一旦您创建了加密数据库,您可以像使用其他未加密的数据库一样使用它。唯一的区别是数据的存储方式。要查看存储在加密数据库和未加密数据库中的数据的区别,您可以执行以下简单的测试:
使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中为您的实例描述的程序 ,为您的 InterSystems IRIS 实例打开终端(Terminal )。
使用以下命令切换到加密数据库的命名空间:
%SYS>set $namespace="ENCDB" ENCDB>
在 ENCDB 命名空间中,运行以下命令:
ENCDB>for i=1:1:1000 set ^x(i)="This is test number "_i
这将创建一千个持久化变量(persistent variable),包含如下内容 This is test number 22。
要确认您已经成功,请看一个变量的值:
ENCDB>w ^x(22)
This is test number 22 ENCDB>
要打开数据库文件,进入您在上一节中创建的目录,如 C:\InterSystems\IRIS\mgr\ENCDB,并打开数据库文件 IRIS.DAT。您将会看到如下内容:
尝试在文件中搜索 "This is test number"这个字符串。您不会找到它——因为数据库是加密的。事实上,您会发现唯一未加密的字符串是数据库的名称或其加密密钥的标识符。
如果您在未加密的数据库上执行同样的测试,产生的文件将包含以下内容:
请注意,屏幕截图的最后一行包含了在终端(Terminal)设置的变量值。
与数据库加密有关的其他功能
InterSystems IRIS 还具有其他值得注意的数据库加密功能,这些功能对您的实现可能很重要:
KMIP——InterSystems IRIS 允许您在独立于托管实例的服务器上存储密钥。为了与这些服务器通信,InterSystems IRIS 支持密钥管理互通协议(key management interoperability protocol,KMIP)。这使得 InterSystems IRIS 能够从 KMIP 提供的标准化密钥管理方法中获益。
更改密钥和添加或删除加密——您可以轻松地更改数据库的加密密钥。如果需要这些操作,加密一个未加密的数据库或制作一个加密数据库的未加密副本也是很简单的。
对磁盘上的相关数据进行加密——InterSystems 允许您轻松加密其临时缓存数据库和其他用于保持最近事务记录为当前状态的磁盘内容(即其日志文件)。
基于芯片的加密——芯片可以将加密作为其活动的一部分,这为操作提供了更快的速度。InterSystems IRIS 支持使用这种芯片。有关基于芯片的加密的详细信息,请参见下一节。
了解有关数据库加密的更多信息
InterSystems 有很多参考资料可以帮助您了解有关数据库加密的更多信息:
Encryption Awareness(《加密意识》)——InterSystems 在线学习交互式课程,为我们的加密技术提供概念介绍。
Encryption Guide(《加密指南》)——InterSystems 有关数据库加密和相关功能的文档。
FIPS 140–2 Compliance for Database Encryption(《FIPS 140-2 数据库加密的遵从性》)——InterSystems 有关 InterSystems IRIS 支持 FIPS 140-2 标准的文档。
公告
Claire Zheng · 四月 10, 2023
2023年4月14日-16日,2023 CHITEC将在安徽省合肥市合肥滨湖国际会展中心(安徽省合肥市锦绣大道3899号)盛大召开。点击查看CHITEC 2023完整日程。InterSystems将亮相CHITEC,通过展位展示、主题研讨会、分论坛演讲等方式,全方位多角度展示InterSystems“加速评测,助力公立医院高效建设互联互通平台和数据中心”的能力。
1. 欢迎莅临InterSystems展位T28
在展会现场,我们将向您展示InterSystems IRIS医疗版互联互通平台、一体化数据平台、基于FHIR的数据利用和统一语义的数据中心。如果您希望进一步了解详细内容情况,希望得到详细的方案讲解或Demo演示服务,欢迎您通过以下方式进行登记预约。
莅临展位,由展位工作人员为您现场预约;
点击链接,提前预约展位Demo演示。
2. 欢迎报名参加主题研讨会“加速测评,赋能医院高质量发展”
时间:2023年4月14日(周五)13:30-17:00地点:合肥滨湖国际会展中心·综合馆(2号馆)·201会议室 在这次研讨会上,我们将为您带来InterSystems IRIS医疗版互联互通套件的详细解读与分享。您将了解到:
加速测评的五大利器;
统一语义的数据中心建设;
数据利用与应用创新;
现场演示。
点击链接,报名参会。
3. 欢迎关注分论坛主题演讲
在“分论坛:医院集成平台与电子病历建设应用”中,InterSystems中国技术总监乔鹏将与多位行业专家同台献策,分享主题演讲“InterSystems IRIS医疗版互联互通套件,赋能医院高质量发展”,助力医院夯实信息化建设基础,欢迎关注!
时间:2023年4月15日(周六)15:00-15:15
地点:合肥滨湖国际会展中心西区·综合馆(2号馆)·205会议室
文章
Claire Zheng · 一月 7, 2021
亲爱的社区用户,您好! 我们诚挚邀请所有社区成员加入InterSystems Global Masters倡导中心,以便了解最新动态,获取对开发者社区)的贡献积分,并获得奖励!请浏览本文并了解如何加入,有哪些福利可以期待!
点击此处:现在加入
▶️ 什么是 Global Masters?
Global Masters 是一个游戏化平台,您可以在其中完成与InterSystems技术相关的挑战(任务),赢取徽章和积分,并用积分兑换各种奖励! 在这里,每周都会发布5-10 个新挑战,公布开发者社区上最有趣的文章、最佳实践、视频、InterSystems 官方新闻、有趣的学习任务。 这是一个获得最新信息的好方法! ▶️ 具体是什么样的? 下面是挑战和奖励的示例:
▶️ 级别、徽章和特权
Global Masters 中有 6 个级别。您的级别越高,可获得的奖品价值和特权就越高。为开发者社区和 Open Exchange 做出贡献,在 Global Masters 保持活跃以达到最高级别!所有级别和徽章的列表将帮助您晋级到更高级别。
▶️ 如何加入? 从这里开始!
1. 前往globalmasters.intersystems.com,点击“使用 InterSystems 登录名登录”按钮,然后使用您的WRC账号即可加入。
2. 登陆后,找到“自定义你的程序,从这里开始!(Customize your program! START HERE!)”开始挑战。这个初始挑战会解锁每周发布的奖励和新挑战。
不要跳过这个挑战,充分利用这里吧!
点击此处:现在加入
我们在 GM 中心等待所有 InterSystems 开发者的到来!
欢迎您提出任何反馈和想法。请随时与我们联系!InterSystems Global Masters 上见! 😉
文章
Claire Zheng · 二月 6, 2023
InterSystems 开发者竞赛:Tool(工具)已进入投票时间,我们收集到来自全球的21个参赛作品,其中有三个参赛应用来自中国开发者。
以下按提交顺序排名
参赛应用1
Intersystems IRIS platform queue trend monitoring component(Intersystems IRIS平台队列监控组件)
提交者:yubo mao简介:随着医院信息化建设的逐步完善,医院业务接口越来越多,业务接口数据处理可能会由于多种因素(网络、消费方系统等)影响下,出现消息堆积过多甚至造成接口卡顿的情况,影响院内正常业务开展,因此对于业务接口组件队列的的监控愈发重要。 当前Intersystems IRIS平台内置的队列监控界面仅展示接口组件实时队列信息,对于对于医院实际应用场景所需要的队列数据信息提供较为局限。队列监控组件程序是基于Intersystems IRIS平台开发,可以对所有接口组件进行统一监控,并展示组件24h内组件队列信息,也可通过设置时间段查询组件历史队列数据,更好满足当前的院内应用需求。
更多详情,请查看参赛者文章及应用:
文章:Queue monitoring
应用:应用已上传至InterSystems Open Exchange
参赛应用2
message_key_query(消息键查询)
提交者:王喆简介:随着新型冠状病毒肺炎的流行,医院往往需要对患者信息进行流程调整操作,如输入患者ID查找门诊或住院部、挂号时间等。传统的数据库查询需要专业的程序员来处理,而使用该方案从界面上可以直接快速定位到患者在医院的挂号和就诊相关信息和时间。
更多详情,请查看参赛者文章及应用:
文章:IRIS快速查询服务思路分享
IRIS quick query service idea sharing
应用:应用已上传至InterSystems Open Exchange
参赛应用3
iris_log_analytics(IRIS log分析)
提交者:银行 郝简介:此方案用于监控IRIS平台事件日志相关信息,包括事件日志列表、日志详细信息、日志类型占比、日志数量最高组件Top7、近7天内日志数量波形图。
更多详情,请查看参赛者文章及应用:
应用:应用已上传至InterSystems Open Exchange
投票已经开始啦,欢迎为你感兴趣的应用投出宝贵的票票!
🔥 投票选出最佳应用程序 🔥 非常棒的应用,欢迎大家踊跃投票! 截至2月7日的投票结果分享-
Since the beginning of the voting we have the results:
Expert Nomination, Top 5
OpenAPI-Suite by @Lorenzo Scalese
irissqlcli by @Dmitry Maslennikov
iris-tripleslash by @Henry Pereira
Intersystems IRIS platform queue trend monitoring component by @Yubo Mao
message_key_query by @王喆
➡️ Voting is here.
Community Nomination, Top 5
Intersystems IRIS platform queue trend monitoring component by @Yubo Mao
iris-tripleslash by @Henry Pereira
message_key_query by @王喆
DX Jetpack for VS Code by @John Murray
OpenAPI-Suite by @Lorenzo Scalese
➡️ Voting is here.
So, the voting continues.
Please support the application you like!
文章
Claire Zheng · 二月 21, 2023
InterSystems IRIS数据平台支持列存储,提供更优存储方案,保障系统稳定运行。