#InterSystems IRIS

0 关注者 · 930 帖子

InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。

文章 Weiwei Gu · 八月 4, 2023 3m read

InterSystems IRIS 目前将类限制为 999 个属性。

但是,如果您需要为每个对象存储更多数据该怎么办?

本文将回答这个问题(附加了社区 Python 网关的客串以及如何将广泛的数据集传输到 Python 中)。

答案其实很简单 - InterSystems IRIS 目前将类限制为 999 个属性,但不限制 999 个基元(primitives)。 InterSystems IRIS 中的属性可以是具有 999 个属性的对象等等 - 该限制很容易被忽略。

0
0 221
InterSystems 官方 Claire Zheng · 八月 3, 2023

InterSystems 已纠正了两个缺陷。

第一个缺陷可能导致 ECP 应用程序服务器挂起。此缺陷仅与 ARM 和 IBM Power 处理器相关;存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2022.1.22022.1.3中。该修复被标识为 DP-423661。该缺陷将在所有未来版本中得到解决。

在极少数情况下,第二个缺陷可能会导致dejournaling挂起。此缺陷存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2020.42021.x2022.x2023.1中。该修复被标识为 DP-423505。该缺陷将在所有未来版本中得到解决,并已在2023.1.1中得到纠正。

InterSystems 已发布版本2022.1.3的更新发行版,以便快速提供这些修复。相关的版本标识符是:

  • 原发布:2022.1.3.668.0
  • 更新发布:2022.1.3.670.1

这些修复也可以通过 Ad hoc 分发获得。

如果您对此警报有任何疑问,请联系 全球响应中心

0
0 179
问题 e Neo · 七月 31, 2023

vscode通过插件:intersystems Server Manager 连接测试开发环境,配置连接后无法使用

配置参数:

    "intersystems.servers": {

        "local": {

            "webServer": {

                "scheme": "http",

                "host": "127.0.0.1",

                "port": 52773

            },

        "test": {

            "webServer": {

                "scheme": "https",

                "host": "xxx.xxx.xxx.xxx",

                "port": 2443

            },

            "description": "test",

            "username": "_system"

        }

错误信息:

Server Could not be accessed by ‘“_system”

1
1 298
文章 Lilian Huang · 八月 1, 2023 5m read

VR ICU® 是 InterSystems FHIR 创新孵化器 Caelestinus 的参与者。这篇文章将向您介绍我们利用 InterSystems FHIR Server 为医疗保健提供的 VR 解决方案。

我们是一家技术初创企业虚拟实验室,利用先进的 VR/AR 技术开发解决方案。VR ICU® 是一个针对重症监护室医务人员的培训平台,是在 Covid 时代为满足医院需求而创建的。

与InterSystems合作的优势

我们的 VR ICU® 解决方案符合实践需求,是与医院合作开发的。

除了技术解决方案和技能学习本身,记录培训课程、培训进度和成功率对于医院或麻醉学和重症监护部门的有效管理也至关重要。医务长可以通过了解谁在何时接受了培训,清楚地掌握能够在重症监护室使用设备的人员数量,从而有效地对他们进行培训,以保持技能、有控制地规划人员技能储备并提高他们的能力。

在这方面,与 InterSystems 的合作对我们来说至关重要,它使我们能够在应用程序中存储每次培训期间的数据。目前,我们会记录参与者的姓名、培训日期和时长、培训类型、设备类型、错误数量和类型,必要时还会记录培训成功完成的信息。

如何使用?用户登录应用程序并选择一个账户。

根据 HL7 标准,该账户作为从业人员存在于数据库的资源下。

0
0 250
文章 Nicky Zhu · 四月 27, 2021 6m read

根据IDC的报道,超过80%的信息是基于NoSQL的,尤其是文本文件。当数字服务或应用程序不能处理所有这些信息时,企业就会遭受损失。为了面对这一挑战,可以使用OCR技术。OCR使用机器学习和/或训练的图像模式将图像像素转化为文本。这一点很重要,因为许多文件被扫描成PDF格式的图像,或者许多文件中包含有文本的图像。因此,OCR是一个重要的步骤,可以从文件中获得所有可能的数据。

为了实现OCR,可以使用开源解决方案Google Tesseract,这是Python和Java社区中最流行的解决方案。Tesseract支持100多个习语,并且可以用新的模型进行训练以识别车牌、验证码等等。Tesseract是在C++中创建的,可以通过Java套用Tess4J构成一个中介层来使用它。下面的代码展示了调用过程。

 

private String extractTextFromImage(File tempFilethrows TesseractException {


 

        ITesseract tesseract = new Tesseract();

        tesseract.setDatapath("/usr/share/tessdata/"); //directory to trained models

        tesseract.
2
0 502
文章 Kelly Huang · 七月 12, 2023 4m read

在本文中,我将分享我们在 2023 年全球峰会技术交流室中提出的主题。我和@Rochael Ribeiro  

借此机会,我们就以下话题进行探讨:

  • 用于快速 API 的开放交换工具
  • 开放API规范
  • 传统与快速 Api 开发
  • 复合 API(互操作性)
  • 规范优先或 API 优先方法
  • API 治理和监控
  • 演示(视频)

用于快速 API 的开放交换工具

当我们谈论快速现代 API 开发(Rest / json)时,我们将使用两个 Intersystems Open Exchange 工具:

第一个是用于快速开发 API 的框架,我们将在本文中详细介绍。

https://openexchange.intersystems.com/package/IRIS-apiPub

第二种是使用 Swagger 作为用户界面,用于 IRIS 平台上开发的 Rest API 的规范和文档,以及它们的使用/执行。其运行的基础是开放 API 规范 (OAS) 标准,如下所述:

https://openexchange.intersystems.com/package/iris-web-swagger-ui

 

什么是开放 API 规范 (OAS)?

它是全球范围内用于定义、记录和使用 API 的标准。在大多数情况下,API 甚至在实现之前就已经设计好了。我将在下一个主题中详细讨论它。

0
0 193
文章 姚 鑫 · 七月 8, 2023 3m read

第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接

在目标是动态的情况下渲染连接

当用户选择业务主机时,管理门户会自动显示与给定业务主机之间的连接。例如:

为此,IRIS 读取业务主机的配置设置并使用它们。

但是,如果业务服务在运行时动态托管其目标, IRIS 将无法自动显示此类连接。在这种情况下,要显示此类连接,请实施 OnGetConnections() 回调方法。 IRIS 在呈现配置图时自动调用此方法(默认情况下不执行任何操作)。

OnGetConnections() 具有以下签名:

ClassMethod OnGetConnections(Output pArray As %String, item As Ens.Config.Item) [ CodeMode = generator ]

其中参数如下:

  • pArray — 一个多维数组,其下标是此业务服务向其发送消息的项目的配置名称。例如,要向名为 ABCDEF 的业务主机发送消息,您的代码可以按如下方式设置 pArray
 set pArray("ABC")=""
 set pArray("DEF")=""
  • item — Ens.Config.Item对象表示此业务服务。
0
0 118
文章 Zhang Fatong · 七月 5, 2023 2m read

预测平台入场服务器配置

平台服务器入场配置预测应用,以java连接iris并使用其IntegratedML技术完成对医院门诊量,服务数,消息数,消息保存时间等数据分析,可以在医院集成平台入场前,对医院入场平台所需的服务器配置进行预测,为客户提供便利。

模拟数据

平台服务器入场配置预测应用 使用IntegratedML技术,通过JDBC连接IRIS,并可使用业务流程流转消息。先导入数据,然后初始化模型,对模型进行训练,然后输入相应的条件对服务器配置进行预测。 ImageImageImageImage

操作步骤

    1. 在IRIS中导入代码并进行编译

Image

    1. 启动 Production

Image

  • 3.运行jar包(修改配置文件)
  1. 输入正确的IP端口和命名空间名称 ImageImage

Image

6
0 294
文章 Shanshan Yu · 七月 5, 2023 2m read

基于InterSystems的集成ML技术和Dashboard,根据上传的CSV文件自动生成相关预测和BI页面。前端和后端在Vue和Iris中完成,使用户可以通过简单的操作生成所需的数据预测和分析页面,并根据这些页面做出决策。

# ZPM 安装

zpm:USER>install IntegratedMLandDashboardSample

# 部署流程

使用或创建新的命名空间

将代码导入相应的命名空间

在终端中执行:

Do # # class (customizemashinelerningandaanalysis. Util. Tool) Deployment()

前端是Vue文件夹下的dist文件夹。在使用它之前,请打开dist-static config.js并修改后端服务器要使用的IP和端口。然后您需要将iframeUrl的测试修改为“Analysis”+后端使用的命名空间,例如“AnalysisUSER”

然后启动前端文件(可以将dist文件夹放在tomcat中开始使用)

访问地址为:

Ip: port/dist

image

# 如何使用

以women.csv为例

1.选择要上传的CSV文件,CSV文件名和数据列名不得包含空格等其他符号

2.填写需要预测的列名,如“高度”

3.单击“确定”按钮,等待界面返回

成功返回后,刷新当前页面,然后单击“模型列表”下的辅助选项。

1
0 180
文章 Tete Zhang · 七月 4, 2023 3m read

本文讨论了在使用或维护InterSystems产品中遇到问题时,试图确定问题时可能用到的思路和工具。

一般故障排除

确定问题发生的地点和时间

  • 问题是什么时候开始的?多久发生一次?
  • 问题首先出现在哪里?
  • 问题在什么条件下会被触发?

审查日志中的警告、错误和警报

以下日志可能包含有关该问题的有用信息。可以尝试在以下日志中寻找问题开始前后的警告或报错。

  • 检查 messages.log(IRIS)或者 cconsole.log(Caché and Ensemble)
    • 通过文件系统(<install-dir>/mgr/messages.log)访问messages.log文件,或者
    • 通过管理门户(系统操作>系统日志>Messages Log)访问文件内容
  • 检查production事件日志 (详细信息请参见文档
  • 查看应用程序错误日志 (详细信息请参见文档
  • 查看Web Gateway/CSP Gateway日志
  • 查看网络服务器(IIS/Apache)日志

检查实例是否可以访问足够的存储空间

  • 检查文件系统剩余空间(推荐设置操作系统层级的存储空间低告警)
  • 检查数据库剩余空间
    • 通过管理门户(系统操作>数据库>Freespace View)查看数据库文件内剩余空间百分比
  • 检查Journal日志空间

检查CPU活动

  • 服务器的负载是否在正常范围内?
0
0 271
文章 Michael Lei · 七月 3, 2023 4m read

图像

你好社区
在本文中,我将介绍我的应用程序irisChatGPT ,它是基于LangChain Framework构建的。
首先,让我们对框架进行一个简单的概述。

全世界都在谈论ChatGPT以及大型语言模型 (LLM) 如何变得如此强大,并且表现超出预期,提供类似人类的对话。这只是将其应用于每个企业和每个领域的开始!

0
0 431
文章 姚 鑫 · 六月 29, 2023 3m read

第四十三章 开发Productions - ObjectScript Productions - 使用记录映射器 - 编辑记录映射字段和组合

编辑记录映射字段和组合

Record Mapper 左侧面板显示 Record Map 中定义的字段的摘要。如果您选择一个字段,右侧面板将访问字段属性。例如:

记录映射由一系列字段和组合组成。每个组合由一系列字段和组合组成。 Make CompositeMake Field 按钮在复合字段和数据字段之间切换。对于复合字段,只需指定名称和指示字段为必填项的标志。单击记录映射上的绿色加号图标以将字段或组合添加到顶层。单击组合的加号允许向其添加字段或组合。

在将字段添加到记录映射时,可以打开示例文件以查看其数据如何映射到您正在创建的记录。

对于定界记录映射,复合字段中的字段具有不同的分隔符。例如,在记录中,顶级字段由逗号分隔,但在组合中,字段由分号分隔。对于固定宽度的记录映射,复合字段有助于在概念上组织数据,但不会影响输入消息的处理。

当在 Record Mapper 中创建复合字段时,复合字段将默认名称设置为与复合结构匹配的限定名称。限定的字段名称确定生成的记录类中字段的结构。如果将字段名称修改为具有不同的限定名称,则记录映射中复合字段的级别独立于生成的记录类中字段的结构

对于每个数据字段,输入以下属性:

Name

字段名称。

0
0 160
文章 Weiwei Gu · 六月 28, 2023 5m read

1. 区块链

当我写这篇文章时,比特币的价格还不到其成功顶峰时期的五分之一。因此,当我开始向某人讲述我的区块链经历时,我听到的第一句话是毫不掩饰的怀疑:“现在谁需要这个区块链东西?”

没错,区块链炒作已经减弱。然而,它所基于的技术将继续存在并将继续在特定领域使用。互联网通常提供大量描述这些技术的一般用法的材料

0
0 174
文章 姚 鑫 · 六月 28, 2023 4m read

第四十二章 开发Productions - ObjectScript Productions - 使用记录映射器 - 通用控制字符

通用控制字符

在记录映射中,可以在多个位置使用文字控制字符和可打印字符。例如,可以指定制表符(常用控制字符)和逗号(可打印字符)作为分隔符。还可以将控制字符指定为填充字符或记录终止符之一。要在这些上下文之一中指定控制字符,必须为该字符指定十六进制转义序列。如果选择空格或制表符作为填充字符,或选择 CRLF(回车后跟换行符)、CRLF 作为 Record Mapper 中的记录终止符,管理门户会自动生成十六进制表示。如果指定另一个控制字符作为填充字符或记录终止符或任何控制字符作为分隔符,则必须在相应的表单域中输入十六进制表示。下表列出了常用控制字符的十六进制转义序列:

Character Hexadecimal representation
Tab \x09
Line feed \x0A
Carriage return \x0D
Space \x20

注意:如果在 RecordMap 中指定了记录终止符,则传入消息必须与记录终止符完全匹配。例如,如果指定 CRLF (\x0D\x0A),则传入消息记录必须与该序列匹配。

编辑记录映射属性

无论是从向导生成的映射开始输入新记录映射的属性,还是编辑现有映射,过程都是相同的。

0
0 150
文章 姚 鑫 · 六月 25, 2023 2m read

第三十九章 开发Productions - ObjectScript Productions - Defining Business Metrics - 以编程方式设置和获取值

以编程方式设置和获取值

在某些情况下,可能需要以编程方式访问指标属性。例如,可能希望业务流程直接读取或设置度量属性。为此,请在新选项卡中使用 Ens.BusinessMetricOpensGetMetric()SetMetric() 类方法。

使用 GetMetric() 方法

GetMetric() 类方法从业务指标缓存中读取指定指标属性的当前值。按如下方式调用此方法:

  Set value = ##class(Ens.BusinessMetric).GetMetric(metric,property)

其中 metric 是业务指标的名称(配置名称,而不是类名),property 是指标属性的名称。如果 GetMetric() 无法读取指定值,它会返回一个空字符串。

要从多维指标属性中读取值,有第三个可选参数,用于指定要读取属性的哪个子节点。例如:

  Set value(1) = ##class(Ens.BusinessMetric).GetMetric(metric,property,1)

使用 SetMetric() 方法

SetMetric() 类方法设置业务指标缓存中指定指标属性的值。

0
0 102
文章 Michael Lei · 六月 24, 2023 8m read

 

众所周知,人工智能的世界已经到来,每个人都想利用它为自己谋取利益。

有许多平台通过订阅或私人免费提供人工智能服务。然而,由于在计算领域产生的大量“噪音”而脱颖而出的是 Open AI,这主要归功于其最著名的服务:ChatGPT 和 DALL-E。

<--break->什么是Open AI?

Open AI 是一个非营利性人工智能研究实验室,由 Sam Altman、Ilya Sutskever、Greg Brockman、Wojciech Zaremba、Elon Musk、John Schulman 和 Andrej Karpathy 于 2015 年发起,旨在促进和开发友好的人工智能,造福于人类所有的。

自成立以来,这些人已经发布了一些令人着迷的产品,如果用于良好的目的,可能会成为真正强大的工具。然而,与任何其他新技术一样,它们构成了可能被用来犯罪或作恶的威胁。

我决定测试 ChatGPT 服务,并询问它人工智能的定义是什么。我收到的答案是在互联网上找到的概念的积累,并以人类会回应的方式进行了总结。

简而言之,人工智能只能使用用于训练它的信息进行回复。利用其内部算法和训练期间输入的数据,它可以撰写文章、诗歌,甚至计算机代码片段。

人工智能将对这个行业产生重大影响,并最终彻底改变一切……。也许对人工智能将如何影响我们的未来的期望被夸大了,所以我们应该开始为了共同利益而正确地使用它。

0
1 402
文章 Hao Ma · 六月 19, 2023 5m read

上篇文章IRIS, Caché监控指导 - 警告和告警 发出后收到要求介绍一下发送SNMP通知的具体操作,这里介绍一下。

我省去了SNMP的原理,这个有需要的可以网上查找。这里只做一个配置的操作:测试怎么从一个Windows上安装的IRIS实例发送IRIS Alert给另一台Linux服务器。

第一步: 配置 Windows SNMP

因为安全原因,Windows 10不再默认安装中启动SNMP,用户需要手工安装SNMP启动服务。以下两个文章是古老的Window 2003和新的Windows 10中配置SNMP的安装,给各位做个参考。

简单的总结一下:Windows系统中有两个服务:

  • SNMP Service:使简单网络管理协议(SNMP)请求能够在此计算机上被处理。如果此服务停止,计算机将不能处理 SNMP 请求。如果此服务被禁用,所有明确依赖它的服务都将不能启动。
  • SNMP Trap:接收本地或远程简单网络管理协议 (SNMP) 代理程序生成的陷阱消息并将消息转发到此计算机上运行的 SNMP 管理程序。
0
1 274
文章 姚 鑫 · 六月 16, 2023 4m read

第五十九章 镜像中断程序 - 灾难恢复程序

灾难恢复程序

如异步镜像成员中所述,灾难恢复 (DR) 异步成员维护镜像数据库的只读副本,从而可以在需要时将 DR 异步提升为故障转移成员。将 DR 异步成员提升为故障转移成员中描述了提升 DR 异步的过程。本节讨论三种可以使用 DR 异步提升的场景:

  • 在灾难期间手动故障转移到提升的 DR 异步
  • 计划故障转移到提升的 DR 异步
  • 使用提升的 DR 异步临时替换故障转移成员

在本节的过程中, IRIS A 是原始的主要故障转移成员, IRIS B 是原始备份,而 IRIS C 是要提升的 DR 异步。

在灾难期间手动故障转移到提升的 DR 异步

当镜像没有正常运行的故障转移成员时,可以手动故障转移到提升的 DR 异步。以下过程涵盖了可以选择此选项的场景:

  • 没有附加日志数据的 DR 提升和手动故障转移
  • 使用主 ISCAgent 的日志数据进行 DR 提升和手动故障转移
  • 使用来自日志文件的日志数据进行 DR 提升和手动故障转移

注意:如果无法确认主要故障转移成员 IRIS 实例确实已关闭,并且该实例有可能变得可用,请不要手动故障转移到另一个镜像成员。如果手动进行故障转移并且原始主节点变为可用,则两个故障转移成员将同时充当主节点。

0
1 154
文章 Michael Lei · 六月 14, 2023 3m read

本文是 SqlDatabaseChain 的简单快速入门(我所做的)。

希望大家会感兴趣。

非常感谢:

sqlalchemy-iris 作者@Dmitry Konnov Maslennikov

您的项目使我的试验变得可能。

文章脚本使用 openai API,因此请注意不要在外部共享您不打算共享的表信息和记录。

如果需要,可以插入本地模型。

创建一个新的虚拟环境

mkdir chainsql

cd chainsql

python -m venv .

scripts\activate

pip install langchain

pip install wget

# Need to connect to IRIS so installing a fresh python driver
python -c "import wget;url='https://raw.githubusercontent.com/intersystems-community/iris-driver-distribution/main/DB-API/intersystems_irispython-3.2.0-py3-none-any.whl';wget.
0
1 431
InterSystems 官方 Claire Zheng · 六月 14, 2023

InterSystems 已纠正导致进程内存使用量增加的缺陷。

具体来说,在对局部变量执行$Order$Query  或 Merge时,会出现本地进程分区内存消耗增加的问题。虽然这对大多数运行环境没有不利影响,但支持大量进程或严格限制每个进程最大内存使用的环境可能会受到影响。某些进程可能会遇到<STORE> 错误

该缺陷存在于2023.1.0.229.0中,但它被重新发布为2023.1.0.235.1,并包含了修复程序,以加快修正,而无需客户等待维护版本。

此缺陷的更正标识为 DP-423127 和 DP-423237。这些将包含在所有未来版本中。

该缺陷出现在 InterSystems IRIS ® 、InterSystems IRIS for Health ™ 和HealthShare ® Health Connect 的版本 2022.2、2022.3 和 2023.1(内部版本 229)中。如果您运行的是这些版本之一,我们建议升级到 2023.1(内部版本 235)。

此修复也可通过 Ad hoc 分发获得。

如果您对此警报有任何疑问,请联系全球响应中心

0
1 179
文章 Hao Ma · 六月 13, 2023 13m read

在维护IRIS的镜像前,管理员需要清楚的了解以下一些概念:

Mirror的切换模式(failover mode)

切换模式在镜像监视器里被翻译成”故障转移模式“。 有两种模式:

  • Agent Controlled模式:
  • Arbiter Controlled模式:(页面上翻译为“仲裁程序受控制”)

通常情况,生产环境的镜像是安装了arbiter(仲裁者)的。Mirror启动时,在还没有连接上arbiter的时候,自动进入Agent-Controlled模式。而后当两台机器,主机,备机都连通了Arbiter,会保持在这个模式。

  • 主备之间有连接;
  • 又都连到arbiter;
  • backup is active,

满足上面的条件,就进入arbiter controlled mode。而如果主备的任一方,失去了和arbiter的连接,或者备用侧丢了active, 开始尝试连接另一方,退回到agent-controlled模式。

Mirror同步成员的状态

Mirror Member Journal Transfer and Dejournaling Status. 请注意,这里面有两个概念:一个是Mirror成员的状态,一个是Journal传输和Dejournaling的状态。下面的图中是3个字段: STATUS, Journal传输,Dejournaling.

image-20230522112042308

STATUS

镜像成员的状态。

0
1 717
文章 姚 鑫 · 六月 8, 2023 2m read

第二十九章 开发Productions - ObjectScript Productions - 定义业务操作 - 定义消息处理程序方法

定义消息处理程序方法

当创建业务操作类时,通常最大的任务是编写用于此适配器的消息处理程序,即接收生产消息的方法,然后调用适配器的方法以便与生产之外的目标进行通信。

每个消息处理程序方法都应具有以下签名:

Method Sample(pReq As RequestClass, Output pResp As ResponseClass) As %Status

这里Sample是方法名,RequestClass是请求消息类名,ResponseClass是响应消息类名。

通常,该方法应执行以下部分或全部操作:

  1. 可选地设置业务操作类的属性(在任何适当的时间)。请参阅业务运营属性。
  2. 检查输入对象。
  3. 创建响应类的实例。
  4. 调用适配器的适用方法。这些方法可通过业务操作的 Adapter 属性使用。例如:
    Set tSc=..Adapter.SendMail(email,.pf)

在这些步骤之后讨论此方法。

或者,要将消息发送到Productions中的目标,请参阅将消息发送到Productions中的目标。

  1. 检查响应。
  2. 使用响应中的信息创建响应消息(Ens.Response 在的实例),该方法将其作为输出返回。
  3. 确保设置输出参数 (pOutput)
0
0 90
文章 Michael Lei · 六月 8, 2023 2m read

嗨社区!

想与您分享我在Telegram中使用GPT创建“我自己的”聊天的练习

这个应用需要用到 Open Exchange 上的两个组件:@Nikolay SolovyevTelegram Adapter@Francisco.López1549IRIS Open-AI  

因此,通过此示例,您可以在 Telegram 中使用 ChatGPT 设置自己的聊天。

让我们看看如何让它发挥作用!

0
0 228
公告 Michael Lei · 六月 8, 2023

如果您已经使用%UnitTest 框架构建了单元测试,或者正在考虑这样做,请查看InterSystems 测试管理器Test Manager

无需离开 VS Code,您现在可以浏览单元测试、运行或调试它们,并查看之前的运行结果。

InterSystems 测试管理器适用于 ObjectScript 扩展支持的两种源代码位置范例。您的单元测试类可以在 VS Code 的本地文件系统(“客户端编辑”范例)或服务器命名空间(“服务器端编辑”)中掌握。在这两种情况下,实际测试运行都发生在服务器命名空间中。

欢迎反馈。

0
0 221
文章 Claire Zheng · 六月 6, 2023 1m read

当数据资产已经成为医院的核心资产,如何有效利用数据核心资产,持续挖掘互联互通平台和各种数据中心的价值,成为医疗信息化工作的重中之重。欢迎扫码注册(或点击链接注册)观看多位大咖针对这一话题的解读。

0
0 148
文章 姚 鑫 · 六月 6, 2023 5m read

第二十七章 开发Productions - ObjectScript Productions - 定义业务流程 - 关键原则

关键原则

在开发业务流程时,请考虑以下关键原则:

  • 有时希望使响应对象成为传入请求对象的修改版本,分阶段进行修改可能很有用。但是,不要修改传入的请求对象。而是将其复制到上下文变量(或者,对于自定义业务流程,将数据复制到局部变量)。然后修改副本。
  • 同步发送消息时要小心(只能在自定义业务流程中或 BPL 中的 <code>中执行)。

当业务流程A同步调用业务流程B时,流程A不会继续,直到收到响应。如果进程 A 需要完成对其他进程 (B) 的调用才能完成自身,并且如果这些进程共享参与者作业池,则如果没有空闲的参与者作业来处理被调用的业务流程,则参与者池可能会陷入死锁( B).

发生这种情况是因为在被调用业务流程返回之前,调用业务流程无法完成并释放参与者作业,但被调用业务流程无法执行,因为没有空闲的参与者作业来执行它。

另请注意, IRIS 无法在真正的同步调用期间关闭。

最好使用 SendRequestAsync() 并在 OnResponse() 方法中处理响应消息。如果需要同步调用,可以通过配置被调用的业务流程(B)使用自己的作业池来避免这个问题。

  • 如果单一作业业务流程发出请求并等待响应,则该流程将失去 FIFO 功能。
0
0 113
文章 姚 鑫 · 六月 4, 2023 4m read

第二十四章 开发Productions - ObjectScript Productions - 定义业务服务

本页介绍如何定义业务服务类。

提示: IRIS® 提供使用特定入站适配器的专用业务服务类,其中之一可能适合需要。如果是这样,则不需要编程。有关部分列表,请参阅 Introducing Interoperability Productions 中的连接选项。

介绍

业务服务负责接受来自外部应用程序的请求到 IRIS。下图显示了它是如何工作的:

请注意,此图仅显示数据的输入流,而不是可选响应。

业务服务负责以下活动:

  • 等待特定的外部事件(例如来自应用程序的通知、收到 TCP 消息等)。
  • 读取、解析和验证伴随此类事件的数据,
  • 如果需要,返回对外部应用程序的确认,表明已收到事件。
  • 创建请求消息的实例并将其转发到适当的业务流程或业务操作以进行处理。

业务服务的目的通常是接收数据输入。在大多数情况下,业务服务有一个与之关联的入站适配器。但是,在某些情况下不需要适配器,因为应用程序能够将请求消息发送到服务中,或者因为业务服务已被编写为处理特定类型的外部调用,例如来自复合应用程序的调用。这种类型的业务服务称为无适配器业务服务。

当业务服务具有入站适配器时,它处于数据拉取(而不是推送)模式。在这种模式下,业务服务会定期轮询适配器,看它是否有数据。

0
0 91