搜索​​​​

清除过滤器
公告
Claire Zheng · 三月 17, 2021

InterSystems编程大赛: 开发者工具

亲爱的社区开发者们,大家好! 我们很高兴地宣布,新一轮InterSystems开发者竞赛开启了! 🏆 InterSystems 编程大赛:开发者工具 🏆 请提交具有如下特性的应用程序——能够加速开发、贡献更多高质量代码、帮助用户测试、部署、支持或监控基于InterSystems IRIS的解决方案。 时间: 2021年3月29日- 4月25日 Total prize: $8,500 奖项设置 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名 - $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $750 🥈 第二名 - $500 🥉 第三名 - $250 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile. 参赛时间安排 🛠 3月29日 - 4月18日: 应用开发、提交阶段(在此期间,您可以持续编辑自己的项目) ✅ 4月19日 - 25日: 投票阶段 🎉 4月26日: 宣布优胜者! 主题 💡 InterSystems IRIS开发者工具 💡 此次竞赛中,我们希望您提交的应用程序能够改善IRIS开发者的使用体验,贡献更多qualitative code,并帮助用户测试、部署、支持或监控基于InterSystems IRIS的解决方案。 以下是参赛须知 有效应用程序:100%全新的Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 应用程序的类型应匹配: UI框架, IDE, 数据库管理, 监控, 部署工具等等 应用程序需要在 IRIS Community Edition 或 IRIS for Health Community Edition 或 IRIS Advanced Analytics Community Edition 上运行。 应用程序应该开源并在GitHub上发布。 应用程序的README文件需要包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 应用程序的源代码应该以UDL(而非XML)格式提交, 举例说明。 上述要求可能会按需修订。 资源助力 示例程序: iris-rad-studio - RAD for UI cmPurgeBackup - backup tool errors-global-analytics - errors visualization objectscript-openapi-definition - open API generator Test Coverage Tool - test coverage helper and many more. 我们建议您从以下模板开始: objectscript-docker模板 rest-api-contest模板 native-api-contest模板 iris-fhir模板 iris-fullstack模板 iris-interoperability模板 iris-analytics模板 如何将您的APP提交给大赛: 如何在InterSystems Open Exchange上发布应用程序 如何把参赛APP提交给大赛 参赛评比 我们已制定全新投票规则,欢迎关注! 期待您的精彩提交!加入我们的编程马拉松,赢取大奖! ❗️ 点击此处,查看 官方竞赛条款解读.❗️ 最新竞赛启动啦!欢迎大家积极参赛!✿✿ヽ(°▽°)ノ✿(*^▽^*) Pls invite your customers to join. Thx! @Li.Yan @Lu.Wang @Jun.Qian @Peng.Qiao @Louis.Lu @Hao.Ma @Lin.Zhu @Jieliang.Liu 今天就可以开始提交作品啦!
公告
Claire Zheng · 四月 7, 2021

InterSystems开发者社区新增“工作”版块

亲爱的开发者们! 现在你可以在InterSystems开发者社区找工作啦!在开发者社区发帖,你可以为自己找一份心仪的工作,也可以为你的公司寻找合适的人才! 那么,具体怎么操作呢? 在顶部菜单栏找到"职位" 版块: 在这里,你可以发现: 工作机会: 你可以找到需要InterSystems技术能力的工作机会; 求贤: 在这里,你可以发帖寻找具备InterSystems数据平台技术能力的优秀人选,在“所需技能”等相关描述中应包含对InterSystems技术的需求。 所以,如果你: 想为拥有InterSystems技术的人提供一个工作机会,或 拥有InterSystems技术能力,且正在寻找新的工作机会 就可以在社区发帖,当然,请在你发的帖子中加入相关tags: 工作机会 求职 以下是一份超简单的发帖攻略: 找到 职位 并点击 "新工作机会" 按钮,, 就可以创建相关帖子。 欢迎你尝试这个新功能,在这里找到合适的员工,在这里找到心仪的工作😉 如果有任何疑问,跟帖讨论与我们联系吧! Precautionary measures: InterSystems 不保证招聘信息及其他在本网站发布信息的准确性 InterSystems 对因本网站所公布的信息而造成的任何损失概不负责,请直接与招聘人员或申请人确认内容及条件 更多内容,请查看 InterSystems开发者社区行为准则.
公告
Claire Zheng · 四月 13, 2021

InterSystems IRIS平台入驻AWS Quick Start

Hi 社区开发者们,告诉大家一个好消息!InterSystems IRIS®数据平台已入驻AWS Quick Start,今后可在AWS上快速部署高可用的生产环境。 基于AWS和InterSystems在安全性和高可用性方面的最佳实践,InterSystems IRIS Quick Start模板能够提供可靠、可重复的自动化参考部署,简化IRIS关键任务环境的构建过程。 这些加速器将数百个手动步骤简化为几步,因此用户可以在几分钟内快速、经济有效地在自己的AWS账户中安装InterSystems IRIS,从而更快地获得洞察和价值。 InterSystems数据平台副总裁Scott Gnau表示:“InterSystems IRIS入驻AWS Quick Start后,可为用户提供优化的、预配置的数据平台,帮助其近乎实时地部署安全、高可用的生产环境。InterSystems IRIS和AWS Quick Start的强强联合可以加快实现价值的速度,用户可专注于利用其中的深刻洞见。在目前日益激烈的竞争环境中,这两点非常重要。” 作为这个最新产品的一部分,我们还将为通过Quick Start部署InterSystems IRIS平台的用户提供一份指南,以介绍架构并提供部署指导。 作为一个全面的、云优先的数据平台,InterSystems IRIS无需集成多种技术,因此可减少代码、系统资源和维护流程,并提高投资回报率。
文章
Jeff Liu · 四月 8, 2022

Kettle 中使用JDBC链接 InterSystems IRIS

使用 JDBC 链接 InterSystems : ​将IRIS jdbc 驱动拷贝到 安装文件夹/lib 下 ​自定义链接URL: jdbc:IRIS://ipAddress:superserverPort/namespace ​​自定义驱动器类名称: com.intersystems.jdbc.IRISDriver 然后就可以像其他关系型数据库使用的方式来使用Kettle。
文章
Lilian Huang · 六月 14, 2022

[首次使用InterSystems IRIS] 互操作性: Message消息

这篇文章是上一篇文章的延续https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么? 在上一篇文章:https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么? 我们查验了什么是Production. 我们运行了示例代码,并在Visual Trace 页面查验了如何将流动消息的内容引入进Production中。 本文将回顾消息messages的概念和定义,和消息如何在系统集成所需的开发内容中用于组件之间发送和接收数据。 Production生产http://[https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么? Message消息 Components组件 Business Services业务服务 Business Processes业务流程 Business Operations业务操作 在创建 一个Message消息之前,让我们回顾一个案例研究。 一家公司经营着一个购物网站,并且正在为了适应季节而改变显示的产品信息顺序。 然而,有些商品无论季节如何都卖得很好,而有些商品在想不到的时间卖的很好,这与当前要更改顺序的显示规则不符。<br />因此,我们研究了更改显示商品顺序规则的可能性是匹配当天的温度而不是季节。 这就使得在购买商品时测量当时的温度变的很有必要。 由于一个外部的Web API可以查看天气信息,我们计划在商品购买时收集当时的天气信息并在将其录入数据库。 从本案例中,您可以看到以下内容: 从外部收到的信息是“购买的产品名称和城市名称” 从IRIS发送到外部系统以请求处理的信息是“城市名称”。该过程的结果是输入进的城市 “天气信息” 通过本案例研究,我们将执行系统集成所需的组件,在此之前,要运行这些组件,需要发送和接收messages消息,这些消息是中继转发数据,要使用这些messages消息,需要定义消息类。 一个消息类的设计需要考虑应该发送和接收哪些信息(即,messages消息),以使组件运行。 在此过程中,我们需要以下两类信息: A) 要获取天气信息时发送给外部Web API 的城市名称。 B) 记录在数据库中的天气信息和购买的产品名称。 A)中的城市名称和B)中的购买产品名称可以被包含进输入给IRIS的信息中。 B) 中的天气信息可以从外部Web API的响应信息中检索。 下面的图表就是考虑了从可用数据中发送和接收每个组件所需的信息。 黄色方框的第一行描述消息类别名,第二行之后说明为属性设置。 在示例代码中,我们有以下三种类型的messages消息: Start.Request(请求消息) 它用于发送购买的产品名称和城市,以获取天气信息。 Start.Response(响应消息) 它们用于返回操作的结果(天气信息)。 Start.InsertRequest(请求信息) 用于发送天气信息和购买产品的名称,以便在数据库系统注册。 The messages are specified in a superclass, Request message, and Response message are derived from Ens.Request and Ens.Response, respectively. The following is an example of the definition of the Request message Start.Request. messages 消息在超类别中指定,请求消息和响应消息派生自Ens.Request and Ens.Response,分别作出回应。 以下是Start.Request的定义示例: 以下是响应消息的一个示例, 请求消息, 将请求输入和数据库注册的请求信息发送至如下: (我们计划将天气信息属性设置在Start.Response中,获取天气信息后再返回。) 如果要在Studio中创建,您也可以使用Wizard创建消息。 参考)在Studio中创建响应类的步骤。 总结关键的点在于消息设计的思路“应该发送和接收哪些信息(i.e., messages)”以使组建运行。 一旦消息类实现后(驱动每个组件的信息是什么),下一步即是为组件创建类别。 原文请参考:https://community.intersystems.com/post/intersystems-iris-first-time-interoperability-message written by Mihoko Iijima
公告
Tingting Jiang · 六月 21, 2022

InterSystems热招职位(2):Technical Specialist(Implementation)

InterSystems正在招聘Technical Specialist(Implementation),欢迎您的自荐、推荐。请将简历投递至Belinda.Glasson@intersystems.com,愿您的加入给我们带来新的活力,我们也将为您提供广阔的发展空间! (由于岗位职能要求,职位说明以英文形式发布。) Location:Beijing Job Title:Technical Specialist Department:Implementation Reporting to:Program Director What We Do Matters Why are we here? To ensure that our customers have reliable access to the right information at the right time—information they can share and use to draw insights, leading to better decisions. Job Summary The Technical Specialist will be required to perform custom development tasks and provide support for InterSystems TrakCare and related products. The Technical Specialist will be responsible for site specific software support and development activities and to ensure that the software satisfies project specifications and is delivered and deployed in line with project requirements. The Technical Specialist must be available to visit client sites (e.g. hospitals/laboratories) and implementation partners for technical support and/or to provide technical training. International travel may be required. Key Responsibilities of the Role Liaise with client or business analyst in regard to ongoing support or enhancement requests. Liaise with other InterSystems support and implementation team members to analyze problems and specify, document, test, and manage deployment of fixes for product functions or custom enhancements. Liaise with client or business analyst on any requests for new or modified reports. Advise and assist TrakCare Project Managers during implementation. Manage the resolution of any outstanding acceptance issues before and after project go-live. Develop custom/site specific software such as JavaScript, user defined functions, interfaces, reports, extracts, data migration scripts and conversions. Provide technical support for custom development i.e. JavaScript, user defined functions, interfaces, reports, extracts, data migration scripts and conversions. Provide support on the data dictionary. Provide advice and best practices to Clients for technical areas such as networks, configurations, architectures, custom development, etc. Provide technical support for troubleshooting and performance analysis for reports, stored procedures, interfaces, conversions, data migration scripts and user defined functions. Monitoring and responding to Technical Team calls on the TRC problem management system. Support and testing of all TrakCare related utilities, e.g. patching tool, print service etc. Production of training materials for technical courses such as system custom development or reporting. Production of technical documentation such as reference materials, installation instructions, user guides, knowledge-base articles and how-tos. Responsible for participating in on-site technical training if required. Responsible for participating in on-site technical implementations if required. Responsible for participating in the on call 24 hour roster service. Assistance in researching new development or report writing using InterSystems technologies and 3rd party products. Other duties may be directed by the Company from time to time. Experience and Qualifications Graduate IT qualifications highly desirable. Experience in an application development/programming position or a position providing technical support including analysis of program code. Knowledge of web orientated languages, including SQL, HTML, JavaScript. Proficient and knowledgeable in one or more of the following programming languages or equivalent: Java, C#, C, C++, Pascal, Perl, Python, Ruby, JavaScript, VisualBasic, Cache' Object Script, M (MUMPS). Experience with data analysis and database methodologies. Experience with Microsoft Office. Be able to design and write technical documents. Well versed in Internet / Intranet concepts including web development and web servers. Experienced in customer focused support or implementation. Proven ability to lead and deliver results as required within specific time frames. Good presentation and communication skills. Ability to conduct training and develop training materials. Ability to work within a team in a cross cultural environment. Available for out of office hours work and willing to travel. Keen to learn new technologies and new applications. Education and Training Degree in Computer Science or Information Technology
文章
Louis Lu · 一月 19, 2023

InterSystems IRIS 2022.3 版本下的列存储

您可能还记得在 InterSystems 2022年全球峰会以及 2022.2 版本发布的网络研讨会上,我们发布了一项令人兴奋的新功能——列存储,它可以纳入您 InterSystems IRIS 的解决方案中。 列存储引入了一种存储SQL表数据的替代方法,它为分析查询提供了数量级的加速。 最新的2022.3开发预览版在原有的基础上包括一系列我们认为值得在这里宣布的更新。 快速回顾 如果您不熟悉InterSystems IRIS 的列存储,请观看这段简短的介绍视频以及相关该主题的2022全球峰会内容。 简而言之,我们使用新的$vector数据类型将表数据编码为每列 64k 个值的块。 $vector是一种仅限内部使用的数据类型(目前),它利用自适应编码方案来实现稀疏和密集数据的高效存储。 编码还针对一系列专用$vector操作进行了优化,例如一次计算64k 值的整个块的聚合、分组和过滤,并在可能的情况下利用芯片的SIMD指令。 在SQL查询时,我们构建对这些块直接进行操作的查询计划,正如您所想象的,与传统的逐行处理相比,这大大减少了执行查询所需的IO量和ObjectScript指令数。 当然,与面向行且对于单值的操作相比,这个的IO消耗更大,$vector的操作也更重一些,但收益是巨大的。 我们使用一个专业术语矢量化查询计划来表示处理$vector数据的执行策略,通过一系列快速的对于整个块的操作来提高整体的效率。 就一个字“快” 最重要的是,事情变得更快了。 我们扩展了优化器对列索引的理解,现在您将看到更多的查询使用列索引,即使某些请求的字段没有存储在列索引或数据映射中。 此外,您将看到它在许多情况下联合收割机了列索引和位图索引,如果您是从向现有模式添加列索引开始的,那么这将非常有用。 新工具包还包括一系列跨堆栈的更改,以提高性能,从优化到一些查询处理增强功能上的低级$vector操作,以及一组更广泛的可并行化的矢量化查询计划。 加载数据的某些方法,如通过INSERT.. SELECT语句,现在还将使用我们已经用于构建索引的缓冲模型,并且现在能够以真正高的性能构建整个表。 向量化的 JOIN 操作 我们在此版本中添加的最令人兴奋的功能是支持以矢量化方式连接列数据。 在Python 2022.2中,当您希望在一个查询中联合收割机两个表中的数据时,我们仍然会求助于健壮的逐行JOIN策略,该策略同样适用于按列和按行组织的数据。 现在,当JOIN的两端都以列格式存储时,我们使用一个新的内核API在内存中对它们进行JOIN,同时保留它们的$vector格式。 这是实现完全矢量化查询计划的又一重要步骤,即使对于最复杂的查询也是如此。 下面是一个利用新函数的查询示例,该查询对纽约Taxi数据集执行 SELECT COUNT(*), MAX(r1.total_amount - r2.total_amount) FROM NYTaxi.Rides r1, NYTaxi.Rides r2 WHERE r1.DOLocationID = r2.PULocationID AND r1.tpep_dropoff_datetime = r2.tpep_pickup_datetime AND r2.DOLocationID = r1.PULocationID AND r1.passenger_count > 2 AND r2.passenger_count > 2 此查询查找有两名以上乘客的旅行对,第二次旅行在第一次旅行结束的地方开始,在完全相同的时间,并且第二次旅行将乘客带回第一次旅行开始的地方。 这不是一个非常有用的分析,但是我在这个模式中只有一个真正的表,复合JOIN键使这个分析变得不那么琐碎。 在此语句的查询计划中,您将看到类似Apply vector operation %VHASH(用于构建复合JOIN键)和Read vector-join temp-file A的片段,它们表明我们的新矢量化连接器正在工作! 这听起来像是一个冗长的查询计划中的一个微不足道的小问题,但它涉及到内部的大量智能工程,而且有相当多的知名柱状数据库供应商根本不允许这样做,并对您的模式布局施加了严格的约束,所以请加入我们,一起来享受这个! :—) 当查询计划继续读取该临时文件时,您可能会注意到在连接后的工作中仍有一些逐行处理,这就把我们带到了...... 接下来我们会... 列存储在2022.3版本中仍被标记为"实验性",但我们正在接近生产就绪状态,并为多表查询提供完整的端到端矢量化操作。 这包括上面提到的Post-Join 工作、查询优化器中更广泛的支持、更快地加载列式表以及对连接器的进一步增强(如共享内存支持)。 简而言之:现在是使用 InterSystems IRIS 2022.3社区版在纽约出租车数据集上进行第一次尝试的好时机,并且在我们发布2023.1时,您只需按下"运行"按钮就可以! 如果您对如何将列式存储用于您自己的数据和查询感兴趣,请直接联系 InterSystems 客户团队,也许我们会在InterSystems 2023年全球峰会上见面;-).
公告
Hao Ma · 一月 12, 2023

ZPM 现在是 InterSystems 包管理器 (IPM)

我很高兴地宣布 ObjectScript 包管理器 ZPM 的生命周期中的一个里程碑。包管理器使开发人员能够以一种方便的方式巧妙地打包 ObjectScript 代码和部署配置设置以及版本信息。在过去的几年里,它已经发展成为许多开发工作流程中不可或缺的一部分。 事实证明,InterSystems 决定使用它来打包我们自己的组件非常重要,这促使我们决定将 GitHub 存储库从社区移至我们的公司存储库,并将其重命名为InterSystems Package Manager (IPM) 。 IPM 仍将是开源的。社区成员将能够审查代码并提交拉取请求。但这种变化使我们能够以非员工能够直接对代码库进行更改的方式确保软件的安全性。更高级别的安全性和信任对于可以将代码与您的数据一起安装的软件来说至关重要。 所以请和我一起庆祝 ZPM 的生命,欢迎 IPM 的诞生,并感谢贡献者——尤其是 Nikolay Soloviev 和@Dmitry.Maslennikov,他们再次展示了对开发人员需求的惊人洞察力,以及技能和奉献精神构建出色的软件! --- https://github.com/intersystems/ipm
公告
Michael Lei · 一月 10, 2023

InterSystems Package Manager 包管理器 0.5.2 发布

我们刚刚发布了包管理器的一个小更新,如我们11 月宣布,我们已经将 ZPM 重命名为 IPM。现在这个是一个错误修复版本,正确解释 ROBOCOPY 返回代码并修复阻止安装某些包的回归。 在这里获取: https://github.com/intersystems/ipm/releases/tag/v0.5.2
文章
Jingwei Wang · 二月 14, 2022

使用嵌入式Python实现InterSystems IRIS 互操作性

# 1. 互操作性-嵌入式Python(interoperability-embedded-python) 这个概念旨在展示**iris互操作性框架**如何与嵌入的python一起使用。 ## 1.2. 示例代码 ``` import grongier.pex import iris import MyResponse class MyBusinessOperation(grongier.pex.BusinessOperation): def OnInit(self): print("[Python] ...MyBusinessOperation:OnInit() is called") self.LOGINFO("Operation OnInit") return def OnTeardown(self): print("[Python] ...MyBusinessOperation:OnTeardown() is called") return def OnMessage(self, messageInput): if hasattr(messageInput,"_IsA"): if messageInput._IsA("Ens.StringRequest"): self.LOGINFO(f"[Python] ...This iris class is a Ens.StringRequest with this message {messageInput.StringValue}") self.LOGINFO("Operation OnMessage") response = MyResponse.MyResponse("...MyBusinessOperation:OnMessage() echos") return response ``` ## 1.3. 注册一个组件 **不需要 ObjectScript 代码**. 多亏Grongier.PEX.Utils.RegisterComponent()方法。 启动一个嵌入式的Python shell: ``` /usr/irissys/bin/irispython ``` 然后使用这个类方法将一个新的py文件添加到组件列表中,以实现互操作性。 ``` iris.cls("Grongier.PEX.Utils").RegisterComponent(,,,,) ``` 例如 : ``` iris.cls("Grongier.PEX.Utils").RegisterComponent("MyCombinedBusinessOperation","MyCombinedBusinessOperation","/irisdev/app/src/python/demo/",1,"PEX.MyCombinedBusinessOperation") ``` # 2. 演示 Production有四个Python组件: - 两个业务服务组件 : - 用Grongier.PEX.MyCombinedBusinessService持续的给业务操作组件发送同步消息 - 这些消息是JSON格式的Python对象,存储于Grongier.PEX.Message类 - Thoses messages are python objects casted in JSON and stored in Grongier.PEX.Message. - Python代码 : src/python/demo/MyCombinedBusinessService.py - Grongier.PEX.MyBusinessService是一个用于写消息日志的原始业务服务组件,无其他作用。 - Python 代码 : src/python/demo/MyBusinessService.py - 两个业务操作组件: - Grongier.PEX.BusinessOperation是用于接收业务服务组件Grongier.PEX.MyCombinedBusinessService的消息 - Python 代码 : src/python/demo/MyBusinessOperation.py - Grongier.PEX.CombinedBusinessOperation可以接收Ens.StringRequest消息,并返回Ens.StringResponse消息 - Python 代码 : src/python/demo/MyCombinedBusinessOperation.py 为Python本地消息新增json跟踪: # 3. 前置需求 Git和Docker必须已安装 # 4. 使用Docker安装 从git拉取repo到本地 ``` git clone https://github.com/grongierisc/interpeorability-embedded-python ``` 在安装路径打开terminal,并运行: ``` docker-compose build ``` 使用IRIS容器运行你的项目: ``` docker-compose up -d ``` # 5. 无Docker安装 在iris 实例上安装 grongier_pex-1.0.0-py3-none-any.whl : ``` /usr/irissys/bin/irispython -m pip install grongier_pex-1.0.0-py3-none-any.whl ``` 然后,加载ObjectScript类: ``` do $System.OBJ.LoadDir("/opt/irisapp/src","cubk","*.cls",1) ``` # 6. 运行How to Run the Sample 打开production,并运行。 示例代码会开始运行。 # 7. repo中包含什么内容What's inside the repository ## 7.1. Dockerfile Dockerfile包含在容器中安装一些python的依赖项,例如pip, venv和sudo 然后创建dev目录将git仓库复制进入目录 Dockerfile启动IRIS并导入Titanics csv文件,然后为Python Shell激活**%Service_CallIn**。 可以使用使用相关的docker-compose.yml来轻松地设置额外的参数,如端口号和映射键和主机文件夹的位置。 这个dockerfile以安装python模块的需求结束。 最后一部分是关于安装jupyter notebook和它的内核。 使用.env/文件来调整在docker-compose中使用的dockerfile。 ## 7.2. .vscode/settings.json VSCode配置文件 [VSCode ObjectScript plugin](https://marketplace.visualstudio.com/items?itemName=daimor.vscode-objectscript) ## 7.3. .vscode/launch.json VSCode ObjectScript 调试配置文件 [获取更多相关信息](https://community.intersystems.com/post/dockerfile-and-friends-or-how-run-and-collaborate-objectscript-projects-intersystems-iris) ## 7.4. .vscode/extensions.json 如果你想在容器中用VSCode运行,可以添加扩展。 [获取更多相关信息](https://code.visualstudio.com/docs/remote/containers) 对于使用嵌入式python非常有用。 ## 7.5. src 文件夹 ``` src ├── Grongier │ └── PEX // ObjectScript classes that wrap python code │ ├── BusinessOperation.cls │ ├── BusinessProcess.cls │ ├── BusinessService.cls │ ├── Common.cls │ ├── Director.cls │ ├── InboundAdapter.cls │ ├── Message.cls │ ├── OutboundAdapter.cls │ ├── Python.cls │ ├── Test.cls │ └── Utils.cls ├── PEX // Some example of wrapped classes │ ├── MyBusinessOperationWithAdapter.cls │ ├── MyBusinessOperationWithIrisAdapter.cls │ ├── MyBusinessOperationWithPythonAdapter.cls │ ├── MyBusinessService.cls │ ├── MyOutboundAdapter.cls │ └── Production.cls └── python ├── demo // Actual python code to run this demo │ ├── MyBusinessOperation.py │ ├── MyBusinessOperationWithAdapter.py │ ├── MyBusinessOperationWithIrisAdapter.py │ ├── MyBusinessProcess.py │ ├── MyBusinessService.py │ ├── MyCombinedBusinessOperation.py │ ├── MyCombinedBusinessProcess.py │ ├── MyCombinedBusinessService.py │ ├── MyInboundAdapter.py │ ├── MyLoggingOperation.py │ ├── MyNonPollingStarter.py │ ├── MyOutboundAdapter.py │ ├── MyRequest.py │ ├── MyResponse.py │ ├── MySyncBusinessProcess.py │ └── SimpleObject.py ├── dist // Wheel used to implement python interoperability components │ └── grongier_pex-1.0.0-py3-none-any.whl ├── grongier │ └── pex // Helper classes to implement interoperability components │ ├── _BusinessHost.py │ ├── _BusinessOperation.py │ ├── _BusinessProcess.py │ ├── _BusinessService.py │ ├── _Common.py │ ├── _Director.py │ ├── _InboundAdapter.py │ ├── _Message.py │ ├── _OutboundAdapter.py │ └── __init__.py └── setup.py // setup to build the wheel ``` # 8. 如何增加一个新组件 ## 8.1. 入站适配器InboundAdapter 使用python执行入站适配器,使用grongier.pex.InboundAdapter子类,覆盖OnTask()方法。 ## 8.2. 出站适配器OutboundAdapter 使用python执行出站适配器,使用grongier.pex.OutboundAdapter子类,实现所需action方法。 ## 8.3. 业务服务组件BusinessService 使用python执行业务服务组件,使用grongier.pex.BusinessService子类,覆盖OnProcessInput()方法。 ## 8.4. 业务流程组件BusinessProcess 使用python执行业务流程组件,使用grongier.pex.BusinessProcess子类,覆盖 OnRequest(), OnResponse() and OnComplete()方法。 ## 8.5. 业务操作BusinessOperation 使用python执行业务流程组件,使用grongier.pex.BusinessOperation子类,覆盖 OnMessage()方法。 ## 8.6. 注册一个组件 启动一个嵌入式python shell: ``` /usr/irissys/bin/irispython ``` 然后使用这个类方法将一个新的py文件添加到组件列表中,以实现互操作性。 ``` iris.cls("Grongier.PEX.Utils").RegisterComponent(,,,,) ``` 例如 : ``` iris.cls("Grongier.PEX.Utils").RegisterComponent("MyCombinedBusinessOperation","MyCombinedBusinessOperation","/irisdev/app/src/python/demo/",1,"PEX.MyCombinedBusinessOperation") ``` ## 8.7. 直接使用Grongier.PEX 如果你不想使用RegisterComponent,你可以添加一个Grongier.PEX.Business*组件并配置其属性 - %module : - 你的python代码的模块名称 - %classname : - 你的组件的类名 - %classpaths - 你的组件所在的路径。 - 除了PYTHON_PATH之外,可以有一个或多个Classpaths(用'|'字符分隔) 例如 : # 9. 其他工作 - 仅业务服务组件和业务操作组件可以被测试 - 在适配器上工作 # 10. 认证 大部分代码来自Mo Cheng和Summer Gerry的PEX for Python。 注册部分来自于尚未发布的IRIS 2021.3的功能。
文章
Jingwei Wang · 二月 15, 2022

如何用Python访问InterSystems IRIS数据库

1. 使用PyODBC访问InterSystems IRIS数据库 pyodbc是一个开源的Python模块,可以利用ODBC来访问底层数据库。InterSystems支持使用pyodbc作为使用关系模式从Python访问数据库的一种方式。这个模块也可以用于InterSystems IRIS的早期版本。 代码示例 import pyodbc def run(): # connection information ip = localhost port = 51773 # IRIS超级服务端口号 namespace = USER username = <userName> password = <password> driver = "{InterSystems IRIS ODBC35}" # ODBC data source名称, IRIS 安装时一般自带ODBC驱动,所以不需要独立安装 ​ # Create connection to InterSystems IRIS connection_string = 'DRIVER={};SERVER={};PORT={};DATABASE={};UID={};PWD={}' \ .format(driver, ip, port, namespace, username, password) print(connection_string) connection = pyodbc.connect(connection_string) connection.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8') connection.setencoding(encoding='utf-8') print("Connected to InterSystems IRIS") ​ ​ if __name__ == '__main__': run() 在windows终端执行上面的python文件,可以运行成功,代表您已经可以从通过pyodbc访问InterSystems IRIS 2. 使用 InterSystems IRIS Native API 访问InterSystems IRIS 数据库 2.1 安装 .whl 文件 2.2 代码示例 """ PURPOSE: Makes a connection to an instance of InterSystems IRIS Data Platform using the native API """ ​ import irisnative def run(): # connection information ip = localhost port = 51773 # IRIS超级服务端口号 namespace = USER username = <userName> password = <password> ​ # Create connection to InterSystems IRIS connection = irisnative.createConnection(ip, port, namespace, username, password) ​ print("Connected to InterSystems IRIS") ​ # Create an iris object iris_native = irisnative.createIris(connection) ​ ​ if __name__ == '__main__': run() 可以在windows终端执行上面的python文件,可以运行成功,代表您已经可以从通过Native API访问InterSystems IRIS 3. Pyodbc 与 Native API的区别 PyODBC可以让你的应用程序快速检索、更新和删除数据。 Native API可以让你的应用程序直接访问InterSystems IRIS中的底层数据结构(globals),以及调用ObjectScript方法和例程。
公告
Claire Zheng · 七月 1, 2022

InterSystems 2022 Full Stack开发者大赛

大家好!欢迎参加InterSystems第21届开发者大赛! 🏆 InterSystems 2022 Full Stack开发者大赛 🏆 时间: 2022年6月27日-7月17日(美东时间) 奖金:$10,000 主题 💡 Full Stack 应用 💡 以InterSystems IRIS, InterSystems IRIS For Health(医疗版)或 IRIS Cloud Service为后端开发一个Full Stack解决方案。所谓的Full Stack,即通过REST API、Native API、ODBC/JDBC或嵌入式Python在InterSystems IRIS中插入、更新或删除数据的前端web或移动应用程序。 还有呢? 这次我们希望邀请开发者们以自己的专长来解决一个全球面临的挑战!我们鼓励你加入这次竞赛,提交聚焦于气候变化问题的解决方案:1) 如果您提交的应用能够解决一个与全球变暖或气候变化相关的问题,将收到一份特别奖励;2) 如果您准备并将在Open Exchange提交一个与全球变暖或气候变化相关的数据集,也会得到额外奖励。 那么,我们期待您的创新方案,共同建设一个可持续的发展的世界。用您的专长,为气候问题来制定解决方案吧! 基本要求: 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition上运行。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 奖品 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第1名 - $4,000 🥈 第2名 - $2,000 🥉 第3名 - $1,000 🌟 第4-15名- $100 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第1名 - $1,000 🥈 第2名 - $750 🥉 第3名 - $500 ✨ 所有获奖者都将获得Global Masters徽章! 注意:如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金 关键参赛节点 🛠 应用开发、提交阶段 2022年6月27日 00:00 ( 美东时间): 竞赛启动. 2022年7月10日 23:59 ( 美东时间): 提交截止 ✅ 投票阶段 2022年7月11日 00:00 ( 美东时间): 投票开始 2022年7月17日 23:59 ( 美东时间): 投票截止 注意:在整个参赛期间(开发与投票期间),开发者可持续提升其应用 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 资源助力: ✓ 适用于Full Stack应用的InterSystems IRIS Docker模板: IRIS Full Stack template Basic InterSystems IRIS Docker template IRIS REST API template Native API template IntegratedML template IRIS Analytics template isc-ipm-js isc-perf-ui isc-json isc-rest isc-codetidy ✓ 在线课程: Implementing RESTful Applications ✓ 视频: REST API design and Development REST API in 5 minutes Data-Driven Web Apps ✓ IRIS初学者: Build a Server-Side Application with InterSystems IRIS Learning Path for beginners ✓ ObjectScript Package Manager (ZPM) 初学者: How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and ZPM ✓ 如何将您的APP提交给大赛: 如何在InterSystems Open Exchange上发布应用程序 如何把参赛APP提交给大赛 需要帮助? 加入InterSystems的 Discord server频道,或跟帖评论提出您的问题! 期待您的精彩提交!祝好运 👍 参与此次竞赛,您同意 遵守相关条款,请认真阅读。
文章
Jingwei Wang · 七月 14, 2022

InterSystems SQL 的使用 - 第二部分 - 基础介绍

本文概述了InterSystems SQL的特点,特别是那些没有被SQL标准所涵盖或与InterSystems IRIS 数据平台的统一数据架构有关的特点。假定你已有SQL的知识,本文不是SQL概念或语法的介绍。 表 在InterSystems SQL中,数据是在表内呈现的。每个表都被定义为包含若干列。一个表可以包含零个或多个数据值的行。以下术语大致上是等同的。 数据 关系型数据库术语 InterSystems SQL术语 InterSystems IRIS术语 database schema schema package database table table persistent class field column column property record row row schema SQL schema提供了一种将相关表、视图、存储过程和缓存查询分组的方法。模式的使用有助于防止在表一级的命名冲突,因为一个表、视图或存储过程的名称必须只在其schema内是唯一的。一个应用程序可以在多个schema中指定表。 SQL schema对应于IRIS中持久化的类包。通常情况下,一个模式的名称与它对应的包的名称相同,但是这些名称可能会因为不同的模式命名惯例而不同,或者因为不同的名称被故意指定。 命名:schema.name。如果没有指定schema:例如只有name。InterSystems IRIS会按以下方式提供模式。 对于DDL操作,InterSystems IRIS使用全系统默认的schema名称SQLUser。这个默认是可配置的。它适用于所有命名空间。 对于DML操作,InterSystems IRIS可以使用用户提供的schema搜索路径或全系统默认的schema名称。在动态SQL、嵌入式SQL和SQL Shell中,使用不同的技术来提供schema搜索路径。 在管理门户中查看一个命名空间内的所有现有schema: 从管理门户中选择系统资源管理器,然后选择SQL。用页面顶部的切换选项选择一个命名空间;这将显示可用的命名空间的列表。选择一个命名空间。选择屏幕左边的模式下拉列表。这将显示当前命名空间中的schema列表。从这个列表中选择一个schema; SQL 查询 查询有两种类型:检索数据的查询(SELECT语句)和修改数据的查询(INSERT、UPDATE和DELETE语句)。 你可以以多种方式使用SQL查询: 在ObjectScript中使用嵌入式SQL。 在ObjectScript中使用动态SQL。 调用使用CREATE PROCEDURE或CREATE QUERY创建的存储过程。 使用一个类查询。 使用来自其他环境的ODBC或JDBC接口。 SELECT查询在本指南的查询数据库一章中有描述。 查询是InterSystems IRIS对象或ObjectScript程序的一部分。 Privileges 特权 InterSystems SQL提供了一种方法,通过权限来限制对表、视图等的访问。你可以定义一组用户和角色,并授予他们各种权限(读、写等等)。 数据显示 SelectMode InterSystems SQL使用SelectMode选项来指定数据的显示或存储方式。可用的选项有逻辑模式、显示模式和ODBC模式。 数据在内部以逻辑模式存储,并可以以任何模式显示。每个数据类型类都可以通过使用LogicalToDisplay(), LogicalToODBC(), DisplayToLogical(), ODBCTtoLogical()方法来定义内部逻辑格式和显示格式或ODBC格式之间的转换。 当SQL SelectMode是显示模式时,LogicalToDisplay转换被应用,返回的值被格式化以用于显示。默认的SQL选择模式是逻辑模式;因此默认返回的值是以其存储格式显示的。 模式会影响查询结果集数据的显示格式,也会影响数据值的提供格式,如果提供的数据值与SelectMode不匹配,可能会导致错误或错误的结果。 例如,例如在WHERE子句中,如果DOB是一个以$HOROLOG逻辑格式存储的日期,而WHERE子句指定WHERE DOB > 2000-01-01(ODBC模式),SelectMode = ODBC返回预期的结果。但是,如果SelectMode = 显示模式,则生成SQLCODE -146 无法将日期输入转换为有效的逻辑日期值。如果SelectMode = 逻辑模式,则试图将2000-01-01解析为一个逻辑日期值,并返回0行。 对于大多数数据类型,三种SelectMode模式返回相同的结果。以下数据类型受到SelectMode选项的影响。 日期、时间和时间戳数据类型。 %List数据类型 - 在ODBC选择模式下,列表项之间用逗号分隔符显示。在显示选择模式下,列表项之间以空白分隔符显示。 指定VALUELIST和DISPLAYLIST的数据类型。对于必填字段,如果您在显示模式下,在字段有DISPLAYLIST的表中插入一个值,您输入的显示值必须与DISPLAYLIST中的一个项目完全匹配。对于非必填字段,不匹配的值被转换为NULL值。 空字符串,和空BLOB(流字段)。在逻辑模式下,空字符串和BLOBs由非显示字符$CHAR(0)表示。在显示模式下,它们由一个空字符串("")表示。 SQL的SelectMode可以按以下方式指定。 对于当前进程,使用SetOption("SelectMode")方法。 对于InterSystems SQL Shell会话,使用SET SELECTMODE命令。 对于来自管理门户 "执行查询 "用户界面(系统浏览器,SQL)的查询结果集,使用 "显示模式 "下拉列表。 对于一个动态SQL %SQL.Statement实例,使用%SelectMode属性。 对于嵌入式SQL,使用ObjectScript的 #SQLCompile Select 预处理器指令设置。这个指令允许第四个值,Runtime,它将选择模式设置为RuntimeMode属性的任何设置。RuntimeMode默认为逻辑模式。 #SQLCOMPILE SELECT=Logical #SQLCOMPILE SELECT=Display #SQLCOMPILE SELECT=ODBC 对于的SQL命令CREATE QUERY、CREATE METHOD、CREATE PROCEDURE和CREATE FUNCTION, 使用SELECTMODE关键字。 对于SQL查询中的单个列,使用%EXTERNAL、%INTERNAL和%ODBCOUT函数。 SELECT TOP 5 DOB,%EXTERNAL(DOB) AS ExtDOB Data Collation data collation规定了数值的排序和比较方式,它是InterSystems SQL和InterSystems IRIS对象的一部分。 你可以指定collation类型作为字段/属性定义的一部分。除非另有规定,否则字符串字段/属性默认为命名空间的默认排序。默认情况下,字符串的命名空间默认排序是SQLUPPER。SQLUPPER排序法将字符串转换为大写字母,以便进行排序和比较。因此,除非另有规定,否则字符串的排序和比较是不分大小写的。 你可以指定一个collation类型作为索引定义的一部分,或者使用被索引字段的collation类型。 一个SQL查询可以通过对字段名应用一个collation函数来覆盖已定义的collation类型的字段/属性。ORDER BY子句指定了一个查询的结果集顺序;如果一个指定的字符串字段被定义为SQLUPPER,查询结果顺序是不区分大小写的。 SQL 执行 编写和执行SQL代码的方法包括: 嵌入式SQL:在ObjectScript代码中嵌入SQL代码。 动态SQL:从ObjectScript中执行SQL代码,使用%SQL.Statement类。 Execute()方法:使用%SYSTEM.SQL类的Execute()方法执行SQL代码。 包含SQL代码的存储过程:使用CREATE PROCEDURE或CREATE QUERY创建。 SQL Shell:从终端界面执行的SQL语句。 从管理门户执行的SQL语句:系统资源管理器 -> SQL。 使用InterSystems IRIS对象(类和方法): 定义一个持久的类(一个SQL表)。 定义一个索引。 定义和使用一个类查询。
文章
Claire Zheng · 三月 29, 2022

什么是卓越?——InterSystems全球副总裁John Paladino

卓越是什么?是思维方式,理念,还是结果? 在InterSystems,我们用行动来定义卓越。卓越意味着设立非常高的标准并超越它;卓越意味着不管是最小的姿态,还是最大的努力都同等重要;卓越意味着积极主动,即使是在客户还不清楚的情况下也努力去了解客户真正需要的东西,在客户提问之前就准备好相应的解决方案;卓越意味着着眼未来,分析潜在趋势,发现机会并有效协同,将一个个创意转化成为可行动的计划。 卓越是驱动我们与像您一样珍贵的合作伙伴一起支持起全世界最核心的关键应用。卓越是我们为何和如何能持续解决问题,成为客户可信赖的合作伙伴,以及成为支撑最重要的关键系统背后的力量。我们全力追求卓越,为客户更好地解决问题。但是不要仅仅向我们提出问题,我们也非常欢迎您的创意和目标,让我们一起来实现它们!
公告
Jingwei Wang · 五月 11, 2022

认识InterSystems全球峰会的主要发言人

各位开发者们好,: 很高兴跟大家宣布,畅销书作家和技术专家杰弗里·摩尔将在6月22日InterSystems的全球峰会上做专题演讲。以下是他的简历: 杰弗里·摩尔是一名咨询专家,他最近的咨询业务包括Salesforce、微软、Autodesk、F5Networks、Gainsight、谷歌和Splunk。 他一生的工作都集中在颠覆性创新的市场动态上。他的第一本书《跨越鸿沟》是关于创业公司在从早期采用者过渡到主流客户时所面临的挑战,该书已售出超过一百万册。摩尔最近的作品《Zone to Win》探讨了大型企业在拥抱颠覆性创新时所面临的挑战。 摩尔每年发表50至80场演讲,最近他重点关注企业IT投资从记录系统向交互系统的转变。 我将发布更多关于我们演讲者的信息。今年的全球峰会,演讲阵容很强大。 另外,你现在可以在我们的网站上建立你的会议和时间表。如果你还没有注册,可以点击马上注册.