搜索​​​​

清除过滤器
公告
Michael Lei · 一月 27, 2023

InterSystems IRIS 持久化类审计包

大家好, 我在 OEX 上加载了一个新软件包,我也计划在本月参加比赛。 简而言之,它为您提供以下内容。 用于 InterSystems IRIS 的持久(表)类以保存记录历史的基类 这些类允许在touch时将持久类记录历史化到另一个持久类中。 这提供了任何记录的完整历史记录。 它允许记录回滚到特定版本。 它可以自动清除旧的历史记录。 请检查一下。 谢谢你们。
公告
Claire Zheng · 一月 30, 2023

InterSystems 开发者社区2022年度调查

亲爱的开发者们, 非常感谢您又在 InterSystems 开发者社区度过了一年! 我们的团队日复一日地努力让它变得更好,这对我们12000+ 每一位成员都很重要! 我们想知道目前开发者社区对您有多大用处。请花点时间让我们了解您的想法,以及可以改进的地方: 👉🏼 InterSystems 开发者社区2022年度调查 👈🏼 请知悉:调查可在 5 分钟内完成。 也欢迎您在本文的评论部分提供反馈。 我们期待了解您的意见! 😉
公告
Claire Zheng · 九月 27, 2022

首届InterSystems Idea创意马拉松

社区成员们,大家好! 我们开心地宣布一种全新类型的比赛——寻找最聪明的创意比赛!欢迎了解: 💡 InterSystems Idea 创意马拉松 💡 在9月26日至10月16日期间提出一个与InterSystems产品和服务相关的想法,即可获得达成奖。 最重要的是,此次赛事InterSystems的员工和社区成员都可以参与! >> 点击提交你的想法吧! << 规则 InterSystems Idea创意马拉松是由InterSystems Ideas反馈门户组织的,在InterSystems Ideas反馈门户,您可以提交与我们的服务(文档、开发社区、全球大师等)相关的产品增强请求和想法,并投票选出您喜欢的。 在本次比赛中,我们邀请大家在这个门户网站上分享自己的想法,并为他人投票。 只需在 InterSystems Ideas网站 提交想法即可参赛。 合格的参赛创意应符合: 用户在Idea-A-Thon创意马拉松期间提交,由通过InterSystems Ideas网站注册的用户创建(您可以通过InterSystems SSO登录); 不要成为其他已经存在的想法的一部分——只允许新的想法; 不描述InterSystems产品或服务的现有功能; 除了标题之外,还要对观点的本质进行详细而清晰的解释; 以英文发帖; 被专家认为是有意义的。 所有符合条件的想法将在InterSystems ideas门户网站上拥有一个特殊的“Idea-A-Thon”状态,可以很容易地在Idea创意马拉松上找到。 谁可以参加? 我们邀请所有人加入我们的创意马拉松。欢迎InterSystems员工和社区成员参与并提交创意想法。 奖项 1. 参与奖 :每个发布合格想法的人都会将获得奖励: 🎁 InterSystems Branded T-Shirt 2. 专家奖:获胜者将由InterSystems专家团队选出,并将获得: 🎁 LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex Bluetooth® speaker bundle 3. 社区奖:获得最多投票的创意,获奖者将获得: 🎁 LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex Bluetooth® speaker bundle 重要提示:InterSystems的员工只能获得参与奖。专家奖和社区奖只能由非intersystems社区成员获得。 参赛时间 📝 9月26日 - 10月16日:创意发布、投票阶段 在此期间发布一个或几个创意。InterSystems Ideas网站的注册会员可以为发表的创意投票,这些投票将计入社区奖。 注意:越早发表你的创意,你就越有更多的时间去收集投票。 来参加吧! 来 InterSystems Ideas 发布你的创意拿大奖!时刻关注你的创意! 祝大家好运 👍 Important note: All prizes are subject to availability and shipping options. Some items may not be available to ship internationally to specific countries. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries. We will let you know if a prize is not available and offer a possible replacement. 重要提示:所有奖品均受可用性和运输选择。有些项目可能无法国际运输到特定国家。奖品不能发放给克里米亚、俄罗斯、白俄罗斯、伊朗、朝鲜、叙利亚或其他美国禁运国家的居民。如果没有奖品,我们将告知您,并提供可替代品。
公告
Michael Lei · 九月 13, 2023

InterSystems 参加 麻省理工大学2023年度HackMIT

InterSystems 团队本周末将前往麻省理工学院最大的黑客马拉松,届时我们将为黑客们带来一项技术挑战。我们为黑客们提供在他们的项目中使用 IntegratedML 或 InterSystems Supply Chain Orchestrator 的机会,以便争夺一些非常酷的奖品! 如果您在波士顿并且有兴趣成为活动中的 InterSystems 导师,请给我们写信。 我们期待看到新的创意项目!请继续关注 9 月 18 日公布的获奖者名单。 了解有关本次黑客马拉松的更多信息,请访问HackMIT 官方网站。
公告
Jeff Liu · 三月 3

InterSystems Language Server 2.7 的最新变化

首先,祝开发者社区的各位成员新年快乐! 我们希望今年为大家带来更多好东西,今天我想介绍 VS Code的最新版 Intersystems Language Server 扩展程序。 大多数 Language Server 改进都可以通过 ObjectScript 扩展 UI 体验到,因此您可能不知道 2024 年我们发布了 Intellisense 和鼠标悬停等方面的许多改进。 请快速浏览 Language Server 更新日志 看看您错过了什么。 最近发布的2.7.0 版本带来了对 Windows ARM 平台的支持,因此,如果您使用 Surface Pro 11 这类设备(我正在用这台设备愉快地写这篇帖子),那么您现在可以在您的设备上获得出色的 ObjectScript 开发体验。 赶快试用一下,并在下方评论区中分享您的使用心得。
公告
Claire Zheng · 七月 8, 2024

InterSystems 2024 Python 编程大赛

嗨,开发者, 我们很高兴邀请大家参加新的以 Python 为主题的 InterSystems 在线编程竞赛! 🏆 InterSystems 2024 Python 编程大赛 🏆 时间: 2024年7月15日-8月4日(美国东部时间) 奖金池: 14,000美元 话题 使用Python(或嵌入式Python)作为编程语言的InterSystems IRIS或InterSystems IRIS for Health或IRIS Cloud SQL开发任意解决方案。 一般要求: 应用程序或库必须具有完整的功能。它不应该是另一种语言中已经存在的库的导入或直接接口(C++除外,在C++中,您确实需要做大量的工作来为IRIS创建接口)。它不应是现有应用程序或库的复制粘贴。 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用程序应在 IRIS Community Edition 或 IRIS for Health Community Edition 上运行。两者都可作为host (Mac, Windows)版从Evaluation site下载,或者可以按从 InterSystems Container Registry或Community Container中提取的容器形式使用: intersystemsdc/iris-community:latest 或 intersystemsdc/irishealth-community:latest 。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 一名开发者只允许提交 3 份作品。 请留意:我们的专家将根据复杂性和实用性的标准最终决定应用程序是否被批准参加比赛。他们的决定是最终决定,不得申诉。 奖品 1. 专家提名奖(Experts Nomination)——获奖者由我们特别挑选的专家团选出: 🥇第一名 - 5,000 美元 🥈第二名 - 3,000 美元 🥉第三名 - 1,500 美元 🏅第四名 - 750 美元 🏅第五名 - 500 美元 🌟第 6-10 位 - 100 美元 2. 社区提名奖(Community Nomination)—— 获得总票数最多的应用程序: 🥇第一名 - 1,000 美元 🥈第二名 - 750 美元 🥉第三名 - 500 美元 🏅第四名 - 300 美元 🏅第五名 - 200 美元 如果几位参与者获得相同数量的选票,他们都将被视为获胜者,奖金由获胜者分享。 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥开发人员可以组队创建协作应用程序。一个团队允许 2 到 5 名开发人员。 请注意,要在您的README文件中标注您的团队成员(成员的社区用户主页)。 重要截止日期: 🛠 应用程序开发和注册阶段: 2024年7月15日 (美国东部时间00:00):比赛开始。 2024年7月28日 (美国东部时间23:59):提交截止日期。 ✅ 投票时间: 2024年7月29日 (美国东部时间00:00):投票开始。 2024年8月4日 (美国东部时间23:59):投票结束。 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用。 资源助力: ✓ 文档 Embedded Python Documentation Native SDK for Python Documentation PEX Documentation ✓ 示例应用及库 iris-fastapi-template iris-django-template iris-flask-template interoperability-python pex-demo python-examples Python Faker ✓ 在线课程 Learning Path Writing Python Application with InterSystems ✓ 视频 Introduction to Embedded Python Embedded Python: Bring the Python Ecosystem to Your ObjectScript App Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side Embedded Python with Interoperability InterSystems IRIS Native Python API in AWS Lambda ✓ IRIS初学者 Build a Server-Side Application with InterSystems IRIS Learning Path for beginners ✓ ObjectScript Package Manager (IPM) 初学者 How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and IPM ✓ 如果向大赛提交您的应用? How to publish an application on Open Exchange How to submit an application for the contest 需要帮助? 加入 InterSystems Discord server上的竞赛频道或跟帖留言。 期待您的精彩提交 - 加入我们的编程大赛吧!来赢得胜利! ❗️参加本次比赛即表示您同意此处列出的比赛条款。请在继续之前仔细阅读它们。 ❗️
公告
Michael Lei · 八月 17, 2023

InterSystems 支持的平台更新 Q3-2023

我们经常收到有关 InterSystems IRIS 数据平台支持的平台和框架列表最近和即将发生的更改的问题。此更新旨在分享最近的变化以及我们对即将发生的变化的当前最佳知识,但预测未来是一件棘手的事情,这不应被视为承诺的路线图。 话虽如此,接下来是更新…… IRIS 生产环境操作系统和 CPU 架构 红帽Linux企业版RHEL 近期变动 RHEL 9.2 和 RHEL 8.8 于 2023 年 5 月发布。红帽计划为这些版本提供 4 年支持。 InterSystems 已通过我们称为“次要操作系统版本认证”的新流程完成了对 RHEL 9.2 和 RHEL 8.8 上的 IRIS 的额外测试,该流程旨在提供额外的安全性,确保次要操作系统更新不会破坏任何明显的功能。 RHEL 8.8 和 9.2 都成功通过了我们的测试。 随着 RHEL 9.2 的发布,红帽终止了对 RHEL 9.1 的公开支持。这与 Red Hat 自 RHEL 8.3 以来一直使用的“奇/偶”支持周期一致。 即将发生的变化 RHEL 9.3 计划于今年晚些时候推出。这将是 Red Hat 的短期支持版本,因此 InterSystems 不会执行次要操作系统认证或推荐将其用于生产部署。 之前的更新 IRIS 2022.1.2 添加了对RHEL 9.0的支持。 9.0 是一个主要操作系统版本,将 Linux 内核更新到 5.14、OpenSSL 更新到 3.0 以及 Python 3.9 IRIS 2022.2.0 删除了对 RHEL 7.x 的支持。早期版本的 IRIS 仍支持 RHEL 7.9。 进一步阅读: RHEL 发布页面 Ubuntu 近期变动 Ubuntu 分别于 2 月和 3 月发布了 22.04.2 LTS 和 20.04.6 LTS。 InterSystems 已通过次要操作系统版本认证,在 22.04.02 LTS 上完成了对 IRIS 的额外测试。 即将发生的变化 Ubuntu 的下一个主要更新是 24.04,预计将于 2024 年 4 月发布 之前的更新 IRIS 2022.1.1 添加了对Ubuntu 22.04 的支持。 22.04 是一个主要操作系统版本,将 Linux 内核更新到 5.15、OpenSSL 更新到 3.0.2 以及 Python 3.10.6 IRIS 2022.2.0 删除了对 Ubuntu 18.04 的支持。早期版本的 IRIS 仍支持 Ubuntu 18.04。 IRIS 2022.1.1 及更高版本容器基于 Ubuntu 22.04。 进一步阅读: Ubuntu 发布页面 SUSE Linux 即将发生的变化 SUSE Linux Enterprise Server 15 SP5 于 2023 年 6 月 20 日发布。SP5 包括 Linux Kernel 5.14.21、OpenSSL 3.0.8 和 Python 3.11。我们目前正在致力于次要操作系统认证。 之前的更新 IRIS 2022.3.0 添加了对SUSE Linux Enterprise Server 15 SP4的支持。 15 SP4 是一个主要操作系统版本,将 Linux 内核更新到 5.14、OpenSSL 更新到 3.0 以及 Python 3.9 SUSE 对 Linux Enterprise Server 15 SP3 的一般支持已于 2022 年 12 月 31 日结束,但扩展安全支持将持续到 2025 年 12 月。 延伸阅读: SUSE 生命周期 甲骨文Linux 即将发生的变化 Oracle 与 RHEL 9.2 几乎同时发布了 Oracle Linux 9.2,这让我们感到惊讶。我们目前正在开始次要操作系统认证。 之前的更新 IRIS 2022.3.0 增加了对Oracle Linux 9的支持。 Oracle Linux 9 是跟踪 RHEL 9 的主要操作系统版本,因此它也将 Linux 内核更新到 5.14、OpenSSL 更新到 3.0 以及 Python 3.9 进一步阅读: Oracle Linux 支持政策 微软Windows 即将发生的变化 Windows Server 2012 将于 2023 年 10 月结束扩展支持。如果您仍在该平台上运行,那么现在是计划迁移的时候了。 IRIS 2023.2+ 将不适用于Windows Server 2012。 之前的更新 自 IRIS 2022.1 中添加 Windows Server 2022 以来,我们没有对支持的 Windows 版本列表进行任何更改 延伸阅读: 微软生命周期 AIX 即将发生的变化 InterSystems 正在与 IBM 密切合作,增加对 OpenSSL 3.0 的支持。这不会包含在 IRIS 2023.2.0 中,因为 IBM 需要在进一步的 TL 版本中针对该功能。好消息是,IBM 正在寻求针对 AIX 7.2 和 7.3 发布 OpenSSL 3.0,而且时间看起来应该与 IRIS 2023.3 一致。 之前的更新 自 IRIS 2022.1 中添加 AIX 7.3 并删除 7.1 以来,我们没有对支持的 AIX 版本列表进行任何更改 延伸阅读: AIX 生命周期 容器Container 即将发生的变化 IRIS 容器将仅标记年份和版本,例如“2023.2”,而不是我们过去使用的完整版本号。这样,您的应用程序就可以默认获取您版本的最新维护版本。 我们还为最新的扩展维护和持续分发 IRIS 版本添加了“latest-em”和“latest-cd”标签。这些对于演示、示例和开发环境很有用。 我们还将开始使用“-preview”标记预览容器,以便清楚哪个容器是最新的 GA 版本。 之前的更新 我们现在正在发布 IRIS 容器的多架构清单。这意味着拉取标记为2022.3.0.606.0的 IRIS 容器将为您的计算机的 CPU 架构(Intel/AMD 或 ARM)下载正确的容器。 IRIS 开发环境操作系统和 CPU 架构 苹果系统 近期变动 我们在 IRIS 2023.1 中添加了对 MacOS 13 的支持 即将发生的变化 Apple 预计 MacOS 14 将于 9 月发布 GA,随后可能会在 IRIS 2024.1 中提供 IRIS 支持 CentOS 自 IRIS 2023.3 起,我们将取消对 CentOS/CentOS Stream 的支持。 红帽多年来一直在运行开发人员计划,该计划使开发人员能够获得非生产环境的免费许可证。鼓励当前使用 CentOS 的开发人员通过此计划切换到 RHEL。 CentOS Stream 现在是 RHEL 的“上游”,这意味着它具有 RHEL 中尚未包含的错误和功能。它还每天更新,这可能会给在平台上构建的开发人员带来问题(更不用说我们自己的测试人员了)。 自从我们在 IRIS 2022.1 中添加了对 CentOS 8-Stream 的支持并删除了对 CentOS 7.9 的支持以来,我们没有对受支持的 CentOS 版本列表进行任何更改 InterSystems组件 InterSystems Kubernetes 运营管理器 (IKO) IKO 3.6 于上周发布。 Caché & Ensemble 生产操作系统和 CPU 架构 之前的更新 Cache 2018.1.7 增加对 Windows 11 的支持 InterSystems 支持的平台文档 InterSystems 支持的平台文档是有关受支持技术的权威源信息。 IRIS 2023.1 支持的服务器平台 IRIS 2022.1 支持的服务器平台 IRIS 2021.1 支持的服务器平台 Caché & Ensemble 2018.1.7 支持的服务器平台 以上是全部。再次提醒大家,如果您还想了解更多信息,请告诉我们。
公告
Claire Zheng · 七月 29

官方公告:InterSystems IRIS 2025.2 引入 IRISSECURITY

InterSystems IRIS 2025.2 引入了 IRISSECURITY 数据库,用于存储安全数据。 与之前用于存储安全数据的数据库 IRISSYS 不同,IRISSECURITY 支持加密,可以保护静态敏感数据。 在今后的版本中,IRISSECURITY 将可实现镜像。 此版本还引入了可以执行常规安全管理任务的 %SecurityAdministrator 角色。 本文中介绍的更改将影响持续交付 (CD) 和扩展维护 (EM) 版本通道。 也就是说,从版本 2025.2(CD,于 2025 年 7 月 23 日发布)和 2026.1 (EM) 开始,InterSystems IRIS 将包含 IRISSECURITY 数据库,并且在升级时,所有安全数据会自动从 IRISSYS 迁移到 IRISSECURITY。 虽然 InterSystems IRIS 2025.2 预计于 2025 年 7 月 23 日发布,但我们暂缓了 InterSystems IRIS for Health 和 HealthShare Health Connect 2025.2 的公开发布,原因是我们正在着手完成针对已知镜像问题的修复计划,该问题会影响 OAuth 配置数据。 升级须知 IRISSECURITY 对用户与安全数据的交互方式做出了多处可能导致功能中断的更改: 用户无法再直接访问安全global,而必须使用各种安全类提供的 API。 OAuth2 Global无法再映射到其他数据库。 用户无法再随意查询安全表,即使在 SQL 安全已禁用的情况下也是如此。 系统数据库现在使用的预定义资源无法更改。 在 Unix 上,如果为之前版本的系统数据库创建并指定了新资源,在升级时,该新资源将被预定义资源替代(但如果有任何角色引用了非默认资源,则必须手动将其更改为使用默认资源,以保持数据库访问权限)。 在 Windows 上,必须将资源更改回默认资源。 如果您尝试在 Windows 上升级,而数据库具有非默认资源,升级将停止(实例不会修改),并会显示错误消息“Database must have a resource label of…” 以下各部分将详细介绍这些更改,以及在您依赖原始行为的情况下应采取的替代措施,但总体而言,在您进行升级之前,应当验证并测试您的应用程序和宏: 使用提供的安全 API 管理安全功能(而非直接访问global)。 拥有使用这些 API 所必需的权限(%DB_IRISSYS:R 和 Admin_Secure:U)。 Global 访问 之前,当安全global存储在 IRISSYS 数据库中时,用户可以通过以下权限访问安全数据: %DB_IRISSYS:R:直接读取和通过安全 API 读取安全global。 %DB_IRISSYS:RW:读取和写入安全global。 %DB_IRISSYS:RW 和 Admin_Secure:U:通过安全 API 管理安全功能。 在 InterSystems IRIS 2025.2 中: 用户无法再直接访问安全global。 %DB_IRISSYS:R 和 %Admin_Secure:U 这两个权限是访问安全数据(通过提供的安全 API)以及通过各种安全类管理安全功能所需的最低权限。 对于常规安全管理,您可以使用新的 %SecurityAdministrator 角色。 已移除对安全数据的只读访问权限(之前可以通过 %DB_IRISSYS:R 实现)。 Global 存储位置 在 InterSystems IRIS 2025.2 中,以下安全global已从 IRISSYS 迁移到 IRISSECURITY 中的 ^SECURITY: ^SYS("SECURITY") ^OAuth2.* ^PKI.* ^SYS.TokenAuthD 下表列出了已迁移的最关键的global及其安全类、原存储位置和新存储位置: 安全类 原存储位置 (IRISSYS) 新存储位置 (IRISSECURITY) 不适用 ^SYS("Security","Version") ^SECURITY("Version") Security.Applications ^SYS("Security","ApplicationsD") ^SECURITY("ApplicationsD") Security.DocDBs ^SYS("Security","DocDBsD") ^SECURITY("DocDBsD") Security.Events ^SYS("Security","EventsD") ^SECURITY("EventsD") Security.LDAPConfigs ^SYS("Security","LDAPConfigsD") ^SECURITY("LDAPConfigsD") Security.KMIPServers ^SYS("Security","KMIPServerD") ^SECURITY("KMIPServerD") Security.Resources ^SYS("Security","ResourcesD") ^SECURITY("ResourcesD") Security.Roles ^SYS("Security","RolesD") ^SECURITY("RolesD") Security.Services ^SYS("Security","ServicesD") ^SECURITY("ServicesD") Security.SSLConfigs ^SYS("Security","SSLConfigsD") ^SECURITY("SSLConfigsD") Security.System ^SYS("Security","SystemD") ^SECURITY("SystemD") Security.Users ^SYS("Security","UsersD") ^SECURITY("UsersD") %SYS.PhoneProviders ^SYS("Security","PhoneProvidersD") ^SECURITY("PhoneProvidersD ") %SYS.X509Credentials ^SYS("Security","X509CredentialsD") ^SECURITY("X509CredentialsD ") %SYS.OpenAIM.IdentityServices ^SYS("Security","OpenAIMIdentityServersD") ^SECURITY("OpenAIMIdentityServersD") OAuth2.AccessToken ^OAuth2. AccessTokenD ^SECURITY("OAuth2.AccessToken ") OAuth2.Client ^OAuth2.ClientD ^SECURITY("OAuth2.Client") OAuth2.ServerDefinition ^OAuth2.ServerDefinitionD ^SECURITY("OAuth2.ServerDefinitionD") OAuth2.Client.MetaData ^OAuth2.Client.MetaDataD ^SECURITY("OAuth2.Client.MetaDataD") OAuth2.Server.AccessToken ^OAuth2.Server.AccessTokenD ^SECURITY("OAuth2.Server.AccessTokenD") OAuth2.Server.Client ^OAuth2.Server.ClientD ^SECURITY("OAuth2.Server.ClientD") OAuth2.Server.Configuration ^OAuth2.Server.ConfigurationD ^SECURITY("OAuth2.Server.ConfigurationD") OAuth2.Server.JWTid ^OAuth2.Server.JWTidD ^SECURITY("OAuth2.Server.JWTidD") OAuth2.Server.Metadata ^OAuth2.Server.MetadataD ^SECURITY("OAuth2.Server.MetadataD") PKI.CAClient ^PKI.CAClientD ^SECURITY("PKI.CAClient") PKI.CAServer ^PKI.CAServerD ^SECURITY("PKI.CAServer") PKI.Certificate ^PKI.CertificateD ^SECURITY("PKI.Certificate") %SYS.TokenAuth ^SYS.TokenAuthD ^SECURITY("TokenAuthD") OAuth2 Global 映射 之前,可以将 OAuth2 Global映射到其他数据库,从而可以镜像 OAuth2 配置。 在 InterSystems IRIS 2025.2 中,无法再映射 OAuth2 global,且不能镜像 IRISSECURITY。 如果您过去依赖此行为进行镜像,可以使用以下任何替代方法: 手动对主节点和故障转移节点进行更改。 从主节点导出设置,然后将其导入到故障转移节点(需要 % ALL 权限)。 导出 OAuth2 配置数据: set items = $name(^|"^^:ds:IRISSECURITY"|SECURITY("OAuth2"))_".gbl" set filename = "/home/oauth2data.gbl" do $SYSTEM.OBJ.Export(items,filename) 导入 OAuth2 配置数据: do $SYSTEM.OBJ.Import(filename) SQL 安全 之前,SQL 安全由 CPF 参数 DBMSSecurity 控制。 当 DBMSSecurity 禁用时,拥有 SQL 权限的用户可以随意查询数据库中的所有表。 在 InterSystems IRIS 2025.2 中: DBMSSecurity CPF 参数已被替换为系统范围的 SQL 安全属性。 可以通过多种方式对此进行设置: 管理门户:System Administration > Security > System Security > System-wide Security Parameters > Enable SQL security(系统管理 > 安全 > 系统安全 > 系统范围的安全参数 > 启用 SQL 安全) SetOption: ##class(%SYSTEM.SQL.Util).SetOption("SQLSecurity", "1") Security.System.Modify: ##Class(Security.System).Modify(,.properties),其中,properties 为 properties("SQLSecurity")=1 安全表(security table)现只能通过 Detail 和 List API 进行查询,即使在 SQL 安全处于禁用状态的情况下,也需要同时具有 %DB_IRISSYS:R 和 %Admin_Secure:U 权限才能进行查询。 例如,要获取角色列表,无法再直接查询 Security.Roles 表, 而应使用 Security.Roles_List() 查询: SELECT Name, Description FROM Security.Roles_List() 加密 IRISSECURITY 要加密 IRISSECURITY,请按以下步骤操作: 创建新的加密密钥。 转到 System Administration > Encryption > Create New Encryption Key File(系统管理 > 加密 > 创建新的加密密钥文件),并指定以下设置: Key File(密钥文件)– 加密密钥的名称。 Administrator Name(管理员名称)– 管理员的名称。 Password(密码)– 密钥文件的密码。 激活加密密钥。 转到 System Administration > Encryption > Database Encryption(系统管理 > 加密 > 数据库加密),并选择 Activate Key(激活密钥),指定第 1 步中的 Key File(密钥文件)、Administrator Name(管理员名称)和 Password(密码)。 转到 System Administration > Encryption > Database Encryption(系统管理 > 加密 > 数据库加密),并选择 Configure Startup Settings(配置启动设置)。 从 Key Activation at Startup(启动时的密钥激活)下拉菜单中选择一种密钥激活方法。 InterSystems 强烈建议选择 Interactive(交互式)密钥激活。 在 Encrypt IRISSECURITY Database(加密 IRISSECURITY 数据库)下拉列表中,选择 Yes(是)。 重新启动系统,以加密 IRISSECURITY。 百分比类(那些类名以%开头的类,可以在任何命名空间访问)访问规则 在之前版本的 InterSystems IRIS 中,管理 Web 应用程序对附加百分比类的访问权限的过程涉及到对安全global进行写入操作。 在 InterSystems IRIS 2025.2 中,可以通过管理门户或 ^SECURITY 例程完成此过程。 管理门户(Management Portal) 通过管理门户创建百分比类访问规则: 转到 System Administration > Security > Web Applications(系统管理 > 安全 > Web 应用程序)。 选择您的 Web 应用程序。 在 Percent Class Access(百分比类访问)选项卡中设置以下选项: Type(类型):控制该规则是仅适用于应用程序对指定百分比类的访问 (AllowClass),还是适用于包含指定前缀的所有类 (AllowPrefix)。 Class name(类名称):允许应用程序访问的百分比类或前缀。 Allow access(允许访问):是否允许应用程序访问指定的百分比类或软件包。 Add this same access to ALL applications(为所有应用程序添加相同的访问权限):是否为所有应用程序应用此规则。 ^SECURITY 通过 ^SECURITY 例程创建类访问规则: 在 %SYS 命名空间中,运行 ^SECURITY 例程: DO ^SECURITY 选择选项 5, 1, 8, 和 1,以输入类访问规则提示。 按照提示指定以下内容: Application?(应用程序?)– 应用程序名称。 Allow type?(允许类型?)– 该规则是适用于应用程序访问特定类 (AllowClass) 还是访问包含指定前缀的所有类 (AllowPrefix)。 Class or package name?(类或软件包名称?)– 允许应用程序访问的类或前缀。 Allow access?(允许访问?)– 是否允许应用程序访问指定类或软件包。
公告
Claire Zheng · 七月 28

InterSystems 2025 开发者竞赛:Tool(工具)

Hi 开发者们, 我们很高兴地宣布,将举办一场全新的 InterSystems 在线编程竞赛,本次竞赛旨在开发实用工具,让各位同行开发者的日常工作更加轻松便捷: 🏆 InterSystems 2025 开发者竞赛:Tool(工具) 🏆 时间: 2025年7月14日-8月3日(美国东部时间) 奖金池: $12,000 竞赛主题 开发任何能够提升开发者使用IRIS体验的应用程序,助力开发者更高效地开发,编写出更优质的代码,并便于测试、部署、支持或监控基于InterSystems IRIS的解决方案。 一般要求: 应用程序或库必须功能完备。它不应是已有库的简单导入或直接接口(C++除外,为IRIS创建接口确实需要大量工作)。同时,它也不应是现有应用程序或库的复制粘贴。 接受的应用程序包括:全新开发或已在Open Exchange上发布但有显著改进的应用。我们的团队将在批准参赛前对所有应用程序进行审核。 应用程序应能在IRIS Community Edition或IRIS for Health Community Edition上运行。这两个版本均可从Evaluation site 下载主机版(Mac、Windows),或从InterSystems Container Registry 或社区容器中拉取容器版使用:intersystemsdc/iris-community:latest 或 intersystemsdc/irishealth-community:latest。 应用程序应为开源,并发布在GitHub或GitLab上。 应用程序的README文件应为英文,包含安装步骤,以及应用程序的工作原理视频演示或描述。 每位开发者最多可提交3个作品。 注意:我们的专家将根据复杂性和实用性标准,对应用程序是否批准参赛拥有最终决定权。他们的决定是最终且不可上诉的。 奖品 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出。 🥇 第一名 - 5,000美元 🥈 第二名 - 2,500美元 🥉 第三名 - 1,000美元 🏅 第四名 - 500美元 🏅 第五名 - 300美元 🌟 第六至十名 - 各100美元 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用。 🥇 第一名 - 1,000美元 🥈 第二名 - 600美元 🥉 第三名 - 300美元 🏅 第四名 - 200美元 🏅 第五名 - 100美元 ❗ 若多名参与者获得相同票数,则均视为获奖者,奖金由获奖者平分。❗ 现金奖励仅发放给能验证身份的获奖者。如有疑问,组织者将联系并要求提供额外信息。 谁可以参加? 任何开发人员社区成员,InterSystems 员工除外。 创建一个帐户! 👥开发人员可以组队创建协作应用程序。一个团队允许 2 到 5 名开发人员。 不要忘记在应用程序的自述文件中突出显示您的团队成员——DC 用户配置文件。 重要截止日期: 🛠 应用开发和注册阶段: 2025 年 7 月 14 日(美国东部时间 00:00):比赛开始。 2025 年 7 月 27 日(美国东部时间 23:59):提交截止日期。 ✅ 投票时间: 2025 年 7 月 28 日(美国东部时间 00:00):投票开始。 2025 年 8 月 3 日(美国东部时间 23:59):投票结束。 注意:开发者可在整个注册和投票期间改进应用程序。 实用资源: ✓ 示例应用程序: webterminal - an emulation for IRIS terminal as a web application git-source-control - git tool to manage changes for shared dev environments and IRIS UI dev editors by @Timothy Leavitt 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 iris-bi-utils - a toolset for IRIS BI and many more. ✓ 我们建议从以下模板开始: iris-dev-template Interoperability-python rest-api-contest-template native-api-contest-template iris-fhir-template iris-fullstack-template iris-interoperability-template iris-analytics-template ✓ 对于 IRIS 初学者: Build a Server-Side Application with InterSystems IRIS Learning Path for beginners ✓ 对于 ObjectScript Package Manager (IPM) 初学者: How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and IPM ✓ 如何提交您的应用程序参加比赛: How to publish an application on Open Exchange How to submit an application for the contest 需要帮助? 加入 InterSystems 的Discord server上的竞赛频道或在本文的评论中与我们交谈。 我们迫不及待地想看到您的项目!祝你好运👍 By participating in this contest, you agree to the competition terms laid out here. Please read them carefully before proceeding.
公告
Claire Zheng · 八月 1, 2023

第二届InterSystems Idea 创意马拉松

嗨,开发者们! 我们很高兴邀请您参加Idea-A-Thon创意马拉松,展示与 InterSystems 技术相关的好创意: 🎁第二届 InterSystems Idea-A-Thon创意马拉松🎁 在8 月 1 日至8 月 21 日期间,根据本次创意马拉松的主题发布创意,即可获得即可获得创意达成奖。 最重要的是,此次赛事InterSystems的员工和社区成员都可以参与! 主题 💡使用 InterSystems IRIS 快速、安全、绿色地运行解决方案💡 该主题基于2023 年 InterSystems 全球峰会期间@Jeffrey Fried的演示而来: InterSystems IRIS 最新动态、下一步计划 如果您的创意得到实施,将提高基于 InterSystems IRIS 的解决方案的速度和可靠性,并减少碳足迹——本次Idea-A-Thon创意马拉松就是为这些好创意而来。 您的创意需要有助于: 提高解决方案的性能 减少实施所需的硬件资源 减少开发、测试、实施、用户培训的工作日 以及与Idea-A-Thon创意马拉松主题相关的其他想法。 👉 要参加我们的Idea-A-Thon创意马拉松,请在InterSystems Ideas 门户上提交创意。 合格的参赛创意应符合以下要求: 用户在Idea-A-Thon创意马拉松期间提交,由通过InterSystems Ideas网站注册的用户创建(您可以通过InterSystems SSO登录); 不要成为其他已经存在的想法的一部分——只允许提交新创意; 不要描述InterSystems产品或服务的现有功能; 除标题外,还包含对创意的详细描述以及对为什么该创意适合 Idea-A-Thon 主题,阐释需清晰明了,包含3~5句话; 以英文发布; InterSystems 专家认为该创意有意义。 所有想法都将受到审核。我们可能会要求您更详细地阐释您的创意。 符合要求的创意将获得特殊的“创意马拉松(Idea-A-Thon)”状态标记。 谁可以参加? 我们邀请所有人加入我们的创意马拉松。欢迎InterSystems员工和社区成员参与并提交创意。 奖品 1. 参与奖——所有发布合格创意的参与者都会将获得奖励 🎁 无线充电鼠标垫 2. 专家奖 ——InterSystems 专家将评选出 3 个最佳创意。获胜者将获得: 第一名- 🎁 Apple Watch SE / Fairphone Fairbuds XL 耳机 第二名- 🎁 扬声器套装 JBL Pulse 5 / Apple AirPods Pro 第二代 / 乐高星球大战 R2-D2 第三名- 🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2 3. 社区奖——得票最多的创意将获得: 🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2 注:InterSystems员工只能获得参与奖。专家奖和社区奖只会颁发给社区非 InterSystems 成员。 参赛时间 ⚠️ 创意提交:8 月 1 日至 21 日 ✅ 创意投票:8 月 1 日至 27 日 🎉 公布获奖者:8 月 28 日 我们鼓励您在此期间登录创意门户上分享您的想法。注册会员可以对已发布的创意进行投票、发表评论。 注意:社区奖仅计入在开发者社区发表过至少一篇帖子的活跃社区用户的投票。 所以, 来 InterSystems Ideas 门户上发布您的创意吧,并随时关注您创意的状态更新: >>在此提交您的创意<< Important note: All prizes are subject to availability and shipping options. Some items may not be available for international shipping to specific countries, in this case, an equivalent alternative will be provided. We will let you know if a prize is not available and offer a possible replacement. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries. 重要提示:所有奖品均视供应情况和运输情况而定。有些奖品可能无法通过国际航运到特定国家,在这种情况下,我们将提供等效的替代方案。如果没有奖品,我们会通知您,并提供备选的替代奖品。奖品不能寄给克里米亚、俄罗斯、白俄罗斯、伊朗、朝鲜、叙利亚或其他美国禁运国家的居民。
公告
Claire Zheng · 十月 10, 2024

InterSystems Global Masters - 欢迎回来(测试版)

各位社区成员,大家好 Global Masters 已开启!使用 InterSystems SSO 登录使用 >> [此链接] << 访问平台,并使用您的 InterSystems SSO 登录。请注意,在最近的测试中,我们发现一些用户在尝试通过这种方式登录时会遇到错误。 我们目前正在与供应商共同调查问题原因。 如果您遇到此类错误,请通过私信联系我,我将向您发送手动邀请!测试版免责声明 请注意,此次发布的版本仍是测试版,我们正紧锣密鼓地在后台开展工作,以改进程序的方方面面。 如果您遇到访问、个人资料方面的问题或发现任何错误,请随时向我发送私信。
文章
Michael Lei · 九月 9, 2021

来自海外的全球独立调查:为什么InterSystems IRIS医疗版是医疗IT开发者的最佳选择

挑战一:缺乏一个统一的技术体系?InterSystems IRIS 医疗版通过统一的数据库、互操作性/中间件、机器学习和FHIR等医疗行业特有的功能来简化开发,开箱即用。 挑战二:需要高性能的解决方案,可以定制适合医疗行业使用的案例InterSystems IRIS for Health医疗版由医疗行业开发人员创建并为医疗服务服务,具有所需的性能、可扩展性和灵活性,大量的全球、全国大型顶级医院案例。全美排名前20医院,全国客户数百家,百强医院30余家; 挑战三:开源和专有软件缺乏灵活性,无法为医疗行业应用提供高可靠性。InterSystems IRIS医疗版实现一套平台兼容专有和开源模块,同时开发人员可以选择自己喜欢的开发语言和灵活性,支持多种开发语言(ObjectScript,.net, Java, Sql, 等等) 挑战四:缺乏具有医疗卫生领域专业知识的供应商,也没有为开发人员提供持续的支持。InterSystems IRIS 医疗版的产品开发能力、屡获殊荣的支持和长期深耕医疗的企业文化,确保开发人员持续成功。
文章
Michael Lei · 九月 13, 2022

使用 Globals存储思维导图

Globals是InterSystems IRIS的数据持久性的核心。它很灵活,允许存储JSON文档、关系数据、面向对象的数据、OLAP立方体和自定义数据模型,例如思维导图。要了解如何使用globals来存储、删除和获取思维导图数据,请遵循以下步骤: 1. 把repo Clone/git到任意本地目录 $ git clone https://github.com/yurimarx/global-mindmap.git 2. 在该目录下打开Docker 终端并执行: $ docker-compose build 3. 启动 IRIS 容器: $ docker-compose up -d 4. 访问 http://localhost:3000 来使用思维导图的前端并创建类似以上的思维导图 本例子的源代码 存储数据 (更多请访问: https://www.npmjs.com/package/mind-elixir): { topic: 'node topic', id: 'bd1c24420cd2c2f5', style: { fontSize: '32', color: '#3298db', background: '#ecf0f1' }, parent: null, tags: ['Tag'], icons: ['😀'], hyperLink: 'https://github.com/ssshooter/mind-elixir-core', } 注意parent属性,它被用来在mindmap节点之间建立父/子关系。 使用Globals 来存储思维导图的源代码 ClassMethod StoreMindmapNode /// Store mindmap node ClassMethod StoreMindmapNode() As %Status { Try { Set data = {}.%FromJSON(%request.Content) Set ^mindmap(data.id) = data.id /// set mindmap key Set ^mindmap(data.id, "topic") = data.topic /// set topic subscript Set ^mindmap(data.id, "style", "fontSize") = data.style.fontSize /// set style properties subscripts Set ^mindmap(data.id, "style", "color") = data.style.color Set ^mindmap(data.id, "style", "background") = data.style.background Set ^mindmap(data.id, "parent") = data.parent /// store parent id subscript Set ^mindmap(data.id, "tags") = data.tags.%ToJSON() /// store tags subscript Set ^mindmap(data.id, "icons") = data.icons.%ToJSON() /// store icons subscript Set ^mindmap(data.id, "hyperLink") = data.hyperLink /// store hyperLink subscript Set %response.Status = 200 Set %response.Headers("Access-Control-Allow-Origin")="*" Write "Saved" Return $$$OK } Catch err { write !, "Error name: ", ?20, err.Name, !, "Error code: ", ?20, err.Code, !, "Error location: ", ?20, err.Location, !, "Additional data: ", ?20, err.Data, ! Return $$$NOTOK } } 我们创建了一个名为^mindmap的Global。对于每个思维导图的属性,它被存储在一个Globals下标中。下标的键是mindmap的id属性。 删除思维导图节点的源代码 - kill the global ClassMethod DeleteMindmapNode /// Delete mindmap node ClassMethod DeleteMindmapNode(id As %String) As %Status { Try { Kill ^mindmap(id) /// delete selected mindmap node using the id (global key) Set %response.Status = 200 Set %response.Headers("Access-Control-Allow-Origin")="*" Write "Deleted" Return $$$OK } Catch err { write !, "Error name: ", ?20, err.Name, !, "Error code: ", ?20, err.Code, !, "Error location: ", ?20, err.Location, !, "Additional data: ", ?20, err.Data, ! Return $$$NOTOK } } 这个例子使用mindmap.id作为mindmap的Global Key,所以删除很容易: call Kill ^mindmap(<mindmap id>) 获得所有存储内容的源代码- 用 $ORDER循环globals ClassMethod GetMindmap - return all mindmap global nodes /// Get mindmap content ClassMethod GetMindmap() As %Status { Try { Set Nodes = [] Set Key = $Order(^mindmap("")) /// get the first mindmap node stored - the root Set Row = 0 While (Key '= "") { /// while get child mindmap nodes Do Nodes.%Push({}) /// create a item into result Set Nodes.%Get(Row).style = {} Set Nodes.%Get(Row).id = Key /// return the id property Set Nodes.%Get(Row).hyperLink = ^mindmap(Key,"hyperLink") /// return the hyperlink property Set Nodes.%Get(Row).icons = ^mindmap(Key,"icons") /// return icons property Set Nodes.%Get(Row).parent = ^mindmap(Key,"parent") /// return parent id property Set Nodes.%Get(Row).style.background = ^mindmap(Key,"style", "background") /// return the style properties Set Nodes.%Get(Row).style.color = ^mindmap(Key,"style", "color") Set Nodes.%Get(Row).style.fontSize = ^mindmap(Key,"style", "fontSize") Set Nodes.%Get(Row).tags = ^mindmap(Key,"tags") /// return tags property Set Nodes.%Get(Row).topic = ^mindmap(Key,"topic") /// return topic property (title mindmap node) Set Row = Row + 1 Set Key = $Order(^mindmap(Key)) /// get the key to the next mindmap global node } Set %response.Status = 200 Set %response.Headers("Access-Control-Allow-Origin")="*" Write Nodes.%ToJSON() Return $$$OK } Catch err { write !, "Error name: ", ?20, err.Name, !, "Error code: ", ?20, err.Code, !, "Error location: ", ?20, err.Location, !, "Additional data: ", ?20, err.Data, ! Return $$$NOTOK } } 用$Order(^mindmap("")) - empty "" - 得到第一个mindmap Global (根节点)。对于每个属性值,我们使用^mindmap(Key,<property name>)。最后,调用$Order(^mindmap(Key))来获得下一个事件。 前端 Mind-elixir和React被用来渲染和编辑mindmap,消耗使用IRIS构建的API后端。见mindmap的反应组件: Mindmap React component - consuming IRIS REST API import React from "react"; import MindElixir, { E } from "mind-elixir"; import axios from 'axios'; class Mindmap extends React.Component { componentDidMount() { this.dynamicWidth = window.innerWidth; this.dynamicHeight = window.innerHeight; axios.get(`http://localhost:52773/global-mindmap/hasContent`) .then(res => { if (res.data == "1") { axios.get(`http://localhost:52773/global-mindmap/get`) .then(res2 => { this.ME = new MindElixir({ el: "#map", direction: MindElixir.LEFT, data: this.renderExistentMindmap(res2.data), draggable: true, // default true contextMenu: true, // default true toolBar: true, // default true nodeMenu: true, // default true keypress: true // default true }); this.ME.bus.addListener('operation', operation => { console.log(operation) if (operation.name == 'finishEdit' || operation.name == 'editStyle') { this.saveMindmapNode(operation.obj) } else if (operation.name == 'removeNode') { this.deleteMindmapNode(operation.obj.id) } }) this.ME.init(); }) } else { this.ME = new MindElixir({ el: "#map", direction: MindElixir.LEFT, data: MindElixir.new("New Mindmap"), draggable: true, // default true contextMenu: true, // default true toolBar: true, // default true nodeMenu: true, // default true keypress: true // default true }); this.ME.bus.addListener('operation', operation => { console.log(operation) if (operation.name == 'finishEdit' || operation.name == 'editStyle') { this.saveMindmapNode(operation.obj) } else if (operation.name == 'removeNode') { this.deleteMindmapNode(operation.obj.id) } }) this.saveMindmapNode(this.ME.nodeData) this.ME.init(); } }) } render() { return ( <div id="map" style={{ height: window.innerHeight + 'px', width: '100%' }} /> ); } deleteMindmapNode(mindmapNodeId) { axios.delete(`http://localhost:52773/global-mindmap/delete/${mindmapNodeId}`) .then(res => { console.log(res); console.log(res.data); }) } saveMindmapNode(node) { axios.post(`http://localhost:52773/global-mindmap/save`, { topic: (node.topic == undefined ? "" : node.topic), id: node.id, style: (node.style == undefined ? "" : node.style), parent: (node.parent == undefined ? "" : node.parent.id), tags: (node.tags == undefined ? [] : node.tags), icons: (node.icons == undefined ? [] : node.icons), hyperLink: (node.hyperLink == undefined ? "" : node.hyperLink) }) .then(res => { console.log(res); console.log(res.data); }) } renderExistentMindmap(data) { let root = data[0] let nodeData = { id: root.id, topic: root.topic, root: true, style: { background: root.style.background, color: root.style.color, fontSize: root.style.fontSize, }, hyperLink: root.hyperLink, children: [] } this.createTree(nodeData, data) return { nodeData } } createTree(nodeData, data) { for(let i = 1; i < data.length; i++) { if(data[i].parent == nodeData.id) { let newNode = { id: data[i].id, topic: data[i].topic, root: false, style: { background: data[i].style.background, color: data[i].style.color, fontSize: data[i].style.fontSize, }, hyperLink: data[i].hyperLink, children: [] } nodeData.children.push(newNode) this.createTree(newNode, data) } } } } export default Mindmap;
公告
Claire Zheng · 四月 19, 2023

持续火热报名中:欢迎参加InterSystems 中国技术培训认证

为支持医疗信息行业人才发展,InterSystems 为中国市场量身定制了贴近需求、灵活、实操性强的技术认证培训计划,由 InterSystems 资深技术专家亲自授课,帮助用户快速掌握 InterSystems 技术,确保用户从快速发展的 InterSystems 技术中获益,以更好地服务于医院信息化建设。点击此处查看课程详情:InterSystems中国技术培训认证 您的最佳学习路径 为什么要参加 InterSystems 技术认证培训? InterSystems 数据平台技术已成为国内医疗信息化领域的主流技术之一,支持全国数百家大型公立医院核心系统长期稳定运行 20 余年; 专为中国技术用户量身定制,具有贴近需求、灵活、实操性强等特点; InterSystems 资深技术专家亲自授课,帮助用户快速掌握 InterSystems 技术及最佳实践; InterSystems 官方技术认证培训具备更高权威性,可以助力用户更好地运用 InterSystems 技术,并从快速发展的 InterSystems 技术中获益,保持技术先进性。 哪些用户可以参加认证培训? 凡使用 InterSystems 技术或对 InterSystems 技术感兴趣的IT从业人员或机构均可参加。 您可以从技术认证培训中获得哪些技能和成长? 与时俱进的课程更新,理论与实践相结合的学习方式,可以帮助您持续提升对 InterSystems 技术的掌握; 参与 InterSystems 的分级培训计划,考核通过即可获得认证证书; 通过线下课程与活动,拓展技术人脉。 InterSystems 中国的认证培训讲师团成员是哪些? InterSystems 中国资深工程师团队授课。 报名方式及开课时间是如何安排的? 报名人数满 5 人即开班,每季度一次,培训方式为线下培训,考试内容含书面测试与上机实践。课程收费请咨询您的 InterSystems 客户经理。医院及医疗信息化企业推荐以机构方式参与培训。 如需报名或咨询更多详情,请联系您的 InterSystems 客户经理,或通过以下方式与 InterSystems 中国团队联系: 电话:400-601-9890 邮件:GCDPsales@InterSystems.com 怎么报名呢? 欢迎联系您的 InterSystems 客户经理或者给我们打电话或者发邮件,谢谢! 电话:400-601-9890 邮件:GCDPsales@InterSystems.com
公告
Claire Zheng · 九月 22, 2022

InterSystems开发者社区中文版首届技术征文大赛专家评审团亮相!

中文社区的同学们大家好! 如你所知,从2022年9月5日-10月24日(北京时间),我们正在举办🏆InterSystems开发者社区中文版首届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)! 截至目前,我们已收获了20余篇佳作 作为此次大赛重要奖项“专家提名奖”评比的重要部分,我们的专家评审团已组建成团! 以下为我们的专家团成员: @Yunfei.Lei @Peng.Qiao @Ida.Yang @Lin.Zhu @Louis.Lu @Hao.Ma @Jingwei.Wang @Tete.Zhang @Tengzhou.Zhuang @Jieliang.Liu @Duan.Haihua @Wenyi.Liu 我们期待专家评审团对参赛作品的公平审阅与打分。 作为社区成员,你的个人贡献也会对每一篇参赛文章产生影响,你的每一次浏览和点赞都将助力你喜欢的文章赢得“开发者社区奖”。 欢迎大家积极投稿、点赞、分享、学习! 欢迎参赛InterSystems开发者社区中文版首届技术征文大赛