文章
· 十月 16, 2022 阅读大约需 4 分钟
第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions

第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions

`` 是一种无状态协议;每个请求都不知道以前的请求。虽然这适用于为用户提供简单静态内容的网站,但它使得开发交互式动态 Web 应用程序变得困难。为了解决这个问题,CSP 提供了所谓的Session 管理。

CSP.SessionSessions

Session 话表示在特定时间段内从特定客户端到特定应用程序的一系列请求。

CSP 自动提供会话跟踪;无需执行任何特殊操作即可启用它。 CSP 应用程序可以通过对象中的 %CSP.Session 查询和修改其会话的各个方面。 CSP 服务器通过 ObjectScript %session 变量使该对象可用。

1 0
0 77
文章
· 八月 8, 2023 阅读大约需 3 分钟
第十六章 定义 HL7 的 DTL 数据转换 - 转换长段字段

第十六章 定义 HL7 的 DTL 数据转换 - 转换长段字段

转换长段字段

DTL 转换使用的 ObjectScript 方法 GetValueAtHL7 段字段截断为 3.6MB。因此,当转换长度超过 3.6MB 的字段时,无法在 DTL 编辑器中使用从左到右的拖动操作。例如,如果 OBX:5 字段超过 3.6MB,则无法使用 DTL 编辑器将源字段拖动到目标,因为它将被截断。同样,如果要转换的字段长度超过 3.6MB,则自定义代码不应调用 GetValueAt

0 0
0 77

第四十五章 配置第三方软件以与 InterSystems 产品结合使用

产品通常在与非 工具一起运行的环境中运行,我们的产品与此类工具之间的交互可能会产生有害影响。 关于最佳、可靠部署配置的指导假定我们的产品可以在不受第三方工具干扰的情况下进行部署。例如, 发现用于安全、系统监控或病毒扫描的软件可能会影响我们产品的安装、性能和功能。对于直接与属于 产品的一部分或被 产品使用的文件进行交互的工具(例如病毒扫描程序)尤其如此。

了解客户面临的业务、合规性和其他要求会影响有关在给定环境中运行哪些软件以及如何配置此类软件的决策。一般来说, 建议我们产品的服务器端安装通过物理安全和隔离来保护。这种保护应该减少对其他工具的需求,或者至少减少它们运行的频率。

病毒扫描仪观察:

  1. 为了交付经过病毒检查的软件, 产品在经过消毒的环境中交付给我们的客户,并通过提供校验和进行验证。
  2. 性能影响。

[对策] 出于扫描目的,排除以下文件和目录:

3 0
0 77
文章
· 十二月 29, 2023 阅读大约需 9 分钟
使用 FHIR 适配器在传统系统上提供 FHIR 服务 - 阅读资源

我们继续推出有关可供 HealthShare HealthConnect 和 InterSystems IRIS 用户使用的 FHIR 适配器工具的系列文章。

在前几篇文章中,我们介绍了小型应用程序,并在此基础上建立了我们的工作,并展示了安装 FHIR 适配器后在 IRIS 实例中部署的架构。在今天的文章中,我们将看到一个示例,说明如何执行最常见的 CRUD(创建 - 读取 - 更新 - 删除)操作之一,即读取操作,我们将通过恢复资源来完成此操作。

什么是资源?

FHIR 中的一个资源对应一种相关的临床信息,这种信息可以是病人(Patient)、对实验室的请求(ServiceRequest)或诊断(Condition)等。每种资源都定义了组成它的数据类型,以及对数据的限制和与其他类型资源的关系。每个资源都允许对其包含的信息进行扩展,从而满足 FHIR 80% 以外的需求(满足 80% 以上用户的需求)。

在本文的示例中,我们将使用最常见的资源 "Patient"。让我们来看看它的定义:

0 0
0 77
文章
· 六月 8, 2023 阅读大约需 1 分钟
Embedded python 重新加载更新后的python模块

在InterSystems IRIS中重新加载更新后的Python模块的方式和直接使用Python 重新加载模块的方式是一样的。

Python3.4 之后到版本中,直接使用Python 重新加载模块的方式如下:

import importlib
​
importlib.reload(module)

同样,在在InterSystems IRIS中重新加载Python模块的方式与其没有区别,示例如下:

0 0
0 77
文章
· 八月 21, 2021 阅读大约需 3 分钟
查询关键字WebMethod,CodeMode,Event,Final

第129章 查询关键字 - WebMethod

指定这个类查询是否为web方法
仅应用于定义为web服务web客户端的类。

用法

要指定这个查询是一个web方法,请使用以下语法:

Query name(formal_spec) As classname [ WebMethod ] {    //implementation }

否则,忽略该关键字或将Not放在该关键字之前。

详情

这个关键字指定这个类查询是否是一个web方法,是否可以通过SOAP协议调用。

默认

如果忽略此关键字,则无法以web方法调用查询。

生成的类

当你将这个关键字添加到类查询并编译类时,类编译器会生成两个额外的类:

0 0
0 77

第四十五章 使用 ^SystemPerformance 监视性能 - Abort ^SystemPerformance

Abort ^SystemPerformance

如果要停止正在运行的配置文件,可以中止数据收集,并可选择使用 $$Stop^SystemPerformance(runid) 命令删除配置文件的所有 .log 文件。例如,要中止由 runid20111220_1327_12hours 标识的报告的数据收集并删除到目前为止写入的所有 .log 文件,请在终端的 %SYS 命名空间中输入以下命令:

do Stop^SystemPerformance("20111220_1327_12hours")

要在不删除日志文件的情况下停止作业并从这些日志文件生成 HTML 性能报告,请输入:

0 0
0 76

第三十章 开发Productions - ObjectScript Productions - 定义业务操作 - 调用适配器方法

调用适配器方法

最常见的是,业务操作不包含用于与外部系统通信的逻辑。相反,业务操作使用处理此逻辑的出站适配器。一旦业务操作与出站适配器相关联,它就会调用适配器的方法来发送和接收数据。有关调用适配器方法的详细信息,请参阅从业务主机访问属性和方法。

向生产中的目标发送请求

尽管业务操作主要负责向特定的外部应用程序传递请求,但它也可以根据需要向其他业务操作或业务流程发送消息。要将消息发送到生产中的目标,请调用 SendRequestSync()SendRequestAsync()SendDeferredResponse()

Ens.BusinessOperation 定义了一个可以使用的附加方法:DeferResponse()

0 0
0 76
文章
· 八月 26, 2021 阅读大约需 2 分钟
Storage关键字IdFunction,IdLocation,IndexLocation,SqlRowIdName

第149章 Storage关键字 - IdFunction

指定使用默认存储为持久类分配新ID值的系统函数。

大纲

<IdFunction>increment</IdFunction>

这个元素的值可以是increment(使用$increment函数)或sequence(使用$sequence函数)。

描述

如果持久化类不使用IdKey来确定对象ID值,则该元素允许指定用于分配ID值的函数($increment函数或$sequence函数)。

如果类使用$increment函数,则通过对<IdLocation>元素中定义的全局位置中存储的值进行递增来创建新的id。

0 0
0 76
文章
· 五月 5, 2023 阅读大约需 6 分钟
第四十九章 管理镜像 - 停止备份和异步成员的镜像

第四十九章 管理镜像 - 停止备份和异步成员的镜像

停止备份和异步成员的镜像

可以暂时停止在备份或异步成员上进行镜像。例如,可能希望在短时间内停止备份成员上的镜像以进行维护或重新配置,或者在主数据库维护期间停止镜像,并且可能暂时停止报告异步成员上的镜像以减少网络使用。为此,请执行以下操作:

  1. 导航到要停止镜像的成员的“系统操作”>“镜像监控”页面
  2. 如果该成员是备份故障转移成员,请单击停止在此成员上镜像按钮。
  3. 如果该成员是异步成员,请单击希望异步停止镜像的镜像所在行中的“在此成员上停止镜像”链接。 (停止一个镜像的镜像不会影响报告异步所属的其他镜像。)

该操作需要几秒钟。当刷新镜像监视器时,“在此成员上停止镜像”将替换为“在此成员上开始镜像”,可以使用它来恢复镜像。

重要提示:当停止对某个成员进行镜像时,镜像将保持停止状态,直到如前所述再次明确启动它。镜像的重新初始化或成员的重新启动都不会在成员上启动镜像。

0 0
0 76
文章
· 五月 29, 2022 阅读大约需 1 分钟
第156章 SQL函数 USER

第156章 SQL函数 USER

返回当前用户的用户名的函数。

大纲

USER

{fn USER}
{fn USER()}

描述

USER 不接受任何参数并返回当前用户的用户名(也称为授权 ID)。通用函数不允许括号; ODBC 标量函数可以指定或省略空括号。

用户名是使用 CREATE USER 命令定义的。

USER 的典型用途是在 SELECT 语句选择列表或查询的 WHERE 子句中。在设计报告时,USER 可用于打印正在为其生成报告的当前用户。

示例

以下示例返回当前用户名:

0 0
0 76
文章
· 六月 8, 2022 阅读大约需 4 分钟
第三章 数据类型(二)

第三章 数据类型(二)

SQL 系统数据类型映射

上表中为 DDL 和 IRIS 数据类型表达式显示的语法是为 SQL.SystemDataTypes 配置的默认映射。对于提供的系统数据类型和用户数据类型,有单独的映射表可用。

要查看和修改当前数据类型映射,请转到管理门户,选择系统管理、配置、SQL 和对象设置、系统 DDL 映射。

了解 DDL 数据类型映射

将数据类型从 DDL 映射到 IRIS 时,常规参数和函数参数遵循以下规则:

  • 常规参数 - 这些在 DDL 数据类型和 IRIS 数据类型中以 %# 格式标识。例如:
     VARCHAR(%1)

映射到:

     %String(MAXLEN=%1)

因此,DDL 数据类型为:

     VARCHAR(10)

映射到:

0 0
0 76

我的团队在在红帽OpenShift容器平台上运行IRIS互操作性解决方案。我想在数据被存储在Mirror的数据pods中的情况下,测试运行中的webgateway pods和计算节点 pods能处理多少消息。

为了增加测试难度,我部署了多个feeder容器,并在每个feeder上安排了任务,以在同一时间发送大量的消息。为了进入下一阶段的测试,我希望有多种类型的测试文件可以按需使用。我创建了test-data应用程序,能够请求生成大量的多种类型的文件。

我早期的一些测试依赖于复制一个样本文件和处理它。这在一次只复制一份的情况下效果不错。为了获得同一样本文件的许多副本,MakeFile函数获取一个样本文件、保存其副本、并以唯一的时间戳进行重命名。MakeFiles函数有一个参数,用于确定要制作的文件数量。

我找到了一个样本文件,它的输入和输出都是带分隔符和固定符的。我把它包含在我的应用程序中,并添加了一个转换来操作测试数据文件。在这种情况下,我把测试文件中的识别ID号替换成在一个类方法中生成的识别ID号,并且是随着文件而递增的。

我想在处理后审查测试文件中的数据,我喜欢看到一系列有顺序的数字,而不是一系列随机数字。

0 0
0 76
文章
· 九月 11, 2021 阅读大约需 3 分钟
第十三章 SQL命令 CREATE ROLE

第十三章 SQL命令 CREATE ROLE

创建角色

大纲

CREATE ROLE role-name

参数

  • role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。

描述

CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。

0 0
0 76
文章
· 八月 2, 2022 阅读大约需 3 分钟
第十五章 源代码文件 REST API 简介

第十五章 源代码文件 REST API 简介

源代码文件 REST API 简介

REST API 提供对源代码文件的访问。我们开发此 API 是为了允许 Atelier(我们基于 EclipseIDE)访问 IRIS 服务器上的 IRIS 代码文件。可以使用 API 执行访问 IRIS 代码文件所需的操作。这些行动包括:
- 获取 IRIS 实例上可用的命名空间
- 查找命名空间中定义的类定义和例程
- 获取类和例程的文本定义
- 更新类定义或例程
- 创建新的类定义或例程
- 删除类定义或例程
- 编译 IRIS 类或例程
- 通过对表执行 SQL 查询来发现 IRIS 环境的属性

0 0
0 76
文章
· 十月 8, 2022 阅读大约需 2 分钟
第十章 CSP 架构 - Category

第十章 CSP 架构 - Category

Category: AllowPrefix

如果应用程序依赖于调用以同一组字符开头的多个类或包,请使用AllowPrefix选项。

重要提示:如果应用程序依赖于调用上面列出的以外的任何类,则使用它可能是不安全的。建议确定是否需要调用此类,并为部署执行风险评估,以便了解使类可用的含义。

要使给定的Web应用程序能够调用以相同字符集开头的类或程序包,请在%sys命名空间中使用以下命令:

Set ^SYS("Security", "CSP", "AllowPrefix", "web-app-name", "prefix") = value

其中

1 0
0 76

第六十章 镜像中断程序 - 使用主 ISCAgent 的日志数据进行 DR 提升和手动故障转移

使用主 ISCAgent 的日志数据进行 DR 提升和手动故障转移

如果 IRIS A 的主机系统正在运行,但 IRIS 实例没有且无法重新启动,您可以使用以下过程在通过升级后使用来自 IRIS A 的最新日志数据更新升级的 IRIS C IRIS AISCAgent

1 0
0 76
文章
· 四月 3, 2021 阅读大约需 12 分钟
第十五章 使用管理门户SQL接口(二)

第十五章 使用管理门户SQL接口(二)

过滤模式内容

Management Portal SQL界面的左侧允许查看模式(或匹配筛选器模式的多个模式)的内容
1. 通过单击SQL interface页面顶部的Switch选项,指定希望使用的名称空间。
这将显示可用名称空间的列表,可以从中进行选择。
2. 应用筛选器或从模式下拉列表中选择模式。

可以使用Filter字段通过输入搜索模式来筛选列表。
可以在一个模式或多个模式中筛选模式,或筛选表/视图/过程名(项)。
搜索模式由模式名、点(.)和项目名组成——每个名称由文字和通配符的某种组合组成。字面值不区分大小写。
通配符是:

0 0
0 76
文章
· 三月 3, 2021 阅读大约需 1 分钟
欢迎大家来投票啦!!!

这是我们团队参加的第一届InterStstems编程竞赛! 快来看看投票给我们!

超额预订管理系统结合了酒店业的独特条件,例如房价,订购渠道,客户需求等。 本系统使用机器学习算法(例如:KNN / ES-RNN ...)来准确预测酒店的每日未入住和入住率,并进一步与收益结合以找到最佳的最大客房销售量,从而精准增加酒店的边际收益。

1 1
0 76
文章
· 八月 23, 2021 阅读大约需 2 分钟
触发器关键字OldTable,Order,SqlName,Time

第137章 触发器关键字 - OldTable

指定存储受事件影响的行或语句的旧值的转换表的名称。

用法

要指定存储旧值的转换表的名称,请使用以下语法:

Trigger name [ Event = sqlevent, OldTable = oldtable, NewTable = newtable ] {    //implementation }

其中oldtable是此命名空间中的SQL表的名称。

详情

每个触发器都可以通过转换表(由旧表和新表关键字指定)访问受事件影响的行或语句的旧值和新值。

默认

默认值为空字符串。

第138章 触发器关键字 - Order

在同一个EVENTTIME有多个触发器的情况下,指定触发器应该触发的顺序。

0 0
0 75
文章
· 九月 20, 2022 阅读大约需 2 分钟
FAQ常见问题系列 -- HA篇 虚拟化环境上的镜像问题

1. VMWare快照引起的网络中断导致非计划内主备机切换问题

1.1 问题描述

在创建虚拟机快照时,虚拟机需要短时间的冻结,这个短时间冻结通常指虚拟机静默,在静默过程中网络连接处于中断状态。由于数据库的不断增长,使用VMWare快照的方式对虚拟机进行备份的时长也会不断增加,当对虚拟机进行快照的时长长于InterSystems镜像服务质量 (QoS) 超时时间,即当主机网络中断超过QoS超时时间,仲裁机与备机观察并相互确认与主机的连接丢失后,将发起切换过程,使原备机成为主机并将虚拟IP从主机MAC地址解绑后重绑定到备机的MAC地址上。特别需要注意的是,在这种由于网络中断引起的切换中,仲裁与备机都无法得知主机的实际工作状态。因此,在主机网络连接恢复后,为了为了避免因切换期间主机还在处理数据导致主备机间数据不一致,备机主动发起请求让主机下线,关闭主机,此时主机状态显示为关闭(Down)。

1 0
0 75
文章
· 二月 8, 2022 阅读大约需 3 分钟
第四十八章 SQL函数 DAYOFMONTH

第四十八章 SQL函数 DAYOFMONTH

返回日期表达式的月份日期的日期函数。

大纲

{fn DAYOFMONTH(date-expression)}

参数

  • date-expression - 要从中返回月值日期的日期或时间戳表达式。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。

描述

DAYOFMONTH131之间的整数形式返回每月的第几天。日期表达式可以是日期整数、$HOROLOG$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳。

日期表达式时间戳可以是数据类型%Library.PosiTime(编码的64位有符号整数)或数据类型%Library.TimeStamp(yyyy-mm-dd hh:mm:ss.fff)

0 0
0 75
文章
· 七月 5, 2022 阅读大约需 5 分钟
第十九章 使用工作队列管理器(二)

第十九章 使用工作队列管理器(二)

基本工作流程

可以通过执行以下步骤来使用工作队列管理器:

  1. ObjectScript 代码划分为工作单元,这些工作单元是满足特定要求的类方法或子例程。
  2. 创建一个工作队列,它是 %SYSTEM.WorkMgr 类的一个实例。为此,请调用 %SYSTEM.WorkMgr 类的 %New() 方法。该方法返回一个工作队列。

可以指定要使用的并行worker jobs的数量,也可以使用默认值,这取决于机器和操作系统。此外,如果已创建类别,则可以指定应从中获取job的类别。

创建工作队列时,工作队列管理器会创建以下工件:
- 包含有关工作队列的信息的全局变量,例如工作队列在哪个命名空间中运行
- 工作队列必须处理的序列化工作单元的位置和事件队列
- 在工作队列完成处理工作单元时创建的完成事件的位置和事件队列

0 0
0 75
文章
· 七月 7, 2022 阅读大约需 4 分钟
第二十一章 使用工作队列管理器(四)

第二十一章 使用工作队列管理器(四)

分离和附加工作队列

通常,初始化一组工作程序,将工作项排队,然后等待工作程序完成工作项。但是,可能会遇到工作人员作业完成工作项所需的时间比预期更长的情况,或者无法将单个进程专门用于等待。因此,工作队列管理器使能够将工作队列与进程分离,然后将工作队列附加到同一进程或不同的进程。

例如,假设队列引用了初始化的工作队列。还假设向工作队列中添加了几个工作项。在调用 Wait() 或 WaitForComplete() 来确定正在处理的工作的状态之前,可以使用以下方法:

Detach()

method Detach(ByRef token As %String, timeout As %Integer=86400) as Status
从初始化工作队列时创建的对象引用中分离工作队列对象。 Detach() 方法使任何正在进行的工作能够继续并保留工作队列的当前状态。

token 参数表示一个安全令牌,可以使用它随后将工作队列附加到另一个进程。 timeout 参数是可选的,它指示系统保留分离的工作队列对象的时间量(以秒为单位)。超时期限过后,系统会删除与工作队列关联的所有工作人员作业和信息。超时的默认值为 1 天。

0 0
0 75
文章
· 三月 21, 2022 阅读大约需 3 分钟
第八十八章 SQL函数 $LISTTOSTRING

第八十八章 SQL函数 $LISTTOSTRING

从列表创建字符串的列表函数。

大纲

$LISTTOSTRING(list[,delimiter])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • delimiter - 可选 — 插入以分隔子字符串的分隔符。分隔符可以是一个或多个字符,指定为带引号的字符串。要连接不带分隔符的子字符串,请指定空字符串 ('')。如果不指定分隔符,则默认为逗号 (,) 字符。

描述

$LISTTOSTRING 采用 列表并将其转换为字符串。在结果字符串中,列表的元素由分隔符分隔。

0 0
0 75