#Ensemble

3 关注者 · 181 帖子

InterSystems Ensemble 是一个完整且易于使用的集成平台,使用户能够在有史以来最短的时间内连接人员、流程和应用程序。

了解更多信息

文档

文章 Lilian Huang · 三月 30, 2022 5m read

这篇文章是前面文章[首次使用InterSystems IRIS] 互操作性: 它是如何工作的?的延续。

在上一篇文章中,解释了互操作性菜单如何用于系统集成。

在本文中,我想解释如何用互操作菜单开发系统集成。

首先,您想创建什么样的业务流程? 请一边思考,一边开始以下内容。

  • Production(生产
  • 消息
  • 组件
    • 业务服务
    • 业务流程
    • 业务运营

Production被定义和用作指定系统集成所需的组件及存储组件的配置,这些配置通过管理门户界面使用(内部被存储为生产的类定义)。

例如,假设您正在创建一个业务服务,该服务定期处理放置在指定目录中的文件。 在这种情况下,有必要准确配置要监测的目录和要处理的文件。 一个生产就是预先准备好用于存储这些配置。

这些配置取决于发送和接收数据的组件所使用的适配器

适配器是用于简化与外部系统连接的类,有些是协议特定的,如 Mail/File/SOAP/FTP/HTTP/SQL/TCP,有些是标准特定的,如 HL7

有关适配器的更多信息,请参阅文档(protocol-specific adapters and adapters related to EDI documentation

由于我们将必要的组件定义为Production启动Production将启动系统集成,而停止Production将停止系统集成。

0
0 306
文章 Weiwei Gu · 三月 14, 2022 3m read

大家好!

 

InterSystems IRIS有一个叫做互操作性Interoperability的菜单。

 

它提供了轻松创建系统集成的机制(适配器、记录图、BPM、数据转换等),因此不同的系统可以轻松地连接起来。

 

在数据中继过程中可以包括各种操作,比如:为了连接那些通常不连接的系统,可以根据目的系统的规格要求来接收(或发送)数据。另外,在发送数据之前,可以从另一个系统获取和添加信息。以及,信息可以从数据库(IRIS或其他)获取和更新。

 

为此,我们会撰写一系列的文章,将讨论以下主题,同时看一下示例代码,以帮助你了解它是如何工作的,以及在用互操作性整合系统时需要什么样的开发。

* How it works 它是如何工作的
* What a Production is 什么是Production ?
* Message 消息
* Component Creation 组件的创建

* 1)Business Operations  业务操作

*2)Business Processes 业务流程
*3) Business Services 业务服务


  首先,介绍一下我们在这个系列中要使用的案例。

 一家经营着一个购物网站的公司,目前正在改变其产品信息的显示顺序,以配合季节的变化。 然而,有些商品无论在什么季节都能卖得很好,而有些商品却在意想不到的时候卖得很好,这与目前改变顺序的显示规则不相符。

1
0 388
文章 Michael Lei · 三月 6, 2022 3m read

我们所有的工作环境都是Ensemble 2017.2。但我们最近将迁移到IRIS for Health 2021.1版本。这是一个复杂的过程,但经过仔细考虑,我们找到了实现这一目标的方法。

我们有一个开发服务器和两个生产服务器的镜像,采用Failover模式。我们有40多个名称空间在使用中,有些有HL7集成,有些有Soap服务、Rest服务、文件处理......什么都有点。我们需要确定向IRIS的迁移不会出现问题,最重要的是,我们需要不惜一切代价避免服务中断。因此,我们必须做的第一件事是建立一个计划。

0
1 190
问题 Ren Sicong · 一月 26, 2021

在ensemble使用中遇到过重启组件失败需要强制更新的情况,报错为作业未在10秒内停止,此时需要手动停止报错的作业,或者重新启动production,强制更新是不能解决作业不能及时停止的问题,所以目前对强制更新的使用场景有疑问

In the use of ensemble, when the component fails to restart and needs to be forced to update, the error is that the job has not stopped within 10 seconds. At this time, the error reporting job needs to be stopped manually, or the production needs to be restarted. Forced update can not solve the problem that the job cannot stop in time. Therefore, there are so  me questions about the use scenarios of forced update

2
0 364
文章 Johnny Wang · 十二月 12, 2021 3m read

    您可能已经听说,我们目前正在为所有正在使用 Caché 和 Ensemble 的客户提供限时免费迁移到我们的下一代数据平台 InterSystems IRIS 的机会。

    虽然我们依旧如往常一样全力支持那些正在使用 Caché 数据库和 Ensemble 集成引擎的客户,但我们还是认为 InterSystems IRIS 是未来的关键。它结合了 Caché 和 Ensemble 的所有功能,并添加了大量令人兴奋的强大功能,从机器学习到原生 Python。

    这也正是我们为现有客户提供迁移到 InterSystems IRIS 并使用这些新功能的原因。 我们也通过就地迁移支持轻松迁移,这意味着无需数据库转换、分步迁移指南、教程等。

    听起来挺有趣对吗? 以下是我针对当前 Caché 和 Ensemble 应迁移到 InterSystems IRIS 的五个主要原因。

0
0 359
文章 Hao Ma · 十一月 17, 2021 5m read

REF: https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View.cls?KEY=GREST

REF: https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_rest#AFL_C4838

开发REST服务有两个方式, 一个是生生的写代码, 定义接口的标准,被称为"Manually Coding"。第2个方式是目前越来越流行的"Sepcification-first",也就是使用描述性的语言定义接口规范,然后通过这个规范生成接口代码。第2种方式更快捷,但这里我还是从第一种介绍起,对理解里面的代码层次更容易一些,而这是调试一个接口必须的。

从代码开发REST服务

不同于HTTP和SOAP, Ensemble里面没有REST的inbound Adaptor,也没有可用的BS组件。在Production里开发一个REST服务的步骤是:

  1. 开发一个REST Service, 这个Service是一个CSP Page, 是一个网页服务,和Ensemble没关系。要在Production中使用这个服务,您需要在这个服务里调用一个Production的业务服务BS。
0
1 358
文章 Michael Lei · 四月 24, 2021 6m read

欢迎大家将相关的经验在这个讨论区分享。



板块 文章列表
征文大赛作品集锦

2022年首届InterSystems 技术征文大赛集锦

2023年第二届InterSystems 技术征文大赛集锦

官方文档

我司即将推出中文官方文档门户,欢迎大家把需要的官方文档发在评论区,我们会优先发布。谢谢!

1
3 1084
文章 Muhammad Waseem · 十月 16, 2021 2m read

在本文中,我將演示以下內容:

  • 使用自定義實用程序函數從數據庫更新 ReferencesRange(OBX:7) 針對 ObservationIdentifier(OBX:3.1)[TestCode]
  • 根據數據庫實用程序函數中的 ObservationIdentifier(OBX:3.1)[TestCode] 和 ObservationValue(OBX:5)[Result] 更新異常標誌 (OBX:8)
  • 基於異常標誌的路由消息 (OBX:8)

以下是主要和轉換後的 HL7 2.5 ORU_R01 消息:
 

第 1 步:首先,我們需要在數據庫中保存參考範圍,為此我使用了 TestRanges 持久類:

第 2 步:我們需要創建一個自定義函數來獲取引用範圍,為此我在實用程序類中創建了 GetReferenceRange() ClassMethod 函數。 請注意這個類應該是來自 EnsRule.FunctionSet 的擴展

 

我們需要創建另一個函數來設置異常標誌,為此我在實用程序類中創建了 SetAbnormalFlag() ClassMethod 函數

 

第 3 步:現在我們將在數據轉換 (UpdateReferenceRangesDTL) 中使用這些函數。

1
0 245
文章 Jingwei Wang · 十月 28, 2021 32m read
目录

技术概要:InterSystems IRIS 和 UIMA

本技术概要(First Look)快速介绍了 InterSystems IRIS® 数据平台如何实施和补充非结构化信息管理架构 (UIMA)。在简要概述 UIMA 以及 InterSystems IRIS 如何对其进行补充之后,您将有机会通过基本的动手练习来在实际应用中了解 InterSystems IRIS。 要浏览技术概要(First Look)的所有内容,包括可以在InterSystems

0
0 246
文章 Jingwei Wang · 十月 28, 2021 23m read
目录

技术概要:InterSystems API 管理器

本文档将向您介绍InterSystems API管理器(InterSystems API Manager ,IAM),解释了它的工作原理,并让您开始在自己的实例上探索它的功能。

InterSystems API管理器是如何工作的?

InterSystems API管理器是 InterSystems IRIS®数据平台的一个组件,它允许您利用由 InterSystems IRIS 应用程序暴露或消费的微服务和 API。作为 InterSystems IRIS的 服务器和应用程序之间的 API 网关(gateway),API 管理器使您能够更有效地监视和控制服务器端 API 和客户端应用程序之间的调用流量。 要了解有关

0
0 275
文章 Jingwei Wang · 九月 27, 2021 32m read

<style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #B5D6FC; --select-text-font-color: auto; --monospace: "Lucida Console",Consolas,"Courier",monospace; --title-bar-height: 20px; } .mac-os-11 { --title-bar-height: 28px; } html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; } body { margin: 0px; padding: 0px; height: auto; inset: 0px; font-size: 1rem; line-height: 1.

0
0 470
文章 Jingwei Wang · 九月 26, 2021 6m read

本文解释了如何使用 InterSystems IRIS Native 从 .NET 应用程序访问 InterSystems IRIS®数据平台 globals。IRIS Native 还允许您运行ObjectScript 方法、函数和Routine。在本文中,您首先将连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。所有这些活动都将在 .NET 应用程序中执行。

为了让您体验 IRIS Native,而又不陷入细节困境,本次探索特意设计得很简洁。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 IRIS Native 引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 IRIS Native 的探索与真实的情况相混淆!

Globals 简介

InterSystems IRIS 提供了一种易于使用的方法来将数据存储在持久的多维数组中。global 是存储在 InterSystems IRIS 物理数据库中的多维数组。在应用程序中,globals 到物理数据库的映射基于当前命名空间,命名空间提供一个或多个物理数据库的逻辑统一视图。

0
0 269
文章 Jingwei Wang · 九月 22, 2021 9m read

为什么要连接系统?

连接系统可以让一个系统处理来自非本系统的信息。例如,以下场景需要连接系统:

  • 为了提高效率,最初设计为执行单一功能的系统需要集成。例如,您可以通过集成跟踪库存、订购材料、记录销售和控制运输的各个系统来提高效率。
  • 系统合并后,在不同机构中执行相同功能的系统需要协同工作才能使统一的机构有效。

 

将系统连接在一起时,您可能会面临一些挑战,例如:

  • 不同系统使用不同的通信协议:一个系统可能使用TCP,另一个系统使用SOAP,第三个系统使用REST。
  • 不同系统使用不同格式或基于不同标准的不同消息。
  • 需要保证消息成功传递到正确的系统,并能够检测和纠正故障。
  • 必须监控传输消息的系统,如果一次消息过多,则为消息提供一个队列,并监控整体系统性能以确保没有任何障碍。

 

虽然可以编写自定义应用程序来连接系统,但开发一款InterSystems IRIS® 产品要容易得多,也快得多。

InterSystems IRIS 提供了一个框架,允许连接系统,并最大限度地减少或消除对自定义代码的需求。
 

Production介绍

InterSystems IRIS Production是一个集成框架,用于轻松连接系统和开发互操作性应用程序。产品Production提供包含各种消息格式和通信协议的内置连接。

0
0 256
文章 Jingwei Wang · 九月 22, 2021 2m read

Object Script(四)

面向脚本


类的主要类型









类型

适用目的

Persistent

 

持久化对象 够将对象保存到数据库中(写入磁盘),单独存储.

Serial

 

在持久化对象内部存储的对象,随持久化对象存储,不单独存储.

在给此对象中的属性赋值之前,不需要调用%New()来创建新的对象。如果此对象的属性包含在一个持久化类中,那么此对象的属性将被存储在持久化类的范围内。

Registered

临时的类和对象,不持久化(方法会保存).

Abstract

当类的属性被设置为abstract的时候,该类即被声明为抽象类,不能被实例化.

Datatype

 

数据类型,只包含数据验证和转换的方法.

CSP

用于处理HTTP事件

 

类成员



类型

适用目的

Properties

一个属性包含类的一个实例的数据.

Methods

实例方法和类方法(在其他语言中称为静态方法)。

0
0 372
文章 Jingwei Wang · 九月 21, 2021 1m read

Object Script(三)

面向脚本

 


  • Routine

可将routine看做全局可调用的函数,一个函数是一个执行程序(Roution),它执行一个操作(例如,将一个字符串转换为其对应的ASCII码值)并且可以返回一个值。

 

语法结构:

Routine可以有一个标签,ObjectScript代码,以及结尾的注释,所有这些元素都是可选的。可以使用";"或"//"来表示注释。对于多行注释,用"/*"标记注释的开头,用 "*/"标记注释的结尾。

 

结构示例:

标签

      ObjectScript代码

end

 


  • 创建Routine示例

Studio创建:

打开Studio,点击左上角新建文件。选择General->ObjectScript Routine

 

将下段代码填写入建好的Routine。

        hello ; hello world routine
            write !, "hello world"
          write !, "bye"
      end quit  ; end

 

Terminal调用:

打开Terminal,执行下段代码,即可检查结果。

    do ^hello
0
1 313
文章 Qiao Peng · 三月 29, 2021 4m read

 

InterSystems IRIS/Caché的CDC

InterSystems IRIS/Caché未提供开箱即用的变更数据捕获(CDC)工具,而且由于其多模型建模能力和底层的多维存储模型,相对于关系型数据库的单一模型,针对于SQL的CDC在InterSystems IRIS/Caché上会更复杂一些。例如通过Journal日志记录的是底层持久化多维数组的数据变更,而不是SQL table的变更。

通常,在应用层面实现变更数据捕获是更灵活和简单的方式,例如通过设置触发器、类的DSTIME参数。但如果无法在应用层做CDC,可以考虑使用InterSystems IRIS/Caché的Journal和强大的开发能力获取数据变更。

这里介绍使用InterSystems IRIS/Caché的Reporting类型的异步镜像成员获取数据变更。

2
1 1345
问题 秀政 王 · 七月 2, 2021
错误详情

ERROR #5023: Remote Gateway Error: java.lang.NoClassDefFoundError: net/sf/cglib/proxy/MethodInterceptor at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.

3
0 445
公告 Johnny Wang · 九月 2, 2021

2021 年 8 月的学习资料现在可以在learning.intersystems.com上独家获取!您可以:

  • 先睹为快:2021 年虚拟峰会体验实验室
  • 使用自适应分析(Adaptive Analytics)解决方案来组建你的第一个数据模型
  • 免费试用 InterSystems IRIS 社区版
  • 查看 InterSystems 文档中的分析
  • 申请即将举行的线上技术课程

立刻报名!

 注意:老是错过最新消息?别担心,我们会在9月恢复正常的邮件发送。

0
0 119
文章 Jingwei Wang · 八月 25, 2021 4m read

Object Script(二)

ObjectScript没有定义任何保留字:你可以自由地使用任何字作为标识符(如变量名)。为了达到这个目的,ObjectScript使用了一组内置的命令以及特殊的字符(比如函数名的"$"前缀),以便将标识符与其他语言元素区分开来。

 






示例

含义

abc^def

调用routine中的一个标签:

def是一个routine,abc是该routine中的一个标签。

i%abcdef

 

i%<PropertyName>

用于从实例变量自身的Get或Set访问器方法中引用该变量,或者绕过其Get或Set方法

abc->def

 

这种语法只在InterSystems的SQL语句中可以使用。它指定了一个隐含的左外连接。abc是你正在查询的类中的一个对象值字段,def是子类中的一个字段。

abc?def

 

一个问号是模式匹配操作符,测试变量abc中的值是否与def中指定的模式相匹配

abc[def

 

左括号([)是二进制包含运算符。

0
0 461
文章 Jingwei Wang · 八月 25, 2021 3m read

Object Script(一)


  • 概况

ObjectScript是一种用于在InterSystems IRIS数据平台上快速开发编程语言,它是面向对象的弱类型脚本语言,非常适用于各种应用,包括业务逻辑、应用集成和数据处理。

在这里,我将主要介绍ObjectScript的命令脚本,类,方法和Routine等使用方式和语法规范。如有任何疑问,可在InterSystems开发者社区进行深入讨论。

 

  • IDE选择

可以使用InterSystems IRIS内置的StudioVisual Studio Code(需要安装Object  Script扩展)来查看和编辑代码。这里我们使用InterSystems IRIS内置Studio来做示例。

如果你已安装InterSystems IRIS或者InterSystems HS 等任何InterSystems产品,找到右下角的图标  ,单击鼠标右键,点击Studio,如下图所示:

输入用户名和密码(用户名:superuser 密码:安装时自己设置的密码),即可进入到Studio开发环境,如下图所示:

   

 


  • Terminal

可以直接打开InterSystems IRIS的终端尝试执行ObjectScript的简单指令。

0
1 792
文章 TZ Zhuang · 八月 6, 2021 2m read

可以使用%SYS.Journal.File类中的ByTimeReverseOrder查询,以及%SYS.Journal.Record类中的List查询来实现。

下面是这两个查询的具体作用:

A) %SYS.Journal.File类中的ByTimeReverseOrder查询
这个查询会获取journal日志文件名并按降序排列

USER>set rs=##class(%ResultSet).%New("%SYS.Journal.File:ByTimeReverseOrder")
 
USER>do rs.Execute()
 
USER>while rs.Next() { write rs.Name,! }
c:\intersystems\cache\mgr\journal\20190620.003
c:\intersystems\cache\mgr\journal\20190620.002
c:\intersystems\cache\mgr\journal\20190620.001
c:\intersystems\cache\mgr\journal\20190610.001

B) %SYS.Journal.Record类中的List查询
这个查询可以从指定journal日志文件中获取日志记录

USER>set rs2=##class(%ResultSet).
0
1 340
问题 water huang · 五月 6, 2021

如这文件内容 <?xml version="8.0"?>
<root xmlns="test" xmlns:mc="test1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="test2">
    <!--这个是说明测试哦-->
    <id code="test3"/><root>

我需要获取到<?xml version="8.0"?> 以及 root 节点的所有属性和他们的值比如xmlns,它的值是test,需要获取到id的说明 内容“这个是说明测试哦”

4
0 235
文章 姚 鑫 · 七月 24, 2021 2m read

第十七章 类关键字 - DependsOn

指定此类应在编译器使其他(指定的)类可运行后编译。

用法

要指示类编译器应该在其他类可运行后编译此类,请使用以下语法:

Class MyApp.MyClass [ DependsOn = classlist ]  
{ //class members }

其中classlist是下列之一:

  • 类名
[ DependsOn = MyApp.Class1 ]
  • 用逗号分隔的类名列表,用括号括起来。
[ DependsOn = (MyApp.Class1,MyApp.Class2,...) ]

详情

此关键字指定类编译器应该在使指定的类可运行后编译此类。

如果此类的编译使用方法生成器逻辑中的这些其他类,则此关键字非常有用。如果类包含调用其他类的初始表达式,这也很有用。

此关键字仅影响编译顺序,不影响运行时行为。

注意:DependsOn关键字只影响具有System关键字的公共值的类。

此外,如果一个类有DependsOn=ClassA,那么它也有CompileAfter = ClassA也是多余的。

对子类的影响

这个关键字继承自所有超类。如果子类为关键字指定了一个值,该值指定了在子类被编译之前必须运行的附加类。

默认

默认情况下,不指定该关键字。

第十八章 类关键字 - Deprecated

指定不推荐使用此

0
0 124