搜索​​​​

清除过滤器
文章
Claire Zheng · 十一月 1, 2022

【动画视频】医院需要什么样的互联互通平台?

医院管理者、信息中心、业务骨干,每个角色都有独特的业务诉求,InterSystems IRIS医疗版互联互通套件专为国内用户设计,截至2021年,InterSystems技术已助力一百余家医院通过四级及以上医院信息互联互通标准化成熟度评级,其中,五乙用户占全国30%以上。
公告
Claire Zheng · 四月 10, 2023

相约 2023 CHITEC | InterSystems诚邀您莅临展位,探讨医院互联互通平台高效建设之举

2023年4月14日-16日,2023 CHITEC将在安徽省合肥市合肥滨湖国际会展中心(安徽省合肥市锦绣大道3899号)盛大召开。点击查看CHITEC 2023完整日程。InterSystems将亮相CHITEC,通过展位展示、主题研讨会、分论坛演讲等方式,全方位多角度展示InterSystems“加速评测,助力公立医院高效建设互联互通平台和数据中心”的能力。 1. 欢迎莅临InterSystems展位T28 在展会现场,我们将向您展示InterSystems IRIS医疗版互联互通平台、一体化数据平台、基于FHIR的数据利用和统一语义的数据中心。如果您希望进一步了解详细内容情况,希望得到详细的方案讲解或Demo演示服务,欢迎您通过以下方式进行登记预约。 莅临展位,由展位工作人员为您现场预约; 点击链接,提前预约展位Demo演示。 2. 欢迎报名参加主题研讨会“加速测评,赋能医院高质量发展” 时间:2023年4月14日(周五)13:30-17:00地点:合肥滨湖国际会展中心·综合馆(2号馆)·201会议室 在这次研讨会上,我们将为您带来InterSystems IRIS医疗版互联互通套件的详细解读与分享。您将了解到: 加速测评的五大利器; 统一语义的数据中心建设; 数据利用与应用创新; 现场演示。 点击链接,报名参会。 3. 欢迎关注分论坛主题演讲 在“分论坛:医院集成平台与电子病历建设应用”中,InterSystems中国技术总监乔鹏将与多位行业专家同台献策,分享主题演讲“InterSystems IRIS医疗版互联互通套件,赋能医院高质量发展”,助力医院夯实信息化建设基础,欢迎关注! 时间:2023年4月15日(周六)15:00-15:15 地点:合肥滨湖国际会展中心西区·综合馆(2号馆)·205会议室
文章
Claire Zheng · 二月 6, 2023

InterSystems开发者竞赛(Tool):欢迎了解来自中国开发者的三个参赛应用

InterSystems 开发者竞赛:Tool(工具)已进入投票时间,我们收集到来自全球的21个参赛作品,其中有三个参赛应用来自中国开发者。 以下按提交顺序排名 参赛应用1 Intersystems IRIS platform queue trend monitoring component(Intersystems IRIS平台队列监控组件) 提交者:yubo mao简介:随着医院信息化建设的逐步完善,医院业务接口越来越多,业务接口数据处理可能会由于多种因素(网络、消费方系统等)影响下,出现消息堆积过多甚至造成接口卡顿的情况,影响院内正常业务开展,因此对于业务接口组件队列的的监控愈发重要。 当前Intersystems IRIS平台内置的队列监控界面仅展示接口组件实时队列信息,对于对于医院实际应用场景所需要的队列数据信息提供较为局限。队列监控组件程序是基于Intersystems IRIS平台开发,可以对所有接口组件进行统一监控,并展示组件24h内组件队列信息,也可通过设置时间段查询组件历史队列数据,更好满足当前的院内应用需求。 更多详情,请查看参赛者文章及应用: 文章:Queue monitoring 应用:应用已上传至InterSystems Open Exchange 参赛应用2 message_key_query(消息键查询) 提交者:王喆简介:随着新型冠状病毒肺炎的流行,医院往往需要对患者信息进行流程调整操作,如输入患者ID查找门诊或住院部、挂号时间等。传统的数据库查询需要专业的程序员来处理,而使用该方案从界面上可以直接快速定位到患者在医院的挂号和就诊相关信息和时间。 更多详情,请查看参赛者文章及应用: 文章:IRIS快速查询服务思路分享 IRIS quick query service idea sharing 应用:应用已上传至InterSystems Open Exchange 参赛应用3 iris_log_analytics(IRIS log分析) 提交者:银行 郝简介:此方案用于监控IRIS平台事件日志相关信息,包括事件日志列表、日志详细信息、日志类型占比、日志数量最高组件Top7、近7天内日志数量波形图。 更多详情,请查看参赛者文章及应用: 应用:应用已上传至InterSystems Open Exchange 投票已经开始啦,欢迎为你感兴趣的应用投出宝贵的票票! 🔥 投票选出最佳应用程序 🔥 非常棒的应用,欢迎大家踊跃投票! 截至2月7日的投票结果分享- Since the beginning of the voting we have the results: Expert Nomination, Top 5 OpenAPI-Suite by @Lorenzo Scalese irissqlcli by @Dmitry Maslennikov iris-tripleslash by @Henry Pereira Intersystems IRIS platform queue trend monitoring component by @Yubo Mao message_key_query by @王喆 ➡️ Voting is here. Community Nomination, Top 5 Intersystems IRIS platform queue trend monitoring component by @Yubo Mao iris-tripleslash by @Henry Pereira message_key_query by @王喆 DX Jetpack for VS Code by @John Murray OpenAPI-Suite by @Lorenzo Scalese ➡️ Voting is here. So, the voting continues. Please support the application you like!
文章
Jingwei Wang · 十二月 29, 2021

$ZDATETIME 和 $ZDATETIMEH 参数

dformat : 值 描述 1 MM/DD/[YY]YY : 07/01/97 或 02/22/2018 2 DD Mmm [YY]YY : 01 Jul 97 3 YYYY-MM-DD :2018-02-22 (ODBC时间格式:默认值在下面的tformat部分有描述) 默认情况下,这种格式与当前的地区设置无关 如果要使用你当前的日期和时间的地区设置与这种格式,请将localeopt设置为0。 4 DD/MM/[YY]YY :01/07/97 或 22/02/2018 5 Mmm [D]D, YYYY :Jul 1, 1997 6 Mmm [D]D YYYY :Jul 1 1997 7 Mmm DD [YY]YY :Jul 01 1997 8 YYYYMMDD :19970701 9 Mmmmm [D]D, YYYY :July 1, 1997 10 W (2) :一个星期的日数,从0(星期日)到6(星期六)编号。 11 Www (Tue) — 日期缩写 12 Wwwwww (Tuesday) —日期全写 13 [D]D/[M]M/YYYY :1/7/2549 或 27/11/2549 泰国日期格式 14 nnn (354) — 年的天数 15 DD/MM/[YY]YY :01/07/97 或者 22/02/2018 16 YYYYc[M]Mc[D]Dc : 日本日期格式 17 YYYYc [M]Mc [D]Dc :日本日期格式 18 [D]D Mmmmm YYYY :伊斯兰日期格式 19 [D]D [M]M YYYY :伊斯兰日期格式 20 [D]D Mmmmm YYYY :伊斯兰日期格式 21 [D]D [M]M YYYY :伊斯兰日期格式 -1 从用户的locale中获取有效的dformat值,fmt.DateFormat,其中fmt是与当前进程相关的##class(%SYS.NLS.Format)的一个实例。如果没有指定dformat,这就是默认值。 -2 $ZDATETIME返回一个整数,指定从一个平台特定的起始日期/时间算起的秒数。这是ISO C编程语言标准中定义的由time()库函数返回的值。 使用-2时,tformat, precision, monthlist, yearopt, startwin, and endwin参数会被忽略。 -3 $ZDATETIME接收一个以$HOROLOG内部格式指定的日期时间值,将该值从本地时间转换为UTC时间,并以相同的内部格式返回结果值。 使用-3时,tformat、monthlist、yearopt、startwin和endwin等参数被忽略。 tformat : 值 描述 -1 从当前地区的TimeFormat属性中获取有效的tformat值,默认值为1。 如果你没有为除3以外的所有dformat值指定tformat,这就是默认行为。 1 hh:mm:ss 24小时制 2 hh:mm 24小时制 3 hh:mm:ss[AM/PM] 12小时制 4 hh:mm[AM/PM] 12小时制 5 hh:mm:ss+/-*hh:mm 24小时制. 时间表示为当地时间。加号(+)或减号(-)的后缀显示系统定义的本地时间与UTC的偏移量,例如+08:00 6 hh:mm+/-*hh:mm 24小时制. 时间表示为当地时间。加号(+)或减号(-)的后缀显示系统定义的本地时间与UTC的偏移量,例如+08:00 7 hh:mm:ssZ 24小时制. 后缀 "Z "表示时间是以UTC,而不是以当地时间表示。 8 hh:mmZ 24小时制. 后缀 "Z "表示时间是以UTC,而不是以当地时间表示。 注意: 如果省略tformat或将其设置为-1,tformat的默认值取决于localeopt参数和NLS TimeFormat属性。 要确定所在地区的默认时间属性,可调用NLS类方法GetFormatItem() 。 WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeFormat"),! WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeSeparator"),! WRITE ##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator") yearopt 在dformat值为0、1、2、4、7或15的情况下,是一个数字代码,用于指定将年份显示为两位数的时间窗口。 值 描述 -1 默认当前的locale 0 用两位数的年份来表示20世纪的日期(1900年到1999年) 用四位数的年份表示所有在20世纪以外或在特定过程的滑动窗口以外的日期 1 用两位数的年份表示20世纪的日期 用四位数的年份表示所有其他日期 2 用两位数的年份表示所有日期。 3 用两位数的年份表示那些属于startwin和(可选)endwin所定义的滑动时间窗口的日期。 用四位数的年代表所有其他的日期。当yearopt=3时,startwin和endwin是$HOROLOG格式的绝对日期。 4 用四位数的年份代表所有日期 5 用两位数的年份表示所有属于startwin和(可选)endwin定义的滑动窗口内的日期。 用四位数的年代表所有其他的日期。当yearopt=5时,startwin和endwin是相对年份 6 用两位数的年份表示本世纪的所有日期 用四位数的年份表示所有其他的日期
文章
Claire Zheng · 一月 7, 2021

认识Global Masters 倡导中心,从这里开始!

亲爱的社区用户,您好! 我们诚挚邀请所有社区成员加入InterSystems Global Masters倡导中心,以便了解最新动态,获取对开发者社区)的贡献积分,并获得奖励!请浏览本文并了解如何加入,有哪些福利可以期待! 点击此处:现在加入 ▶️ 什么是 Global Masters? Global Masters 是一个游戏化平台,您可以在其中完成与InterSystems技术相关的挑战(任务),赢取徽章和积分,并用积分兑换各种奖励! 在这里,每周都会发布5-10 个新挑战,公布开发者社区上最有趣的文章、最佳实践、视频、InterSystems 官方新闻、有趣的学习任务。 这是一个获得最新信息的好方法! ▶️ 具体是什么样的? 下面是挑战和奖励的示例: ▶️ 级别、徽章和特权 Global Masters 中有 6 个级别。您的级别越高,可获得的奖品价值和特权就越高。为开发者社区和 Open Exchange 做出贡献,在 Global Masters 保持活跃以达到最高级别!所有级别和徽章的列表将帮助您晋级到更高级别。 ▶️ 如何加入? 从这里开始! 1. 前往globalmasters.intersystems.com,点击“使用 InterSystems 登录名登录”按钮,然后使用您的WRC账号即可加入。 2. 登陆后,找到“自定义你的程序,从这里开始!(Customize your program! START HERE!)”开始挑战。这个初始挑战会解锁每周发布的奖励和新挑战。 不要跳过这个挑战,充分利用这里吧! 点击此处:现在加入 我们在 GM 中心等待所有 InterSystems 开发者的到来! 欢迎您提出任何反馈和想法。请随时与我们联系!InterSystems Global Masters 上见! 😉
公告
Claire Zheng · 七月 7

2025 年 6 月 10 日 – 官方公告:命名空间切换和全局显示故障

摘要 公告编号 受影响的产品和版本 风险类别和评分 明确要求 DP-439649 产品: InterSystems IRIS® InterSystems IRIS for Health HealthShare® Health Connect 版本: 2025.1.0.225.1 2025.1.0.223.0 2024.1.4 2023.1.6 2022.1.7 操作:4 – 高风险 系统稳定性:3 – 中等风险 此问题不构成安全漏洞。 它不允许用户绕过权限检查或访问其授权命名空间之外的数据 使用隐含命名空间、管理门户或数据库读写/只读混合访问权限 在命名空间之间切换或使用以下任何功能访问环境中的全局变量时,上面列出的 InterSystems 产品中的问题可能会引发意外的 <PROTECT> 错误: 隐含命名空间 只读访问默认数据库,但读写访问其他地方 列出例程和全局项的管理门户页面 该问题的症状包括: 存在命名空间创建故障 (DP-440830) 在管理门户中列出例程时,间歇性出现访问被拒的情况 (DP-439622) 全局显示实用工具不显示全局变量(如果用户只有只读权限)(DP-440744) DP-439649 已解决了所有这些问题,纠正了权限检查应用于进程私有全局和隐含命名空间解析的方式。 这些纠正措施针对的是行为中的失误,而不是访问控制中的失误。 权限得到了正确执行,用户无法访问其分配范围之外的全局变量或命名空间 此问题在以下产品的 2025.1.0.230.2、2024.1.4.516.1、2023.1.6.810.1 和 2022.1.7.116.1 版中得到了解决: InterSystems IRIS InterSystems IRIS for Health HealthShare® Health Connect 了解更多信息 如果您有任何问题或需要帮助,请联系 InterSystems 全球响应中心 (WRC)。
公告
Claire Zheng · 十月 12, 2023

提前与您心仪的奖品见个面吧(*^▽^*)

Hi 开发者们, 🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆(←点击链接进入参赛页面,浏览所有参赛文章)正在进行中,我们为参赛作者们准备了丰富的奖品,来与您心仪的奖品见个面吧!点击此处了解活动详情。 1. 专家提名奖:活动期间发布文章且成功参赛后,由InterSystems专家评选得出 2. 开发者社区奖:活动期间发布文章且成功参赛后,由社区成员点赞评选得出 3. 入围奖:在征文大赛期间,所有在InterSystems开发者中文社区发布文章且成功参赛的其余用户都将获得特别奖励。 注意:以上示意图仅供参考,具体以实物为准。 欢迎投稿参赛! 快乐分享技术,期待您的大作!✨ 🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆(←点击链接进入参赛页面,浏览所有参赛文章)
文章
Claire Zheng · 二月 13, 2023

【动画视频】在IRIS数据平台上如何正确解锁Python使用场景?

InterSystems IRIS数据平台深度支持Python,令您随心所愿!
文章
Claire Zheng · 一月 4, 2023

【GS22 视频】数字医疗的未来:经济、消费主义与技术

这是InterSystems 2022年全球峰会上InterSystems 医疗行业负责人 Don Wooklock 的分享,他认为,在数字医疗发展如火如荼的当下,经济、消费主义和技术三股力量正在推动医疗行业快速变革。我们面临着压力,但更多的是机遇,利用好市场能量,在具备变革精神的医疗卫生行业中,全力以赴!
文章
Michael Lei · 九月 13, 2022

医疗科技行业趋势

医疗科技市场正处于强劲的演变之中。Gartner的医疗科技的波浪图展示了这些技术是什么,非常好地反映了医疗行业的数字化趋势。 其中很多技术都可以使用InterSystems的技术(ISC Health Tech)来实现: 知情同意管理使用InterSystems Healthshare Stack来做患者主索引和知情同意管理。
公告
Jeff Liu · 一月 17, 2022

[视频]ObjectScript 开发人员的嵌入式 Python。使用Python和ObjectScript并肩工作

Hi 开发者们, New video is already on InterSystems Developers YouTube: ⏯ Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side 深入指导如何将Python与ObjectScript并排使用,包括: 在ObjectScript中使用Python库 将参数传入 Python 在 ObjectScript 和 Python 之间转换类型 从Python中使用ObjectScript类 🗣 主讲人: @Robert.Kuszewski Product Manаger, Developer Experience, InterSystems 祝您观看愉快,并请继续关注 可以把Youtube 链接换成B站链接?谢谢
文章
Claire Zheng · 一月 15, 2024

InterSystems第三次入围Gartner云数据库管理系统魔力象限,2023年荣膺“挑战者”称号

Gartner魔力象限是业内知名的分析报告,针对特定市场进行严谨、基于事实的研究后发布的魔力象限报告,可为用户提供全面视图,以便其了解在高速增长、差异化明显的市场中供应商的相对位置。在魔力象限中,供应商被定位在四个象限中:领导者(Leader)、挑战者(Challenger)、远见者(Visionary)和利基玩家(Niche Player)。 2023年年底,在 Gartner 2023年最新发布的“云数据库管理系统(Cloud DBMS)魔力象限”中,InterSystems再次荣膺“挑战者”(Challenger)称号,这是InterSystems第三次入围这一报告并得到认可(2022年“远见者”,2021年“挑战者”)。 Gartner此次评估面向包括InterSystems在内的19家云数据库管理系统供应商进行。我们相信,Gartner魔力象限“挑战者”这一定位,证明了InterSystems有能力挑战现状、推动创新,为市场提供独特的解决方案。 InterSystems IRIS数据平台提供的结缔组织(connective tissue)可将不同来源的分散数据转换为单一、完整的视图,从而在医疗保健、金融服务和供应链等关键市场中为具有关键数据需求的客户提供更好的结果。InterSystems提供了一种独特的智能数据编织方式,可提供高性能多模型和多工作负载数据库管理、智能数据服务、互操作性和分析能力。 IInterSystems数据平台主管Scott Gnau表示:“‘挑战者’这一称号证实了我们专注于创新并为客户提供价值的承诺。InterSystems是此次Gartner魔力象限中唯一的‘挑战者’,这足以说明我们不断超越,在云数据库管理方面取得的成功,InterSystems成功帮助企业在云中实现了数据集成、处理和分析。” 查看《2023云数据库管理系统魔力象限》免费副本:点击链接。 官方报道链接:Gartner® 推出2023年云数据库管理系统魔力象限™,InterSystems荣膺“挑战者”称号 ============ Gartner 免责声明:Gartner 不支持其研究出版物中描述过的任何供应商、产品或服务,也不建议技术用户只选择具有高评级或其他荣誉的供应商。Gartner研究出版物由Gartner研究机构的意见构成,不应被视为事实陈述。Gartner 不为本研究提供任何明示或暗示的担保,包括任何适销性或适用于特定用途的担保。 GARTNER和魔力象限(MAGIC QUADRANT)是 Gartner, Inc. 和/或其附属公司在美国境内和境外的注册商标,已获准用于此处。保留所有权利。
文章
Hao Ma · 六月 19, 2023

IRIS通过SNMP发送警告通知的操作

上篇文章[IRIS, Caché监控指导 - 警告和告警](https://cn.community.intersystems.com/post/iris-cach%C3%A9%E7%9B%91%E6%8E%A7%E6%8C%87%E5%AF%BC-%E8%AD%A6%E5%91%8A%E5%92%8C%E5%91%8A%E8%AD%A6) 发出后收到要求介绍一下发送SNMP通知的具体操作,这里介绍一下。 我省去了SNMP的原理,这个有需要的可以网上查找。这里只做一个配置的操作:测试怎么从一个Windows上安装的IRIS实例发送IRIS Alert给另一台Linux服务器。 ## 第一步: 配置 Windows SNMP 因为安全原因,Windows 10不再默认安装中启动SNMP,用户需要手工安装SNMP启动服务。以下两个文章是古老的Window 2003和新的Windows 10中配置SNMP的安装,给各位做个参考。 - [HOW TO: Configure the SNMP Service in Windows Server 2003](https://support.microsoft.com/en-us/help/324263/how-to-configure-the-simple-network-management-protocol-snmp-service-i) - [How to Install and Configure SNMP Service on Windows 10](https://theitbros.com/snmp-service-on-windows-10/) 简单的总结一下:Windows系统中有两个服务: - SNMP Service:使简单网络管理协议(SNMP)请求能够在此计算机上被处理。如果此服务停止,计算机将不能处理 SNMP 请求。如果此服务被禁用,所有明确依赖它的服务都将不能启动。 - SNMP Trap:接收本地或远程简单网络管理协议 (SNMP) 代理程序生成的陷阱消息并将消息转发到此计算机上运行的 SNMP 管理程序。如果此服务被停用,此计算机上基于 SNMP 的程序将不会接收 SNMP trap 消息。如果此服务被禁用,任何依赖它的服务将无法启动。 当前我需要从本机向远端发送SNMP, 所以只需要开启SNMP Service即可。然后需要配置SNMP Service的: - Community名称 - 发送Trap的目的地址 - Community的权限(在”安全”子页面配置,权限为读写,应该选中“发送身份验证Trap”) 如下图,Commnity是”public”, 发送trap到172.16.58.1和172.16.58.101, 分别是两台远端的服务器。 ## 第二步: 配置IRIS SNMP 在Windows系统注册iscsnmp.dll Windows系统中,如果IRIS安装在SNMP服务安装之前, 需要手工执行以下命令来注册iscsnmp.dll到Windows Registry。命令成功执行后要重启操作系统的SNMP Service。 打开IRIS Terminal工具,在%SYS命名空间执行: ``` SYS>set myStatus=$$Register^SNMP() Cache SNMP Extension Agent DLL successfully added to Registry ``` 上述命令行必须是在Administrator的角色执行,否则会有权限问题, 提示错误 “Unable to open Registry key 'SOFTWARE\Microsoft\Windows\CurrentVersion\CommonFilesDir” 开启 %SNMP_Monitor服务 到System>Security Management >Services, 启动%Service_Monitor服务。%Service_Monitor服务负责Caché和本地操作系统的SNMP Agent的通信,如果关闭,本地和远程的SNMP通信都将中断。 到“系统>配置>监视器配置- 配置设置。选中” 开启SNMP服务随系统启动而启动”,英文”Start SNMP Agent at System Startup”。(Cache'中本页面还包括BMC PORTAL监控软件或者WMI选项,如果不使用,可以不用关心)。 最后,为了启用修改后的配置,需要重启Caché实例。如果是测试环境, 也可以不重启,而是在Caché Terminal执行:`Do start^SNMP()` 或者`Do start^SNMP(705,20) `来应用修改, 其中705是ensemble SNPM作为subagent的默认TCP端口号, 20是超时时间。 命令`do stop^SNMP()`命令可以在IRIS停止SNMP工作。 ## 第三步: 向远端服务器发送SNMP Trap 这里,远端服务器我使用net-snamp工具。 net-snmp是linux, unix, mac os上第一选择的snmp服务和工具。简单的介绍centos 7 的net-snmp安装命令 ```bash # 安装net-snmp [root@serverb ~]# yum install net-snmp net-snmp-utils -y # 查看版本 [root@serverb ~]# snmpd -v # 启动 [root@serverb ~]# systemctl start snmpd [root@serverb ~]# systemctl status snmpd ``` (如果接收警告的SNMP Server是Windows系统,您可以选择一些图形化的工具做SNMP Trap的接收,比如[iReasoning](https://www.ireasoning.com/). ) ### 设置snmp trap deamon ```bash hma@CNMBPHMA ~ % snmptrapd -df -Lo NET-SNMP version 5.6.2.1 ``` ### 在IRIS发送Alert 简单的制造一个alert的最简单的方法是用下面的命令,它向messages.log写一个级别为2的记录,这个记录会再写到alert.log里,通过SNMP发送给SNMP服务器。 ``` %SYS>do ##class(%SYS.System).WriteToConsoleLog("Winter is coming",,2) ``` ### 检查SNMP服务器收到警告 这时去刚才的snmptrapd终端,可以看到收到了警告。 ```bash hma@CNMBPHMA ~ % snmptrapd -df -Lo Received 137 byte packet from UDP: [172.16.58.200]:55212->[0.0.0.0]:0 0000: 30 81 86 02 01 00 04 06 70 75 62 6C 69 63 A4 79 0.......public�y 0016: 06 0A 2B 06 01 04 01 81 81 33 04 02 40 04 AC 10 ..+......3..@.�. 0032: 3A C8 02 01 06 02 01 0E 43 03 5E E4 CB 30 5A 30 :�......C.^��0Z0 0048: 1E 06 14 2B 06 01 04 01 81 81 33 04 01 01 01 01 ...+......3..... 0064: 06 48 43 44 45 4D 4F 04 06 48 43 44 45 4D 4F 30 .HCDEMO..HCDEMO0 0080: 38 06 14 2B 06 01 04 01 81 81 33 04 01 01 01 08 8..+......3..... 0096: 06 48 43 44 45 4D 4F 04 20 5B 55 74 69 6C 69 74 .HCDEMO. [Utilit 0112: 79 2E 45 76 65 6E 74 5D 20 57 69 6E 74 65 72 20 y.Event] Winter 0128: 69 73 20 63 6F 6D 69 6E 67 is coming ``` 到这里,IRIS的警告通过SNMP发送已经成功,接下来,您可以做进一步的测试,比如, 如果您对镜像的警告很重视, 您可以测试做如下的测试: 接收镜像相关的警告 - **Becoming primary mirror server** 本镜像成员成为主机 - **Arbiter connection lost** 丢失和arbiter的连接。 - **MirrorServer: Connection to xxxx(backup) terminated** ​ 丢失和backup的连接。 以上3个警告都会写入alert,并发送给snmp服务器。 最后,如果您熟悉其他的监控工具,这时候您可以配置您的工具来接收警告了。 我后面会贴一个zabbix上监控IRIS的介绍,其中的警告用SNMP Trap实现,有兴趣的同学可关注本作者。
公告
Claire Zheng · 五月 8, 2021

最新职位正在招聘:Channel Sales Manager

InterSystems中国正在招聘SE,具体职位需求以英文发布,详情如下,欢迎将简历砸过来 (claire.zheng@intersystems.com)or 私信联系 :) Intersystems China 系联软件(北京)有限公司, established in 1978 is the trusted Healthcare IT solution provider for many World-Class hospitals and clinics in China, such as China’s largest foreign-invested hospital, United Family Healthcare 和睦家医疗, and one of China’s most prestige medical institution, Peking Union Medical College Hospital 北京协和医院。 The company has a small but collaborative team of talented and passionate individuals working the Greater China Region. Due to China’s economic growth, aging population and the government’s determination in the Healthcare reform, China has become one of InterSystems’s most important strategic regions with unparalleled growth potentials in the years to come. Overview This Channel Sales Manager role will require someone who is passionate about technology within the Greater China Regions. The role will focus on selling our core product portfolio and HealthShare into the Greater China Region IT channel. The successful applicant will develop new relationships with Application Partners and System Integrators, whilst maintaining and enhancing relationships with current partners to ensure that Intersystems is there vendor of choice. This role will suit someone who would like to work for a stable international company, have exposure to working with colleagues from other countries and who wants to be associated with leading edge technology. Responsibilities Develop relationships with new application partners and systems integrators. Manage and motivate current application partners and systems integrators to ensure that Intersystems is their vendor of choice by showing value, enhancing customer experience and being the trusted advisor for them Develop and execute against sales plan to meet revenue targets. Work with Marketing to develop market awareness of the potential of InterSystems products, organise industry events and initiatives. Create and maintain a healthy pipeline Provide accurate forecasting to the management team. Maintain awareness of industry sector and technological advances Qualifications Strong knowledge and experience in building and expanding solid partner ecosystem; Capability and Experience of closing deals and transaction execution within limited time, driven by success and results. In depth experience in and understanding of the IT sales channel within The Greater China Region. Demonstrable experience developing Application Partner and System Integrators Proven track record in exceeding quotas Previous experience in developing and successfully executing against a sales plan Ability to develop strong relationships with key decision makers and influencers with win-win strategy and be the trusted advisor to customers. Ability to think and work creatively to develop unique value propositions for specific partners or customers Experience negotiating and motivating a mutually agreeable and positive contracts Fluent written and communication skills both in Mandarin and English. Experience in Healthcare is not mandatory but a plus.
文章
Jeff Liu · 九月 22, 2021

IRIS 2021 技术文档 First Look 4 ObjectScript 入门

技术概要:ObjectScript 技术概要:ObjectScript 本文档将向您介绍 ObjectScript 编程语言,并提供了几个示例,说明如何使用它来存储和检索来自 InterSystems IRIS®数据平台的数据。本技术概要(First Look)并不试图提供对该语言或其功能的全面概述。您可以使用本文件末尾列出的参考资料,继续您的探索。 要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。 什么是 ObjectScript? ObjectScript 是一种编程语言,用于在 InterSystems IRIS 数据平台上快速开发复杂的业务应用。ObjectScript 源代码被编译成 object 代码,该代码可针对业务应用程序中的典型操作(包括字符串操作和数据库访问)进行高度优化。 ObjectScript 的独特之处之一是它的底层存储结构,即所谓的 globals。Globals 可以被认为是持久的多维稀疏数组。ObjectScript 允许您直接从 globals 访问数据,但也允许您通过其本机 object 和 SQL 支持来访问这些数据。 <span id="2_Try_It:_Storing_and_Retrieving_Data_Us" class="anchor"></span>虽然您可以在 InterSystems IRIS 平台上使用 Java、.NET、node.js 或其他语言编写应用程序,但通过使用该平台的许多 API,您可以使用 ObjectScript 编写高效的、基于服务器的代码,让您对数据有更精细的控制。 试一试:使用 ObjectScript 存储和检索数据 在这篇技术概要(First Look)中,您将学习如何使用 ObjectScript 来: 在 globals 中存储和检索数据。 定义一个类,并实例化、使用和存储该类的 objects。 使用 SQL 查询访问为该类存储的数据,并对结果集进行处理。 正如您将看到的,ObjectScript 使您能够以多种方式存储和访问数据,既强大又灵活。 用前须知 要使用本技术概要(First Look),您需要一个正在运行的 InterSystems IRIS 实例。您的选择包括几种类型的已授权的和免费的评估实例;该实例不需要由您正在工作的系统托管(尽管您的系统必须能够通过网络访问该实例)。关于如何部署每种类型的实例的信息,如果您还没有一个实例可以使用,请参见(InterSystems IRIS Basics:Connecting an IDE《InterSystems IRIS 基础:连接一个 IDE》)中的Deploying InterSystems IRIS(部署 InterSystems IRIS)。 您也需要知道: 实例的基于 web 的管理门户(Management Portal)的 URL,这是 InterSystems IRIS 的系统管理用户界面。 试一试:使用 ObjectScript 存储和检索数据 如何访问终端(Terminal),InterSystems IRIS 命令行工具。 您的实例的用户名和密码(InterSystems Learning Labs 上的 web 实例不需要)。 您还需要从 InterSystems GitHub repo 下载 ObjectScript 示例代码:https://github.com/intersystems/FirstLook-ObjectScript。 关于如何访问管理门户(Management Portal )或终端(Terminal)的更多信息,请参见InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》) 中的 " InterSystems IRIS Connection Information《InterSystems IRIS 连接信息》)"。尽管您实际上不需要 IDE 来做这些练习,但您可以使用安装了 ObjectScript 扩展的 Studio 或 Visual Studio Code 查看和编辑示例代码 。 导入 ObjectScript 代码示例 首先,将 ObjectScript 代码示例导入 InterSystems IRIS: 从管理门户(Management Portal)的主页,选择 System Explorer(系统资源管理器) > Classes(类)。 在 Classes 页面上,查看左栏,确保您在 USER 命名空间。您可以把命名空间看作是工作空间或目录。 点击 Import(导入)。 在 Import Classes 的对话框中: a. 如果您的 InterSystems IRIS 实例在远程服务器上运行,请指定是将示例文件下载到远程服务器还是下载到您的本地计算机。 b. 在"File" 或 "Directory"的 Import(导入)区域,点击 File(文件)。 c. 浏览您从 GitHub 下载的 FirstLookObjectScript.xml 文件。 d. 选择 Compile Imported Items(编译导入项)。 e. 对于 Compile Flags(编译标志),指定 cuk。 f. 点击 Next(下一步)。 g. 点击 Import(导入)。 h. 当出现加载成功的消息时,点击 Done(完成)。 现在,在 Classes 页面上,您应该看到 FirstLook.ObjectScript.cls 和 FirstLook.Person.cls 在类的列表中。在 InterSystems IRIS 中,包含类的包名称(FirstLook)附加有类的名称(ObjectScript 或 Person)。扩展名 .cls 用来表示类文件。 注意: 如果您的命名空间包含大量的类,可以在页面左栏的 Class Name(类名) 框中输入 F*.cls 来过滤列表。 ObjectScript 和 Globals 如果您想使用一些 ObjectScript 命令,一个很好的方法是使用 InterSystems 终端(InterSystems Terminal)。(如果您以前没有使用过终端(Terminal),请参见InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》) 中的 "InterSystems IRIS Connection Information(《InterSystems IRIS 连接信息》)"。) 在您启动终端会话(Terminal session)后,提示会指示您处于哪个命名空间。如果您不在 USER 命名空间,执行以下命令: set $namespace = "USER" 试一试:使用 ObjectScript 存储和检索数据 在 ObjectScript 中, 您可以使用 set 命令给变量赋值: USER>set x = "Welcome to ObjectScript!" 要显示一个变量的内容,请使用 write 命令: USER>write x Welcome to ObjectScript! 您刚刚创建的变量只存在于这个终端会话(Terminal session)的工作内存中。如果您想在数据库中存储一个值,您可以使用 global,它看起来像一个带插入符号(^)的变量: USER>set ^Settings("Color") = "Red" Globals 提供持久性存储,这意味着在您关闭终端会话后,^Settings 将继续存在。 这个特殊的 global 也是一个数组,有一个下标。与许多其他语言中的数组不同,globals 可以有整数、小数或字符串等下标。Globals 也是稀疏的,这意味着下标可能是连续的,也可能不是连续的。 您可以利用 globals 的多维特性来定义一个更复杂的结构: USER>set ^Settings("Auto1", "Properties", "Color") = "Red" USER>set ^Settings("Auto1", "Properties", "Model") = "SUV" USER>set ^Settings("Auto2", "Owner") = "Mo" USER>set ^Settings("Auto2", "Properties", "Color") = "Green" 要显示 global 中的所有节点,您可以使用 zwrite 命令: USER>zwrite ^Settings ^Settings("Auto1","Properties","Color")="Red" ^Settings("Auto1","Properties","Model")="SUV" ^Settings("Auto2","Owner")="Mo" ^Settings("Auto2","Properties","Color")="Green" ^Settings("Color")="Red" 要检索存储在 global 特定节点上的值,您可以使用 $get() 函数。如果您试图从不存在的 global 节点检索值,这个函数将返回空字符串,以避免潜在的未定义错误。 在终端(Terminal)尝试以下操作: USER>set ^testglobal(1) = 8888 USER>set ^testglobal(2) = 9999 USER>set globalValue = $get(^testglobal(1)) USER>write "The value of ^testglobal(1) is ", globalValue The value of ^testglobal(1) is 8888 要在 global 中迭代节点,您可以使用 $order() 函数,它返回 global 中的下一个下标。传入一个下标等于空字符串的 global 节点会导致 $order() 返回第一个下标。返回值等于空字符串表示 $order() 已经到达最后一个下标。 您可以像编写变量或 global 的值一样编写函数返回的值: USER>write $order(^testglobal("")) 1 USER>write $order(^testglobal(1)) 2 USER>write $order(^testglobal(2)) USER> 在实践中,您通常会在 ObjectScript 类文件中的类方法中创建一个 $order() 循环。在 FirstLook.ObjectScript.cls 中为您提供了以下方法。 试一试: 使用 ObjectScript 存储和检索数据 /// Iterate over global ^testglobal ClassMethod Iterate() { // Start by setting subscript to "" set subscript = "" // "Argumentless" for loop for { // Get the next subscript set subscript = $order(^testglobal(subscript)) // When we get to the end, quit the for loop quit:(subscript = "") // Otherwise, write the subscript and the value // stored at ^testglobal(subscript) write !, "subscript=", subscript, ", value=", ^testglobal(subscript) } } 请注意,"无参数(argumentless) "的 for 循环没有指定终止条件,如果我们不显式退出该循环,它将永远循环下去。Write 语句中的感叹号告诉 ObjectScript 在编写 global 中每个节点的下标和值之前移动到下一行。 要在终端(Terminal)运行该方法,请输入: USER>do ##class(FirstLook.ObjectScript).Iterate() 这产生了输出: subscript=1, value=8888 subscript=2, value=9999 ObjectScript 和 Objects 您可以使用 ObjectScript 来创建具有方法和属性的类。然后您可以将该类的 objects 实例化。示例类 FirstLook.Person.cls 定义了一个类 Person,然后让您创建该类的实例,如 person John Smith 或 person Jane Doe。 基本的类定义如下所示: Class FirstLook.Person Extends %Persistent { Property FirstName As %String [ Required ]; Property LastName As %String [ Required ]; } Person 类扩展了内置的 InterSystems IRIS 类 %Persistent,它允许您访问父类中一些有用的方法,如 %New() 和 %Save()。 然后列出该类的属性。在这种情况下,您只是了存储一个 person 的名字和姓氏。 继续使用 终端(Terminal)创建一个新 person。如果您不在 USER 命名空间,执行以下命令: set $namespace = "USER" 要创建一个新的 Person object,请使用 %New() 方法,该方法返回一个新 person 的 "句柄",更正式的说法是一个 object 引用,或 OREF。然后设置新 person 的属性,并调用 %Save() 方法将新 person 存储在数据库中。 USER>set person = ##class(FirstLook.Person).%New() USER>set person.FirstName = "Sarah" USER>set person.LastName = "Aarons" USER>set status = person.%Save() USER>write status 1 试一试: 使用 ObjectScript 存储和检索数据 %Save() 方法返回一个状态,如果成功的话,其值为 1。 当您保存一个 object 时,InterSystems IRIS 会自动为您把它储存在一个 global 中。默认的 global 名称是末尾带有 Dappended 的类名,在本例中是 ^FirstLook.PersonD。 如果显示 global 的内容,您可以看到根节点(没有下标的节点)持有一个 ID,这个 ID 对存储的每个新对象来说是递增的。Global 的其余部分由 ID 下标。每个 Person 节点包含一个属性值列表,其中列表用 $lb 表示,用于 "列表构建"。 USER>zwrite ^FirstLook.PersonD ^FirstLook.PersonD=1 ^FirstLook.PersonD(1)=$lb("","Sarah","Aarons") 您还可以定义实例方法,它对特定的实例进行操作,而类方法则是类的泛型方法。例如, FirstLook.Person.cls 包含一个 WriteName() 方法, 该方法编写 person 的名字。 /// Given an instance of a person, write person's name Method WriteName() { write "The name of this person is:" write !, ..FirstName write !, ..LastName } 属性或方法名称前面的额外点表示当前对象或类。 由于变量 person 目前指的是 Sarah Aarons,您可以这样写她的名字: USER>do person.WriteName() The name of this person is: Sarah Aarons 作为练习,创建、存储和编写 Person 类的一些新对象,例如,Andrew Shaw、Peter Shaw 和 Kate Aarons。 ObjectScript 和 SQL 您刚刚已经看到了如何将创建的每个 person 存储为 global 中的节点。正如您将在本节中所看到的,每个 person 也是表中的一行,可以使用 SQL 进行访问。 InterSystems 提供了几种在 ObjectScript 中使用 SQL 的方法。例如,您可以使用类查询,这基本上是类文件中的 SQL 查询。 在 FirstLook.Person.cls 中,下面的类查询,对类中的所有对象执行 SELECT 命令: /// Query for all stored names Query Select() As %SQLQuery [SqlProc] { SELECT %ID, FirstName, LastName FROM Person ORDER By LastName, FirstName } 要测试该查询,您可以从终端(Terminal)运行它: USER>do ##class(%ResultSet).RunQuery("FirstLook.Person", "Select") 输出将显示一个列表,其中包含您在前面的练习中创建并存储的每个 person,按姓氏,然后是名字排序: ID:FirstName:LastName: 4:Kate:Aarons: 1:Sarah:Aarons: 2:Andrew:Shaw: 3:Peter:Shaw: 了解有关 ObjectScript 的更多信息 在实际生活中,您可能会编写一个类方法,比如 FirstLook.Person.cls 中为您提供的方法,将查询的结果放在结果集中,然后遍历这个结果集中的每一行: /// Run select query and write all names in result set ClassMethod WriteAllNames() { // Create a new %SQL.Statement object set stmt = ##class(%SQL.Statement).%New() // Prepare the class query to execute by passing in // the ClassName and QueryName. set status = stmt.%PrepareClassQuery("FirstLook.Person", "Select") // Handle any errors if $$$ISERR(status) { do $system.OBJ.DisplayError(status) quit } // Execute the query set resultSet = stmt.%Execute() // Iterate over results while (resultSet.%Next()) { // Write person's first and last name write !, resultSet.%Get("FirstName"), " ", resultSet.%Get("LastName") } } 在调用 %PrepareClassQuery() 后,这个类方法使用 $$$ISERRmacro 来检查错误状态。然后, 在执行查询后,代码使用 resultSet.%Next() 循环遍历结果集,如果存在另一行,则返回 true。 要在终端(Terminal)运行该方法,请输入: USER>do ##class(FirstLook.Person).WriteAllNames() Kate Aarons Sarah Aarons Andrew Shaw Peter Shaw 正如您所看到的,ObjectScript 为您提供了几个处理数据的选项。使用 globals 可以最大限度地控制数据的存储方式,使用 objects 可以轻松地处理类的单个实例,而 SQL 可以跨表的行进行操作。如何看待数据完全取决于您自己。 了解有关 ObjectScript 的更多信息 使用下面列出的参考资料,了解更多关于 ObjectScript 编程的知识。 ObjectScript 教程 --- 提供 ObjectScript 语言的交互式介绍。 Using ObjectScript(使用 ObjectScript)--- 提供 ObjectScript 编程语言的概述和详细信息。 ObjectScript Reference(ObjectScript 参考资料) --- 提供 ObjectScript 的参考资料。 Orientation Guide for Server-Side Programming(服务器端编程定向指南) --- 为使用 InterSystems 产品编写服务器端代码的程序员提供基本信息。 InterSystems ObjectScript Basics(InterSystems ObjectScript 基础) --- 涵盖 ObjectScript 基础的交互式课程。