在一次重大的版本升级中,建议重新编译你所有命名空间的类和例程。 (主要版本的安装后任务).
do $system.OBJ.CompileAllNamespaces("u")do ##Class(%Routine).CompileAllNamespaces()
为了自动完成这项管理任务并记录任何错误,下面是一个导入并编译到USER命名空间的类的例子,你可以在每次升级后使用它 : admin.utils.cls
InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。
在一次重大的版本升级中,建议重新编译你所有命名空间的类和例程。 (主要版本的安装后任务).
do $system.OBJ.CompileAllNamespaces("u")do ##Class(%Routine).CompileAllNamespaces()
为了自动完成这项管理任务并记录任何错误,下面是一个导入并编译到USER命名空间的类的例子,你可以在每次升级后使用它 : admin.utils.cls
InterSystems流程自动化与工作流引擎
集成平台除了集成业务系统,打通数据与业务流程外,另一个核心的功能就是流程自动化(BPA)。
流程自动化涉及几个重要的特性:
其中第4和5点都是和工作流程相关的。
什么是工作流程(Workflow)?它和业务流程(Business Process)有何区别?为何集成平台要涉及对工作流程的管理?
Hi 社区
在本文中,我们将基于Docker程序化地配置一个Apache Web Gateway,使用。:
我们将使用两个镜像:一个用于Web网关,第二个用于IRIS实例。
所有必需的文件都在这 GitHub repository.
我们从git clone开始:
git clone https://github.com/lscalese/docker-webgateway-sample.git
cd docker-webgateway-sample
为了避免权限方面的问题,你的系统需要一个用户和一个组:
需要与容器共享证书文件。 如果你的系统中不存在这些文件,只需执行:
sudo useradd --uid 51773 --user-group irisowner
sudo groupmod --gid 51773 irisowner
sudo useradd –user-group www-data
在这个示例中,我们使用以下三个证书:
开发者们好,
我们在Bilibili的”InterSystems中国“频道 发布了新的视频!
本文档只是给您一个大致的概念,方便您了解IRIS安装的方方面面。并非官方安装手册或者安装建议。生产环境的安装请仔细研究并参照IRIS官方的安装文档
IRIS支持多种Linux系统。详细的列表请参见各个版本的支持列表,比如这个是最新的2021IRIS的支持列表。需要注意的是, CentOS只支持作为测试系统, 并不支持生产系统的安装。
官方文档是以Redhat为主介绍的IRIS安装, 这是IRIS在生产环境中最常用的Linux系统之一。另一个Ubantu, InterSystems提供的docker版本是安装在Ubantu上的。
我自己测试的时候喜欢使用CentOS, 所以后面有具体安装步骤中,使用的CentOS上的记录。
对于生产系统,安装前需要一个硬件配置方案,这个方案通常是您的项目的实施部门根据用户需求提供的。
对于测试系统,只有一个最小的磁盘的要求:1.5G。无论是实体服务器, 虚拟服务器,或者docker container,根据您要测试的内容, 一切以方便为准。如果不做性能测试,我个人经常使用的CentOS虚拟机是2核CPU, 2G或4G内存,没有运行不流畅的问题。
标准的Linux磁盘分区并不适合IRIS的生产运行。哪怕要创建一个尽量接近生产的测试环境,建议您安装软件前要有一个完整的磁盘分区规划。在官方文档中,创建IRIS服务器分区有以下原则:
有很多方法可以使用Intersystems生成excel文件,其中一些是ZEN报告、IRIS报告(Logi报告或正式称为JReports),或者我们可以使用第三方Java库,可能性几乎是无限的。
但是,如果你想只用Caché ObjectScript创建一个简单的电子表格呢?(没有第三方应用程序)
在我的案例中,我需要生成包含大量原始数据的报告(财务人员喜欢这些数据),但是我的ZEN/IRIS失败了,给了我一个我想称之为 "零字节的文件",基本上说java的内存用完了,并导致报告服务器上的重载。
这可以用Office Open XML(OOXML)来完成。Office Open XML格式是由一个ZIP包内的一些XML文件组成的。因此,基本上我们需要生成这些XML文件,并将其压缩重命名为.xslx。就这么简单。
这些文件遵循一套简单的惯例,称为开放包装惯例。你需要声明各部分的内容类型,以及告诉消费应用程序应该从哪里开始。
为了创建一个简单的电子表格,我们至少需要5个文件。
各位开发者们好,
欢迎在我们的 Bilibili 频道观看新视频:
各位开发者们好,
InterSystems IRIS 数据平台的最大特点之一是它允许您创建自己的自定义,您可以使用InterSystems IRIS 中支持的所有其他模型,例如对象和关系结构,而无需创建任何自定义结构。
⏯ InterSystems Globals与灵活的数据建模 Globals
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" width="650" scrolling="no" src="//player.bilibili.com/player.html?aid=980348263&bvid=BV1s44y1P78C&cid=563611041&page=1"></iframe>
设置可重复的开发环境的最简单的方法之一是使用容器。我发现在快速迭代时,在我的开发环境容器里托管一个vscode实例是非常方便的。因此,我创建了一个快速的容器脚本,将一个基于浏览器的vscode添加到IRIS容器中。这应该适用于大多数2021.1以上的容器。我的代码库可以在这里找到
带VSCode 且预连接好的InterSystems IRIS 容器
| Cred | Value |
|---|---|
| User | _SYSTEM |
| Password | SYS |
这个项目创建了一个IRIS容器,在同一个IRIS容器中提供了vscode的托管(web-based)版本。这提供了:
InterSystems数据平台上可能运行着多种应用,例如Web网页应用、SOAP服务、REST API、HL7 接口、SQL服务等等。这些应用种类繁多,面临的安全风险也是巨大的,例如代码注入攻击和HTTP的跨站请求伪造攻击等。
这其中代码注入攻击和针对Web应用的攻击尤其需要重视。
代码注入攻击通常和我们编写的程序相关,需要在程序编写时注意避免。
SQL注入攻击是典型的代码注入攻击,通过从外部注入恶意SQL语句获得数据权限并获得敏感数据。关系型访问方式都是通过客户端SQL语句传入执行的,因此它是数据库重点需要防范的。
InterSystems数据平台并不支持以分号分割的多条SQL语句作为一个SQL命令执行,因此它本身免疫了主要的SQL注入攻击手段。
InterSystems数据平台支持动态SQL,即允许SQL命令作为方法的字符串参数传入,这会给SQL注入攻击留有隐患。在编程时,应避免开放服务用于接受完整的SQL语句作为参数,而是通过SQL动态传参来构建运行时SQL。
InterSystems数据平台支持行级安全,这有助于避免在SQL注入攻击时,将所有数据返回给攻击请求。
要用程序编辑Production(界面),你可以使用互操作性API和SQL查询的组合。
从顶层了解你目前正在工作的命名空间和生产是很重要的。
// Object script
// The active namespace is stored in this variable
$$$NAMESPACE
// Print namespace
Write $$$NAMESPACE
# Python
import iris
# The active namespace is returned from this method
iris.utils._OriginalNamespace()
# Print namespace
print(iris.utils._OriginalNamespace())
>>> DEMONSTRATION
另外,知道你的Production名称是很重要的,你可以使用以下API获得名称空间中正在运行的Production。
InterSystems 数据平台对用户和角色提供全面的管理和安全配置功能。加强数据平台的安全,需要加强对于用户和角色的管理。
系统提供了一系列预置的用户账户,这些账户管理对应特殊的系统功能:
|
用户 |
说明 |
|
UnknownUser |
匿名用户,通过“未验证”方式登录到系统的用户 |
|
_SYSTEM |
SQL系统管理员 |
|
SuperUser |
超级用户 |
|
Administrator |
安装系统的用户 |
|
Admin |
系统管理员 |
|
CSPSystem |
Web网关管理员 |
|
IAM |
IAM用户 |
|
_PUBLIC |
内部使用 |
|
_Ensemble |
内部使用 |
InterSystems数据平台有一些系统级别的用户安全配置,例如密码模式、密码有效天数、无效登录限制(多少次登录失败后要禁用用户账户)、非活动限制(多少天未登录后禁用用户账户)等。这些系统级配置通过管理门户>系统>安全管理>系统范围的安全参数:
三级等保对于用户的密码强度是有要求的。弱密码只需要0.19毫秒就能被破解,而8位强密码破解需要上百年。密码强度可以通过上面配置页面的密码模式或密码验证routine来配置:
数据平台不仅要安全,还要合规,三级等保是我们要符合的主要安全规范。InterSystems的数据平台和集成平台产品都和三级等保有关。如果没有正确配置它们的安全选项,就会影响到整个系统的安全,影响到合规性。
在生产环境上,如何配置安全的InterSystems的数据平台,并达到三级等保的要求?
这个系列文章,针对InterSystems 数据平台的安全架构,围绕对三级等保的合规性展开,介绍如何配置出一个安全、合规的数据平台。
注:本文提到的InterSystems的数据平台,包括Caché数据库、Ensemble集成平台、HealthConnect医疗版集成平台和InterSystems IRIS数据平台。
|
三级等保要求 |
对数据平台的要求 |
|
身份鉴别 |
确保用户身份是真实、准确的 |
|
访问控制 |
控制:谁、以什么方式、从什么设备可以访问什么数据和功能? |
|
入侵防范 |
防范静态数据、传输中的数据、日志和备份中的数据被入侵 |
|
恶意代码防范 |
防止恶意代码被植入和执行,例如SQL注入 |
|
可信验证 |
|
|
数据完整性 |
保证数据完整性和一致性的能力 |
|
数据备份恢复 |
对数据的备份与恢复能力和策略 |
系统实用类:SYS.Database中的查询FreeSpace可以用来在任何时候检查磁盘上的自由空间。
下面是在IRIS终端中的尝试方法(进入%SYS命名空间,然后运行它)。
zn "%SYS"
set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute()
// 一次性显示所有
do rset.%Display()输出结果示例如下。
*在命令执行的例子中,所有的数据库都放在同一个磁盘上,所以所有的磁盘空闲空间(DiskFreeSpace)返回相同的值。
注意:下面内存设置数值仅限参考,具体内存数值的设置是否合适,依赖于更多实际使用情况决定。
主要需要设置下面几个内存相关配置:
(下面比例适用于服务器仅运行单实例InterSystems IRIS)
数据库缓存Database cache:
建议小于64G内存设置总内存50%,大于等于64G内存设置70%总内存
程序缓存routine cache:
建议设置1023MB
gmheap:
建议设置1048576KB(1024MB)
LockSize:
建议最少设置134217728 Bytes (128MB),如果在系统日志中提示locksize相关错误或警报,应相应增加。
如果在一台服务器上安装了多个InterSystems IRIS 实例,那么要保证 所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值小于 Hugepage设定的值
此文章也是对问题 在不重建的情况下插入索引Inserting an index without reconstruction 的一种解释
在使用SQL语言对 InterSystems IRIS 中的表进行查询时,有时候会发现返回的结果与实际有出入,特别是使用count() 函数,或者select 查询时,返回的结果少于实际应返回的值。
这种情况往往是由于数据表格的索引值出了问题。
索引出问题的主要原因可能是:
要解决或者要检查是不是索引引发的问题,可以使用%ValidateIndices()函数,它有两种方式使用
$SYSTEM.OBJ.ValidateIndices(classname,idxList,autoCorrect,lockOption,multiProcess)
或者
##class(classname).%ValidateIndices(idxList,autoCorrect,lockOption,multiProcess)Docker 20.10.14(2022年3月23日发布)改变了赋予容器的Linux能力,其方式与InterSystems IRIS 2021.1(及以上)容器的Linux能力检查器不兼容。
在Linux上运行Docker 20.10.14的用户会发现,IRIS 2021.1+容器将无法启动,并且日志会错误地报告缺少所需的Linux能力。 比如说。
[ERROR] Required Linux capability cap_setuid is missing. [ERROR] Required Linux capability cap_dac_override is missing. [ERROR] Required Linux capability cap_fowner is missing. [ERROR] Required Linux capability cap_setgid is missing. [ERROR] Required Linux capability cap_kill is missing. [FATAL] Your IRIS container is missing one or more required Linux capabilities.
我想介绍一下我参加Globals竞赛的新项目。一个非常新的Globals浏览器视图
.png)
众所周知,InterSystems IRIS的产品设计理念源于互操作性(Interoperable)、稳定性(Reliable)、直观(Intuitive)、可扩展性(Scalable),在云时代,InterSystems IRIS的云上操作与本地一样便捷,令用户体验有了明显提升,除此之外,为了更高效地对InterSystems IRIS进行配置,我们还提供了哪些新特性?为了便捷地进行数据迁移,InterSystems IRIS最新版本提供了哪些解决方案?
4月12日,新一期“极客俱乐部”在线分享即将推出,InterSystems中国技术总监乔鹏将分享“InterSystems数据平台与三级等保”这一主题,聊聊数据平台如何保护信息安全,以及如何配置、管理数据平台,以满足三级等保要求。点击链接报名参会,或扫描下方二维码参会。
由麻省理工大学斯隆学院数字经济研究院Michael(Michael Schrage)主持,参与这次探讨的专家有人工智能布道师、数字化转型的先驱者、面临数字化转型挑战的传统公司,他们共同探讨了如何更迅速、更优质、更优价地获得切实可行的洞察,研讨涵盖了数字化转型面临的技术操作难点、投入产出性价比、数据科学家的角色、数据分析的类型、如何建设正确的基础设施和架构等等内容。面对越来越复杂的数据处理需求,这次研讨有一个观点值得借鉴:更大的数据量、种类和真实性实际上唤起了谦虚,而不是更大的信心。
这篇文章是前面文章[首次使用InterSystems IRIS] 互操作性: 它是如何工作的?的延续。
在上一篇文章中,解释了互操作性菜单如何用于系统集成。
在本文中,我想解释如何用互操作菜单开发系统集成。
首先,您想创建什么样的业务流程? 请一边思考,一边开始以下内容。
Production被定义和用作指定系统集成所需的组件及存储组件的配置,这些配置通过管理门户界面使用(内部被存储为生产的类定义)。
例如,假设您正在创建一个业务服务,该服务定期处理放置在指定目录中的文件。在这种情况下,有必要准确配置要监测的目录和要处理的文件。一个生产就是预先准备好用于存储这些配置。
这些配置取决于发送和接收数据的组件所使用的适配器。
适配器是用于简化与外部系统连接的类,有些是协议特定的,如 Mail/File/SOAP/FTP/HTTP/SQL/TCP,有些是标准特定的,如 HL7。
有关适配器的更多信息,请参阅文档(protocol-specific adapters and adapters related to EDI documentation)
由于我们将必要的组件定义为Production,“启动Production”将启动系统集成,而“停止Production”将停止系统集成。
这篇文章的目的是为了说明如何使用互操作菜单实现系统集成。
图片左侧窗口是接受外部系统发送信息的窗口。
信息接收方式种类很多,如定时监控指定目录来读取文件,定期查询数据库,输入且等待信息输出,或直接调用其他应用程序系统传送信息。
在系统集成配置中创建IRIS 互操作性菜单,接收到存储在一个对象中的信息被称为一条消息message(以下统称为消息)。消息被发送到组件component (以下统称为组件)中做后续处理。
使用所有接收到的信息或仅使用其中的一部分就能用来创建消息。
假设您要将信息中包含的消息发送给外部系统。这种情况下,需要将该消息发送给负责请求外网处理的组件(图右侧)。接收到消息的组件会请求外部系统对其进行处理。
此外,假设一条消息需要人工审查、数据转换或附加数据。这种情况下,消息会被发送到图表中间的业务流程管理组件(BPM),该组件负责协调处理业务流程。
消息用于在每个组件之间发送和接收数据。当发送或接收消息时,消息会被自动存储在数据库中。
由于消息存储在数据库中,因此在数据转换前后可以检查其差异性。在操作期间,或过程中间重新开始(重新发送),可以检查作为问题根源的消息。在开发、测试和操作的每个阶段可以验证正在使用的消息状态。
HI 开发者们,
我们在bilibili 发布了新的视频!
<iframe src="//player.bilibili.com/player.html?aid=637281555&bvid=BV1cb4y1p7RE&cid=550213579&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
主要问题: 默认安装后,有没有默认用户名,密码?远程jdbc连接报错,麻烦解答一下,谢谢 [InterSystems IRIS JDBC] Communication link failure: Access Denied [08S01][461] Access Denied
创建用户: addgroup iris useradd -g iris -d "/home/iris" -m -s "/bin/bash" iris passwd iris
安装过程: root@baec-ThinkPad-E480:/data/IRIS_Community-2021.2.0.651.0-lnxubuntu1804x64# ./irisinstall
Your system type is 'Ubuntu LTS (x64)'.
Enter instance name <IRIS>: IRIS
Enter a destination directory for the new instance. Directory: /data
众所周知,InterSystems IRIS的产品设计理念源于互操作性(Interoperable)、稳定性(Reliable)、直观(Intuitive)、可扩展性(Scalable),在云时代,InterSystems IRIS的云上操作与本地一样便捷,令用户体验有了明显提升。为了更高效地对InterSystems IRIS进行配置,我们还提供了哪些新特性?为了便捷地进行数据迁移,InterSystems IRIS最新版本提供了哪些解决方案?本期视频中,InterSystems中国销售工程师吕正之、马浩和WRC产品支持专家杨乐乐对此进行了解答。
大家好!
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 业务服务
首先,介绍一下我们在这个系列中要使用的案例。