文章
· 十二月 26, 2023 阅读大约需 4 分钟
第六章 创建Callout Library

第六章 创建Callout Library

Callout library 库是一个共享库,其中包含自定义Callout函数和允许 IRIS使用它们的启用代码。本章描述如何创建Callout库并在运行时访问它。
- Callout library 简介-描述如何创建和访问Callout library
- ZFEntry链接选项 - 提供了决定如何传递函数参数的链接选项的详细描述。
- 兼容语言和编译器-描述如何使用C以外的语言创建Callout库。
- Callout Library运行和运行函数-描述两个可选函数,可将其设置为在加载或卸载标注库时自动运行。
- 故障排除和错误处理-列出了一些应该避免的编码实践,并描述了处理UNIX信号处理错误的特殊函数。

0 0
0 18
InterSystems 开发者社区汇聚了 17,533 位出色的开发者
InterSystems IRIS 程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
文章
· 十二月 24, 2023 阅读大约需 2 分钟
接收POST请求的Base64 文件

在此文章中将分享,当使用InterSystems IRIS 做后端时如何接收并保存通过POST方式发送过来的 Base64文件。

前后端之间传输文件,我认为较简单的方式是:前端将文件转为Base64格式,调用POST方法并将Base64内容附加在JSON消息中的一个参数中,在JSON消息中的另一个参数可以是文件名,比如消息定义如下:

0 0
0 52
文章
· 十二月 23, 2023 阅读大约需 3 分钟
第三章 使用$ZF(-100)运行程序或系统命令

第三章 使用$ZF(-100)运行程序或系统命令

$ZF(-100)函数允许 IRIS 进程调用可执行程序或主机操作系统的命令。这是唯一可以在没有特殊的Callout共享库的情况下使用的$ZF函数。

  • $ZF(-100)的语法和功能概述。
  • 程序执行-程序可以选择异步运行或在操作系统外壳中运行。
  • 记录命令和重定向输出——可选设置可以记录命令或重定向I/O
  • 添加%System_Callout:USE特权—使用$ZF(-100)需要此特权。

注意:$ZF(-100)取代了已弃用的函数$ZF(-1)$ZF(-2),在所有情况下都应优先使用。

0 0
0 16
文章
· 十二月 22, 2023 阅读大约需 3 分钟
第二章 $ZF Callout函数概述

第二章 $ZF Callout函数概述

IRIS $ZF系统功能是一套相关功能的容器。$ZF套件中的大多数函数都由函数调用的第一个参数标识,该参数将是一个负数,-100-3-6。例如,调用操作系统命令的函数具有$ZF(-100, <oscommand>)的形式,其中<oscommand>是包含要执行的命令的字符串。当讨论这个函数时,它将被称为$ZF(-100)。以同样的方式,其他函数将被称为$ZF(-3)$ZF(-6),只使用实际函数调用的第一个参数。也可以在不带负数参数的情况下调用$ZF()函数,在这种情况下,它调用名为iriszf的特殊Callout库中的函数。

0 0
0 16
文章
· 十二月 19, 2023 阅读大约需 1 分钟
第四十章 其他特殊主题 - 处理导入时意外的元素和属性

第四十章 其他特殊主题 - 处理导入时意外的元素和属性

处理导入时意外的元素和属性

由于源 XML 文档可能包含意外的元素和属性,因此支持 XML 的类提供两个参数来指定导入此类文档时如何反应。例如,考虑以下类定义:

Class GXML.TestImportParms.Person Extends (%Persistent,%XML.Adaptor) 
{

Property Name As %Name [ Required ];
Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h") [ Required ];
}

另请考虑以下 XML 文档:

0 0
0 13
文章
· 十二月 18, 2023 阅读大约需 2 分钟
第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出

第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出

当在顶层映射 IRIS 对象(而不是作为另一个对象的属性)时,其内部 IDOID 和全局唯一 ID 不能用作对象属性,因此不会映射这些 ID。但是,在某些情况下,可能希望使用对象 ID 作为唯一标识符。然后,例如,可以在更新存储的对象之前将传入(已更改)的对象与相应的存储对象进行匹配。

IRIS XML 支持提供了多个帮助程序类,可用于将 IRIS 对象标识符投影到 XML 文档: %XML.Id 中(对于内部 ID)、%XML.Oid(对于 ``)和 %XML.GUID(用于全局唯一 ID)。

0 0
0 16
文章
· 十二月 18, 2023 阅读大约需 2 分钟
镜像备机长时间宕机的处理

最近在多家现场都遇到了备机长时间宕机导致镜像日志写满磁盘的问题。在这里我将对这个问题发生的原因、发生后的处理、和如何预防这类问题发生进行一些讨论。

问题的发生一般始于一些原因导致的主机(如,01)宕机,进而触发镜像的主备切换。切换后备机(如,02)成为主机,并无缝接管业务。由于业务不受影响,如果不注意监控环境的话,很可能现场技术人员长时间都注意不到镜像的备机(01)是宕机状态。

备机长时间宕机会导致如下问题:

1. 这种情况下如果主机(02)再次遇到问题宕机,镜像将无法发挥其高可用性,无法保持业务稳定运行。

2. 主机(02)产生的镜像日志将无法同步到备机(01)。未同步的日志将一直被保存在主机(02)上不被删除。长此以往镜像日志磁盘将被写满,同样导致主机(02)宕机。

问题发现时切记不要手动从文件夹直接删除主机(02)上的镜像日志。未同步的日志一旦手动删除,镜像将无法自动同步,需要重做主备镜像。

问题发现时如果主机(02)还未宕机,此时尝试解决备机(01)问题,启动备机(01),等待镜像自动同步即可。同步完成之后镜像日志将可以被定时任务定时清除。如果遇到较为复杂的情况,现场请第一时间联系您的软件供应商,软件供应商将协同系联软件全球响应中心一起来解决您遇到的具体问题。

3 0
0 54
文章
· 十二月 17, 2023 阅读大约需 2 分钟
第三十八章 其他特殊主题

第三十八章 其他特殊主题

类和属性参数

  • XMLNAME
  • XMLSEQUENCE
  • XMLUNSWIZZLE
  • XMLPREFIX
  • XMLIGNOREINVALIDTAG
  • XMLIGNOREINVALIDATTRIBUTE

控制元素的关闭

XML 中,仅包含属性的元素可以用以下任一方式表示:

0 0
0 18
文章
· 十二月 16, 2023 阅读大约需 4 分钟
第三十七章 XML 模式的高级选项 - 超类如何表示为类型

第三十七章 XML 模式的高级选项 - 超类如何表示为类型

超类如何表示为类型

如果需要 XML 架构来显示特定的类型层次结构,则需要了解映射如何解释 IRIS 类层次结构。

类层次结构代表了有意义的数据组织等。该层次结构尽可能地反映在相应的 XML 类型定义中。

例如,假设有以下类:
- 名为 Base 的类,定义了三个公共属性(Property1Property2Property3)。
- 名为 Addition1 的类,它扩展 Baseand 并定义一个附加公共属性 (Addition1)。
- 名为 Addition2 的类,它扩展 Addition1 并定义一个附加公共属性 (Addition2)。

0 0
0 18
文章
· 十二月 14, 2023 阅读大约需 2 分钟
第三十五章 XML 模式的高级选项 - 创建子类型的选择列表

第三十五章 XML 模式的高级选项 - 创建子类型的选择列表

创建子类型的选择列表

根据 XML Schema 规范,复杂类型可以由类型(特别是相关类型)的选择列表组成。假设我们希望架构允许使用 <Person>, <Patient>, or <Employee> 元素,而不是 <Person> 元素。要定义这样的架构,我们会将 Person 属性的 XMLTYPECONSTRAINT 属性参数设置为等于“CHOICE”,如下所示:

0 0
0 19
文章
· 十二月 13, 2023 阅读大约需 2 分钟
第三十四章 XML 模式的高级选项

第三十四章 XML 模式的高级选项

类和属性参数

  • XMLTYPECONSTRAINT

  • XMLINCLUDEINLIST

  • XMLINHERITANCE

自动创建子类的类型

当为一个类定义 XML 投影时,它的所有子类都会自动映射到单独的类型,所有这些类型都使用超类作为基类型。这意味着无论何时使用超类型,都可以使用其中一种子类型。还可以使用子类型在 XML 模式中定义选择列表或替换组。

请注意,可以为抽象类定义 XML 映射;该类在任何派生类模式中都显示为基类型,尽管它是抽象的,无法实例化。

考虑一个例子。我们从一个简单的 Person 类开始:

0 0
0 19

第三十三章 控制到 XML 模式的映射 - 其他支持 XML 的类到 XML 类型的映射

其他支持 XML 的类到 XML 类型的映射

对于支持 XML 的类或基于支持 XML 的类的属性,XML 类型按如下方式确定: 如果该类具有 XMLTYPE 参数的值,则该值将用作类型名称。否则,短类名将被视为 XML 类型名。

例如,考虑以下类定义:

0 0
0 18
文章
· 十二月 11, 2023 阅读大约需 1 分钟
第三十二章 控制到 XML 模式的映射 - %ListOfObjects

第三十二章 控制到 XML 模式的映射 - %ListOfObjects

本部分显示了从支持 XML 的类生成的 XML架构的一部分,该类包含定义为 %ListOfObjects 的属性。例如,考虑以下属性定义:

Property PropName As list Of %Integer(XMLITEMNAME = "MyXmlItemName");

如果此属性位于名为 Test.DemoObjList1 的启用 XML 的类中,则该类的 XML 架构包含以下内容:

0 0
0 16
文章
· 十二月 10, 2023 阅读大约需 2 分钟
第三十一章 控制到 XML 模式的映射 - %ListOfDataTypes

第三十一章 控制到 XML 模式的映射 - %ListOfDataTypes

%ListOfDataTypes

本部分显示从支持 XML 的类生成的 XML 架构的一部分,该类包含中定义为%ListOfDataTypes 的属性。例如,考虑以下属性定义:

Property PropName As %ListOfDataTypes(XMLITEMNAME = "MyXmlItemName");

如果此属性位于名为 Test.DemoList 的启用 XML 的类中,则该类的 XML 架构包含以下内容:

0 0
0 18
文章
· 十二月 9, 2023 阅读大约需 2 分钟
第三十章 控制到 XML 模式的映射 - Array of Classname

第三十章 控制到 XML 模式的映射 - Array of Classname

Array of Classname

本部分显示了从启用 XML 的类生成的XML 架构的一部分,此时该类包含定义为类名数组的属性。例如,考虑以下属性定义:

Property PropName As array Of %Integer(XMLITEMNAME = "MyXmlItemName", XMLKEYNAME = "MyXmlKeyName");

如果此属性位于名为 Test.DemoArray1 的启用 XML 的类中,则该类的 XML 架构包含以下内容:

0 0
0 17
文章
· 十二月 7, 2023 阅读大约需 5 分钟
通用TCP业务服务和业务操作

TCP作为OSI 7层的传输层的通信协议,其使用上不像更上层的通信协议那么方便,因为TCP操作的不是数据包,它操作的是数据流。因此有多种将TCP数据流“解释”为数据包(消息)的方法。

InterSystems IRIS提供了多种TCP适配器,用于不同的“解释”,例如EnsLib.TCP.FramedInboundAdapter使用特定的首尾字符做为分隔、EnsLib.TCP.CountedInboundAdapter使用固定的长度进行分隔...

同时,InterSystems IRIS提供了多种开箱即用的TCP业务服务和业务操作,方便接入和发送TCP数据。这里我们介绍常见的使用特定的首尾字符做为分隔的TCP业务服务和业务操作。

1 0
0 72

2023年11月24日19:00-20:00,InterSystems开发者社区举办了“InterSystems第二届技术征文大赛线上分享会”,邀请参赛作者进行了作品分享&点评,此次分享吸引了66位开发者参会。

未参加此次会议的社区成员,可通过以下链接了解此次Meetup详情(请注意,您需要登录后申请查看视频)

0 0
0 33
文章
· 十二月 4, 2023 阅读大约需 8 分钟
通用RESTful 业务服务和业务操作

1. 通用RESTful业务服务和业务操作


InterSystems IRIS 提供了一组通用的RESTful 业务服务和业务操作类,用户无需开发自定义的业务服务和业务操作类,就可以直接向外提供RESTful服务和调用外部的RESTful API。

0 0
1 70

我创建了一个类,里面有个属性OPDT 是 %Library.DateTime类型的,类继承了%XML.Adaptor,我是用 d obj.XMLExportToString(.xml) 导出为xml后,OPDT的值是 2023-11-28T13:57:26 这样的,我需要的值是 2023-11-28 13:57:26 这样的,T需要换成“ ”,有没有什么方式能设置导出的数据格式?

0 1
0 41

我们继续使用FHIR适配器的示例,在本文中,我们将回顾如何在我们的IRIS实例中进行配置以及安装的结果。

配置项目的步骤与官方文档中所示的相同,您可以直接在此处查看。好吧,让我们开始工作吧!

安装

正如您在与本文相关的项目中看到的,我们将 IRIS 实例部署在 Docker 中,因此初始配置的主要部分将在 Dockerfile 中完成。别担心,我们不会详细介绍 Docker 配置。

要安装 FHIR 适配器,我们只需:

1 0
0 52

想必大家都听说过 FHIR 是解决系统间所有互操作性和兼容性问题的灵丹妙药和解决方案。就在这里,我们可以看到他手持一份 FHIR 资源,愉快地享受其中:

但对于我们这些普通人,我们将做一个小小的介绍。

什么是 FHIR?

让我们直接进入定义:FHIR(Fast Healthcare Interoperability Resource)是由HL7(Health Level 7标准组)开发的一种互操作性标准,旨在实现医疗行业中不同系统之间的电子医疗数据交换。

FHIR 从根本上基于哪些技术?

主要是通过 REST API 和 JSON 格式进行 HTTP 调用的结合(尽管它可以是 XML 以及我们可用的任何其他通信,具体根据我们的使用情况)。

1 0
0 51

🏆InterSystems开发者社区中文版第二届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章)获奖名单已公布!

11月24日19:00-20:00,InterSystems开发者社区将举办“InterSystems第二届技术征文大赛线上分享会”,邀请参赛作者进行作品分享&点评、探讨热门话题,同期还将送出多份幸运奖品,欢迎参会!

0 0
0 84

大家好!

终于到了宣布获奖名单的时间!

🏆InterSystems开发者社区中文版第二届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章)已经结束,此次大赛收到了来自8名参赛者的12篇参赛文章,最终进入评选的文章为10篇,感谢大家的积极参与!

以下是获奖名单!

专家提名奖:活动期间发布文章且成功参赛后,由InterSystems专家评选得出

0 0
0 118

IRISHealth以其完备且系统化的安全特性在医疗行业的数据库中独树一帜,这些特性包括安全认证、安全授权、安全审计、数据加密以及安全配置。其中数据传输无疑是其中最重要的一环。为此,IRISHealth采用了SSL/TLS技术来对传输的数据进行加密,有效保障了从IRIS数据平台的超级服务数据传输、Telnet服务数据传输、java/.net/Studio客户端的访问数据传输、MIRROR与DB的数据传输,到DBServer和ECPApp之间的数据传输的安全性。


本文是在两个IRISHealth2021实例之间进行ECP服务通信的示例,一个作为DBServer,一个作为ECPApp,两个实例之间通过使用SSL/TLS的ECP协议进行TCP的加密传输通信。

1.IRIS的DB和ECP环境:

DBServer

ECPApp

14 4
3 175
文章
· 十一月 23, 2023 阅读大约需 2 分钟
使用支持SSL的ODBC连接IRIS数据库
  • 前言

随着网络安全日益被重视,特别是等级保护制度的大环境下,SSL加密传输越来越被重视,本文介绍如何使用支持SSL的ODBC连接IRIS数据库。

数据库版本:IRISHealth-2023.1

  • 1. 服务器端配置

1)新建SSL服务器配置。

2)开启超级端口的SSL支持,这里我们选择启用即可,如所有超级端口的连接都支持SSL可选要求。

11 5
3 182

大家好!

🏆InterSystems开发者社区中文版第二届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章即将步入尾声!“征文&投票”环节即将结束(截至11月23日23:59)!来抓住最后的时间为你喜欢的作品投票吧!

11月24日19:00-20:00,InterSystems开发者社区将举办“InterSystems第二届技术征文大赛线上分享会”,邀请参赛作者进行作品分享&点评、探讨热门话题,同期还将送出各类奖品,欢迎参会!

会议主题:InterSystems开发者社区第二届技术征文大赛线上分享会
会议时间:2023/11/24 19:00-20:00 (GMT+08:00) 中国标准时间 - 北京

0 0
0 17