文章 Michael Lei · 五月 23, 2022 1m read

大家是不是经常遇到以下情况:

  • 系统有 bug 但是无法在本地复现
  • 你需要在受影响的实例中运行几行代码
  • 能完整访问系统管理门户,但是没有终端或者管理控制台, 也不能访问 Studio, Atelier 或者 VSCode
  • 你要怎么运行你的几行代码来测试???
0
0 166
文章 姚 鑫 · 五月 22, 2022 5m read

第150章 SQL函数 TRUNCATE

标量数值函数,按指定位数截断一个数。

大纲

{fn TRUNCATE(numeric-expr,scale)}

参数

  • numeric-expr - 要截断的数字。数字或数字表达式。
  • scale - 计算结果为一个整数的表达式,该整数指定要截断的位数,从小数点开始计算。可以是零、正整数或负整数。如果比例是小数,会将其舍入为最接近的整数。

Truncate返回NUMERICDOUBLE数据类型。如果NUMERIC-EXPR的数据类型为DOUBLE,则TRUNCATE返回DOUBLE;否则返回NUMERIC

描述

TRUNCATE通过从小数点开始按小数位数截断NUMERIC-EXPR。它不对数字进行四舍五入,也不添加填充零。在截断操作之前,将删除前导零和尾随零。

0
0 249
文章 姚 鑫 · 五月 21, 2022 4m read

第149章 SQL函数 TRIM

字符串函数,它返回删除了指定的前导和/或尾随字符的字符串。

大纲

TRIM([end_keyword] [characters FROM] string-expression)

参数

  • end_keyword - 可选 — 一个关键字,指定要剥离的字符串表达式的哪一端。可用值为 LEADINGTRAILINGBOTH。默认为两者。
  • characters - 可选 — 一个字符串表达式,指定要从字符串表达式中删除的字符。指定字符的每个实例都从指定的末端被剥离,直到遇到此处未指定的字符。因此TRIM(BOTH 'ab' FROM 'bbbaacaaa') 返回 ‘c’。在此示例中,BOTH 关键字是可选的。如果未指定字符,TRIM 会去除空格。如果指定了字符,则需要 FROM 关键字。如果指定了 end_keyword 而未指定字符,则允许使用 FROM 关键字(但不是必需的)。如果没有指定这些参数,则不允许使用 FROM 关键字。
  • string-expression - 要剥离的字符串表达式。字符串表达式可以是列名、字符串文字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR2)。如果省略了字符和 end_keyword,则省略 FROM 关键字。

描述

0
0 100
文章 Michael Lei · 五月 20, 2022 29m read

本文向你推荐一些使用IRIS创建REST API应用程序的模式。

注:所有源代码在https://github.com/yurimarx/movie

类模式到REST应用

首先,请看我对创建IRIS API应用程序所需类的建议:

  • IRISRESTApplication: CSP.REST 类会作为中央控制者来控制业务服务处理的所有REST请求和响应.
  • BusinessService: 具有业务主题的类实现。它可以使用一个或多个持久化域类来持久化和查询业务主题要求的数据。
  • Persistent Domain: 管理SQL表的持久化类.

环境准备

  • VSCode;
  • Docker Desktop;
  • InterSystems ObjectScript Extension Pack.

示例应用的类图

我将创建一个电影目录应用程序来演示文章中建议的模式:

Note: 感谢IRIS API 模版应用 https://openexchange.intersystems.com/package/iris-rest-api-template . 这是本教程的基础.

搭建样本应用

1. 在你的文件系统中创建一个movie文件夹。在一个新的VSCode窗口中打开这个文件夹。

2. 在movie 文件夹中创建 Dockerfile 文件来在Docker container实例中运行IRIS社区版. 内容:

0
0 232
公告 Claire Zheng · 五月 19, 2022

在集成平台建设如火如荼的今天,如何能最大程度发挥集成平台价值,让集成平台不再止步于业务系统接口的打通,而是真正作为医院的IT基础架构,释放出更大价值?5月27日,InterSystems技术总监乔鹏 ( @Qiao Peng )和InterSystems销售工程师王菁伟( @Jingwei Wang )将针对集成平台建成后的应用价值,围绕“业务流程再造”角度,探讨以低代码方式梳理并再造业务闭环流程、从而赋能业务创新并促进医院精细化管理和高质量发展。点击链接或扫描报名。

0
0 263
文章 姚 鑫 · 五月 19, 2022 10m read

第147章 SQL函数 TO_TIMESTAMP

将格式化字符串转换为时间戳的日期函数。

大纲

TO_TIMESTAMP(date_string[,format])

参数

  • date_string - 要转换为时间戳的字符串表达式。此表达式可能包含日期值、时间值或日期和时间值。
  • format - 可选 — 对应于 date_string 的日期和时间格式字符串。如果省略,则默认为 DD MON YYYY HH:MI:SS

描述

TO_TIMESTAMP 函数将各种格式的日期和时间字符串转换为标准时间戳,数据类型为 TIMESTAMPTO_TIMESTAMP 返回具有以下格式的时间戳:

yyyy-mm-dd hh:mm:ss

始终包括前导零。时间使用 24 小时制指定。默认情况下,返回的时间戳不包括小数秒。

注意:TO_TIMESTAMPODBC 格式返回标准时间戳。 TO_POSIXTIME 返回一个编码的 64 位时间戳。 TO_POSIXTIME 是新编程的推荐时间戳格式。

必须指定匹配的 date_string 和格式。如果省略格式,则 date_string 必须匹配 DD MON YYYY HH:MI:SS

0
0 176
文章 姚 鑫 · 五月 18, 2022 10m read

第146章 SQL函数 TO_POSIXTIME

注:此函数在IRIS版本可用,Cache不可用。

将格式化的日期字符串转换为 %PosixTime 时间戳的日期/时间函数。

大纲

TO_POSIXTIME(date_string[,format])

参数

  • date_string - 要转换为 %PosixTime 时间戳的字符串表达式。此表达式可能包含日期值、时间值或日期和时间值。
  • format - 可选 — 对应于 date_string 的日期和时间格式字符串。如果省略,则默认为 DD MON YYYY HH:MI:SS

描述

0
0 77
公告 Michael Lei · 五月 18, 2022

所有人现在可以在 https://evaluation.intersystems.com下载IRIS和IRIS for Health社区和企业版 。

客户以及潜在客户都可以尝试我们最新最强的功能,包括一些还没有发布的新特性。

如何访问:

对于潜在客户,只要选择名称中带有"(预览)"的选项,就可以下载预览软件。

对于客户和InterSystems员工--只需拨动预览复选框,这将包括可用版本菜单下拉中的预览软件:

更多资源:

https://community.intersystems.com/post/introducing-evaluation-service-community-edition-downloads  

https://community.intersystems.com/post/intersystems-evaluation-service
 

有任何问题欢迎拨打 4006019890 或咨询您的ISC客户经理。

0
0 282
文章 姚 鑫 · 五月 17, 2022 4m read

第145章 SQL函数 TO_NUMBER

将字符串表达式转换为 NUMERIC 数据类型的值的字符串函数。

大纲

TO_NUMBER(string-expression)

TONUMBER(string-expression)

参数

  • string-expression - 要转换的字符串表达式。表达式可以是列名、字符串文字或另一个函数的结果,其中基础数据类型为 CHARVARCHAR2 类型。

描述

名称 TO_NUMBERTONUMBER 可以互换。它们支持 Oracle 兼容性。

TO_NUMBER 将字符串表达式转换为数字数据类型 NUMERIC。但是,如果 string-expression 的数据类型为 DOUBLE,则 TO_NUMBER 返回一个数据类型为 DOUBLE 的数字。

0
0 137
文章 Michael Lei · 五月 17, 2022 3m read

在这篇文章中,我们将使用docker和 参数配置文件模版 这一新特性来运行IRIS集群且轻松配置好。

在 UNIX® 和 Linux 上,您可以使用声明式参数配置合并文件来修改默认的 iris.cpf。合并文件是一个部分 CPF,在实例启动时为任何数量的参数设置所需的值。CPF 合并操作对每个实例只起一次作用。

我们的集群架构非常简单,它将由一个主节点(Node1)和两个数据节点(检查所有可用角色)组成。不幸的是,docker-compose不能部署到几个服务器上(尽管它可以部署到远程主机上),所以这对本地开发分片的数据模型、测试等很有用。如果是生产的InterSystems IRIS集群部署,你应该使用ICM云管理器IKO K8S调度器

0
0 107
文章 姚 鑫 · 五月 16, 2022 5m read

第144章 SQL函数 TO_DATE(二)

一年中的某一天(DDD 格式)

可以使用 DDD 将一年中的某一天(自 1 月 1 日以来经过的天数)转换为实际日期。格式字符串 DDDYYYY 必须与由整数天数和四位数年份组成的相应 date_string 配对。 (与 DDD 一起使用时,两位数的年份必须指定为 RR(而不是 YY)。)格式字符串 DDD 默认为当前年份。经过的天数必须是 1 到 365 范围内的正整数(如果 YYYY 是闰年,则为 366)。四位数年份必须在标准 日期范围内:18419999DDDYYYY 格式元素可以按任意顺序指定;它们之间的分隔符是强制性的。以下示例显示了这一年中的一天的用法:

/// d ##class(PHA.TEST.SQLFunction).ToDate4()
ClassMethod ToDate4()
{
	NEW SQLCODE
	&sql(
		SELECT TO_DATE('2018:60','YYYY:DDD')
		INTO :a
	)
	if SQLCODE = 0 {
		w a," = ",$ZDATE(a,1,,4) 	
	} else { 
		w "error:",SQLCODE 
	}
}
0
0 193
文章 姚 鑫 · 五月 15, 2022 7m read

第143章 SQL函数 TO_DATE(一)

将格式化字符串转换为日期的日期函数。

大纲

TO_DATE(date_string[,format])

TODATE(date_string[,format])

参数

  • date_string - 要转换为日期的字符串。基础数据类型为 CHARVARCHAR2 的字符串日期表达式。
  • format - 可选 — 对应于 date_string 的日期格式字符串。如果省略格式,DD MON YYYY& 是默认值;此默认值是可配置的。

描述

名称 TO_DATETODATE 是可互换的,并且支持 Oracle 兼容性。

TO_DATE 函数将各种格式的日期字符串转换为日期整数值,数据类型为 DATE。它用于输入各种字符串格式的日期,并将它们存储在标准的内部表示中。 TO_DATE 返回具有以下格式的日期:

nnnnn

其中 nnnnn 是介于 0(1840 年 12 月 31 日)和 2980013(9999 年 12 月 31 日)之间的正整数,包括端点。这表示天数。时间值被忽略。 1840 年 12 月 31 日之前的日期可以使用儒略日期来表示,如下所述。

也可以使用 TODATE() 方法调用从 ObjectScript 调用此函数:

$SYSTEM.SQL.Functions.TODATE(date_string,format)
0
0 269
公告 Jeff Liu · 五月 15, 2022

嗨,开发者们!  

看看你如何用PyODBC和Native API在Python中开发并连接到InterSystems IRIS®数据平台。 

⏯ Using Python to Connect to InterSystems IRIS

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" scrolling="no" src="//player.bilibili.com/player.html?aid=684120686&bvid=BV1zU4y1m7h7&cid=718939082&page=1" width="560"></iframe>

0
0 124
文章 Michael Lei · 五月 15, 2022 1m read

Hi, 社区!

想和大家分享一下俄罗斯论坛上的一个Debug方法。

假设我想对应用程序进行Debug,我想让它在某一行停止执行。

在代码中加入这一行:

l +d,-d

当我想在这一行中开始调试时,我在终端中屏蔽了d

USER> l +d

执行该应用程序。

应用程序在这一行停止,让我用Studio调试器连接到它。

为了释放锁,我在终端做了以下工作

USER> l -d

还有其他好的Debug 建议吗?

0
0 97
文章 Michael Lei · 五月 15, 2022 7m read

InterSystems IRIS对加密、解密和哈希操作有很好的支持。在%SYSTEM.Encryption(https://docs.intersystems.com/iris20212/csp/documatic/%25CSP.Documatic…)类中,有市场上主要算法的类方法。


IRIS算法和加密/解密类型

正如你所看到的,这些操作是基于密钥的,包括3个类:

  • 对称密钥: 进行加密和解密操作的部分共享同一个秘密密钥。
  • 非对称密钥: 进行加密和解密操作的部分共享相同的秘密密钥进行加密。然而,对于解密,每个部分都有一个私人密钥。这个密钥不能与其他人共享,因为它是一个身份证明。
  • 哈希: 当你不需要解密,而只需要加密时使用。当涉及到存储用户密码时,这是一种常见的方法。

对称和非对称加密的区别

  • 对称加密使用一个单一的密钥,需要在需要接收信息的人之间共享,而非对称加密在通信时使用一对公共密钥和一个私人密钥来加密和解密信息。
  • 对称加密是比较老的技术,而非对称加密则相对较新。
  • 非对称加密的出现是为了补充对称加密模式中需要共享密钥的固有问题,通过使用一对公共-私有密钥来消除共享密钥的需要。
  • 非对称加密比对称加密花费的时间相对较多。
0
0 430
文章 Michael Lei · 五月 15, 2022 1m read

有一个简单的新方法可以在Windows和Mac上的InterSystems IRIS 2019.1(和2018.1.2)的SSL/TLS配置中添加证书授权(CA)证书。  你可以通过输入以下内容要求IRIS使用操作系统的证书存储。

%OSCertificateStore

在 "包含受信任证书颁发机构X.509证书的文件 "栏中输入:%OSCertificateStore。   这里有一张如何在门户中这样做的图片:

这里有一个描述这个问题的文档链接。  它在 "包含受信任的证书颁发机构证书的文件 "的选项列表中。

这就是你需要做的所有事情!  现在,这个配置将接受由操作系统证书库中列出的任何CA颁发的证书。

0
0 206
文章 Qiao Peng · 五月 15, 2022 9m read

     在软件开发和业务集成中,规则无处不在:会员折扣的计算规则、根据消息类型和内容将其路由到不同目标系统的路由规则。还有一个规则发挥重要作用的地方-  辅助决策规则,例如临床知识库和医疗质量指标规则。

规则经常需要随业务调整和知识积累进行调整,而规则的调整是业务和行业专家定的。如果规则是以代码硬编码的,这些调整需要程序员改动,一来不直观、需要业务专家与程序员大量的沟通成本,二来硬编码改动会对应用伤筋动骨,甚至带来风险,三来没法控制新规则生效的时间 – 总不能让程序员在新规则生效的那一刻去编译和部署吧。

InterSystems规则引擎可以帮助我们解决这些问题,于构建、执行和记录消息路由规则和普通的业务规则,带给应用和集成方案充分的灵活性和可用性。甚至业务专家和临床信息学家都可以通过低代码的、图形化的规则编辑器修改规则和指定规则生效和失效时间。

InterSystems规则引擎是InterSystems IRIS数据平台和Health Connect与Ensemble集成平台的组件。创建的规则可以被单独调用,也可以被业务流程调用。

本篇介绍规则的如何使用InterSystems规则编辑器创建规则和规则引擎执行规则的逻辑。

1. 规则基本概念

    在设计规则前,先了解一下规则的基本概念。

1.1 上下文

0
0 429
文章 姚 鑫 · 五月 14, 2022 4m read

第142章 SQL函数 TO_CHAR(三)

数字到字符串示例

以下嵌入式 SQL 示例显示了基本的数字到字符串的转换:

/// d ##class(PHA.TEST.SQLFunction).ToChar3()
ClassMethod ToChar3()
{
	&sql(
		SELECT 
			TO_CHAR(1000,'9999'),
			TO_CHAR(10,'9999')
		INTO 
			:numfull,:numshort
	)
	if SQLCODE '= 0 {
		w !,"Error code ",SQLCODE 
	} else {
		w !,"Formatted number:",numfull
		w !,"Formatted number:",numshort
		w !,"Note leading blanks" 
	}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToChar3()
 
Formatted number: 1000
Formatted number:   10
Note leading blank

返回具有适当数量的前导空格的指定数字。无符号正数前面总是有一个空白字符。如果指定数字的位数少于格式参数,则提供额外的前导空格。

以下嵌入式 SQL 示例显示了分隔符的使用:

0
0 87
文章 姚 鑫 · 五月 13, 2022 5m read

第141章 SQL函数 TO_CHAR(二)

可以使用 TO_CHAR 将以下 tochar 表达式时间值转换为格式化的时间字符串:

  • $HOROLOG 时间整数($HOROLOG 的时间部分)。 tochar-expression 的值必须是有效的逻辑时间(086399 范围内的整数)。不要提供包含日期和时间组件的完整 $HOROLOG 值(例如 64701,42152); TO_CHAR 时间转换会错误地将 $HOROLOG 的第一个(日期)组件转换为格式化的时间字符串,并忽略第二个(时间)组件。
  • 逻辑时间戳值。 tochar-expression 的值必须是 %TimeStamp 数据类型(不是字符串数据类型),格式为 YYYY-MM-DDhh:mm:ss。时间戳的日期部分被忽略,时间部分被转换。例如,SYSDATE 是一个逻辑时间戳。
  • 标准 ODBC 时间格式的时间值。 tochar-expression 的值必须采用 hh:mm:ss 格式,并且可以是字符串。
  • 本地时间格式的时间值(使用当前 NLS 区域设置)。例如,如果 NLS TimeSeparator 设置为“^”,则 tochar-expression 的值可以采用 hh^mm^ss 格式,并且可以是字符串。

在所有这些情况下,格式的值必须是一个只包含时间格式代码的字符串:

0
0 141
文章 姚 鑫 · 五月 12, 2022 9m read

第140章 SQL函数 TO_CHAR(一)

将日期、时间戳或数字转换为格式化字符串的字符串函数。

大纲

TO_CHAR(tochar-expression[,format])

TOCHAR(tochar-expression[,format])

参数

  • tochar-expression - 要转换的逻辑日期、时间戳或数字表达式。
  • format - 可选 — 为 tochar 表达式转换指定日期、时间戳或数字格式的字符代码。如果省略,TO_CHARtochar-expression 作为规范数字返回。

描述

名称 TO_CHARTOCHAR 是可互换的,并且支持 Oracle 兼容性。

带格式的 TO_CHAR 函数有五种用途:

  • 将日期整数转换为格式化的日期字符串。

  • 日期在1840年之前转换为朱利安日期int

  • 时间的整数转换为格式化时间生态

  • 将日期和时间格式化的datetime

  • 将数字转换成一个格式化的数字字符串。

这个函数也可以从ObjectScrip调用

$SYSTEM.SQL.Functions.TOCHAR(tochar-expression,format)

有效和无效的参数

0
0 318
文章 姚 鑫 · 五月 11, 2022 3m read

第139章 SQL函数 TIMESTAMPDIFF

一个标量日期/时间函数,它返回指定日期部分的两个时间戳之间差异的整数计数。

大纲

{fn TIMESTAMPDIFF(interval-type,startdate,enddate)}

参数

  • interval-type - 返回值将表示的时间/日期间隔类型。
  • startdate - 时间戳值表达式。
  • enddate - 将与 startdate 进行比较的时间戳值表达式。

描述

TIMESTAMPDIFF 函数返回指定日期部分间隔(秒、天、周等)的两个给定时间戳之间的差异(即,从另一个中减去一个时间戳)。返回的值是一个 INTEGER,即两个时间戳之间的这些间隔数。 (如果 enddate 早于 startdate,则 TIMESTAMPDIFF 返回负 INTEGER 值。)

开始日期和结束日期是时间戳。这些时间戳可以是 %Library.TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff) 或 %Library.PosixTime 数据类型格式(编码的 64 位有符号整数)。

间隔类型参数可以是以下时间戳间隔之一:

0
0 135
公告 Michael Lei · 五月 11, 2022

InterSystems Kubernetes Operation(IKO)3.3版现已通过WRC下载页面和InterSystems容器注册中心提供。
IKO通过提供一个易于使用的irisCluster资源定义,简化了在Kubernetes中使用InterSystems IRIS或InterSystems IRIS for Health的工作。完整的功能清单见IKO文档,包括轻松的分片、镜像和ECP的配置。

IKO 3.3 亮点:

  • 支持InterSystems IRIS和InterSystems IRIS for Health 2021.2 以及 2022.1版本
  • 支持 Kuberentes 1.21
  • 将常见的系统警报和监控(SAM)配置作为irisCluster的一部分进行部署
  • InterSystems API Manager(IAM)现在也可以作为 irisCluster的一部分进行部署和管理
  • 自动标记Mirror对的活跃端,因此服务可以始终指向激活的镜像成员
0
0 96
公告 Jingwei Wang · 五月 11, 2022

 

各位开发者们好,:

很高兴跟大家宣布,畅销书作家和技术专家杰弗里·摩尔将在6月22日InterSystems的全球峰会上做专题演讲。以下是他的简历:

杰弗里·摩尔是一名咨询专家,他最近的咨询业务包括Salesforce、微软、Autodesk、F5Networks、Gainsight、谷歌和Splunk。 他一生的工作都集中在颠覆性创新的市场动态上。他的第一本书《跨越鸿沟》是关于创业公司在从早期采用者过渡到主流客户时所面临的挑战,该书已售出超过一百万册。摩尔最近的作品《Zone to Win》探讨了大型企业在拥抱颠覆性创新时所面临的挑战。  摩尔每年发表50至80场演讲,最近他重点关注企业IT投资从记录系统向交互系统的转变。 

我将发布更多关于我们演讲者的信息。今年的全球峰会,演讲阵容很强大。

另外,你现在可以在我们的网站上建立你的会议和时间表。如果你还没有注册,可以点击马上注册. 

0
0 87
文章 姚 鑫 · 五月 10, 2022 4m read

第138章 SQL函数 TIMESTAMPADD

一个标量日期/时间函数,它返回一个新的时间戳,该时间戳是通过将指定日期部分的多个间隔添加到时间戳来计算的。

大纲

{fn TIMESTAMPADD(interval-type,integer-exp,timestamp-exp)}

参数

  • interval-type - integer-exp 表示的时间/日期间隔类型,指定为关键字。
  • integer-exp - 要添加到 timestamp-exp 的整数值表达式。
  • timestamp-exp - 时间戳值表达式,将增加 integer-exp 的值。

描述

TIMESTAMPADD 函数通过将指定的日期部分增加指定的单位数来修改日期/时间表达式。例如,如果 interval-typeSQL_TSI_MONTH 并且 integer-exp5,则 TIMESTAMPADDtimestamp-exp 增加五个月。还可以通过为 integer-exp 指定负整数来减少日期部分。

TIMESTAMPADD 返回与输入timestamp-exp 数据类型相同的时间戳。此时间戳可以是 %Library.TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff) 或 %Library.PosixTime 数据类型格式(编码的 64 位有符号整数)。

0
0 247