清除过滤器
文章
姚 鑫 · 七月 10, 2022
# 第一章 嵌入式Python概述(一)
嵌入式 `Python` 允许将 `Python` 与 IRIS 数据平台的本地编程语言 `ObjectScript` 一起使用。当使用嵌入式 `Python` 在 `IRIS` 类中编写方法时,`Python` 源代码与编译后的 `ObjectScript` 代码一起编译为在服务器上运行的目标代码。与使用网关或 `Python`的 `Native SDK` 相比,这允许更紧密的集成。还可以导入 `Python` 包,无论它们是自定义的还是公开的,并在`ObjectScript` 代码中使用它们。 `Python` 对象是 `ObjectScript` 中的一等公民,反之亦然。
- 使用来自 `ObjectScript` 的 `Python` 库 - 此方案假设 `ObjectScript` 开发人员,并且希望利用 `Python` 开发人员社区可用的众多 `Python` 库的强大功能。
- 从 `Python` 调用 `IRIS API` — 此方案假定您是一名 `Python` 开发人员,对 IRIS 不熟悉,并且想知道如何访问 `API`。
- 一起使用 `ObjectScript` 和 `Python` — 这个场景假设在一个由 `ObjectScript` 和 `Python` 开发人员组成的混合团队中,并且想知道如何一起使用这两种语言。
将需要 `2021.2` 或更高版本的正在运行的 `IRIS` 实例,以及取决于操作系统的一些先决条件。还需要知道如何访问终端,即 `IRIS` 命令行工具。
本文档中的一些示例使用来自 `GitHub` 上 `Samples-Data` 存储库的类:`https://github.com/intersystems/Samples-Data`。 建议创建一个名为 `SAMPLES` 的专用命名空间并将样本加载到该命名空间中。如果想查看或修改示例代码,则需要设置集成开发环境 (`IDE`)。推荐使用 `Visual Studio Code`。
本篇并不试图提供嵌入式 `Python` 或使用 `IRIS` 进行编程的全面概述。
# 使用 ObjectScript 中的 Python 库
使用 `Embedded Python`,`ObjectScript` 开发人员可以轻松地使用来自 `IRIS` 的众多可用 `Python` 库(通常称为“包”)中的任何一种,从而无需开发自定义库来复制现有功能。 `IRIS` 在 `/mgr/python` 目录中查找已安装的 `Python` 包
从 `ObjectScript` 准备 `Python` 包以供使用是一个两步过程:
1. 从命令行,从 `Python` 包索引(或其他索引)安装所需的包。
2. 在 `ObjectScript` 中,导入已安装的包以加载包并将其作为对象返回。然后,可以像使用实例化的 `ObjectScript` 类一样使用该对象。
## 安装 Python 包
在将 `Python` 包与 `Embedded Python` 一起使用之前,请从命令行安装。使用的命令会有所不同,具体取决于使用的是 `Windows` 还是基于 `UNIX` 的系统。 建议将软件包安装到目录 `/mgr/python`。
在 `Windows` 上,使用 `/bin` 目录中的 `irispip` 命令:`irispip install --target \mgr\python `.
例如,可以在 `Windows` 机器上安装 `numpy` 包,如下所示:
```java
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python numpy
```
在基于 `UNIX` 的系统上,使用 `pip3` 命令:`pip3 install --target /mgr/python `。
例如,可以在 Linux 机器上安装 `numpy` 包,如下所示:
```java
$ pip3 install --target /InterSystems/IRIS/mgr/python numpy
```
注意:如果基于 `UNIX` 的系统没有安装 `pip3`,请使用系统的包管理器安装包 `python3-pip`。
## 导入 Python 包
`%SYS.Python` 类包含从 `ObjectScript` 使用 `Python` 所需的功能。可以在任何 `ObjectScript` 上下文中使用 `%SYS.Python`,例如类、终端会话或 `SQL`。
要从 ObjectScript 导入 `Python` 包或模块,请使用 `%SYS.Python.Import()` 方法。
例如,假设在 `USER` 命名空间中,以下命令会在终端中导入数学模块:
```java
USER>set pymath = ##class(%SYS.Python).Import("math")
```
数学模块与标准 `Python` 版本打包在一起,因此无需在导入之前安装它。通过在 `pymath` 对象上调用 `zwrite`,可以看到它是内置数学模块的一个实例:
```java
USER>zwrite pymath
pymath=1@%SYS.Python ; ;
```
注意:包是 `Python` 模块的集合,但是当导入包时,创建的对象始终是模块类型。
现在,可以像访问任何 `ObjectScript` 对象一样访问数学模块属性和方法:
```java
USER>write pymath.pi
3.141592653589793116
USER>write pymath.factorial(10)
3628800
```
# 示例
此示例使用 `geopy` 包来访问 `OpenStreetMap` 的 `Nominatim` 地理编码工具。地理编码是获取基于文本的位置描述(例如地址或地名)并返回地理坐标(例如纬度和经度)以精确定位地球表面位置的过程。
首先,从命令行安装 `geopy`,如下 `Windows` 示例所示:
```java
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python geopy
Collecting geopy
Using cached geopy-2.2.0-py3-none-any.whl (118 kB)
Collecting geographiclib=1.49
Using cached geographiclib-1.52-py3-none-any.whl (38 kB)
Installing collected packages: geographiclib, geopy
Successfully installed geographiclib-1.52 geopy-2.2.0
```
在基于 UNIX 的系统上,使用:
```java
$ pip3 install --target /InterSystems/IRIS/mgr/python geopy
```
然后在终端中运行以下命令来导入和使用模块:
```java
USER>set geopy = ##class(%SYS.Python).Import("geopy")
USER>set args = { "user_agent": "Embedded Python" }
USER>set geolocator = geopy.Nominatim(args...)
USER>set flatiron = geolocator.geocode("175 5th Avenue NYC")
USER>write flatiron.address
Flatiron Building, 175, 5th Avenue, Flatiron District, Manhattan, New York County, New York, 10010, United States
USER>write flatiron.latitude _ "," _ flatiron.longitude
40.74105919999999514,-73.98964162240997666
USER>set cityhall = geolocator.reverse("42.3604099,-71.060181")
USER>write cityhall.address
Government Center, Cambridge Street, Downtown Crossing, West End, Boston, Suffolk County, Massachusetts, 02203, United States
```
此示例将 `geopy` 模块导入 `ObjectScript`。然后它使用 `Nominatim` 模块创建一个地理定位器对象。该示例使用地理定位器的 `geocode()` 方法在给定字符串的情况下查找地球上的位置。然后它调用 `reverse()` 方法来查找给定纬度和经度的地址。
需要注意的一点是 `Nominatim()` 采用命名关键字参数,ObjectScript 不直接支持这种结构。解决方案是创建一个包含参数列表的 `JSON` 对象(在这种情况下将 `user_agent` 关键字设置为值“嵌入式 Python”),然后使用 `args...` 语法将其传递给方法。
与前面示例中导入的数学模块相比,对 `geopy` 对象调用 `zwrite` 表明它是安装在 `C:\InterSystems\iris\mgr\python` 中的 `geopy` 包的一个实例:
```java
USER>zwrite geopy
geopy=2@%SYS.Python ; ;
```
文章
Michael Lei · 六月 26, 2022
在这篇文章中,我将解释如何通过使用CSP Web应用程序以及启用/禁用和认证/取消认证任何Web应用程序的代码来进行认证、授权和审计。
在线 Demo -- https://dappsecurity.demo.community.intersystems.com/csp/user/index.csp (SuperUser | SYS)
推荐大家看下这个视频: https://www.youtube.com/watch?v=qFRa3njqDcA
应用层
从认证开始
认证可以验证任何试图连接到InterSystems IRIS®的用户或其他实体的身份。正如人们常说的,认证是你如何证明你是你所说的人。
有许多不同的方法可以对用户进行认证;每一种方法都被称为认证机制。InterSystems IRIS支持一系列的认证机制:
Kerberos — Kerberos协议被设计用来在不安全的网络上为服务提供安全认证。Kerberos使用Ticket来验证用户,避免了在网络上交换密码。
Operating System–Based — 基于操作系统的认证使用操作系统对每个用户的身份认证来识别该用户对InterSystems IRIS的身份。
Instance Authentication — 通过实例验证,InterSystems IRIS提示用户输入密码,并将所提供的密码的哈希值与它所存储的值进行比较。
Lightweight Directory Access Protocol (LDAP) — 通过轻量级目录访问协议LDAP,InterSystems IRIS根据LDAP服务器中的信息对用户进行认证。
Delegated Authentication — 委托认证提供了一种创建自定义认证机制的方法。应用程序开发人员完全控制委托认证代码的内容。
我使用实例验证,对于用户的创建,我们可以使用以下objectscript命令:
&sql(CREATE USER TestUser IDENTIFY BY demo)
创建 TestUser 和 demo 密码
审计Auditing
在创建用户记录时,也通过使用以下objectscript命令添加到审计数据库中:
Do $SYSTEM.Security.Audit("%System","%Security","UserChange","User:TestUser | Password:demo","Audit Log inserted from Data_APP_Security")
请参考审计相关的文档 (Auditing Guide) : https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AAUDIT
授权Authorization
一旦认证完成,我们需要创建角色并授予角色以权限,然后将角色与用户联系起来(授权)。我们将分三步来做这件事
第一步 : 通过使用以下objectscript命令创建角色,我们正在创建ReadWrite角色
&sql(CREATE ROLE ReadWrite)
第二步: 在表上授予SELECT,UPDATE,INSERT权限,我们将scw.Patient表的权限分配给ReadWrite角色。
&sql(GRANT SELECT,UPDATE,INSERT ON scw.Patient TO ReadWrite)
第三步: 给用户授予角色,我们给TestUser用户分配ReadWrite角色
&sql(GRANT ReadWrite To TestUser)
启用/禁用Web应用
我们可以通过使用以下objectscript代码启用或禁用Web应用程序
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.Enabled=0
Do App.%Save()
这里"/终端 "是我们应用程序的名称。应用程序可以通过设置 "App.Enabled "为0来禁用,通过设置值为1来启用
认证/取消 Web 应用
我们可以通过使用以下objectscript代码来设置认证
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.AutheEnabled=0
Do App.%Save()
这里"/终端 "是我们应用程序的名称。认证可以通过使用"App.AutheEnabled" 属性来设置. 可以设置以下数值
property AutheEnabled as Security.Datatype.Authentication [ InitialExpression = 64 ];
Authentication and Session mechanisms enabled (CSP Only).
Bit 2 = AutheK5API
Bit 5 - AutheCache
Bit 6 = AutheUnauthenticated
Bit 11 = AutheLDAP
Bit 13 = AutheDelegated
Bit 14 = LoginToken
Bit 20 = TwoFactorSMS
Bit 21 = TwoFactorPW
谢谢
源代码:https://openexchange.intersystems.com/package/Data_APP_Security
文章
姚 鑫 · 四月 5, 2021
# 第十七章 使用触发器
本章介绍如何在Intersystems SQL中定义触发器。触发器是响应某些SQL事件执行的代码行。本章包括以下主题:
# 定义触发器
有几种方法可以为特定表定义触发器:
- 在将投影到SQL表的持久性类定义中包含触发定义。例如,`MyApp.person`类的此定义包括`Loggevent`触发器的定义,在每个成功的数据插入到`MyApp.person`表之后,将在每个成功的数据插入后调用:
```java
Class MyApp.Person Extends %Persistent [DdlAllowed]
{
// ... Class Property Definitions
Trigger LogEvent [ Event = INSERT, Time = AFTER ]
{
// Trigger code to log an event
}
}
```
- 使用SQL创建触发命令创建触发器。这在相应的持久性类中生成触发对象定义。 SQL触发器名称按照标识符命名约定进行操作。 IntersystemsIris®数据平台使用SQL触发名称生成相应的触发类实体名称。
必须拥有`%create_trigger`管理级别权限来创建触发器。必须具有删除触发器的`%drop_trigger`管理级别权限。
**类的最大用户定义触发器数为200。**
注意:Intersystems Iris不支持收集投影的表上的触发。用户无法定义这样的触发器,并且作为子表的集合的投影不认为涉及该基本集合的触发。
Intersystems Iris不支持修改`Security.Roles`和`Security.Users`表的触发器。
# 触发器的类型
触发器由以下内容定义:
- 导致它执行的事件类型。触发器可以是单个事件触发器或多事件触发。定义单个事件触发器以在指定表上发生插入,更新或删除事件时执行。定义多事件触发器以执行当在指定的表中发生多个指定的事件中的任何一个时执行。可以使用类定义或创建触发命令定义插入/更新,更新/删除或插入/更新/删除多事件触发器。事件类型在Class定义中指定了所需的事件触发器关键字。
- 触发器执行的时间:在事件发生之前或之后。
这是由可选的`Time trigger`关键字在类定义中指定的。
默认为`Before`。
- 可以将多个触发器与同一事件和时间相关联;在这种情况下,可以使用`order trigger`关键字来控制触发多个触发器的顺序。先触发顺序较低的触发器。
如果多个触发器具有相同的`Order`值,则不指定它们的触发顺序。
- 可选的`Foreach trigger`关键字提供了额外的粒度。
该关键字控制触发器是每一行触发一次(`Foreach = row`),还是每一行或对象访问触发一次(`Foreach = row/object`),还是每语句触发一次(`Foreach = statement`)。
没有`Foreach trigger`关键字定义的触发器每一行触发一次。
如果触发器是用`Foreach = row/object`定义的,那么触发器也会在对象访问期间的特定点被调用,如本章后面所述。
可以使用`INFORMATION.SCHEMA.TRIGGERS`的`ACTIONORIENTATION`属性列出每个触发器的`Foreach`值
下面是可用的触发器及其等价的回调方法:
- `BEFORE INSERT` (等价于 `%OnBeforeSave()`)
- `AFTER INSERT` (等价于 `%OnAfterSave()`)
- `BEFORE UPDATE` (等价于 `%OnBeforeSave()`)
- `AFTER UPDATE` (等价于 `%OnAfterSave()`)
- `BEFORE UPDATE OF specified column(s)`
- `AFTER UPDATE OF specified column(s)`
- `BEFORE DELETE` (等价于 `%OnDelete()`)
- `AFTER DELETE` (等价于 `%OnAfterDelete()`)
注意:当触发器执行时,它不能直接修改正在处理的表中的属性值。
这是因为InterSystems IRIS在字段(属性)值验证代码之后执行触发代码。
例如,触发器不能将LastModified字段设置为正在处理的行中的当前时间戳。
但是,触发器代码可以对表中的字段值发出更新。
更新执行自己的字段值验证。
## AFTER Triggers
在`INSERT`、`UPDATE`或`DELETE`事件发生后执行`AFTER`触发器:
- 如果`SQLCODE=0`(事件成功完成),InterSystems IRIS将执行`AFTER`触发器。
- 如果`SQLCODE`是负数(事件失败),系统间IRIS就不会执行`AFTER`触发器。
- 如果`SQLCODE=100`(没有发现要插入、更新或删除的行),则系统间IRIS执行`AFTER`触发器。
## 递归触发器
触发器执行可以是递归的。
例如,如果表`T1`有一个对表`T2`执行插入操作的触发器,表`T2`也有一个对表`T1`执行插入操作的触发器。
当表`T1`有一个调用例程/过程的触发器,并且该例程/过程执行对`T1`的插入操作时,也可以发生递归。
触发器递归的处理取决于触发器的类型:
- 行和行/对象触发器:InterSystems IRIS不阻止行触发器和行/对象触发器递归地执行。
处理触发器递归是程序员的责任。
如果触发代码不处理递归执行,则可能发生runtime ``错误。
- 语句触发器:InterSystems IRIS阻止`AFTER`语句触发器递归执行。
如果InterSystems IRIS检测到该触发器在执行堆栈中已经被调用,它将不会发出AFTER触发器。
没有错误发出;
触发器不会被第二次执行。
InterSystems IRIS不会阻止`BEFORE`语句触发器递归地执行。
在触发递归之前处理是程序员的责任。
如果`BEFORE`触发器代码不处理递归执行,可能会发生runtime ``错误。
# Trigger Code
每个触发器包含执行触发操作的一行或多行代码。
每当与触发器关联的事件发生时,SQL引擎就会调用这段代码。
如果触发器是使用CREATE触发器定义的,则可以用ObjectScript或SQL编写此操作代码。
(InterSystems IRIS将SQL编写的代码转换为类定义中的ObjectScript。)
如果触发器是使用Studio定义的,那么这个操作代码必须用ObjectScript编写。
因为触发器的代码不是作为过程生成的,所以触发器中的所有局部变量都是公共变量。
这意味着触发器中的所有变量都应该用一个新语句显式声明;
这可以防止它们与调用触发器的代码中的变量发生冲突。
## %ok, %msg, and %oper 系统变量
- `%ok`:仅在触发器代码中使用的变量。
如果触发代码成功,它设置`%ok=1`。
如果触发代码失败,它设置`%ok=0`。
如果在触发器执行期间发出`SQLCODE`错误,InterSystems IRIS将设置`%ok=0`。
当`%ok=0`时,触发器代码中止,触发器操作和调用触发器的操作被回滚。
如果插入或更新触发器代码失败,并且表中定义了一个外键约束,InterSystems IRIS将释放外键表中相应行上的锁。
触发代码可以显式设置`%ok=0`。
这会创建一个运行时错误,中止触发器的执行并回滚操作。
通常,在`设置%ok=0`之前,触发器代码显式地将`%msg`变量设置为用户指定的字符串,用于描述这个用户定义的触发器代码错误。
`%ok`变量是一个必须显式更新的公共变量。
在完成非触发代码`SELECT`、`INSERT`、`UPDATE`或`DELETE`语句后,`%ok`的值与之前的值没有变化。
`%ok`仅在执行触发器代码时定义。
`%msg`:触发代码可以显式地将`%msg`变量设置为描述运行时错误原因的字符串。
设置变量`%msg`。
`%oper`:仅在触发器代码中使用的变量。
触发器代码可以引用变量`%oper`,该变量包含触发触发器的事件(插入、更新或删除)的名称。
## {fieldname}语法
在触发器代码中,可以使用特殊的`{fieldname}`语法引用字段值(对于属于触发器关联的表的字段)。
例如,下面是`MyApp`中`LogEvent`触发器的定义。
`Person`类包含一个对`ID`字段的引用,如`{ID}`:
```java
Class MyApp.Person Extends %Persistent [DdlAllowed]
{
// ... Definitions of other class members
/// This trigger updates the LogTable after every insert
Trigger LogEvent [ Event = INSERT, Time = AFTER ]
{
// get row id of inserted row
NEW id,SQLCODE,%msg,%ok,%oper
SET id = {ID}
// INSERT value into Log table
&sql(INSERT INTO LogTable
(TableName, IDValue)
VALUES ('MyApp.Person', :id))
IF SQLCODE
问题
天恒 周 · 八月 6, 2022
cache的题目资源,类似于Oracle的OCP试题那种,能反应出对基础概念的掌握。 回答您的问题:
1. 我们海外在招募考试平台测试者,您可以直接给certification@intersystems.com 发邮件申请,具体内容可以参考:https://community.intersystems.com/post/beta-testers-needed-our-upcoming-intersystems-iris-system-administration-specialist;
2. 我们国内也即将推出初中高级的培训认证体系,敬请关注。
这还有网上的一些体验题目:https://community.intersystems.com/sites/default/files/post-associated-docs/sysadmin_practice_questions_0.pdf
谢谢您的关注! 好的,感谢!
问题
Johnny Wang · 七月 13, 2021
各位老师好!
如下两图,是HL7信息体,在形成消息之前,我们一般会先制定文档,包括消息题、消息段、阈值;但是最终在Ensemble中形成的消息是怎么一个过程? 制定好的消息文档可以转换成IRIS可以读取的格式,导入到IRIS中成为消息Schema结构。在处理消息时,可以配置接口应用我们指定的消息Schema结构去处理消息。更多细节可参见文档:HL7 Schemas and Available Tools | Routing HL7 Version 2 Messages in Productions | InterSystems IRIS for Health 2023.1
文章
Qiao Peng · 五月 25, 2022
%SYS.Journal.Record 类有一个查询(query), List, 可以列出Journal文件中记录的数据修改历史。例如,要查询谁对global节点^QP(1,2)做过修改,可以使用如下代码。它查询Journal文件(输入参数pFilePath)中的global节点(输入参数pSearchGlobal)的操作:
ClassMethod SearchGlobal(pSearchGlobal = "^QP(1,2)", pFilePath = "C:\InterSystems\IRISHealth\mgr\journal\20220525.003")
{
Set tRS = ##class(%ResultSet).%New("%SYS.Journal.Record:List")
Set tSC = tRS.Execute(pFilePath)
While (tRS.Next())
{
Set address = tRS.Data("Address")
Set globalNode = tRS.Data("GlobalNode")
Set newValue = tRS.Data("NewValue")
Set type = tRS.Data("TypeName")
Set processid = tRS.Data("ProcessID")
Set time = tRS.Data("TimeStamp")
Set globalRef = tRS.Data("GlobalReference")
If globalNode=pSearchGlobal
{
W !
W time,!
W processid,!
W address,!
W type," ",globalRef,"=",newValue,!
}
}
}
文章
Weiwei Gu · 九月 14, 2023
昨天,我在一个客户网站提供从 Studio 迁移到 VS Code 的定制咨询时,就遇到了这种情况。
该站点的服务器已配置为使用delegated authentication,但尚未针对 /api/atelier Web 应用程序设置“delegated”复选框,而 InterSystems ObjectScript 扩展包的成员正是使用该复选框进行连接的。
一旦我们的应用程序设置了其复选框并单击了服务器管理器刷新按钮,就可以在服务器上枚举命名空间。
公告
Claire Zheng · 十二月 22, 2022
2022年12月24日-25日,卫生健康信息标准应用管理培训班 (第二期)将于线上举办,此次培训班由国家卫生健康委统计信息中心指导、由《中国卫生信息管理杂志》社、深圳市卫生健康信息协会主办,InterSystems协办。详细日程请点击此处了解。您可以通过以下方式参与:
报名观看(可申请学分)
视频号(可观看直播)
如需要回看,请扫描“可申请学分”的二维码观看
公告
Qiao Peng · 三月 3, 2021
InterSystems API Manager (IAM) 版本1.5已正式发布。
IAM容器,包括从原有IAM版本升级的所有相关工件, 现在可以在 WRC 软件发布网址 组件区下载。
该版本的小版本号是 IAM 1.5.0.9-4。
InterSystems API Manager 1.5 使管理API通讯、与你的环境集成、加载API用户更加容易。它包含很多新特性,包括:
改进的用户体验
新的开发者门户工具
对Kafka connectivity的支持
这个版本基于Kong Enterprise version 1.5.0.9。之前的IAM版本包括一个贴牌版本的Kong Enterprise, 在本版本中的Kong Enterprise不再贴牌。 这个变化让我们可以更快的节奏带给您新的版本,并更有效地利用Kong提供的文档和其它资源。
请在 这里 查看IAM 1.5 的文档。这个文档仅说明IAM特殊的元素。产品中的文档链接直接打开Kong Enterprise的文档。
从IAM 0.34-1 升级需要通过3个中间版本累积升级,在 文档中有详细的说明。
IAM 仅以OCI (Open Container Initiative) 或 Docker 容器格式发放。容器镜像可运行在Linux x86-64 和 Linux ARM64的OCI 兼容的运行引擎上, 详情请参考 支持的平台。
Best Regards,
Stefan 欢迎开发者们多关注!
公告
Claire Zheng · 三月 18, 2021
中文社区的开发者们,大家好!
我们调整了开发者社区的积分规则,将其调整为双倍积分!自2021年3月18日起,如果您在社区贡献了文章或问题,将获得:
在英文社区获得200积分在西语、葡语、日语和中文社区将获得400积分*
针对译文帖子,将获得100积分
另外,你还可以从特定文章/评论中获得更多积分,详见下表:
第1篇文章
第5篇文章
第10篇文章
第25篇文章
第50篇文章
1,500 分
7,500 分
15,000 分
40,000 分
75,000分
第1个问题
第5个问题
第10个问题
第25个问题
第50个问题
500 分
2,000 分
5,000 分
15,000 分
30,000 分
而且你将可以获得奖励徽章!在 这篇文章里, 你可以看到对应等级和徽章(把鼠标放在徽章上查看如何获得)。
*我们将在一段时间内提升西语/葡语/中文/日语社区的积分
更多关于Global Masters倡导中心的信息:
如何加入InterSystems Global Masters倡导中心?
Global Masters徽章:规则解读
如果您还没有加入InterSystems Global Masters倡导中心 , 现在就加入吧!
如果您有任何疑问,欢迎跟帖回复!
公告
Michael Lei · 二月 21, 2022
投票三部曲:
1. 注册用户或登陆;
2. 成为社区活跃者获取投票资格
3. 投票
good! 欢迎大家把对我们的需求发表在讨论区:
intersystems-产品学习使用问题经验分享讨论区--https://cn.community.intersystems.com/post/intersystems-%E4%BA%A7%E5%93%81%E5%AD%A6%E4%B9%A0%E4%BD%BF%E7%94%A8%E9%97%AE%E9%A2%98%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB%E8%AE%A8%E8%AE%BA%E5%8C%BA 这个绿色的 vote的 button 并不工作,试试这个链接 https://openexchange.intersystems.com/contest/21 it is a screenshot.... 点击查看 最新投票规则,在英文原帖的评论区我们的工作人员会每天更新排名,欢迎关注:D 暂时群众投票排名第一,@Fatian Wu加油!
Expert Nomination, Top 3
appmsw-sql2xlsx by @Sergey Mikhailenko
iris-python-dashboards by @Evgeniy Potapov
DIMSE Iris Dicom Fhir Service by @Ron Sweeney
➡️ Voting is here.
Community Nomination, Top 3
IRIS-Database-and-Machine-Learning-Based-Approaches-for-Prediction-of-Spontaneous-Intracerebral-Hemo by @Fatian Wu
iris-python-dashboards by @Evgeniy Potapov
appmsw-sql2xlsx by @Sergey Mikhailenko
➡️ Voting is here.
Experts, we are waiting for your votes! 🔥
Participants, improve & promote your solutions! 武同学仍然排名第三,加油!
Expert Nomination, Top 3
django-iris by @Dmitry Maslennikov
appmsw-sql2xlsx by @Sergey Mikhailenko
iris-python-dashboards by @evgeniy Potapov
➡️ Voting is here.
Community Nomination, Top 3
django-iris by @Dmitry Maslenniko
appmsw-sql2xlsx by @Sergey Mikhailenko
IRIS-Database-and-Machine-Learning-Based-Approaches-for-Prediction-of-Spontaneous-Intracerebral-Hemo by @Fatian Wu
问题
jingwei lu · 三月 16, 2022
因为最近再研究Cache,发现Cache安装程序官方上找不到了,又从一个帖子上看到Cache安装程序在WRC上面有,话说这个WRC账号是不是类似于Oracle的MOS账号?
我从官网机器人那得到指示给support@intersystems.com发邮件,可能是因为塑料英语,石沉大海了。另外我想问问这个账号是不是只对那些买了产品或服务的客户单位公开?
请哪位大神为我指点迷津,谢谢 是的,WRC主要面向我们在服务有效期内的客户,请把您的单位名称写在邮件里,邮件也可以支持中文的,没有问题。谢谢! 既然是再研究,何不试试我们最新的InterSystems IRIS。如果以前研究过Caché 会发现,IRIS 还是同样的架构、同样的开发语言、同样的global存储,只是人机交互更流畅、性能更快,增加更多扩展,机器学习、python、丰富的外部BI工具适配、容器化部署、API管理等等等等,都等着你探索。
要想体验就在社区主页左边,选择下载InterSystems IRIS。
WRC可以说是我们对客户的支持中心,所以只面对我们的客户开放注册。
问题
Liang Jianhui · 六月 13, 2022
在找 HealthShare Patient Index 的相关视频和资料,求分享,谢谢 https://learning.intersystems.com/course/view.php?id=632, 更多视频欢迎在learning.intersystems.com 上搜索即可。谢谢! Hi @Liang.Jianhui , 可以参考这个页面的内容:https://www.intersystems.cn/interoperability-platform/patient-index 社区里也有很多:https://community.intersystems.com/smartsearch?search=patient+index,需要哪片文章可以告诉我们,我们可以帮忙翻译。 Only members of audience '1.0 HealthShare Content Access' can self-enrol.
这种情况是我没有权限吗?需要怎么做才能有权限? 你好!您是在点击这个链接:https://learning.intersystems.com/course/view.php?id=632时出现的问题吗?你需要先试着注册一下才能获取权限。如果还是不行,可以告诉我需要查看的资料,我看怎么分享您。谢谢! 你好,我是点击链接之后进入的,也进行了注册登录。 注册登录之后,仍然没有权限。Only members of audience '1.0 HealthShare Content Access' can self-enrol. 还是出现这个提示。我想了解HSPI 在interSystems系统中是如何应用的,以及worklist是怎么生成链接的。谢谢。 您提到的这个部分是需要WRC权限才可以观看的,WRC是我们的全球响应中心服务账户,您可以参考如下信息获取WRC支持:
InterSystems全球响应中心(WRC)联络信息
电话: +86 400-601-9890
邮件: support@intersystems.com
网站: https://wrc.intersystems.cn/
https://wrc.intersystems.com
问题
Liang Jianhui · 八月 24, 2022
现在有一个需求。想将intersystems系统产生的alerts.log文件的内容保存到一个表中。有什么工具或者API 能自动格式化log文件到DB吗,还是需要手动解析log文件然后在存储到DB中。 这是两件事:1. 把log里的记录结构化。 2. 保存到DB。
关于1,如果你用的是最新的iris版本, 可以直接拿到结构化的log, 看这个链接: https://docs.intersystems.com/iris20221/csp/docbook/Doc.View.cls?KEY=ALOG
如果是老版本没有结构化,您得自己去做文本处理。好在这个log非常简单。比如下面两行:
08/30/22-11:03:57:775 (6964) 2 [Utility.Event] Previous system shutdown was abnormal, system forced down or crashed. Fast shutdown complete.08/30/22-11:03:59:541 (7716) 2 [Utility.Event] Preserving journal files c:\intersystems\hcdemo\mgr\journal\20220824.002 and later for journal recovery and transaction rollback如果您要只是把日期时间,警告类型,级别,内容分开,它基本就是分开的,用的是空格。
如果您想把内容页结构化,这就花功夫了, 我上面的链接里的工具也不做这个事。
2. 存入DB您得自己解决,IRIS提供文本,API, 没有SQL查询,好在有一大堆监控工具都干这事,就是监控文本文件写入数据库。
文章
jieliang liu · 三月 15, 2021
大家好, 现在是九局下半,但在我们的技术世界大赛还留了几手![laugh](https://community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/teeth_smile.png "laugh") iris-analytics-package 旨在演示各公司可以如何轻松简单地在其软件中利用 InterSystems Analytics 支持。
无论是创建新的简单解决方案,还是使用 OpenExchange 改进现有解决方案。
大多数升级到 InterSystems IRIS 的公司都在利用该工具提供的所有功能;他们了解前沿技术,处于领先地位。
我们在本次竞赛中的方案有着不同的目标,即那些已使用 InterSystems 很长时间,但仍然未挖掘到其全部潜能的公司。
此项目是以其他项目为基础和灵感来创建的。 感谢 @Evgeny.Shvarov @Guillaume.Rongier7183 @Peter.Steiwer * [DeepSeeWeb](https://openexchange.intersystems.com/package/DeepSeeWeb)
* [csvgen](https://openexchange.intersystems.com/package/csvgen)
* [csvgen-ui](https://openexchange.intersystems.com/package/csvgen-ui)
* [AnalyzeThis](https://openexchange.intersystems.com/package/AnalyzeThis) 这些项目一起成就了这个简单的向导。### 导入向导
主页面看起来很简单,涉及的过程也很直接。 正确使用向导需要填写几个字段:
1. 选择 CSV 文件
2. 分隔符
3. 类名称
4. 选择是否要创建多维数据集
5. 多维数据集名称
6. 选择向导是否应创建仪表板示例
为了使创建的内容可视化,我们使用 DeepSeeWeb 来实现。
### 点击上传按钮后,gif 可能看起来定住了,但原因是记录太多。 选定的 CSV 文件超过 **15Mb**, 导入 **134100 条记录**!![]顺便说一下,此演示的数据集来自人道主义数据交换 - 一站式查找、分享和使用人道主义数据您可以尝试使用同一数据集;CSV 文件位于以下文件夹
iris-analytics-package/data
如果您喜欢这个应用程序,并认为我们值得您投票,请为 **iris-analytics-package** 投上一票! [https://openexchange.intersystems.com/contest/current](http://If%20you%20liked%20the%20app%20and%20think%20I%20deserve%20your%20vote,%20please%20vote%20for%20npm-iris!%20%20laugh%20https://openexchange.intersystems.com/contest/current)