清除过滤器
文章
Frank Ma · 五月 24, 2022
让我们假设我们已经将一个数据源连接到Adaptive Analytics,创建了一个项目并在那里添加了表。
现在我们来准备Adaptive Analytics的工作。首先,我们需要从表中选择数据,使其可用于未来的报告。要做到这一点,我们需要从表的列中创建维度。创建维度通常是为了将我们的数据分解成不同的类别,例如用户住在哪个城市,或者购买是在哪个月进行的。然而,没有什么可以阻止我们从数字数据中创建维度,这样我们就可以在Intersystems Reports Designer中对它们应用函数。
创建维度的工具位于界面的右侧,如下图所示。要创建一个新的维度,右击位于 "过滤器 "(Filter)行右侧的汉堡包按钮,选择 "创建维度 "(Create Dimension),如图所示。
将出现以下窗口:
在创建了一个维度后,你可以使其具有层次性。要做到这一点,在左边表格的尺寸上双击鼠标左键,进入层次结构编辑器。
通过点击层次结构旁边的三个点,我们可以在层次结构中创建一个新的维度。在菜单中,维度可以在层次结构中向上/向下移动。由于层次结构的存在,我们可以制作不同层次的数据细节。例如,我们可以指定有多少人从国家、地区、城市访问过该网站。
你可以使用维度来创建表之间的关系。要做到这一点,你需要使用鼠标左键拖动表的所需字段,并将其放到所需的高亮维度中。链接创建窗口将出现。点击保存,我们的连接就准备好了。
除了表中的实际数据外,在Adaptive Analytics中,我们可以根据应用于特定列的各种操作创建测量值(measure)。测量值是数据的数字显示--用户数量、购买金额、观看视频的平均时间,等等。
要创建一个测量值(Measure),我们采用与维度相同的原则,但使用 "测量值 "(Measures)标签。
通过点击汉堡包按钮并选择 "添加测量值"(Add measure),我们调出以下窗口:
'测量值名称'(Measure name)是将要显示在Adaptive Analytics界面的名称。
“查询名称 "(Query name)是将在Intersystems报告设计器中显示的名称。它是根据列名自动生成的,但你也可以自己设置。
'描述'(Description)是指Adaptive Analytics中可见的描述。
”来源 "(Sources)定义了从哪张表和哪一列中获取数据用于测量。"聚合处理 "(Aggregation Handling)显示了我们对数据所使用的函数。函数的列表见下文。默认选择是"汇总"(Sum)。
“数据处理和格式化 "(Data Handling and Formatting)决定了如果测量值与未定义测量值的维度一起使用,将会发生什么。你应该把它留在默认状态。
”在已发布的数据源中的可见性 "(Visibility in Published Data Sources)指定该测量值是否在Intersystems Reports Designer (报告设计器) 中可用。
你可以按维度分割测量值。例如,我们有一个显示平均数的测量值,我们用一年内每天的数据来计算一列的数据。如果我们把这个测量值分布在一个包含月份的维度上,我们将得到每个月的平均值。
要了解连接到Adaptive Analytics的数据中的内容,你可以使用立方体数据预览(Cube Data Preview)工具。你可以通过点击工作区左上角的标签进入它。
通过在一个轴上指定一个维度,在另一个轴上指定一个测量值,我们可以得到每个维度值的测量值。在这种情况下,下面你可以看到表格中每个日期的记录数。
在创建了所有我们需要的测量值、维度和关系之后,现在我们来发布我们的项目。要做到这一点,请到项目主页面左上角的标签上,点击 "发布 "(Publish)按钮,然后在出现的所有窗口上点击 "下一步 "(Next)按钮。
现在我们可以开始注意左边的窗口,这里有两个部分。"草稿"(Draft),我们可以在这里编辑我们的项目,"发布"(Publish),显示项目的发布版本。通过点击 "发布的项目"(Published project),选择立方体(cube),并进入其 "连接 "(Connect)标签。在这里我们可以看到所有必要的数据,以便将Intersystems Reports Designer连接到我们的项目。
我们已经学会了使用Adaptive Analytics所需要的一切。现在我们可以继续在InterSystems Reports Designer中工作了。
我需要提到的是,Intersystems Reports Designer 17.1版需要JDK 16版才能工作,它不能在以后的版本上运行。
首先,你需要安装JDBC连接到Adaptive Analytics的驱动程序。
下面是所需JAR文件的链接。JDBC驱动本身必须与服务器上使用的驱动兼容。我们使用足够老的版本,这样我们就不会因为服务器上的Hive版本比我们的老而导致错误。 为了方便起见,我们将所有必要的库收集在一个档案中,你可以从链接中下载。
https://github.com/teccod/Logi-JDBC-drivers
这些文件必须放在lib文件夹中,路径是LogiReport/Designer/lib。
启动Intersystems Reports Designer并关闭 "开始 "(Start)页面。现在你可以发现自己处于Intersystems Reports Designer的工作区。默认情况下,它会打开用户正在使用的最后一个目录或与Intersystems Reports Designer一起安装的预装目录。
进入 "文件 "(File)部分,点击 "新目录"(New Catalog);填写目录的名称、数据源的名称和文件应保存的位置。
Intersystems Reports Designer为我们创建了一个空的数据源。右键单击它并选择 "新建JDBC连接"(New JDBC connection)。
在 "Driver "一行,我们写上我们的驱动程序--org.apache.hive.jdbc.HiveDriver。
我们从Adaptive Analytics的 "连接 "(Connect)标签的JDBC字段中获取URL,并填写用户名和密码。
连接已经建立,但是项目中还没有立方体被加载到其中。右键单击 "表"(Tables),然后单击 "添加表"(Add tables),选择所需的立方体;用 "添加按钮 "(Add button)添加它们,然后按 "完成 "(Done)来完成这一过程。如果当你选择的数据方案与默认打开的方案不同时,没有显示这些表,请使用 "刷新 "(Refresh)按钮。
在添加了我们所需要的一切之后,我们在项目中拥有了可用的维度和测量值,我们几乎可以开始创建一个报告了。
为了使用可用的数据,我们必须提出一个请求。在这个请求中,我们可以对数据进行必要的限制(不显示取消的订单,不显示当前月份的数据,等等),只取我们需要的那部分数据。
要在 "主页 "(Home)或 "文件 "(File)标签上创建一个查询,选择 "新建 "(New)并选择 "查询"(Query)。我们挑选数据源,填写查询名称,打开我们的源,"表 "(Tables)并使用箭头将必要的表添加到查询中。
我们进入查询编辑器窗口(Query Editor):
在那里,通过设置必要的复选框或勾选*字段旁边的方框,选择必要的或表格中的所有字段。在 "菜单 "(Menu)项中,我们看到了几个功能,其中最有趣的是数据过滤。
在这里我们可以添加条件,这些条件将用SQL语言写在 "SELECT "语句的 "WHERE "部分(或者简单地说,就是切断指定表达式的数据的条件)。在我们的案例中,我们可以写上日期小于某个值,处于某个值的范围内,等等。
在 "查询编辑器 "(Query Editor)中,我们还可以添加计算列来丰富我们的数据。创建时可以使用的函数取决于数据源提供了哪些函数。Adaptive Analytics不提供任何函数,所以我们只能使用内置的Logi函数(这是最简单的数学和逻辑运算符)。
如果查询中有多个表,那么你可以通过用鼠标左键从一个字段拖动链接到另一个字段来设置它们之间的链接。在SQL查询代码中,这些关系将显示为WHERE table_name1.field_name = table_name2.field_name。
当你完成编辑请求后,点击 "确定 "(OK)按钮。如果有必要,你可以再创建几个带有不同过滤器或字段的查询。
现在你已经准备好创建报告了。我们将在下一篇文章中讨论其创建过程。
文章
Weiwei Gu · 三月 14, 2022
大家好!
InterSystems IRIS有一个叫做互操作性Interoperability的菜单。
它提供了轻松创建系统集成的机制(适配器、记录图、BPM、数据转换等),因此不同的系统可以轻松地连接起来。
在数据中继过程中可以包括各种操作,比如:为了连接那些通常不连接的系统,可以根据目的系统的规格要求来接收(或发送)数据。另外,在发送数据之前,可以从另一个系统获取和添加信息。以及,信息可以从数据库(IRIS或其他)获取和更新。
为此,我们会撰写一系列的文章,将讨论以下主题,同时看一下示例代码,以帮助你了解它是如何工作的,以及在用互操作性整合系统时需要什么样的开发。
* How it works 它是如何工作的* What a Production is 什么是Production ?* Message 消息* Component Creation 组件的创建
* 1)Business Operations 业务操作
*2)Business Processes 业务流程*3) Business Services 业务服务
首先,介绍一下我们在这个系列中要使用的案例。
一家经营着一个购物网站的公司,目前正在改变其产品信息的显示顺序,以配合季节的变化。 然而,有些商品无论在什么季节都能卖得很好,而有些商品却在意想不到的时候卖得很好,这与目前改变顺序的显示规则不相符。 因此,我们研究了以当天的温度,而不是按季节来改变产品展示顺序的这种可能性。这就需要调查当时购买产品时的天气温度。 由于外部网络API可用于检查天气信息,我们计划在购买时收集这些天气信息,并在后来的审查数据库中登记。 这很简单,但你需要使用 "外部Web API "来收集信息,并且需要将获得的信息和购买信息结合起来,再在数据库中登记。 具体说明将在以后的相关文章中讨论(不包括创建网站)。也请大家持续关注查看! 至于我们这次使用的 "外部网络API",我们使用的是( OpenWeather的当前天气数据.)
(如果你想尝试一下,你需要注册一个账户并获得一个API ID)。
下面是一个REST客户端的GET请求的结果(我们将在所应用的互操作性机制中去运行这个请求)。

The JSON of the HTTP response is as follows:
```json
{
"coord": {
"lon": 135.5022,
"lat": 34.6937
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "broken clouds",
"icon": "04d"
}
],
"base": "stations",
"main": {
"temp": 17.05,
"feels_like": 13.33,
"temp_min": 16,
"temp_max": 18,
"pressure": 1017,
"humidity": 55
},
"visibility": 10000,
"wind": {
"speed": 4.63,
"deg": 70
},
"clouds": {
"all": 75
},
"dt": 1611635756,
"sys": {
"type": 1,
"id": 8032,
"country": "JP",
"sunrise": 1611612020,
"sunset": 1611649221
},
"timezone": 32400,
"id": 1853909,
"name": "Osaka",
"cod": 200
}
```
在 下篇文章中,我们将再来讨论如何使用互操作菜单来实现系统集成。 [OpenWeather]: https://openweathermap.org/ 系列第一篇!
公告
Louis Lu · 十二月 16, 2021
InterSystems IRIS、IRIS for Health 以及 HealthShare Health Connect 的 2021.2 版本的预览版现已发布。
由于这是一个预览版,我们希望在下个通用版本发布之前了解您对这个新版本的体验。请通过开发者社区分享您的反馈,以便我们能够共同打造一个更好的产品。
InterSystems IRIS 数据平台 在 2021.2 版本中使开发、部署和管理用于连接数据、应用孤岛的增强型应用和业务流程变得更加容易。它有许多新的功能,包括:
为应用程序和界面开发人员提供的增强功能:
嵌入式Python
使用 Python 进行的互操作性Production开发
对Visual Studio Code ObjectScript扩展包的更新
增加了新的商业服务和操作,允许用户用最少的自定义编码来设置和运行SQL查询
对数据分析和人工智能的增强:
新的SQL LOAD命令有效地将CSV和JDBC源的数据加载到表中
增强自适应分析功能
对云和云上运营任务的增强:
新的云连接器使得在 InterSystems IRIS 应用程序中访问和使用云服务变得简单。
IKO的改进提高了Kubernetes 资源的可管理性
针对数据库和系统管理员的增强功能:
在线分片再平衡可以在不中断操作的情况下自动在各节点间分配数据
自适应 SQL 引擎使用快速块采样和自动化来收集高级表的统计数据,并利用运行时信息来改进查询规划
通过新的流类型数据和日志文件压缩设置,减少InterSystems IRIS的存储需求
使用系统提供的库,支持 TLS 1.3 和 OpenSSL 1.1.1
新的^TRACE工具报告详细的进程统计数据,如缓存点击率和读取率
关于所有这些功能的更多细节可以在产品文档中找到。
InterSystems IRIS 2021.1文档和发布说明
InterSystems IRIS for Health 2021.1 文档和发布说明
HealthShare Health Connect 2021.1 文档和发布说明
InterSystems IRIS 2021.2是一个持续交付(CD)版本,现在为所有支持的平台提供经典安装包,以及OCI(Open Container Initiative)又称Docker容器格式的容器镜像。 容器镜像可用于符合OCI标准的Linux x86-64和Linux ARM64的运行时引擎,详见支持平台。
每个产品的完整安装包都可以从WRC的产品下载网站获得。使用 "自定义 "安装选项,用户可以选择他们需要的选项,如 InterSystems Studio 和IntegratedML,以合理地缩小安装内容。
安装包和预览密钥可以从WRC的预览下载站点获得。
企业版、社区版和所有相应组件的容器镜像可以通过以下命令从 InterSystems容器注册中心获得。
docker pull containers.intersystems.com/intersystems/iris:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/iris-ml:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/irishealth:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.2.0.617.0
关于可用镜像的完整列表,请参考ICR文档。
另外,所有容器镜像的tarball版本可以通过WRC的预览版下载网站获得。
该预览版的构建号是2021.2.0.617.0。
公告
Jeff Liu · 四月 20, 2022
开发者们好,
我们在Bilibili的”InterSystems中国“频道 发布了新的视频!
了解如何使用InterSystems IRIS Business Intelligence的Analyzer工具来创建在仪表板上显示的透视表。本视频展示了Analyzer工具的中心组件,并演示了如何构建一个透视表。
请欣赏并继续关注! 这个有字幕了,赞👍
文章
Qiao Peng · 四月 14, 2022
8. 应用安全
InterSystems数据平台上可能运行着多种应用,例如Web网页应用、SOAP服务、REST API、HL7 接口、SQL服务等等。这些应用种类繁多,面临的安全风险也是巨大的,例如代码注入攻击和HTTP的跨站请求伪造攻击等。
这其中代码注入攻击和针对Web应用的攻击尤其需要重视。
8.1 代码注入攻击
代码注入攻击通常和我们编写的程序相关,需要在程序编写时注意避免。
8.1.1 SQL注入攻击
SQL注入攻击是典型的代码注入攻击,通过从外部注入恶意SQL语句获得数据权限并获得敏感数据。关系型访问方式都是通过客户端SQL语句传入执行的,因此它是数据库重点需要防范的。
InterSystems数据平台并不支持以分号分割的多条SQL语句作为一个SQL命令执行,因此它本身免疫了主要的SQL注入攻击手段。
InterSystems数据平台支持动态SQL,即允许SQL命令作为方法的字符串参数传入,这会给SQL注入攻击留有隐患。在编程时,应避免开放服务用于接受完整的SQL语句作为参数,而是通过SQL动态传参来构建运行时SQL。
InterSystems数据平台支持行级安全,这有助于避免在SQL注入攻击时,将所有数据返回给攻击请求。
8.1.2 $ZF
InterSystems数据平台提供了系统函数$ZF,用以调用外部命令。其中$ZF(-1)和$ZF(-2)用以调用服务器操作系统的命令。这可能会成为代码攻击的隐患。
在使用$ZF开发服务时,应避免把完整的操作系统命令作为字符串参数传入来执行,而应仅传入必要的数据,由服务器端方法来组成需要执行的操作系统命令,避免注入攻击。
8.2 Web应用安全管理
InterSystems数据平台提供多种Web应用,都是基于HTTP/HTTPS协议的,例如InterSystems数据平台的管理门户网页、用户自定义的网页、开放的SOAP服务、RESTful API。
既然走HTTP/HTTPS,所以首先应该部署专用Web服务器,并配置HTTPS来提供这些Web服务,在传输通道上保障安全。
除了传输通道,要得到更安全的生产环境,还有其它的安全设置需要检查和配置。
8.2.1 CSP/ZEN用户自定义网页应用
每个InterSystems数据平台等命名空间默认都有一个Web应用,可以通过它提供用户自定义网页应用。也可以创建一个新的Web应用提供用户自定义的网页应用。
第一个要检查的项目,是要看看这些默认创建的Web应用是否需要。如果不需要,应该禁用 – 取消选中“Enable Application”。
第二个要检查的项目,是这个Web应用使用的身份认证方式。在生产环境上,不应该使用“未验证”方式,所以应该取消选中该选项。
第三个要设置合适的“必要的资源”,它是对网页应用的资源权限要求。必须具有该资源的使用权限的用户,才能访问该网页应用。
第四个要决定是否开启防CSRF攻击,建议开启“Prevent Login CSRF attack”。
8.2.2管理门户
InterSystems数据平台的管理门户就是CSP/ZEN开发的网页应用,它具有大部分系统管理和监控能力,例如安全配置、高可用配置等。
除了8.2.1提到的对网页应用的安全配置项目之外,InterSystems数据平台预置了一系列系统角色和系统资源,用于让不同用户对管理门户的不同功能页面具有不同的权限。例如操作员角色(%Operator)不具有创建、修改用户的权限。
这些用户权限检查是通过配置给管理页面的系统资源来判断的,只有对这些页面系统资源有权限的用户才能访问该管理页面。
为了提供更细颗粒度的管理,除了配置给管理门户页面上的系统资源,用户可以将自定义资源加到管理门户页面上。这样,用户需要同时具有系统定义的页面资源权限和用户自定义资源权限才能访问和使用管理页面。
如何查看系统预置的管理页面资源和配置自定义资源?在每个管理门户页面菜单项上,都有链接,点击它就可以查看该管理页面分配的系统资源和自定义资源。如果要添加自定义资源,点击“分配”,就可以在弹出的页面中进行配置。
通过配置自定义资源,可以实现任意颗粒度的管理门户权限控制。
如果您在管理互操作产品,想了解系统提供的预定义安全资源,可以参考文档
8.2.3 SOAP服务
除了SQL服务,SOAP服务是InterSystems数据平台经常要开放的服务类型之一。如果您的生产环境上开放了SOAP服务,应该检查它的安全配置。
开启SOAP服务
InterSystems数据平台的SOAP服务也是通过Web应用开放的。默认情况下,Web应用是没有开放“入站Web服务”的,也就是说默认Web应用是不能提供SOAP服务的。如果需要开放SOAP服务,需要选中对应Web应用的“入站Web服务”。
注意:如何仅是查看WSDL,并不需要开启此选项。
开启SOAP服务测试页功能
InterSystems数据平台还提供SOAP服务测试页功能,该功能可以使用Web页面来测试SOAP服务,而不需要通过SOAPUI等工具。
为了安全,默认SOAP服务测试页功能是未开启的。如果需要开启,需要通过系统安全设置项开启:
SET ^SYS("Security","CSP","AllowPrefix",<SOAP应用路径>,"%SOAP.")=1
注意:
1. <SOAP应用路径>最后需要加"/",例如 "/csp/user/"
2. 该设置项不影响SOAP服务,仅影响测试页
SOAP认证与权限
在生产环境上,不应该发布无需认证的SOAP服务。因此也需要取消选中“未验证”方式。
同时通过“必要的资源”设置,可以为SOAP服务指定需要的权限。
SOAP安全协议
另外,SOAP本身有很多安全协议,例如WS-Security, WS-Policy, WS-SecureConversation, WS-ReliableMessaging... 它们提供SOAP消息头及消息体加密、数字签名等机制保障SOAP服务安全。
InterSystems数据平台支持这些SOAP安全协议,可以通过这些协议加强SOAP服务的安全。
8.2.4 RESTful API
RESTful API越来越多的用于轻量化的服务提供。与SOAP服务类似,InterSystems数据平台的RESTful API也是通过Web应用提供的。
因此上面介绍的Web服务的安全检查项也适用于RESTful API应用。
另外,如果部署了InterSystems API管理器,它本身也提供了安全相关的功能,例如用户认证、权限控制等。因此也要检查InterSystems API管理器的安全设置。
8.3 安全建议
不要拼接SQL语句,而是通过传参数构建运行时的SQL
避免使用动态SQL
启用行级安全
将$ZF调用封装在方法中,避免将操作系统命令通过字符串传入
部署独立的Web服务器,并启用HTTPS
禁用"未验证"的身份验证方式
选择"密码"或"Kerberos"
开启防跨站请求伪造(CSRF) 攻击
增加必要的资源权限要求
对"应用程序角色"配置合适的角色
为SOAP服务建立独立的Web应用,不使用命名空间默认的Web应用发布SOAP服务
不应该发布不需要用户认证的SOAP服务和RESTful API!
使用合适的认证策略,例如密码或用户名令牌
使用合适的SOAP安全协议,例如消息加密、数字签名
在部署了InterSystems API管理器时,通过它进一步约束安全选项
9. 安全审计
InterSystems数据平台提供审计能力,提供防篡改的审计数据库,用于记录审计事件。审计数据可以查看、搜索和导出。
通过管理门户 > 系统 > 安全管理 > 审计 可以开启和配置审计。
InterSystems数据平台预置了一系列系统审计事件,例如用户登录事件、登录失败事件等。并非所有的预置系统审计都默认开启,用户可以在系统审计事件配置页面进行配置,决定审计哪些系统事件。
除了系统预置的审计事件,InterSystems数据平台运行用户自定义审计事件,例如谁修改了特定的类。通过管理门户 > 系统 > 安全管理 > 用户定义的审计事件 可以创建自定义审计。
9.1 安全建议
开启审计
对重要的用户级事件建立自定义审计事件
定期分析审计的用户行为模型,识别发现异常请求
10. 备份与恢复
数据平台的备份与恢复是保障数据安全的另一项机制。定期的备份保障在意外发生时数据可以最大限度的恢复。例如是误删除了数据和代码,InterSystems数据平台的镜像高可用也无法恢复这些误删除的内容,因为误删除也会在备机上重做。这时,备份是唯一可以恢复误删除数据的希望。
所以应该有备份恢复的自动化策略,定期地执行备份,并将备份保存在与生产环境隔离的地点妥善保存。
InterSystems数据平台支持多种备份工具和备份策略。
备份工具:
冷备份 – 卸载数据库,拷贝数据库文件,加载数据库。冷备份需要计划宕机时间
联机热备份 – InterSystems数据平台提供的在线备份,无需计划宕机时间。数据规模很大时,备份时间较长
外部备份(快照备份) – 在线备份,无需计划宕机时间。通常速度很快,但需要外部备份工具
InterSystems数据平台使用内建的联机热备份工具时,支持这些备份策略:
全备份 – 备份全部数据
增量备份 – 备份上次备份之后修改的所有数据
补充备份 - 备份上次全备份之后修改的所有数据
可以使用这些备份方式,组合成一个自动的备份计划,例如:周日执行全备份、周一周二执行增量备份、周三执行补充备份、周四周五周六执行增量备份。
这些备份文件和备份之后的所有日志文件(Journal文件)和数据平台配置文件,以及项目相关的静态文件一起,例如网页文件,才是完整的生产环境备份集。完整的备份集才能保证恢复到指定的时间节点上。
有了备份并不是万无一失,需要验证备份是否可用。应该建立备份集恢复测试的环境,定期对备份集进行恢复测试,以确保备份集是可用的。
10.1 安全建议
建立自动的备份任务
备份应保存在独立的存储和隔离的物理位置
定期检查备份集的可用性
11. 正确安装InterSystems数据平台
在InterSystems数据平台安装时,会提示选择安全级别。因此在安装时,就应该选择正确的安全级别,避免后期大量的安全配置检查和调整。
InterSystems数据平台安装时会提供3个安全级别选择:Minimal、Normal和Locked Down。
Minimal:是针对于本机开发环境安装的安全级别、也是最低的安全级别,通常是被用于开发者在自己的笔记本电脑上安装InterSystems数据平台的开发实例。它几乎没有安全限制,例如允许无认证登录、匿名用户拥有%All的权限。因此绝不应该在生产环境上以此级别安装。如果您已经以Minimal安全级别安装了生产环境,那应该立刻修改安全配置。
Normal:是针对通常用途的安全级别,收紧了安全策略,可以作为大多数生产环境的初始安全配置。建议生产环境安装时,以此级别进行安装,并在安装之后按需调整安全配置。
Locked Down:是针对高安全需求的生产环境的安全级别。它禁用了多数服务、收紧了服务策略,因此安装后就已经提供了一个较为安全的实例。
Minimal
Normal
Locked Down
安全设置
密码模式
3.32ANP
3.32ANP
8.32ANP
不活动禁用天数*
0
90天
90天
启用_SYSTEM用户
是
是
否
分配给用户UnknownUser的角色
%All
无
无
服务策略
Use 权限为公共权限
是
是
否
需要认证
否
是
是
服务
%Service_Bindings
启用
启用
禁用
%Service_CacheDirect
启用
禁用
禁用
%Service_CallIn
启用
禁用
禁用
%Service_ComPort
禁用
禁用
禁用
%Service_Console*
启用
启用
启用
%Service_ECP
禁用
禁用
禁用
%Service_Monitor
禁用
禁用
禁用
%Service_Telnet*
禁用
禁用
禁用
%Service_Terminal†
启用
启用
启用
%Service_WebGateway
启用
启用
启用
12. InterSystems 数据平台的安全建议工具
InterSystems数据平台提供安全检查和建议工具。通过管理门户 >系统 > 安全管理 > 安全顾问 即可使用该工具。
安全建议工具会提示安全建议,点击“详细信息”链接,会自动跳到对应安全配置页面。在生产环境上线前,建议使用该工具进行检查。
13. InterSystems 数据平台三级等保检查清单
针对三级等保合规,检查清单如下:
1. 配置基于TLS的数据加密通道**
所有对InterSystems 数据平台的连接方式都配置使用加密通道
2. 部署独立的Web服务器
配置Web服务器应用HTTPS,并禁用不安全的 HTTP 方法
3. 服务配置
关闭不必要的服务
对必要开启的服务,选择安全的认证方式
禁用“未验证”方式
进一步限定允许接入的IP地址
4. 加强认证
系统级禁用 “无认证”
选用更安全的认证方式
5. 收紧授权**
数据库应该设置自己独立的资源,而非使用%DB_%DEFAULT
谨慎使用公共权限
创建自己需要保护的新资源**
6. 用户与角色
仅管理员有%All角色
要求用户账号更安全的密码模式
设置密码错误数次后停用账号
7. 数据安全
对敏感数据进行全数据库加密
合理的数据读写权限
必要时,添加行级和列级安全**
8. 应用安全
不要拼接SQL语句,而是通过传参数构建运行时的SQL**
避免使用动态SQL**
启用行级安全**
将$ZF调用封装在方法中,避免将操作系统命令通过字符串传入**
禁用不必要的Web应用 **
对Web应用,禁用"未验证"的身份验证方式
对Web应用,开启防跨站请求伪造(CSRF) 攻击
对Web应用,对"应用程序角色"配置合适的角色,不应随意赋予%All **
为SOAP服务建立独立的Web应用,不使用命名空间默认的Web应用发布SOAP服务 **
不应该发布不需要用户认证的SOAP服务和REST API!
使用合适的SOAP安全策略,例如消息加密、数字签名
9. 审计
开启审计
对重要的用户级事件建立自定义审计事件 **
定期分析审计的用户行为模型,识别发现异常请求 **
10. 备份与恢复
建立自动的备份任务
备份应保存在独立的存储和隔离的物理位置
定期检查备份集的可用性
注:**项目不是三级等保的必查项,但建议进行检查和配置。
文章
Michael Lei · 二月 8, 2022
说明
欢迎来到InterSystems广播站--数据点!在这一集里,我们和在线培训团队负责人Jenny Ames聊了聊InterSystems IRIS--稳定、灵活、可扩展、可互操作的数据平台,它为世界上许多最关键的核心应用提供支持。从它的多模型性质到它的集成引擎,再到它的医疗保健功能,在一次谈话中,有很多东西需要解读。
本期节目回放:https://datapoints.castos.com/episodes/1-what-is-intersystems-iris-jenny-ames
关于InterSystems广播站的更多信息,请访问https://datapoints.intersystems.com。
今天就试用InterSystems IRIS,请到https://www.intersystems.com/try,启动你的实例!
更多资料欢迎访问:https://gettingstarted.intersystems.com。
以下是本期对话中文全文。
德里克-罗宾逊 00:01 欢迎来到InterSystems 在线培训的播客。请确保在你最喜欢的播客应用程序上订阅播客,如Spotify、苹果播客、谷歌播放或Stitcher。你可以通过搜索 "数据点 "并点击订阅按钮来做到这一点。我是Derek Robinson,在今天的节目中,我将与InterSystems在线培训团队负责人Jenny Ames谈论InterSystems IRIS数据平台。
Derek Robinson 00:39 欢迎来到InterSystems在线培训广播站《数据点》第一集。我的名字是Derek Robinson。我是InterSystems公司的一名在线培训课程开发人员,我们学习服务部的所有人都对推出这个播客节目感到非常非常兴奋。我们有多集不同的节目将陆续推出,所以在你听完这一集后一定不要错过其他的节目。在这一集里,我将与Jenny Ames聊天。正如我在介绍中提到的,Jenny是在线培训团队负责人,她在我们的技术栈方面有超过10年的经验。因此,在我们的讨论中,我们将介绍InterSystems IRIS的基本情况,它的一些最佳功能是什么,以及她所看到的一些最佳使用案例。我们将概要地聊聊这个产品是什么,它的一些医疗行业的扩展是什么,以及它如何能够真正帮助你作为一个开发者的应用开发,开发数据驱动和数据密集型应用。闲话少说,下面是我对Jenny Ames的采访。
德里克-罗宾逊 01:36 欢迎Jenny Ames来到播客室,她是InterSystems在线培训服务的团队负责人。Jenny,你好吗?
珍妮-艾姆斯 嗨,德里克。我很好。你呢?
德里克-罗宾逊 好。我也很好。我们很高兴推出InterSystems广播站--数据点,并邀请你作为我们的首批嘉宾之一,在这里谈论InterSystems IRIS,以及它对于那些可能不知道的人来说是什么,还有对于那些有兴趣了解更多的InterSystems用户,以及我们技术栈的背景。首先,请您先介绍一下自己,让我们知道你在InterSystems是做什么的,你在这里工作了多长时间,以及你在InterSystems世界的经验?
Jenny Ames 02:07 当然,是的。所以我在2020年6月份刚刚庆祝了10年。前五年,我是一名培训讲师,培训我们大部分的产品。Caché、Ensemble、Health Connect以及大部分的HealthShare课程,我非常喜欢这些课程,但是一些生活上的变化意味着我想在这里多待一会儿,所以在过去的五年半里,我一直在做在线培训。
德里克-罗宾逊 02:33 不错。这真是太棒了。所以你显然非常适合我们今天要讨论的问题。那么,让我们从InterSystems IRIS数据平台是什么这个问题开始,好吗?您可以先为那些从未见过它的听众用一个概要性的例子或描述一下IRIS吗?然后我们可以更详细地去了解它的一些功能是什么。所以,如果我今天在电梯里看到你,问你什么是InterSystems IRIS,你会怎么回答?
Jenny Ames 02:58 好的,我喜欢把InterSystems IRIS分成三个主要部分。首先它是一个强大的数据库,可以存储、检索数据。它有一个内置的开发环境来构建业务逻辑。同时它也是一个集成引擎,所以你可以在不同的系统之间非常容易地分享数据,进行互联互通,有一些很好的用户界面UI可以帮助你快速地做到这一点,而无需太多的代码。你也可以定制它,因为我们有很好的数据库层面的支持。然后,它也是一个数据分析平台,你可以建立机器学习模型来显示仪表盘和分析数据,以真正使你的数据有意义,并且持续在这个基础上建立新的分析。我们还包含了自然语言处理NLP功能。可以分析大段的文本,找到积极的东西或总结文本。
Derek Robinson 03:52 是的。在今天,整合不断的信息流从各种不同的来源进入你的应用程序,这变得越来越重要,真实世界并不总是像传统的关系型数据库中那样严谨地定义属性和排列,那需要你知道所有的属性和一切,对吗?所以你总整体上总结了这三个方面。下面,让我们从数据库部分开始,因为我认为任何要建立一个数据密集型应用程序的应用开发者都需要从数据库开始,对吗?比如他们需要他们的数据在某个地方。那么,在进入其他功能之前,仅从数据库的角度来看,InterSystems IRIS与人们可以选择的其他数据库相比有什么区别?
Jenny Ames 04:30 是的,这是个好问题。首先,我们在InterSystems IRIS中内置了一些逻辑,所以你可以直接利用来建立业务。如果你熟悉Caché,这是我们已经推出一段时间的产品之一,IRIS里有一些新的东西是一些语言的互操作性部分,所以你仍然可以利用你其他用Java.net、Python或Node.js构建的应用程序,然后与InterSystems IRIS的数据库平台进行整合。但我想说的是,真正让它脱颖而出的特性是可靠性。我们在全球主流市场,比如医疗、金融,我们能成功的主要原因就是因为它的可靠性。这是因为我们拥有的可靠性和内置的安全性。
Derek Robinson 05:27 对,没错。因此,对于任何使用数据库来建立他们的应用程序和托管他们的数据并真正能够使用他们的数据的人来说,那里有一些好的元素和好的要求。还有一点,我想谈谈,我知道这与语言的互操作性有一点关系,当涉及到为你的数据库使用不同的模型时,也是模型的灵活性。我知道,当我们在活动中与开发人员交谈时,有时会让他们停下来说,等等,告诉我更多关于这个问题。所以,请给我一个快速的例子,描述一下InterSystems IRIS在数据库层面的多模型能力。
Jenny Ames 06:00 是的。因此,多模型......大多数数据库都选择支持一种模型,无论是对象型数据库还是关系型数据库。而我们认为,为什么要选择?通过对象访问或通过二维表来访问数据有不同的原因。从像Java这样的东西来看,它已经是一个对象模型。所以能够直接保存一个对象是一个巨大的好处,因为它既节省了开发者的时间,也节省了转化时间, 它不必将数据转化为关系型、转化为行就能够做到这一点。但是做一些事情,比如说,选择所有在一家公司工作的人,这种数据用关系型模型来做就真的很容易。因此,我们的设计理念,是使用对每项任务最有效的模型,然后将其全部整合到一个应用程序和平台中。
Derek Robinson 06:45 对。不需要为了解决同一问题或者问题中的不同变化而建立或重复不同的方法,这真的很酷。顺便说一句,沿着这个话题,我想未来的一集可能会涉及到更深层次的内容,即我们的Global和有效的工作方式。我想到了一两个人,他们会很好地解释InterSystems的这些概念,但要更多地讨论InterSystems和InterSystems产品的整体形象。我知道我们以前参加过一些活动,人们会看到我们的商标,看到我们的品牌,然后他们就把InterSystems归类到到医疗行业。对吗?看起来你们是一家医疗IT公司,所以这很酷。可以再跟我说说,为什么人们不应该因为我们做医疗行业把我们只归类在医疗行业?如果有人不在医疗行业领域,有什么理由让他们不应该立即认为InterSystems真的只是医疗信息IT软件?
Jenny Ames 07:38 是的。我们在医疗领域的成功是有原因的。同样,因为我们在InterSystems IRIS和其他产品中建立的可靠性、可扩展性和安全性。所以,是的,我们进入其他领域也是有原因的。因为这些功能在多个垂直领域真的很重要。比如,金融机构,你知道,钱对人们来说真的很重要,所以能够使用InterSystems IRIS和利用这些特性真的很重要。而且,就像我提到的,我在教室里的前五年,我已经看到了一些不同的使用案例,我认为我们的一些客户真的很酷。比如说有一家汽车制造公司,他们基本上是集成和处理汽车零件,并能够管理所有这些零部件数据。他们基本上从多个不同的警察辖区获取数据,这些数据以不同的格式存储,他们必须转换这些数据。把所有的数据用我们的产品管理起来,然后他们在此基础上建立了仪表盘,以便能够分析数据并利用数据本身做一些非常酷的事情。
Derek Robinson 09:00 有意思。是的,我认为你提到的最后一个用例可以作为深入讨论我们IRIS的互操作性功能的基础,对吗?我认为还有很多我们可以深入讨论的地方,比如你提到把数据转化为正确的格式。其中有一些转化是我们开始进入那些医疗行业功能的核心,也是我们在医疗行业中最需要的东西。那么,你对这部分还有什么要补充的吗?
Jenny Ames 09:26 是的。我们有一些内置的功能,在医疗等行业,一些预置的组件方面确实有帮助。但我们也一直在建立更多的功能,在那里你可以做一些事情,如记录映射器,无代码集成数据等等。但同样,你也可以完全定制它,以便能够使数据具有正确的格式。但是,互操作性实际上是让我最兴奋的功能。我真的很喜欢,我实际上有很多的乐趣,建立集成,玩这个,自己学习更多。但是,是的,我真的很喜欢InterSystems IRIS的这个功能。
Derek Robinson 10:00 是的。在使用案例之前,还有一件事......我们马上要讲到医疗行业,但是经常谈到的InterSystems IRIS的其他使用案例之一是欧洲航天局,它突出了InterSystems IRIS的一些可扩展性、可靠性和处理这些数据负载的巨大能力。 这是一个我们已经谈了很多的例子。你能给我们讲讲这个用例,这个例子,以及为什么它能有效地展示InterSystems IRIS的能力?
Jenny Ames 10:29 是的,欧空局使用了我们的一个产品,InterSystems IRIS也采用了其中最好的功能,非常酷。几年前有一个很好的演示,我去看了,就是他们在太空中放置的这个东西,它实际上非常小。比如你可以......你现在看不到我,但是它也许是足球大小,或者可能比它小一点。它基本上绘制了整个银河星系的地图,而且,你知道,对于亮度和速度以及所有这些不同的天体。然后它把这些数据带回来,让操作人员上分析这些数据,真正绘制银河系,这真的很酷。但是,是的,我认为这是一个非常漂亮的例子,因为它正在处理大量的数据,在“大数据”这个词被创造出来之前我们已经在做大数据,但这不是最酷的,最酷的是你拥有所有的数据能够真正发挥他们的作用。
德里克-罗宾逊 11:38 对。很好。作为对我们学习者的一点提示,要想更多地了解这些功能,一般来说,我们只是在谈论可扩展性和可靠性。在可扩展性方面,当涉及到横向扩展系统时,你真的可以看一下分片,以了解更多。我不想深究这个问题,因为我们会有关于这个问题的其他专题。对于可靠性来说,我们的可靠性是镜像技术,对吧?就像我认为你所提到的系统的可靠性,如果一个系统发生故障,也许这种镜像能力是InterSystems产品的特点之一。我有时会说IRIS,但我们谈论的确实是我们大部分的技术堆栈,这些技术对于那些可扩展性和可靠性的一些功能来说确实是最基本的。所以,在这里,我们要进入最后一个部分,也就是IRIS医疗版。InterSystems IRIS for Health是InterSystems IRIS的医疗扩展,是一个更强大的平台。请告诉我们InterSystems IRIS for Health在医疗领域的一些具体扩展功能。
Jenny Ames 12:46 是的。IRIS for Health是InterSystems的IRIS医疗版,它确实是专门为医疗行业打造的,所以它有许多预置的医疗行业特性,帮助你整合并真正为医疗行业环境建立整个数字化应用。它包括对HL7 v2等事务的预建支持,你可以根据事件引入不同的消息。我们有对FHIR的支持。有一个内置的FHIR资源库来管理所有的资源。如果你不熟悉这些术语,你可以百度一下,了解一下。实际上,我们也有一些关于它的课程,你可以参加。我们有对IHE的支持,所以我们的许多针对医疗行业的支持都是内置的,它使你更容易集成不同的数据和应用和更快搭建医疗行业应用程序。
德里克-罗宾逊 13:45 对。很好。我想说的是,珍妮提到的学习内容,即learning.intersystems.com,是我们的学习目录所在。我想这是在这些播客和所有东西的介绍中的一种。但是说到更多的学习和呼吁行动,我们在这里想谈的最后一件事是,我们一直在谈论InterSystems IRIS和InterSystems产品的整体情况。如果我们的一些听众很好奇,他们想了解更多的情况,人们如何才能尝试IRIS?
珍妮-艾姆斯 14:08 是的。我们有两个很棒的新东西可以使用。有一个 "试用IRIS实例"。这基本上是一个试用实例,你可以免费获得,如果你不注册,它可以使用24小时。但如果你注册了,你可以保留30天,这真的很不错。你可以亲身体验,里面有一些预制的样本。所以要访问这个网站,你可以去intersystems.com/try,右边有一个按钮,你可以开始编码。然后还有一个网站,实际上与此有关。在这个屏幕的左侧,有一个新的按钮,可以进入我们新的入门网站。所以,如果你去gettingstarted.intersystems.com,你可以直接去那里,同样,那里有练习和一些使用案例视频,所以你可以开始想象使用InterSystems IRIS的不同方式。
Derek Robinson 14:57 真棒!对于我们的听众,我们会把这些链接放在节目描述中,这样你就可以直接进入这些页面,无论是尝试页面还是入门页面,以真正了解InterSystems IRIS的情况。所以,Jenny Ames,今天的时间就先到这里,非常感谢你参加我们的节目,我们期待和您再次访谈。
Jenny Ames 很好。谢谢邀请!
Derek Robinson 15:16 所以再次感谢Jenny加入我们,就InterSystems IRIS和InterSystems IRIS for Health进行了一次内容丰富的谈话,最后还谈到了它对开发人员构建这些数据驱动型应用程序的最大帮助,他们可能需要与其他系统的互操作性,转换你在其他应用程序之间发送或接收的数据。拥有一个非常可靠的设置,如果有什么东西发生故障,或者你需要比你目前拥有的更大的规模,可以真正依靠它。因此,与Jenny就InterSystems IRIS进行了很好的讨论,并再次感谢她。就像我在介绍中提到的,我们在目录中还有很多集,您现在就可以听,然后随着我们的发展,就像我们在预告片中提到的,我们将寻求每月做一到两集,而且真的就像我们可以从我们的专家那里获取内容一样,这就是我们的计划,能够给你提供信息和有趣的讨论,帮助大家学习更多。所以,重要的事情说三遍,你可以到intersystems.com/try或gettingstarted.intersystems.com去试试InterSystems IRIS,至于一般的学习内容,可以到learning.intersystems.com去看看我们的全部目录,同样,在你喜欢的播客应用程序上搜索Data Points并点击订阅按钮。这样,每当我们有新的节目时,你就会收到每一集。再次感谢您的收听,我们将在InterSystems广播站《数据点》节目中再见。
本期节目回放:https://datapoints.castos.com/episodes/1-what-is-intersystems-iris-jenny-ames
关于InterSystems广播站的更多信息,请访问https://datapoints.intersystems.com。
今天就试用InterSystems IRIS,请到https://www.intersystems.com/try,启动你的实例!
更多资料欢迎访问:https://gettingstarted.intersystems.com。
文章
Jingwei Wang · 十月 8, 2022
本篇文章使用的InterSystems IRIS for Windows (x86-64) 2021.1 (Build 215U) Wed Jun 9 2021 09:39:22 EDT
Mysql ODBC 和 JDBC 驱动版本:8.0.28
使用ODBC 网关连接mysql
下载MySQL驱动安装包: https://downloads.mysql.com/archives/c-odbc/
定义DSN (此DSN用来连接远程MySQL数据库)
打开Administrative Tools
打开ODBC Data Sources Administrator(32-bit 或者 64-bit)
选择‘System DSN’,点击右边 ‘Add’,弹出‘Create New Data Source’窗口
选择安装好的mysql驱动,然后按照下图配置DSN
点击 ’Test‘ 测试连接 如果出现host 'ip' is not allowd to connect to this MySQL server 错误,说明要连接的MySQL不允许远程登录,需要更新MySQL上面的host privileges 来同意远程登录
在InterSystems IRIS管理门户中,建立SQL Gateway 连接
系统管理 -> 配置 -> SQL 网管连接 -> 新建连接 ->选择ODBC,填写以下连接信息。填写完配置信息,点击’测试连接‘,左下角会出现 ’连接成功‘,然后点击 ’保存‘。
使用JDBC 网关连接mysql
下载my JDBC 驱动 https://dev.mysql.com/downloads/connector/j/8.0.html
在管理门户中,建立SQL Gateway 连接 系统管理 -> 配置 -> SQL 网管连接 -> 新建连接 -> 选择JDBC,填写以下连接信息。填写完配置信息,点击’测试连接‘,左下角会出现 ’连接成功‘,然后点击 ’保存‘。
文章
Lilian Huang · 二月 28, 2023
嗨,InterSystems 开发人员!
最近我更新了FHIR 开发模板,它发布了一个 IPM 包fhir-server ,使 InterSystems FHIR 服务器的设置成为一个微不足道的手动或自动或编程的程序,只需一条命令。
请参阅下文,了解如何从中受益。
TLDR
USER>zpm "install fhir-server"
以下所有详细信息。
在没有 IPM 的情况下设置 InterSystems FHIR 服务器
当然,你可以不使用IPM软件包管理器来设置InterSystems FHIR服务器。下面是一些选项。
1. 您可以按照这些说明设置云 FHIR 服务器并试用几天,这是 AWS 云中的一个 InterSystems FHIR 服务器。
2. 您可以按照以下步骤将 InterSystems FHIR 服务器设置,运行 InterSystems IRIS for Health。
3. 你也可以 git 克隆这个模板的仓库并在目录中运行:
$ docker-compose up -d
在您的笔记本电脑上启动并运行 InterSystems FHIR 服务器。
我在文章中建议的是第2点,你可以跳过所有的手动步骤,让FHIR服务器在笔记本电脑IRIS上运行,无论是docker还是主机操作系统。
用 IPM 设置 FHIR 服务器
免责声明!! 下面描述的步骤是指新安装的IRIS for Health实例或与docker图像一起使用。该软件包创建了一个新的命名空间和一个新的网络应用程序,因此它可能会损害你之前设置的设置
IPM 代表InterSystems Package manager ,以前称为 ZPM。确保你已经安装了 IPM 客户端。如果你在IRIS终端运行zpm命令并看到以下内容,你可以检查这一点:
IRISAPP>zpm
=============================================================================
|| Welcome to the Package Manager Shell (ZPM). ||
|| Enter q/quit to exit the shell. Enter ?/help to view available commands ||
=============================================================================
zpm:IRISAPP>
对于 2022.x 及更新版本,您将需要 IRIS for Health。
如何在笔记本电脑上运行 iris for health?
在主机操作上运行
从适合您的平台(Windows、Mac、Linux)的InterSystems 评估网站下载最新的 IRIS for Health 并安装。安装 ZPM。这是一个单行:
USER>zn "%SYS" d ##class(Security.SSLConfigs).Create("z") s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="z" d r.Get("/packages/zpm/latest/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c")
运行一个Docker版本。
在您的终端中调用以启动:
--name iris4h -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community
然后启动终端:
docker exec -it iris4h iris session IRIS
安装FHIR服务器
一旦IRIS在主机上运行,或只是在IRIS终端运行:
USER>zpm "install fhir-server"
这将在FHIRSERVER命名空间中安装FHIR服务器,并提供参数:
Set appKey = "/fhir/r4"
Set strategyClass = "HS.FHIRServer.Storage.Json.InteractionsStrategy"
set metadataPackages = $lb("hl7.fhir.r4.core@4.0.1")
Set metadataConfigKey = "HL7v40"
FHIR REST API 将在 http://yourserver/fhir/r4 上可用。
它还将添加一些合成数据。
如何理解服务器正在工作?
要在主机版本上测试:
http://localhost:52773/fhir/r4/metadata
在 docker 版本上测试:
http://localhost:9092/fhir/r4/metadata
zpm 还安装了简单的 UI,它位于:yourserver/fhirUI/FHIRAppDemo.html
您会看到类似这样的内容(输入患者 id=1):
怎么运行的?
事实上,您可以在以下 module.xml场景中观察正在使用此 ZPM 模块安装的内容。如您所见,它导入代码,安装演示前端应用程序 fhir UI,运行安装后脚本,该脚本调用以下方法。该方法中的脚本执行 FHIR 服务器设置。
以编程方式安装 FHIR 服务器
您还可以通过以下命令以编程方式安装它:
set sc= $zpm ( "install fhir-server" )
FHIR 编码快乐!
公告
Claire Zheng · 九月 4, 2023
大家好!
我们的第二届 InterSystems Idea-A-Thon创意马拉松顺利结束,产生了29 个与竞赛主题相关的精彩创意:
💡使用 InterSystems IRIS 快速、安全、绿色地运行解决方案💡
感谢大家的想法、评论和投票!
现在是时候宣布获奖者了!
专家奖
🥇第一名 @Andre Larsen Barbosa 创意 Light version InterSystems IRIS 获胜者将获得🎁 Apple Watch SE / Fairphone Fairbuds XL 耳机
🥈第二名 @yurimarx Marx 创意 Support for Liquibase获胜者将获得🎁 扬声器套装 JBL Pulse 5 / Apple AirPods Pro 第二代 / 乐高星球大战 R2-D2。
🥉第三名 @Heloisa Paiva 创意 InterSystems IRIS for Energy management 获胜者将获得🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2 。
社区奖
🌟 获奖者@Andre Larsen Barbosa 创意Light version InterSystems IRIS获胜者将获得🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2 。
所有获胜者都将获得名为“Idea-A-Thon Winner(创意马拉松获胜者)”的Global Master特制徽章。
🔥 我们想重点介绍所有参与者及其创意:
精简版 InterSystems IRIS by @Andre Larsen Barbosa 让 IRIS 成为 Spring Cloud 的一部分by @王喆 👀InterSystems IRIS“绿色时间”配置文件, by @Pietro Montorfano VS Code 中的表面测试覆盖率信息,by @John Murray 将条形码/QR 码识别纳入标准功能,by @David Hockenbroch每个生产/业务组件的能源消耗估算报告,by @Rob Ellis当流程并行运行时,使互操作性的视觉跟踪易于检查。by @Yuji Ohata 无连接限制的 IRIS 社区,by@Dmitry Maslennikov 对 Liquibase 的支持 by @yurimarx Marx 二进制索引实现 by @Akio Hashimoto将整个工作室迁移到 VSCode by @Akio Hashimoto 数据库缓存(全局缓冲区)需要优化 by @王喆 👀用于能源管理的 InterSystems IRIS by @Heloisa Paiva 用于碳追踪的 InterSystems IRIS by @Heloisa Paiva InterSystems IRIS 的高级实时数据处理优化,by @Yone Moreno InterSystems IRIS 微服务测试框架,by @dinesh babu InterSystems IRIS 测试仪表板, by @dinesh babu 为 InterSystems IRIS 区块链应用程序开发测试框架,by @dinesh babu添加对 AI 驱动的测试自动化的支持 by @dinesh babu云上的 InterSystems IRIS。by @Yuji Ohata 下载面向界面分析师的 HL7v2 浏览器扩展by @Rob Ellis将“创建新路由器”选项添加到业务操作向导中,by @VICTORIA CASTILLO 通过排队论和模糊逻辑:使用 InterSystems IRIS 优化医院患者队列管理 by @Yone Moreno AI 驱动的 GreenIRIS:通过人工智能实现 InterSystems IRIS 解决方案的优化和可持续性 by @Yone Moreno 计划报告 by @yurimarx Marx 使用 IRIS 和 Python Streamlit Web 框架创建真实世界的应用程序 by @Muhammad Waseem AntiMatter 代码加速器 by@Alex Woodhead IRIS 的可选“绿色模式”配置设置, by @Nelson Tarr为什么要为从未使用过的索引使用存储?by @Nelson Tarr
第二届创意马拉松的所有参赛者都将获得我们的特别礼物——无线充电鼠标垫。
还有更多…...
👏 特别感谢@Dmitry Maslennikov ,他创建了一个liquibase-iris应用程序,以实现由 @yurimarx Marx 为创意马拉松提交的创意:Support for Liquibase
我们想通过最高奖项之一来表彰 Dimitri 的努力!
我们祝贺所有获奖者和参与者!
感谢您对 InterSystems 官方反馈门户做出的重大贡献 💥
重要提示:奖品正在制作中,届时我们将与获奖者取得联系。
公告
Claire Zheng · 四月 22, 2024
Hi 开发者们,
我们非常高兴地邀请大家参加新的 InterSystems 在线编程竞赛,此次编程大赛关注生成式AI(GenAI), 向量搜索(Vector Search )与机器学习(Machine Learning)!
🏆 InterSystems 编程大赛:Vector Search, GenAI 与 ML 🏆
时间:2024年4月22日 - 5月19日 (美国东部时间)
奖金池: $14,000
主题
使用InterSystems IRIS或InterSystems IRIS for Health或IRIS Cloud SQL开发任意使用生成式AI和/或机器学习的解决方案。
为了让此次竞赛变得更有趣,通过向量搜索(Vector Search)开发的最具创新性的项目作者将被邀请参加InterSystems 2024 全球峰会*(最多3人)!
*受邀开发者将获得全球峰会的免费门票和免费酒店住宿。
一般要求
应用程序或库必须功能齐全。该应用程序不应该是另一种语言中已有库的导入或直接接口(C++ 除外,您确实需要做大量工作来为 IRIS 创建接口)。不允许对现有应用程序或库进行复制粘贴。
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用程序应在 IRIS Community Edition 或 IRIS for Health Community Edition 上运行。两者都可作为host (Mac, Windows)版从Evaluation Site下载,或者可以按从InterSystems Container Registry或Community Container中提取的容器形式使用: intersystemsdc/iris-community:latest 或 intersystemsdc/irishealth-community:latest 。
该应用程序需开源并在GitHub上发布。
应用程序的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。
一名开发者只允许提交 3 份作品。
注意:我们的专家将根据申请的复杂性和实用性标准对是否批准参加比赛拥有最终决定权。他们的决定是最终决定,不得上诉。
奖品
1. 专家提名奖(Experts Nomination)——获奖者由我们特别挑选的专家团选出:
🥇 第一名 - $5,000
🥈 第二名 - $3,000
🥉 第三名 - $1,500
🏅 第四名 - $750
🏅 第五名 - $500
🌟 第六名-第十名 - $100
2. 社区提名奖(Community Nomination)- 获得总票数最多的应用程序:
🥇 第一名 - $1,000
🥈 第二名 - $750
🥉 第三名 - $500
🏅 第四名 - $300
🏅 第五名 - $200
如果几位参与者获得相同数量的选票,他们都将被视为获胜者,奖金由获胜者分享。
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。
✅ 还没有账号?点击此处创建一个账号!
👥开发人员可以组队创建协作应用程序。一个团队允许 2 到 5 名开发人员。
请注意,要在您的README文件中标注您的团队成员——社区用户profile。
重要截止日期:
🛠 应用程序开发和注册阶段:
2024年4月22日 (美国东部时间 00:00):比赛开始。
2024年5月12日(美国东部时间 23:59):提交截止日期。
✅投票期限:
2024年5月13日(美国东部时间 00:00):投票开始。
2024年5月19日(美国东部时间 23:59):投票结束。
注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用。
资源助力:
✓ 文档
InterSystems IRIS Vector Search documentation
InterSystems IntegratedML documentation
Boosting Facial Recognition Vector Search
✓ 应用示例与资料:
IRIS Vector Search
llamaindex-iris
langchain-iris
workshop-vector-face
IRIS FHIR SQL Builder DBT IntegratedML
integratedml-demo-template
integratedml-demo - Embedded Python demo suite
iris-local-ml - Hugging Face and python usage with IRIS
iris-fine-tune-ml - training and tuning ml models with python and InterSystems IRIS
QuinielaML - soccer match predictions with IntegratedML
workshop-integratedml-csv
iris-rag-demo - RAG demo implementation
✓ 在线课程:
Using Vector Search for Generative AI
IntegratedML Interactive Intro Course
Hands-on with IntegratedML
✓ 视频:
Using Vector Search for Generative AI
Adding AI into Interoperability Production
Building Models with integratedML in the cloud
Generative AI Use Cases in Healthcare
✓ IRIS初学者:
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ ObjectScript Package Manager (IPM) 初学者:
How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and IPM
✓ 如何将您的APP提交给大赛:
首先您需要发布应用:如何在 Open Exchange 上发布应用程序
然后,您可以提交申请:如何提交比赛申请
需要帮忙?
加入 InterSystems Discord 服务器上的竞赛频道或在本文评论中留言告诉我们。
期待您的精彩项目——加入我们的编码马拉松吧!
❗️参加本次比赛即表示您同意此处列出的比赛条款。请在继续之前仔细阅读它们。 ❗️
文章
YuCheng Hu · 八月 1, 2024
针对 InterSystems IRIS 数据库的一些基本概念。
InterSystems IRIS 是什么
InterSystems IRIS 是基于 Caché/M 语言开发的一个数据库,这个数据库被大量使用在医疗系统中,也是北美地区医疗系统病历和文件管理中默认使用的事实标准。
Caché/M 是什么
Caché/M 是 MUMPS 程序语言 开发的数据库,Caché/M 提供了代码接口,可以直接使用 Caché/M 对数据库来进行操作。
Caché 是一个法语单词,但是又非常容易和英语使用的 Cache 搞混,所以大部分时候使用的是 Caché/M 来表达。
M 表达的意思是 Mumps 程序语言,简称 M 语言,Caché 使用 M 语言构建了不少函数。
InterSystems IRIS 不是开源数据库
因为涉及到医疗系统数据的使用,所以 InterSystems IRIS 并不是一个开源的数据库,你可以使用下面的链接:Evaluate InterSystems Products 8 来下载评估版本。
本文就是根据下载的链接来进行 Windows 安装的教程。
上面的页面在下载之前,你需要进行注册,并且提供你的信息。
双击运行
当下载完成后,可以双击运行安装程序。
我们会看到下面的安装界面:
同意许可协议后,单击下一步继续安装。
配置实例名
我们在这里使用默认的就可以,通常使用的 IRIS。
选择安装目录
我们使用默认的安装目录就可以了。
选择安装类型
因为我是需要安装这个测试工具,并且不不仅仅安装客户端。
我们还需要在我们的本地计算机上跑 IRIS 实例,所以我们就进行了完全的安装,这个和 MySQL 的安装差不多,可以在本地安装 MySQL 的实例和开发工具。
安全配置
这个地方和 MySQL 也是一样的,需要初始化安装配置,因为我们是使用的本地开发环境,我们也不需要为我们的服务器配置用户名和密码,所以我们就使用最低配置就可以了。
安装校验
在进行具体安装之前,你可以可以对配置进行一些修改。
因为我们是评估版本,所以我们这里是不会有许可证的。
安装进程
这里需要耐心等待下,根据计算机的不同,通常安装进程在 5 分钟左右。
安装完成
当看到下图界面时候,安装就已经完成了。
启动
当安装完成后,数据库服务器的进程是自动启动的。Web 页面的地址为:http://localhost/iris/csp/sys/UtilHome.csp 6
在这个界面中,通常可以看到服务器的一些配置信息。
如果你能够看到上面的界面,就说明你的服务器已经安装完成并且正常启动了。
总结
根据我们第一次安装 InterSystems IRIS 的经验, InterSystems IRIS 数据库的安装和 Windows 下安装 MySQL 的方法类似。
不仅仅会安装数据库服务器进程,同时还会安装相关的开发工具和 Web 管理界面。
整体安装过程比较简单,也没有遇到什么重要的问题,安装后直接用就可以了。
文章
Louis Lu · 八月 6, 2024
在使用 InterSystems ObjectScript 进行编程时,当你定义了属性property、查询query或者索引index,系统会在编译的过程中自动创建与之相关的一些方法,这篇文章对这些方法做了些总结:
属性Properties
1. 假设你定义了一个属性 Property, 下面的方法会被自动创建
ClassMethod PropertyGetStored(id)
对于数据类型属性,这个函数将返回其逻辑值,对于对象属性,返回id。这是一个对类global数据的封装,也是获取单例属性值(singular property value)最快的方法。此方法仅适用于已持久化存储的属性。
这里是一段采用多种方法读取数据的对比代码,用于测试各种访问数据方式的时间差异,其结果是:
Iterations: 10000
Object access: .130111
GetStored access: .014388
SQL access: .020268
Global access: .007717
Object access takes 904.30% of GetStored time
Object access takes 641.95% of SQL time
Object access takes 1686.03% of Global time
GetStored access takes 70.99% of SQL time
GetStored access takes 186.45% of Global time
SQL access takes 262.64% of Global time
其中:
Object access 是打开一个对象,并读取其属性值
SQL access 使用嵌入式SQL
GetStored 使用本文所述自动生成的方法
Global 使用直接读取保存属性值的global
2.
Method PropertyGet()
这个函数是属性的getter,可被重新定义。
3.
Method PropertySet(val) As %Status
这个函数是属性的setter, 可被重新定义。
对象属性 Object properties
1. 如果是一个对象属性,有关ID以及OID的方法会被创建
Method PropertySetObjectId(id)
这个方法通过对象的Id设置属性值,也就是不需要首先打开一个对象,再设置该对象的属性值。
例如下面定义了两个类
Class Person Extents %Persistent {
Property EmployedAt As Company;
}
Class Company Extends %Persistent {
}
通常来说你要将Company赋值给Person是这样写的:
set person = ##class(Person).%New()
set companyId = 123
set company = ##class(Company).%OpenId(companyId)
set person.EmployedAt = company
但是如果你使用PropertySetObjectId方法,就可以这样写:
set person = ##class(Person).%New()
set companyId = 123
do person.EmployedAtSetObjectId(companyId)
可以看到,这样写的不同点就是,你不需要打开Company这个对象,就可以直接赋值。
2.
Method PropertyGetObjectId()
这个方法返回属性值的Id
3.
Method PropertySetObject(oid)
这个方法通过OID设置属性值
4.
Method PropertyGetObject()
这个方法返回属性值的OID
数据类型属性Datatype properties
1. 对于数据类型属性会生成多个在不同格式间转换的函数:
ClassMethod PropertyDisplayToLogical(val)
ClassMethod PropertyLogicalToDisplay(val)
ClassMethod PropertyOdbcToLogical(val)
ClassMethod PropertyLogicalToOdbc(val)
ClassMethod PropertyXSDToLogical(val)
ClassMethod PropertyLogicalToXSD(val)
ClassMethod PropertyIsValid(val) As %Status
检查val是否为有效的属性值
2.
ClassMethod PropertyNormalize(val)
返回标准化的逻辑值
注意:
定义的关系(Relationship)也是属性,可以使用 get/set 方法
输入值 val 总是指逻辑值,格式转换方法除外
索引Indexes
1. 对于命名为"Index"的索引,下面函数会被自动创建
ClassMethod IndexExists(val) As %Boolean
该函数判断val的索引是否存在。
唯一索引Unique Indexes
1. 对于唯一索引,下面函数会被自动创建
ClassMethod IndexExists(val, Output id) As %Boolean
判断val的索引是否存在,并且通过第二个参数返回该对象的id。
2.
ClassMethod IndexDelete(val, concurrency = -1) As %Status
通过val,删除索引
3.
ClassMethod IndexOpen(val, concurrency, sc As %Status)
通过val返回该对象。
注意:
索引可基于多个属性创建,如何使基于多个属性创建的索引,那么函数的输入参数则是多个,比如这样的索引定义:
Index MyIndex On (Prop1, Prop2);
那么IndexExists函数则会是下面这样的:
ClassMethod IndexExists(val1, val2) As %Boolean
其中val1对应于Prop1的值, val2对应于Prop2的值,其他的函数遵循同样的逻辑。
Caché 生成的 IDKEY索引,是基于ID字段创建的索引。它同样可被重写,以及包含多个属性。例如,检查该类是否有某属性定义:
Write ##class(%Dictionary.PropertyDefinition).IDKEYExists(class, property)
所有索引函数检查的都是逻辑值
文档参见这里
查询Queries
1. 对于查询queries(它可以是一个简单的SQL查询,或者用户自定义的类的查询),命名为"Query"Func的方法会被自动创建:
ClassMethod QueryFunc(Arg1, Arg2) As %SQL.StatementResult
它会返回一个 %SQL.StatementResult,可被用于便利查询。比如对于在Samples命名空间下的Sample.Person类,定义了一个ByName的查询,它接受一个输入参数,它可以直接通过下面方法在代码中调用:
Set ResultSet=##class(Sample.Person).ByNameFunc("A")
While ResultSet.%Next() { Write ResultSet.Name,! }
另外,这里是一个在GitHub上的示例,用于演示上面的方法使用。
文章
Tete Zhang · 七月 4, 2023
本文讨论了在使用或维护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活动
服务器的负载是否在正常范围内?
监控CPU利用率
CPU使用率是稳定的,还是有尖峰?这些尖峰是活动的增加还是减少?
CPU是否经常在I/O上等待?
在安装了sysstat的系统上,可以通过iostat监控此项。
审查开放的事务和锁
是否存在开放事务的问题?
评估锁表大小。
查看messages log中是否有锁表满 LOCK TABLE FULL 的警告
检查所有进程是否按预期运行
监控总进程。
进程数是否有显著增加?
是否有任何进程被卡住,或在循环?
进程使用的内存量是否正常?
进入管理门户 > 系统操作 > 进程 > 进程ID的详细信息,以获得关于具体进程的信息。
检查镜像监视器和镜像状态监视器
监控镜像的状态。同步日志工作是否已经完成?
进入管理门户>系统操作>镜像监视器,查看镜像状态。
记录镜像成员之间的差异。
不是所有在主机上的更改都会通过镜像机制同步到备机。系统管理员需要对主备机上无法自动同步的更改进行手动更改,以及对主备机上不同步的部分做完整的记录。
确保InterSystems IRIS的许可证是有效的
监控许可证使用情况。
进入管理门户>系统操作>软件许可使用情况查看。
监控许可证的过期时间。
联系WRC
你所掌握的关于问题的任何信息都可以帮助WRC确定导致该问题的原因。以下是你可以执行的步骤,以向WRC提供尽可能多的信息。
总结问题
这个问题可以重现吗?它是否持续发生?
最近系统上是否有任何变化,可能导致了这个问题?
记录InterSystems IRIS和其操作系统的版本信息
进入管理门户>关于页面,获取完整的版本信息。
运行监控工具
运行系统诊断报告
IRIS: do ^SystemCheck
Caché/Ensemble: do ^Buttons
如果系统处于挂起状态,运行IRISHung
IRISHung脚本是一个操作系统工具,用于在InterSystems IRIS实例挂起时收集系统的数据。
该脚本位于install-dir\bin目录下,在Microsoft Windows 系统上名称为IRISHung.cmd,在UNIX®/Linux 系统上名称为 IRISHung.sh。
IRISHung脚本应以管理员权限运行。
如果有性能问题,运行系统性能报告
IRIS: do ^SystemPerformance
Caché/Ensemble: do ^pButtons
与WRC取得联系
访问InterSystems全球响应中心(WRC)网站 (wrc.intersystems.com),或
邮件发送问题描述至support@intersystems.com,或
拨打中国区技术支持中心热线电话 400-601-9890
文章
Weiwei Gu · 六月 28, 2023
1. 区块链
当我写这篇文章时,比特币的价格还不到其成功顶峰时期的五分之一。因此,当我开始向某人讲述我的区块链经历时,我听到的第一句话是毫不掩饰的怀疑:“现在谁需要这个区块链东西?”
没错,区块链炒作已经减弱。然而,它所基于的技术将继续存在并将继续在特定领域使用。互联网通常提供大量描述这些技术的一般用法的材料
(例如在Medium和福布斯上)。
众所周知,区块链是一个分布式注册表,即分布在多个节点之间的数据库,每个节点都存储注册表的完整副本。区块链的主要特征是记录(交易)形成块,块形成块链。区块链仅支持追加操作。这意味着几乎不可能对已经保存在区块链中的交易进行更改。
网上有无数的区块链教程(如果您从未听说过区块链,可以从这个简单的视频开始)。
当区块链蓬勃发展时,人们多次呼吁在任何地方使用该技术。然而,可能需要区块链的项目/任务有某些明显的特征。
首先,必须有很多玩家/用户编写大量数据,这些数据必须一致且可信。
那么,就不应该存在每个人都信任的第三方。
必须有一个公共数据验证的机制。如果满足所有这些标准,考虑使用区块链可能是个好主意。
任何行业都可以找到这样的任务。 www.101blockchains.com项目汇总了有关潜在和现有区块链项目的信息,以及在各个行业中使用区块链技术的细微差别。
例如,区块链可用于医疗保健领域的以下任务:
用于安全地远程管理患者记录;
通过整个供应链中不可更改的交易来打击假药;
通过排除欺诈和篡改数据的可能性来提高临床试验的监控和有效性。
企业部门通常使用一种特殊类型的区块链,称为私有许可区块链。此类网络具有一组特殊的节点来验证交易。
然而,在开发第一个 InterSystems IRIS 区块链适配器时,我们选择了以太坊,这是一种属于无许可区块链类别的区块链 - 一个没有单一控制中心的开放平台。该决定是基于该区块链引擎的受欢迎程度以及具有大量工具和库的足够成熟的基础设施。请注意,您还可以使用以太坊工具创建私有区块链。
2. 适配器
让我们实际上回到适配器。
InterSystems IRIS 中的适配器(就像 Ensemble 中一样)是 InterSystems IRIS 类的类或包,允许您与外部系统交互。 InterSystems IRIS 适配器分为入站(当外部系统是交互发起者时,用于从外部系统接收数据)和出站(当 InterSystems IRIS 是交互发起者时,用于与外部系统一起工作)。
IRIS 以太坊适配器是出站适配器,与大多数其他 InterSystems IRIS 适配器略有不同。该适配器还包括一个小型 NodeJS 模块。其架构如图 1 所示。
图1。适配器的 NodeJS 模块使用现有的 NodeJS 库来与以太坊配合使用。
该适配器允许您执行以下操作:
将智能合约部署到以太坊(我们计划撰写另一篇文章,涵盖智能合约、开发工具和示例)。
调用智能合约方法:改变区块链状态的方法和不改变区块链状态的方法
保存交易(将资金从一个钱包转移到另一个钱包)
调用额外的方法来获取区块链的状态
记录所有请求(由 NodeJS 模块完成,方便调试)
该适配器附带 OpenExchange 上的源代码。
3. 一个简单的例子
该适配器附带一个“Hello world”示例。
要开始使用以太坊(并运行此示例),您将需要以下内容:
选择您要使用的网络。 Ropsten 等测试网络通常用于开发目的
在此网络中创建一个钱包并向其存款
安装本地以太坊客户端(例如 Geth)或获取与云提供商(例如 Infura)合作的密钥
配置业务操作时需要设置以下内容(图2):
NodeJS模块工作的服务器和端口(默认使用3000端口)
提供商设置(在本例中访问 Infura)
访问凭据(指定您的钱包号码作为用户名,指定您的私钥作为密码。InterSystems IRIS 将访问凭据存储在一个单独的数据库中,您必须为其启用加密)
图 2.
为了使用智能合约,您需要在文件系统中创建(为您将使用的每个智能合约)一个文件夹,并在其中放置两个文件:*abi.txt*字节码.txt
这些文件应包含智能合约的 ABI 及其字节码。智能合约的 ABI 是 JSON 格式的接口的正式描述。 ABI 和字节码是在编译智能合约时创建的。
仅部署合约时需要字节码。
您可以使用 InterSystems IRIS 互操作性测试服务来测试业务运营。
图 3 说明了如何使用测试服务部署智能合约。调用此业务操作的结果是包含交易哈希的消息。
图 3.
您可以使用 ropsten.etherscan.io (https://etherscan.io/) 浏览器找到此交易并获取已部署的智能合约的地址。
要使用适配器调用智能合约的方法,您需要在生产配置中填写以下字段:ContractFolder 和 ContractAddress。
智能合约的执行代码非常简单:
-----0-----
将智能合约的地址和 ABI 传递给适配器的 GetContract 方法,以创建一个智能合约对象,然后将其用于调用方法。在这种情况下,必须在智能合约中定义返回字符串的 hello() 方法。
在这个例子中,hello()方法不会改变区块链状态,因此可以同步调用。然而,改变区块链状态的方法的执行时间可能相当长(因为必须等待交易被验证)。
要调用此类方法,请使用 InterSystems IRIS 提供的延迟响应机制。适配器必须提交延迟响应令牌,当交易获得批准时,NodeJS 模块会将其执行结果传递给 InterSystems IRIS。为此,您需要配置一个 Web 应用程序并向生产添加额外的业务服务来处理收到的响应。
以下是调用改变区块链状态的方法的代码:
-----1-----
在这种情况下,在调用智能合约的 setName() 方法之前,您需要指定许多参数,包括延迟响应令牌。
在下一篇文章中,我们将详细介绍智能合约,并提供使用 InterSystems IRIS 以太坊适配器解决实际问题的示例。
文章
Michael Lei · 七月 7, 2024
InterSystems 常见问题系列FAQ
如果要让超时功能失效, 在DSN设置查询超时为disabled:
Windows Control Panel > Administrative Tools > Data Sources (ODBC) > System DSN configuration
如果勾选了Disable query timeout , 超时就会失效.
如果想在应用侧修改,你可以在ODBC API 层设置:在连接数据源之前,调用ODBC SQLSetStmtAttr功能设置SQL_ATTR_QUERY_TIMEOUT 属性