Pesquisar

Anúncio
· Jul. 28

Time to vote in the InterSystems Developer Tools Contest 2025

Hi Community,

It's voting time! Cast your votes for the best applications in our InterSystems Developer Tools Contest:

🔥 VOTE FOR THE BEST APPS 🔥

How to vote? Details below.

Experts nomination:

An experienced jury from InterSystems will choose the best apps to nominate for the prizes in the Experts Nomination.

Community nomination:

All active members of the Developer Community with a “trusted” status in their profile are eligible to vote in the Community nomination. To check your status, please click on your profile picture at the top right, and you will see it under your picture. To become a trusted member, you need to participate in the Community at least once.

Blind vote!

The number of votes for each app will be hidden from everyone. We will publish the leaderboard in the comments section of this post daily. Experts may vote any time so it is possible that the places change dramatically at the last moment. The same applies to bonus points.

The order of projects on the contest page will be determined by the order in which applications were submitted to the competition, with the earliest submissions appearing higher on the list.

P.S. Don't forget to subscribe to this post (click on the bell icon) to be notified of new comments.

To take part in the voting, you need:

  1. Sign in to Open Exchange – DC credentials will work.
  2. Make any valid contribution to the Developer Community – answer or ask questions, write an article, contribute applications on Open Exchange – and you'll be able to vote. Check this post on the options to make helpful contributions to the Developer Community.

If you change your mind, cancel the choice and give your vote to another application!

Support the application you like!


Note: Contest participants are allowed to fix bugs and make improvements to their applications during the voting week, so be sure to subscribe to application releases!

4 Comments
Discussão (4)4
Entre ou crie uma conta para continuar
Discussão (0)2
Entre ou crie uma conta para continuar
Anúncio
· Jul. 28

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

Hi 开发者们,

我们很高兴地宣布,将举办一场全新的 InterSystems 在线编程竞赛,本次竞赛旨在开发实用工具,让各位同行开发者的日常工作更加轻松便捷:

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

时间: 2025年7月14日-8月3日(美国东部时间)

奖金池: $12,000


竞赛主题

开发任何能够提升开发者使用IRIS体验的应用程序,助力开发者更高效地开发,编写出更优质的代码,并便于测试、部署、支持或监控基于InterSystems IRIS的解决方案。

一般要求:

  1. 应用程序或库必须功能完备。它不应是已有库的简单导入或直接接口(C++除外,为IRIS创建接口确实需要大量工作)。同时,它也不应是现有应用程序或库的复制粘贴。
  2. 接受的应用程序包括:全新开发或已在Open Exchange上发布但有显著改进的应用。我们的团队将在批准参赛前对所有应用程序进行审核。
  3. 应用程序应能在IRIS Community Edition或IRIS for Health Community Edition上运行。这两个版本均可从Evaluation site 下载主机版(Mac、Windows),或从InterSystems Container Registry 或社区容器中拉取容器版使用:intersystemsdc/iris-community:latest 或 intersystemsdc/irishealth-community:latest。
  4. 应用程序应为开源,并发布在GitHub或GitLab上。
  5. 应用程序的README文件应为英文,包含安装步骤,以及应用程序的工作原理视频演示或描述。
  6. 每位开发者最多可提交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):投票结束。

注意:开发者可在整个注册和投票期间改进应用程序。

    实用资源:

    ✓ 示例应用程序:

    ✓ 我们建议从以下模板开始:

    ✓ 对于 IRIS 初学者:

    ✓ 对于 ObjectScript Package Manager (IPM) 初学者:

    ✓ 如何提交您的应用程序参加比赛:

    需要帮助?

    加入 InterSystems 的Discord server上的竞赛频道或在本文的评论中与我们交谈。

    我们迫不及待地想看到您的项目!祝你好运👍


    By participating in this contest, you agree to the competition terms laid out here. Please read them carefully before proceeding.

    Discussão (0)1
    Entre ou crie uma conta para continuar
    Artigo
    · Jul. 28 5min de leitura

    Introducing typeorm-iris: TypeORM for InterSystems IRIS from Node.js

    Overview

    The typeorm-iris project provides experimental support for integrating TypeORM with InterSystems IRIS, enabling developers to interact with IRIS using TypeORM’s well-known decorators and repository abstractions. This allows a more familiar development experience for JavaScript and TypeScript developers building Node.js applications with IRIS as the backend database.

    TypeORM MongoDB Review. I recently started using TypeORM in a… | by Eliezer  Steinbock | Medium

    While the project implements key integration points with TypeORM and supports basic entity operations, it’s not yet battle-tested or suitable for production environments.

    Why typeorm-iris?

    The official InterSystems IRIS Node.js driver does not provide native SQL query execution in the way that other database drivers (e.g., for PostgreSQL or MySQL) do. Instead, you must use an ObjectScript-based API (e.g., %SQL.Statement) to prepare and execute SQL commands.

    This becomes problematic when building modern applications that rely on Object-Relational Mapping (ORM) tools like TypeORM. TypeORM expects a lower-level driver capable of preparing and executing raw SQL in a single connection session, which is not currently available with IRIS’s JavaScript tooling.

    To overcome these limitations, typeorm-iris implements the necessary pieces to bridge IRIS and TypeORM, using the available ObjectScript SQL execution interfaces under the hood.

    Early Stage & Known Issues

    This project is in its initial phase and has only been tested with a limited number of cases. Expect instability, missing features, and breaking changes in future iterations.

    Notable limitations observed during development include:

    1. Excessive Network Roundtrips

    Executing SQL through the %SQL.Statement class from JavaScript involves multiple network messages between the Node.js process and the IRIS server. For example, a single logical SQL operation may require multiple steps like:

    • Preparing the statement
    • Executing the query
    • Fetching metadata
    • Fetching rows individually

    Each of these can result in separate messages over the network, resulting in significantly more overhead compared to using a native SQL driver.

    2. No True Async/Parallel Support

    The official IRIS Node.js driver does not support asynchronous usage in a multithreaded or worker-based context:

    • Reconnecting in the same process often fails or causes unpredictable behavior.
    • Spawning worker threads and using the driver inside them leads to issues.
    • Only one connection per process works reliably.

    These constraints make it unsuitable for modern concurrent Node.js applications. In practice, this limits how well the driver can scale with concurrent workloads, and it significantly restricts architectural choices.

    Usage Guide

    Due to usage of latest IRIS SQL Fatures requires IRIS 2025.1+ to work.

    You can install typeorm-iris via npm:

    npm install typeorm-iris

    Because this driver is not officially supported by TypeORM, using it requires a workaround for setting up the DataSource. You cannot directly use new DataSource() or createConnection() as you would with official drivers.

    Custom DataSource Setup

    import { IRISDataSource, IRISConnectionOptions } from "typeorm-iris"
    
    const dataSourceOptions: IRISConnectionOptions = {
        name: "iris",
        type: "iris",
        host: "localhost",
        port: 1972,
        username: "_SYSTEM",
        password: "SYS",
        namespace: "USER",
        logging: true,
        dropSchema: true,
    }
    
    export function createDataSource(options: any): IRISDataSource {
        // @ts-ignore
        const dataSource = new IRISDataSource({ ...dataSourceOptions, ...options })
        return dataSource
    }

    Once initialized, you can use TypeORM decorators as usual:

    import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
    
    @Entity()
    export class User {
        @PrimaryGeneratedColumn()
        id: number
    
        @Column()
        name: string
    
        @Column()
        email: string
    }

    Using repositories works similarly:

    const userRepository = dataSource.getRepository(User)
    const newUser = userRepository.create({ name: "Alice", email: "alice@example.com" })
    await userRepository.save(newUser)

    Sample Projects

    The GitHub repository includes a sample/ folder with several fully working examples:

    • sample1-simple-entity
    • sample2-one-to-one
    • sample3-many-to-one
    • sample4-many-to-many
    • sample16-indexes

    These cover basic persistence, relationships, and schema features, offering practical usage demonstrations.

    Unit Tests

    Initial testing includes the following use cases:

    Entity Model

    • should save successfully and use static methods successfully
    • should reload given entity successfully
    • should reload exactly the same entity
    • should upsert successfully

    Entity Schema > Indices

    • basic

    Persistence

    • basic functionality
    • entity updation
    • insert > update-relation-columns-after-insertion
    • many-to-many
    • one-to-one

    These tests are limited in scope and more coverage will be added as the project matures.

    Supported Features

    • Entity decorators: @Entity(), @Column(), @PrimaryGeneratedColumn()
    • Repositories: create, save, find, delete, etc.
    • Schema drop and sync (experimental)
    • Partial support for relations and custom queries

    Again, these features are early-stage and may not cover the full range of TypeORM’s capabilities.

    Real-World Constraints

    InterSystems IRIS Node.js Driver Limitations

    • Only one usable connection per process
    • No proper support for parallel operations or threading
    • Lack of native SQL API support (via SQL protocol)
    • Heavy reliance on message-based communication using proprietary protocol

    Until InterSystems updates the official driver with support for proper SQL execution and concurrent operations, this project will be fundamentally limited in terms of performance and scalability.

    Feedback & Contribution

    As this is an experimental driver, your feedback is crucial. Whether you're trying it out for a small side project or evaluating it for broader use, please share issues and suggestions on GitHub:

    ➡️ github.com/caretdev/typeorm-iris/issues

    Pull requests, test cases, and documentation improvements are welcome.

    What's Next

    Planned future improvements include:

    • Expanding test coverage for real-world queries and schema designs
    • Handling more TypeORM query builder features
    • Investigating batching optimizations
    • Improving schema introspection for migrations

    Conclusion

    typeorm-iris brings much-needed TypeORM support to InterSystems IRIS for Node.js developers. While it’s not production-ready today and inherits severe limitations from the current driver infrastructure, it provides a foundation for further experimentation and potentially wider adoption in the IRIS developer community.

    If you're an IRIS developer looking to integrate with a modern Node.js backend using TypeORM, this is the starting point.

    And if you found this useful, please vote for it in the InterSystems Developer Tools Contest!

    10 Comments
    Discussão (10)3
    Entre ou crie uma conta para continuar