文章 Weiwei Gu · 九月 14, 2023 1m read

昨天,我在一个客户网站提供从 Studio 迁移到 VS Code 的定制咨询时,就遇到了这种情况。

该站点的服务器已配置为使用delegated authentication,但尚未针对 /api/atelier Web 应用程序设置“delegated”复选框,而 InterSystems ObjectScript 扩展包的成员正是使用该复选框进行连接的。

一旦我们的应用程序设置了其复选框并单击了服务器管理器刷新按钮,就可以在服务器上枚举命名空间。

0
0 172
文章 姚 鑫 · 九月 13, 2023 2m read

第二十七章 Classes - 引用其他类成员

引用其他类成员

在方法中,使用下面的语法来引用其他类成员:

  • 要引用ObjectScript中的参数,使用如下表达式:
 ..#PARAMETERNAME

只能使用ObjectScript直接访问参数。要从Python访问参数,请使用ObjectScript包装器方法返回参数,并在需要时调用此方法。例如:

Class User.Employee Extends %RegisteredObject
{

Parameter ADDRESS = "123 Main St.";

ClassMethod AddressWrapper() As %String [ Language = objectscript ]
{
    return .#ADDRESS
}

ClassMethod OfficeLocation() [ Language = python ]
{
    import iris
    location=iris.cls("User.Employee").
0
0 82
公告 Michael Lei · 九月 13, 2023

InterSystems 团队本周末将前往麻省理工学院最大的黑客马拉松,届时我们将为黑客们带来一项技术挑战。
我们为黑客们提供在他们的项目中使用 IntegratedML 或 InterSystems Supply Chain Orchestrator 的机会,以便争夺一些非常酷的奖品!

如果您在波士顿并且有兴趣成为活动中的 InterSystems 导师,请给我们写信。

 

0
0 213
文章 Weiwei Gu · 九月 13, 2023 1m read

我们最近发布了 IRIS 2023.2版本。 此版本从此类“HS.HC.Util.Installer”中删除了“InstallFoundation”。 这是一个没有记录在官方文档中的私有的方法,但它被社区广泛用来安装 FHIR 服务器。 所以如果你遇到这个错误:<METHOD DOES NOT EXIST> *InstallFoundation,HS.HC.Util.Installer 在构建我们自己的 FHIR 服务器的演示时,您可以通过替换此行来修复它: 把do ##class(HS.HC.Util.Installer).InstallFoundation (namespace) 替换成 Do ##class(HS.Util.Installer.Foundation).Install(namespace) `

0
0 118
文章 姚 鑫 · 九月 12, 2023 1m read

第二十六章 Classes - Methods

Methods

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

指定方法关键字

在方法定义中,可以包含影响方法行为的可选编译器关键字。以下列表显示了一些最常见的方法关键字:

Language

IRIS 中,可以用 ObjectScriptPython 编写方法。要指定编写方法所用的语言,请使用以下语法:

Method MyMethod() [ Language = objectscript ]
{
    // implementation details written in ObjectScript
}
Method MyMethod() [ Language = python ]
{
    # implementation details written in Python
}

如果方法不使用 Language 关键字,编译器将默认该方法是用 ObjectScript 编写的。

必须以全部小写字母编写方法的语言,如示例中所示。

Private

该关键字指定该方法是私有的,并且只能与 ObjectScript 方法一起使用。子类继承 Private 关键字的值并且不能覆盖它。

默认情况下,方法是公共的并且可以在任何地方访问。可以将方法标记为私有(通过 Private 关键字)。如果你这样做:

  • 只能通过它所属类的方法来访问。
0
0 64
文章 姚 鑫 · 九月 11, 2023 3m read

第二十五章 Classes - 基于数据类型的属性

基于数据类型的属性

当定义属性并将其类型指定为数据类型类时,可以使用特殊选项来定义和使用该属性,如本节中所述。

数据类型类

数据类型类使能够强制执行有关属性值的规则集。

IRIS 提供的数据类型类包括 %Library.String%Library.Integer%Library.Numeric%Library.Date等等。因为 %Library 包的类名可以缩写,所以可以缩写其中的许多类;例如, %Date%Library.Date的缩写。

每个数据类型类都具有以下特征:

  • 它指定编译器关键字的值。对于属性,编译器关键字可以执行以下操作:

    • 使属性成为必需的
    • 指定属性的初始值
    • 控制如何将属性映射到 SQLODBCJava 客户端
  • 它指定影响细节的参数值,如下所示:

    • 数据类型允许的最大和最小逻辑值
    • 字符串可以包含的最大和最小字符数
    • 小数点后的位数
    • 如果字符串超过最大字符数是否截断
    • 显示格式
    • 如何转义任何特殊的 XMLHTML 字符
    • 可在任何用户界面中使用的逻辑值和显示值的枚举列表
    • 字符串必须匹配的模式(自动使用模式匹配运算符)
    • 导入或导出到 XML 时是否尊重或忽略 UTC 时区
  • 它提供了一组方法来在存储(磁盘上)、逻辑(内存中)和显示格式之间转换文字数据。

可以添加自己的数据类型类。

0
0 133
InterSystems 官方 Claire Zheng · 九月 11, 2023

InterSystems 很高兴地宣布InterSystems Supply Chain Orchestrator™的核心组件,即 InterSystems IRIS for Supply Chain 2023.1 版,现已正式发布 (GA)。

InterSystems Supply Chain Orchestrator (InterSystems 供应链协调器)基于 InterSystems IRIS® 构建,InterSystems IRIS® 是我们完整的云优先数据平台,支持智能数据编织(smart data fabric)架构,使构建和部署连接数据和应用程序孤岛的高性能、支持机器学习的应用程序变得更加容易。它将 InterSystems IRIS 的强大功能与供应链特定的加速器和框架结合在一起,为供应链编排、需求感知和预测、履行以及快速消费品重新包装提供优化的解决方案。

InterSystems Supply Chain Orchestrator 的一个关键组件是 InterSystems IRIS for Supply Chain,它使 InterSystems IRIS 提供的智能数据编织(smart data fabric)架构更接近供应链用例,并有助于加速实现价值。

0
0 213
文章 姚 鑫 · 九月 10, 2023 2m read

第二十四章 Classes - 指定属性关键字

指定属性关键字

在属性定义中,可以包含影响属性使用方式的可选属性关键字。以下列表显示了一些最常见的关键字:

Required

指定可以将此类实例之前设置的属性值存储到磁盘。默认情况下,属性不是必需的。在子类中,可以将可选属性标记为必需,但不能执行相反的操作。

InitialExpression

指定属性的初始值。默认情况下,属性没有初始值。子类继承InitialExpression关键字的值并且可以覆盖它。指定的值必须是有效的 ObjectScript 表达式。

Transient

指定该属性不存储在数据库中。默认情况下,属性不是瞬态的。子类继承 Transient 关键字的值并且不能覆盖它。

Private

指定该属性是私有的。子类继承 Private 关键字的值并且不能覆盖它。

默认情况下,属性是公共的并且可以在任何地方访问。可以将属性标记为私有(通过 Private 关键字)。如果是这样,则只能通过其所属对象的方法来访问它

IRIS 中,私有属性始终是继承的,并且对定义该属性的类的子类可见。

在其他编程语言中,这些通常称为受保护的属性。

Calculated

指定在实例化包含该属性的对象时,没有为其分配内存存储。默认情况下,不计算属性。子类继承了Calculated关键字并且不能重写它。

MultiDimensional

指定属性是多维的。

0
0 109
文章 姚 鑫 · 九月 9, 2023 2m read

第二十三章 Classes - 属性

形式上 IRIS 有两种属性:

  • 属性,保存值。该值可以是以下任意值:

    • 单个文字值,通常基于数据类型。
    • 对象值(包括集合对象和流对象)。
    • 多维数组。这种情况不太常见。

    属性一词通常仅指作为propertiesattributes,而不是指具有关联的属性。

  • 关系,保持对象之间的关联。

可以在包含 ObjectScript 方法、Python 方法或两者组合的类中定义属性。但是,无法从 Python 方法访问关系。本节展示了一个示例类,其中包含显示以下一些变体的属性定义:

Class MyApp.Main.
0
0 120
文章 姚 鑫 · 九月 8, 2023 2m read

第二十二章 Classes - 调用类方法的快捷方式

调用类方法的快捷方式

使用 ObjectScript 调用类方法时,在以下情况下可以省略包(或更高级别的包):

  • 引用是在一个类内,并且被引用的类在同一个包或子包中。
  • 引用位于类内,并且该类使用 IMPORT 指令导入包含引用的类的包或子包。
  • 该引用位于方法内,并且该方法使用 IMPORT 指令导入包含引用的类的包或子包。

ObjectScriptPython 调用类方法时,在以下情况下可以省略包(或更高级别的包):

  • 指的是 %Library 包中的一个类,该类是经过特殊处理的。可以将类 %Library.ClassName 引用为 %ClassName。例如,可以将 %Library.String引用为 %String
  • 指的是 User 包中的一个类,该类是经过特殊处理的。例如,可以将 User.MyClass 引用为 MyClass

User 包中不提供任何类,这些类是保留给使用的。

在所有其他情况下,必须始终使用完整的包和类名称来调用类方法。

类参数

类参数定义一个对于给定类的所有对象都相同的值。除了极少数例外,该值是在编译类时确定的,并且不能在运行时更改。将类参数用于以下目的:

  • 定义一个在运行时无法更改的值。
  • 定义有关类定义的用户特定信息。类参数只是一个任意的名称-值对;可以使用它来存储您喜欢的有关课程的任何信息。
0
0 115
文章 Lilian Huang · 九月 7, 2023 7m read

您好!社区的各位老师,

在我的上一篇文章中,我们学习了以下主题:

  1. 什么是 Docker?
  2. Docker 的一些好处
  3. Docker 是如何工作的?
  4. Docker 镜像
  5. Docker容器
  6. Docker 镜像存储库
  7. InterSystems 的 Docker 镜像存储库
  8. Docker安装
  9. Docker 基本命令
  10. 使用 Docker 运行 IRIS 社区版
  11. Docker 桌面图形用户界面

在本文中,我们将讨论以下主题:

  1. 使用 Docker Compose 文件( YAML 文件)
  2. Docker 文件的使用(用于构建 Docker 镜像)
  3. Docker 卷的使用

那么让我们开始吧。

0
0 225
文章 Lilian Huang · 九月 5, 2023 11m read

嗨,开发者们!

今天我想谈谈一个让我感到困难的话题。我相信你们中的很多人一定已经遇到过这种情况(所谓的“瓶颈”)。由于这是一个广泛的主题,因此本文将仅重点关注识别可能导致缓慢问题的传入 HTTP 请求。我还将向您提供我开发的一个小工具来帮助识别它们。

我们的软件变得越来越复杂,处理来自不同来源的大量请求,无论是前端还是第三方后端应用程序。为了确保最佳性能,必须有一个能够记录一些关键测量的日志系统,例如响应时间、global引用的数量以及每个 HTTP 响应执行的代码行数。作为工作的一部分,我参与了 EMR 软件的开发以及事件分析。由于用户负载主要来自 HTTP 请求(REST API 或 CSP 应用程序),因此在发生普遍缓慢问题时进行此类测量的需求变得显而易见。

0
0 331
文章 姚 鑫 · 九月 5, 2023 2m read

第十九章 ObjectScript - 执行例程

执行例程

执行例程时,使用DO命令,如下所示:

 do ^routinename

要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令:

 do label^routinename

 do label^routinename(arguments)

要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename$$label^routinename(参数)形式的表达式。例如:

 set myvariable=$$label^routinename(arguments)

在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如:

 do label
 do label(arguments)
 set myvariable=$$label(arguments)

在所有情况下,传递的参数可以是文字值、表达式或变量名。

New 命令

IRIS提供了另一种机制,使能够控制例程中变量的作用域:NEW命令。此命令的参数是一个或多个变量名,以逗号分隔的列表表示。变量必须是公共变量,不能是Global

该命令为变量建立一个新的有限上下文(可能已经存在,也可能不存在)。

0
0 182
文章 姚 鑫 · 九月 4, 2023 3m read

第十八章 ObjectScript - 使用例程

例程

可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动生成。

Procedures, Functions, and Subroutines 过程、函数和子程序

ObjectScript 例程中,标签定义以下代码单元之一的起点:

  • Procedures过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程来说,情况并非如此。

过程也称为过程块。

  • 函数(返回值)。
  • 子例程(不返回值)。

建议使用过程Procedures,因为这可以简化控制变量范围的任务。然而,在现有代码中,可能还会看到函数和子例程,并且能够识别它们非常有用。以下列表显示了所有这些形式的代码的外观。

procedure

label(args) scopekeyword {
    zero or more lines of code 
    QUIT returnvalue
    }

或者

label(args) scopekeyword {
    zero or more lines of code 
    }

label 是过程的标识符。

args 是可选的以逗号分隔的参数列表。即使没有参数,也必须包含括号。

0
0 126
文章 Kelly Huang · 九月 3, 2023 8m read

大家好。

在上一篇文章中,我们了解了如何配置 EMPI 来接收 FHIR 消息。为此,我们安装了 InterSystems 提供的 FHIR 适配器,该适配器配置了一个可以向其发送 FHIR 消息的 REST 端点。然后,我们将获取消息并将其转换为 %String,我们将通过 TCP 将其发送到 HSPIDATA 命名空间中配置的 EMPI 的输出。

好吧,是时候看看我们如何检索消息、将其转换回 %DynamicObject 并将其解析为 EMPI 用来存储信息的类。

TCP消息接收

正如我们所指出的,从配置了 FHIR 资源接收的生产中,我们已将消息发送到我们有业务服务侦听的特定 TCP 端口,在我们的例子中,该业务服务将是一个简单的EnsLib.TCP。 PassthroughService的目标是捕获消息并将其转发到业务流程,我们将在其中执行所需的数据转换。

这里有我们的商业服务:

这是它的基本配置:

FHIR 消息的转变

正如你所看到的,我们只配置了通过 TCP 接收消息的端口以及我们将向其发送消息的组件,在我们的例子中我们将其称为 Local.BP.FHIRProcess,让我们看一下说类来看看我们如何从 FHIR 资源中检索信息:

 Class Local.BP.FHIRProcess Extends Ens.
0
0 251
文章 Kelly Huang · 九月 3, 2023 7m read

对于即将到来的Python 竞赛,我想制作一个小型演示,介绍如何使用 Python 创建一个简单的 REST 应用程序,该应用程序将使用 IRIS 作为数据库。使用这个工具

  • FastAPI框架,高性能,易学,快速编码,可用于生产
  • SQLAlchemy 是 Python SQL 工具包和对象关系映射器,为应用程序开发人员提供 SQL 的全部功能和灵活性
  • Alembic 是一个轻量级数据库迁移工具,可与 SQLAlchemy Database Toolkit for Python 一起使用。
  • Uvicorn 是 Python 的 ASGI Web 服务器实现。
0
0 218
文章 姚 鑫 · 九月 3, 2023 2m read

第十七章 ObjectScript - 使用宏和包含文件

使用宏和包含文件

如前所述,可以定义宏并稍后在同一类或例程中使用它们。更常见的是,在包含文件中定义它们。

Macros

ObjectScript 支持定义替换的宏。定义可以是一个值、整行代码或(使用 ##continue 指令)多行。

要定义宏,请使用#define 指令或其他预处理器指令。例如:

#define macroname <definition> 

要引用宏,请使用以下语法:

$$$macroname

或者:

$$$macroname(arguments)

使用宏来确保一致性。例如:

 #define StringMacro "Hello, World!"

 write $$$StringMacro

为了让了解宏可以做什么,以下示例显示了内部使用的宏的定义:

 #define CALL(%C,%A) $$$INTCALL(%C,%A,Quit sc) 

这个宏接受参数,就像许多宏一样。它还引用了另一个宏。

一些系统类广泛使用宏。

预处理器指令记录在 ObjectScript 宏和使用 ObjectScript 中的宏预处理器中。

注意:管理门户列出了包含例程的Include files 。然而,Include files 实际上并不是例程,因为它们不可执行。

0
0 93
文章 姚 鑫 · 九月 2, 2023 2m read

第十六章 ObjectScript - 日期和时间值

日期和时间值

当地时间

要访问当前进程的日期和时间,可以使用 $HOROLOG 特殊变量。因此,在许多 IRIS 应用程序中,日期和时间都以此变量使用的格式存储和传输。这种格式通常称为$H 格式或$HOROLOG 格式。

$HOROLOG 从操作系统检索日期和时间,因此始终位于本地时区。

IRIS 类库包含以更常见的格式(例如 ODBC)表示日期的数据类型类,许多应用程序使用这些数据类型而不是 $H 格式。请注意,通过数据类型类中的 %Library.PosixTime支持 POSIX 时间,新应用程序应使用该类来表示日期/时间值。

UTC Time

IRIS 还提供 $ZTIMESTAMP 特殊变量,其中包含 $H 格式的协调世界时值形式的当前日期和时间。这是全球时间和日期标准;该值很可能与本地时间(和日期)值不同。

日期和时间转换

ObjectScript 包含用于转换日期和时间值的函数。

给定 $H 格式的日期,函数 $ZDATE 返回一个表示指定格式的日期的字符串。

例如:

TESTNAMESPACE>WRITE $ZDATE($HOROLOG,3)
2010-12-03

给定 $H 格式的日期和时间,函数 $ZDATETIME 返回一个表示指定格式的日期和时间的字符串。

0
0 100
文章 Jingwei Wang · 九月 1, 2023 2m read

JWT Authentication 原理及验证流程

原理

JWT 是一种结构紧凑、URL 安全的身份验证、授权或信息交换方式。在身份验证的情况下,服务器会向已通过身份验证的客户端提供一个 JWT,这样客户端在 JWT 过期之前就无需再提供密码来访问服务器上受保护的资源。

验证流程:

  1. 客户端发送Login到服务端
  2. 服务端返回 JWT给客户端
  3. 客户端校验JWT签名
  4. 客户端发送带有JWT签名的request到服务端
  5. 服务端检查JWT签名的有效期,在有效期内,则返回response给客户端,不在有效期内,返回error

 

JWT 配置步骤

  1. 创建REST服务
  2. 配置Web Application
  3. 安全配置
  4. 客户端发送Login,从服务器获取JWT
  5. 配置成功,发送带有JWT的request

1. 创建REST服务

在InterSystems IRIS中,可以使用/api/mgmnt自动创建REST的 .disp .impl 和 .spec 类,本篇文章不介绍具体创建REST服务的流程,具体内容请参考社区文章创建REST 服务

2.

0
0 328
文章 Michael Lei · 八月 31, 2023 1m read

InterSystems 常见问题解答

通过在持久类(=table)定义中提供的%BuildIndices() 方法的参数中指定要重建索引的 ID 的开始值和结束值,您可以仅重建该范围内的索引。

例如,要仅针对 ID=10 到 20 重建 Sample.Person 类中的 NameIDX 索引和 ZipCode 索引,请执行以下代码(ID 范围在第 5 个和第 6 个参数中指定)。

 set status = ##class (Sample.Person). %BuildIndices ( $LB ( "NameIDX" , "ZipCode" ), 1 ,, 1 , 10 , 20 )

$LB() 是$ListBuild() 函数。 %BuildIndices() 方法使用它来指定索引名称。

有关如何重建索引的更多信息,请参阅文档

2018.1版本请参考此文档

0
0 262
文章 姚 鑫 · 八月 31, 2023 2m read

第十四章 ObjectScript - 系统函数

系统函数

本节重点介绍 ObjectScript 中一些最常用的系统函数。

这些函数的名称不区分大小写。

类库还提供了大量实用方法,可以像使用函数一样使用它们。

Value Choice

在给定一些输入的情况下,可以使用以下函数来选择一个值:

  • $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配的比较值关联的返回值。例如:
TESTNAMESPACE>set myvar=1
 
TESTNAMESPACE>write $CASE(myvar,0:"zero",1:"one",:"other")
one
  • $SELECT 检查一组表达式并返回与第一个 true 表达式关联的返回值。例如:
TESTNAMESPACE>set myvar=1
 
TESTNAMESPACE>write $SELECT(myvar=0:"branch A",1=1:"branch B")
branch B

存在函数

可以使用以下函数来测试变量或变量节点是否存在。

  • 要测试特定变量是否存在,请使用 $DATA 函数。

对于包含多个节点的变量,该函数可以指示给定节点是否存在,以及给定节点是否有值和子节点。

  • 要获取变量的值(如果存在)或获取默认值(如果不存在),请使用 $GET 函数。

列表函数

ObjectScript 提供本机列表格式。

0
0 102
问题 li liao · 八月 30, 2023

参考 https://blog.csdn.net/InterSystems/article/details/115350635 搭建 mirror ,获取数据变更,示例给出了获取数据变更的代码:

Class ZCustom.MirrorDejournal Extends SYS.MirrorDejournal
{
    Method RunFilter(
        MirrorDBName As %String,
        GlobalReference As %String,
        RecordType As %String,
        Address As %Integer) As %Integer
{
    Set ^CDCLog( $I($^CDCLog))=$lb(MirrorDBName,GlobalReference,RecordType,Address)
    Quit 1
}

示例代码将变更存储在 global 对象 CDCLog 中,想请问下获取变更前后数据,发送到外部系统,有哪些方式?

1
0 242
文章 Louis Lu · 八月 30, 2023 1m read

大家可以通过InterSystems IRIS 管理门户SMP查看当前数据库剩余空间,路径是 Management Portal: System Operation > Database

当然大家也可以通过下面的代码查看数据库的可用磁盘空间:

 /// ZISJ.mac
 Set stmt=##class(%SQL.Statement).%New()
 Set status=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
 Set rs=stmt.%Execute()
 While rs.%Next() {
   Write !
   For i=1:1:9 {
     Write rs.%GetData(i),","
   }
 } 
0
0 134
文章 Jingwei Wang · 八月 30, 2023 5m read

案例描述

假设您是一名 Python 开发人员或拥有一支训练有素的 Python 专业团队,但您分析 IRIS 中某些数据的期限很紧迫。当然,InterSystems 提供了许多用于各种分析和处理的工具。然而,在给定的场景中,最好使用旧的 Pandas 来完成工作,然后将 IRIS 留到下次使用。
对于上述情况和许多其他情况,您可能需要从 IRIS 获取表来管理 InterSystems 产品之外的数据。但是,当您有任何格式(即 CSV、TXT 或 Pickle)的外部表时,您可能还需要以相反的方式执行操作,您需要在其上导入并使用 IRIS 工具。
无论您是否必须处理上述问题,Innovatium让我明白,了解更多解决编码问题的方法总是能派上用场。好消息是,从 IRIS 引入表时,您不需要经历创建新表、传输所有行以及调整每种类型的繁琐过程。
本文将向您展示如何通过几行代码快速将 IRIS 表转换为 Pandas 数据框架并向后转换。您可以在我的GitHub上查看代码,您可以在其中找到包含本教程每个步骤的 Jupiter Notebook。

从 IRIS 引入一张Table

当然,您应该首先导入该项目所需的库。

 import pandas as pd import sqlalchemy as db

下一步将是在 Python 文件和 IRIS 实例之间创建连接。

0
0 212
文章 姚 鑫 · 八月 29, 2023 4m read

第十三章 ObjectScript - 特殊变量

特殊变量

一些特殊变量提供有关代码运行环境的信息。其中包括以下内容:

  • $HOROLOG,包含操作系统给出的当前进程的日期和时间。请参阅日期和时间值。
  • $USERNAME$ROLES,包含有关当前使用的用户名以及该用户所属角色的信息。
 write "You are logged in as: ", $USERNAME, !, "And you belong to these roles: ",$ROLES
  • $ZVERSION,其中包含标识当前运行的 IRIS 版本的字符串。

其他包括 $JOB$ZTIMEZONE$IO$ZDEVICE

其他变量提供有关代码处理状态的信息。其中包括 $STACK$TLEVEL$NAMESPACE$ZERROR

$SYSTEM 特殊变量

特殊变量 $SYSTEM 提供对大量实用方法的轻松访问。

特殊变量 $SYSTEM%SYSTEM 包的别名,其中包含提供可满足各种需求的类方法的类。引用 %SYSTEM 中方法的惯用方法是构建使用 $SYSTEM 变量的引用。例如,以下命令在类中执行 %SYSTEM.OBJ 中的 SetFlags() 方法:

 DO $SYSTEM.OBJ.
0
0 107
文章 Jimmy Xu · 八月 28, 2023 2m read

大家好,由于我目前在做一个数据分析的demo,所以需要在IRIS Data platform存储百万行数据供我测试。因此使用Populate Utility 来自动生成我需要的数据。

在这篇文章中,我将会给大家分享我使用 Populate utility 包括POPSPEC parameter的心得和经验。

1.创建两个persistent class , popPatient用于存储病人信息, popSign用于存储收集到的对应病人的生命信息。在定义persistent class时需要在后面引用(%Persistent, %Populate)以支持调用Populate Utility工具.

2.1 为了使我们生成出来的数据更贴合正常的情况,我们不能取一个超出常识的值比如心跳1000次一分钟。所以我使用(MAXVAL MINVAL)来限制了生成数据的区间。

popPatient 如图所示我限制了生成病人年龄的取值范围

popSign 限制了心跳的区间

2.2 如果我们需要使用自定义的自动生成方法,这时我们需要使用 POPSPEC 来定义生成的    内容,例如 我们有预定义的method,可以直接引用并生成美国电话号码,但是我想生成一个符合澳大利亚电话号码格式的值。并且在另外一张表中(popSign)记录收集到的心率的时间戳,我们可以使用$H 的方法来收集时间戳。

0
0 175
文章 姚 鑫 · 八月 28, 2023 3m read

第十二章 ObjectScript - 命令

命令

本节概述了在 ObjectScript 常用命令。其中包括与其他语言中的命令相似的命令,以及其他语言中没有等效项的其他命令。

命令名称不区分大小写,尽管按照惯例它们在运行文本中显示为全大写。

熟悉的命令

ObjectScript 提供命令来执行熟悉的任务,如下所示:

  • 要定义变量,请使用 SET(如前所示)。

  • 要删除变量,请使用 KILL,如前所示。

  • 要控制逻辑流程,请使用以下命令:

    • IFELSEIFELSE 一起工作
    • FOR
    • WHILE,可以单独使用
    • DOWHILE 可以一起使用
    • QUIT,也可以返回一个值

    还有其他用于流量控制的命令,但使用频率较低。

  • 要捕获错误,请使用 TRYCATCH,它们一起工作。

  • 要写入值,请使用 WRITE。这会将值写入当前设备(例如,终端或文件)。

    在不带参数的情况下使用该命令会写入所有局部变量的值。

    此命令可以使用一小组格式控制代码字符来定位输出。在现有代码中,可能会看到感叹号,它开始一个新行。例如:

     write "hello world",!,"another line"
    
  • 要从当前设备(例如终端)读取值,请使用 READ

  • 要使用主设备以外的设备,请使用以下命令:

    • OPEN 使设备可供使用。
0
0 114