InterSystems流程自动化与工作流引擎

InterSystems工作流程引擎的主要功能 2

使用InterSystems工作流程引擎 3

场景描述 3

环境配置与测试 5

任务管理 15

任务API和自定义任务用户界面 16

展望 17

15

集成平台除了集成业务系统,打通数据与业务流程外,另一个核心的功能就是流程自动化(BPA)。

流程自动化涉及几个重要的特性:

  1. 流程建模
  2. 流程协同
  3. 决策自动化
  4. 低代码工作流程自动化
  5. 任务协同与任务管理

其中第4和5点都是和工作流程相关的。

什么是工作流程(Workflow)?它和业务流程(Business Process)有何区别?为何集成平台要涉及对工作流程的管理?

2 0
2 397

在检查我们的^pButtons(在IRIS中改名为^SystemPerformance)性能监控工具的文档时,一位客户告诉我。"我理解所有内容,但我希望它能更简单......更容易定义配置文件,管理它们等等"。

在这次会议之后,我认为尝试为其提供一些更简单的人机界面是一个不错的试验。

这方面的第一步是在现有的pButtons例程上包裹一个基于类的API。

我还能够添加一些更多的 "功能",比如显示当前正在运行的配置文件,它们剩余的运行时间,以前运行的进程等等。

下一步是在这个API的基础上添加一个REST API类。

有了这个工件(pButtons REST API),人们就可以在上面建立一个比较时髦的用户界面。

举个🌰: -

0 0
0 162
文章
· 七月 20, 2022 阅读大约需 1 分钟
如何将IRIS的启动/停止状态输出到一个文件中

IRIS 命令qlist或list可以用来把输出结果输出到一个文件。

qlist的结果以文本格式输出,以^为分隔符。

第三部分,以^为界,包含运行状态数据。

$ iris qlist IRIS > iris.log

$ cat iris.log

IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris

在列表的情况下,以status:为前缀的一行包含运行状态数据。

对于基于Unix的操作系统

$ iris list IRIS > iris.log

$ cat iris.log

0 0
0 193

嗨社区,

这篇文章公开介绍我的 iris-fhir-client 客户端应用。

iris-fhir-client 可以可以借助嵌入式 python 连接到任何开放的 FHIR 服务器 fhirpy 图书馆.

通过终端和使用 CSP Web 应用程序获取资源信息。

0 0
0 178
文章
· 十月 19, 2022 阅读大约需 7 分钟
CORS请求Request携带Cookie失败占用License解决方案

CORS请求Request携带Cookie失败占用License解决方案

起因

  1. 因为是前后端分离的项目,前端使用的vue2,后端iris。需要获取cooikesessionid,每次请求时携带cookie,防止每次请求都占用一个license

  2. 登录认证,保持会话期间全局变量,超时退出。

现象

下图是如果不携带cookie每次请求都会新建一个session并且占用一个license

image

6 0
0 387
文章
· 一月 17, 2023 阅读大约需 3 分钟
ZPM 简单实现实战宝典

ZPM 设计用于与 InterSystems IRIS 数据平台的应用程序和模块一起使用。 它由两个组件组成:ZPN 客户端(用于管理模块的 CLI)和注册表(模块和元信息的数据库)。 我们可以使用 ZPM 来搜索、安装、升级、移除和发布模块。 使用 ZPM,可以安装 ObjectScript 类、前端应用程序、互操作性生产环境、IRIS BI 解决方案、IRIS 数据集或任何文件,例如嵌入式 Python wheel。

今天的这份实战宝典将分为 3 个部分:

  1. 安装 ZPM
  2. 生成模块
  3. 在注册表中查找、安装、发布模块
1 0
0 184

第四十九章 开发Productions - ObjectScript Productions - 使用复杂记录映射器 - 复杂的记录映射类结构

复杂的记录映射类结构

有两个类以类似于描述记录映射的两个类的方式描述复杂的记录映射。描述复杂记录映射的两个类是:

  • 复杂记录映射,描述复杂记录的外部结构并实现复杂记录解析器和编写器。
  • 生成的复杂记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。

一个复杂的记录映射业务服务读取并解析传入的数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的复杂记录类的实例。最后,复杂记录映射业务操作使用实例中的数据,使用复杂记录映射作为格式化模板写入输出数据。复杂记录映射类和生成的复杂记录类都具有描述数据的层次结构。复杂记录映射类和生成的复杂记录类具有并行结构。这与 RecordMap 类不同,其中生成的记录类可以具有不同的层次结构。

0 0
0 95

第六十二章 开发Productions - ObjectScript Productions - 部署Production - 导出Production

导出Production

要使用管理门户导出ProductionXML,请打开Production,单击Production设置和操作选项卡,然后单击导出按钮。 IRIS 选择所有业务服务、业务流程、业务操作和一些相关类,然后显示以下表单以允许添加导出注释和其他组件。

还可以导出业务服务、流程或操作,方法是在Productions配置中选择组件,然后单击“操作”选项卡上的“导出”按钮。在这两种情况下,都可以通过单击其中一个按钮并选择一个组件来将其他组件添加到包中。以通过清除该复选框来从包中删除组件。

可以使用导出注释来描述部署包中的内容。例如,可以描述完整的Productions是否位于作为Productions更新的包或组件集中。当使用管理门户将包部署到目标系统时,会显示导出注释。

0 0
0 108
文章
· 八月 25, 2023 阅读大约需 2 分钟
第九章 ObjectScript - 多维数组

第九章 ObjectScript - 多维数组

多维数组

ObjectScript 中,任何变量都可以是多维数组(也称为数组)。多维数组通常用于保存一组以某种方式相关的值。 ObjectScript 提供的命令和函数可以方便、快速地访问值。

可能会也可能不会直接使用多维数组,具体取决于使用的系统类和自己的偏好。当需要一个用于存储相关值集的容器时,IRIS 提供了一种基于类的替代方案。请参阅集合类。

Basics

多维数组由任意数量的节点组成,由下标定义。以下示例设置数组的几个节点,然后打印数组的内容:

0 0
0 69
文章
· 九月 10, 2023 阅读大约需 2 分钟
第二十四章 Classes - 指定属性关键字

第二十四章 Classes - 指定属性关键字

指定属性关键字

在属性定义中,可以包含影响属性使用方式的可选属性关键字。以下列表显示了一些最常见的关键字:

Required

指定可以将此类实例之前设置的属性值存储到磁盘。默认情况下,属性不是必需的。在子类中,可以将可选属性标记为必需,但不能执行相反的操作。

InitialExpression

指定属性的初始值。默认情况下,属性没有初始值。子类继承InitialExpression关键字的值并且可以覆盖它。指定的值必须是有效的 ObjectScript 表达式。

Transient

指定该属性不存储在数据库中。默认情况下,属性不是瞬态的。子类继承 Transient 关键字的值并且不能覆盖它。

Private

指定该属性是私有的。子类继承 Private 关键字的值并且不能覆盖它。

0 0
0 94
文章
· 十一月 20, 2023 阅读大约需 2 分钟
Java 大赛作品展示--基于IRIS 原生 Java API 的Global编辑器

这是Java 编程比赛的相关文章。

我决定推出一个基于 IRIS Native API for Java 的 CRUD++ Global编辑器。
++因为它不仅仅是C reate、 R ead、 U pdate、 D elete
Global可视化对于立即查看结果始终很重要。

  • 为此,我使用模仿 ZWrite 的树查看器扩展了 API,并且还允许检查子树。
  • $Query Style Navigator 正向和反向操作可轻松找到感兴趣的全局节点。
  • 最后,ZKill 添加了一个选项,可以删除全局节点的内容而不删除下面的子树。

这需要在服务器端有一个小的帮助器类作为默认 API 的扩展

我的策略是拥有一个可从命令行使用的相当适度的界面
就像在 Docker 控制台或终端上一样,并使其尽可能简单。
花哨的图形界面只会分散示例的基本内容。

0 0
0 128
文章
· 十二月 17, 2023 阅读大约需 2 分钟
第三十八章 其他特殊主题

第三十八章 其他特殊主题

类和属性参数

  • XMLNAME
  • XMLSEQUENCE
  • XMLUNSWIZZLE
  • XMLPREFIX
  • XMLIGNOREINVALIDTAG
  • XMLIGNOREINVALIDATTRIBUTE

控制元素的关闭

XML 中,仅包含属性的元素可以用以下任一方式表示:

0 0
0 59

作为针对数据导入处理性能和错误(锁定表已满)的衡量标准,可能需要调整常规内存堆 (gmheap) 和锁定表大小 (locksiz) 参数。

事实上,您可以使用终端和管理门户来检查当前分配了多少通用内存堆。


★终端用

// 一般メモリヒープサマリUSER> w $system .Config.SharedMemoryHeap.GetUsageSummary() 4992226 , 6029312 , 59441152

通用内存堆摘要以使用量、分配量和配置量(字节)的形式显示返回值。

0 0
0 81

第三十二章 使用派生密钥令牌进行加密和签名 - 使用

进行加密

要使用 <DerivedKeyToken> 进行加密,请使用以下步骤:

  1. 如果要加密一个或多个安全标头元素,请创建这些安全标头元素。.
  2. 创建 <DerivedKeyToken> 并将其添加到 WS-Security 标头,如创建和添加 <DerivedKeyToken> 中所述。

请注意,此步骤还会创建并添加 <EncryptedKey> 所基于的 <EncryptedKey> 元素。

0 0
0 62

第四十五章 创建和添加 SAML 令牌 - 变体:不使用

变体:不使用 <BinarySecurityToken>

<BinarySecurityToken> 包含序列化、base-64 编码格式的证书。可以忽略此令牌,而改用标识证书的信息;接收方使用此信息从相应位置检索证书。为此,请使用上述步骤,并进行以下更改:

0 0
0 41
文章
· 十月 29, 2024 阅读大约需 2 分钟
第五章 主设备、当前设备、空设备

第五章 主设备、当前设备、空设备

一个进程拥有一台设备

一次只有一个进程可以拥有一个设备,顺序文件除外。

换句话说,在进程成功向设备发出OPEN命令后,在第一个进程释放该设备之前,其他进程都无法打开该设备。进程通过以下任一方式释放设备:

  • 通过显式发出CLOSE命令。

  • 通过停下来。

每个进程都有一个主设备

每个 IRIS 进程都有一个主要输入设备和一个主要输出设备。默认情况下,这些是同一设备。当您登录终端并激活 IRIS 时,该终端将成为主要设备。由于 IRIS 隐式向该终端发出OPENUSE命令,因此可以立即向它发出READWRITE命令。 IRIS 主设备是操作系统指定为主输入设备的设备。 $PRINCIPAL特殊变量包含主设备的设备 ID

0 0
0 69
文章
· 十一月 14, 2024 阅读大约需 2 分钟
第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令

第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令

客户端OPEN命令

客户端OPEN命令与服务器端OPEN命令只有一个方面的不同:第一个设备参数必须指定要连接的主机。要指定主机,需要包括客户端识别为主机的名称或Internet地址。

一旦建立连接,OPEN开就会成功。此时,可以读取或写入该TCP设备。但是,如果连接的服务器端是另一个IRIS进程,则在使用WRITE命令将一些数据从客户端发送到服务器之前,服务器不会完成其连接端。因此,必须在发出任何读取命令之前发出写入命令。

客户端 OPEN 命令的一些示例是:

0 0
0 49
文章
· 十二月 2, 2024 阅读大约需 4 分钟
第三十九章 终端输入 输出 - terminator

第三十九章 终端输入 输出 - terminator

terminator

第三个位置参数:最多八个字符的字符串,其中任何一个都将终止READ 。这些终止符是协议中内置终止符的补充。请参阅使用终止符结束 I/O 操作。

portstate

4 个位置参数:按位置顺序最多包含 8 个字节的字符串,用于控制 COM 端口状态。端口状态字节如下(字节从1开始按从左到右的顺序编号):

0 0
0 52
文章
· 十二月 22, 2024 阅读大约需 2 分钟
第五十五章 File 输入 输出 - 与非 InterSystems IRIS 软件的交互

第五十五章 File 输入 输出 - 与非 InterSystems IRIS 软件的交互

与非 InterSystems IRIS 软件的交互

Windows 系统上,在 IRIS 中打开顺序文件以进行 “WL” 写入访问通常会阻止非 IRIS 应用程序打开顺序文件进行写入访问。同样,非 IRIS 应用程序打开顺序文件进行写入访问通常会阻止 IRIS 进程并发 “WL” 写入访问。

0 0
0 39

第七十三章 管理设备和助记词空间 - 设备的解释级别

^%ISOPEN 命令一起使用的设备标识符最多要经过三个级别的解释。因此,如果在 ^%ISDevice: 提示符处输入助记词 47,则使用的最终设备 ID 可能会有所不同。下面介绍了这三个级别。

级别 1:%IS 实用工具级别

如果使用 ^%IS 实用程序选择设备,则使用第一级。^%IS 全局中的助记词可以与设备编号相关联。然后,^%IS 实用程序向该设备编号发出 OPEN 命令。

级别 2:OPEN 命令级别

OPEN 命令中,IRIS 会检查此数字是否存在于 Device panel 表的 Alias 列中。如果是这样,它会将其转换为该设备的实际设备号或名称。

0 0
0 29
文章
· 二月 3 阅读大约需 2 分钟
第十四章 I - J 开头的术语

第十四章 I - J 开头的术语

InterSystems IRIS 存储 (InterSystems IRIS storage)

对象(Objects)

持久对象的默认存储类型。如果你使用 IRIS 存储,则无需指定任何存储数据的细节,并且你的类会自动投射到 SQL

InterSystems SQL

SQL

SQLIRIS 的高级关系接口。SQL 完全集成了IRIS 的对象功能,共享其类字典用于表定义,并使用作为类定义的高级数据类型。

InterSystems SQL 服务器 (InterSystems SQL server)

SQL

0 0
0 54

社区朋友们好,

传统的基于关键词的搜索方式在处理具有细微差别的领域特定查询时往往力不从心。而向量搜索则通过语义理解能力,使AI智能体能够根据上下文(而非仅凭关键词)来检索信息并生成响应。

本文将通过逐步指导,带您创建一个具备代理能力的AI RAG(检索增强生成)应用程序。

实现步骤:

  1. 添加文档摄取功能
    • 自动获取并建立文档索引(例如《InterSystems IRIS 2025.1版本说明》)
    • 实现向量搜索功能
  2. 构建向量搜索智能体
  3. 移交至主智能体(分流处理)
  4. 运行智能体

1. Create Agent Tools 添加文档摄取功能

Implement Document Ingestion: Automated ingestion and indexing of documents


1.1 - 以下是实现文档摄取工具的代码:

    def ingestDoc(self):
        #Check if document is defined, by selecting from table
        #If not defined then INGEST document, Otherwise back
        embeddings = OpenAIEmbeddings()	
        #Load the document based on the fle type
        loader = TextLoader("/irisdev/app/docs/IRIS2025-1-Release-Notes.txt", encoding='utf-8')      
        
        documents = loader.load()        
        text_splitter = RecursiveCharacterTextSplitter(chunk_size=400, chunk_overlap=0)
        
        texts = text_splitter.split_documents(documents)
                       
        #COLLECTION_NAME = "rag_document"
        db = IRISVector.from_documents(
            embedding=embeddings,
            documents=texts,
            collection_name = self.COLLECTION_NAME,
            connection_string=self.CONNECTION_STRING,
        )

        db = IRISVector.from_documents(embedding=embeddings,documents=texts, collection_name = self.COLLECTION_NAME, connection_string=self.CONNECTION_STRING,)

向量搜索智能体(Vector Search Agent)能够自动完成文档的摄取(ingest)索引构建(index), 该新功能在InterSystems IRIS 2025.1的数据资源文件夹里) 至 IRIS 向量存储, 只有当数据尚未存在时,才执行该操作。



运行以下查询以从向量存储中获取所需数据:

SELECT
id, embedding, document, metadata
FROM SQLUser.AgenticAIRAG



1.2 - 实现向量搜索功能


以下代码为智能体提供了搜索能力:

 def ragSearch(self,prompt):
        #Check if collections are defined or ingested done.
        # if not then call ingest method
        embeddings = OpenAIEmbeddings()	
        db2 = IRISVector (
            embedding_function=embeddings,    
            collection_name=self.COLLECTION_NAME,
            connection_string=self.CONNECTION_STRING,
        )
        docs_with_score = db2.similarity_search_with_score(prompt)
        relevant_docs = ["".join(str(doc.page_content)) + " " for doc, _ in docs_with_score]
        
        #Generate Template
        template = f"""
        Prompt: {prompt}
        Relevant Docuemnts: {relevant_docs}
        """
        return template


分流代理处理传入的用户查询,并将其委托给矢量搜索代理,后者执行语义搜索操作,以检索最相关的信息。

0 0
0 50