文章 姚 鑫 · 十月 11, 2022 3m read

第十三章 CSP 中的 HTTP 请求 - CSP 服务器事件流

CSP 服务器收到来自 CSP 网关的请求时,它会确定该请求是针对静态页面还是针对 CSP 类的。如果是静态页面,它会立即将页面发回。如果是针对 CSP 类,它会执行以下操作:

  1. 确定此请求属于哪个会话。如果没有,它会启动一个新会话。
  2. 确保在正确的 Caché 命名空间中处理请求。
  3. 确保对象中正确的 %CSP.Session可用,并根据 HTTP 请求中包含的信息在对象中创建 %CSP.Request 的实例。如果需要任何解密,它也会这样做。
  4. 构造 %CSP.Response 对象以允许应用程序修改响应标头。
  5. 确定应由哪个类处理请求并调用其 Page 方法(该方法又调用 OnPage 回调方法)。

CSP 服务器 URL 和类名称解析

CSP 服务器通过解释其 URL 来确定将 HTTP 请求分派到哪个类。 CSPURL 分解为以下组件:

Component Purpose
http:// 协议
localhost 网络服务器地址
[<port_no>] 可选,Web 服务器正在运行的端口号;默认为端口 80
/csp/samples/ 目录
object.csp 文件名和扩展名
?OBJID=2 查询

协议和服务器地址由 Web 服务器处理,与 CSP 服务器无关。

0
0 138
文章 John Pan · 九月 9, 2022 5m read
  1. 概述

鉴于国内医疗市场上,还有一些遗留系统使用PB9,Delphi7等开发技术,为加快开发进度,使第三方能尽快调用由Ensemble提供的标准HL7 V2的webservice服务,先提供几种常见语言调用Ensemble的HL7 V2 webservice接口例子。请大家根据实际情况测试并使用

假设在Production中加入了EnsLib.HL7.Service.SOAPService.CLS这个预制的Business Service并将其命名为PeiXunHl7SoapIn,那么,外部系统可以通过如下endpoint访问HL7 V2 Webservice

http://localhost:57772/csp/peixunpro/EnsLib.HL7.Service.SOAPService.CLS?CfgItem=PeiXunHl7SoapIn

CfgItem=PeiXunHl7SoapIn这是一个重要的参数,CfgItem是固定写法,PeiXunHl7SoapIn是你的BS的名称。
其中,通过参数CfgItem,可以访问由同一个Business Service类开放,但以不同的名称暴露出来的SOAP接口。

1
0 607
文章 lizw lizw · 九月 28, 2022 12m read

简单分享下在医院实际业务过程中%Dictionary.CompiledClass的一些应用。
一,Query查询出来的数据直接存表。
       我们经常会遇到一些突如其来的检查,如:飞行检查,审计检查等等,往往一下子要查询几年的各种数据,每种数据涉及字段还非常多,数据之间还要求对上,查询耗时长,数据对比难度大,此时,我们需要把查询出来的数据直接存到临时表,数据核对和修改直接在临时表中完成,核对好的数据直接在sqldbx或者水滴等查询工具中整表导出,效率会高一些。
       具体实现:按照数据要求,把表建好,Query输出字段和表字段顺序一致,按日期每天调用Query查询和插入,记录异常数据,后续单独处理。
       优点:效率明显提高,数据核对和修改、导出很方便,避免了数据量大,多次查询耗时长问题。
       缺点:数据量大会占用存储,记得删。
// W ##CLASS(lizw.CloseCycleData).insertDayByDay("2022-01-01","2022-06-30")
ClassMethod insertDayByDay(sd, ed)
{
    k ^tmplzw("insertFromQyeryTestpara",$j)
    S classOBJ=##class(%Dictionary.CompiledClass).%OpenId("lizw.

1
0 512
文章 聆严 周 · 九月 27, 2022 6m read

背景

Cache起源于没有SQL的1970时代,当时各种高级计算机语言才刚刚诞生,其中M语言较为独特,它的诞生就是为了在没有操作系统的机器上,进行数据存储。别忘了,Unix在1971年才发布。M语言别具一格地采用了Global多维数组,统一了复杂的内存操作和文件读写,使之成为了1970年代数据库的事实标准,特别是在医疗行业。而后Intersystems在1978年接过M语言的旗帜,在M语言上添加了SQL兼容层和ObjectScript层,前者顺应了时代的潮流,后者不仅为M语言提供了强大的OOP和各种便捷的语法糖,还让数据能以对象形式进行访问,让数据和代码更加紧密。

本文将简述多维数组、SQL、对象这3种数据操作方式,提供实例代码片段,并在运行效率、开发效率、管理效率、实用性方面讨论它们的优缺点。 为方便讨论,以学校与学生为例。对每种操作方法,都列举3种典型的用例,分别为,访问某特定ID的学生(即数据库ID索引)、访问某特定studentID的学生(即遍历唯一索引)、和访问某学校的所有人(即遍历非唯一索引)。

3
2 1118
文章 姚 鑫 · 十月 10, 2022 3m read

第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

CSP 的主要任务是提供动态内容以响应传入的 HTTP(超文本传输协议)请求。本节介绍 CSP 如何处理 HTTP 请求的基础知识。

HTTP 是一种简单的协议,其中客户端向服务器发出请求。 HTTP 是一种无状态协议;客户端和服务器之间的连接只持续为服务请求所需的时间。每个 HTTP 请求都包含一个请求标头,该标头指定请求类型(例如 GETPOST)、一个 URL 和一个版本号。请求还可能包含附加信息。 CSP 自动确定它应该处理哪些 HTTP 请求,将它们分派到运行在 Caché 服务器上的适当类,并将请求信息打包成易于使用的对象(例如对象中的 %CSP.Request)。

CSP 运行时环境

下图显示了 CSPHTTP 请求的架构:

CSP 应用程序的运行时环境包括以下内容:

  • HTTP 客户端(例如 Web 浏览器)
  • HTTP 服务器(Web 服务器,例如 ApacheIIS
  • CSP 网关(Web 服务器的 Caché 插件)
  • Caché 服务器(CSP 服务器在其上运行请求的 CSP 应用程序)

HTTP 请求处理

下图说明了 CSP 处理 HTTP 请求时的事件流:

  1. 浏览器(或类似的 Web 客户端)发出 HTTP 请求。
0
0 158
文章 Nicky Zhu · 十月 10, 2022 4m read

在生产环境中IRIS通常以故障转移集群的形态被部署,而集群中各故障转移成员的镜像状态将决定该集群在故障发生时是否能够顺利切换保障业务不中断。因此,成员状态通常也是运维团队需要巡检或监控的目标。

尽管IRIS内部API提供了丰富的集群配置、成员状态监控等一系列接口,但除Portal上的镜像监视器外,并没有特定的接口便于从外部系统访问(如进行企业级监控集成时),也没有整合好的监控接口可用与获取镜像的健康状态。但在IRIS上开发一个REST接口暴露镜像状态数据并不困难,如下所示:

Include %syMirror
Class Monitor.MirrorMonitoring Extends %CSP.REST
{

/// Default the Content-Type for this application.
0
0 308
文章 Michael Lei · 十月 10, 2022 2m read

Kong提供了一个开源的配置管理工具(用Go语言编写),称为decK(即声明式Kong,declarative Kong)。

  • 通过deck ping检查deck是否能识别你的Kong Gateway安装
deck ping   
Successfully connected to Kong!
Kong version:  2.3.3.2-enterprise-edition
  • 通过deck dump把 Kong Gateway 配置导出到一个叫 "kong.yaml" 的文件
deck dump
  • 修改kong.yaml文件后, 通过 deck diff 显示区别
deck diff
updating service alerts  {
   "connect_timeout": 60000,
-  "host": "172.24.156.176",
+  "host": "192.10.10.
0
0 133
文章 Michael Lei · 十月 10, 2022 3m read

Hi 大家好,

我最近开始学习InterSystems IRIS 的互操作性,我发现官方文档对理解它的工作原理很有帮助,尽管我自己在实现它时仍有一些困难。在我的同事的帮助下,我成功地创建了一个系统的Demo,并从实践中学习。因此,我决定写一下文章,分享我得到的帮助,来帮助更多的其他人。

介绍

首先,让我们掌握一些基本概念:

  • 互操作性 - 这个词的含义并不像它的发音那样复杂--它基本上是把各种信息从一个系统带到另一个系统的“魔术”
  • 业务主机 - 如果把互操作性比作是魔术,那么业务主机Business Host就是魔术师的魔法帽--业务主机里有能够识别和接收信息的业务服务Business Service/BS,并将其作为消息发送给业务流程BP或业务操作BO。业务操作执行所需的操作(顾名思义)并传递信息。业务流程控制着消息的流动:它们定义了消息的去向(基于你所选择的任何东西)以及它是如何被传递的。
  • 适配器 - 适配器是一些我们可以用来识别和操作我们可能要处理的各种信息的类。在实践中,我们把它们作为参数和(可选)属性来访问其方法和属性

准备搭建Production

从简单的开始比较容易--让我们先想想服务和操作--比如说你有一个接收一种信息的服务,它很容易被我们唯一的操作所识别。

当生产的目的和它的部分非常清楚时,开发就比较容易。如果你愿意,画一张图或写下你希望它完成的步骤可能会有帮助。

0
0 155
文章 Liu Tangh · 十月 9, 2022 3m read

Cache软件自带数据服务和应用服务。在实际使用中会将Cache数据服务和应用服务分别安装在不同的服务器上面,作为数据库服务器和应用服务器。数据库服务器和应用服务器通过ECP(企业缓存协议)进行数据交换。在应用服务器部署上web服务,让数据交换和应用处理分开,实现瘦数据和胖应用的系统模式。

这种早已存在于互联网行业的基础级模式,虽然解决计算资源和存储资源的合理分配的问题,但也常用来扩展了用户许可数。毕竟将数据服务和应用服务装在一台服务器上面只能满足百级的用户需求,而将数据服务和应用服务分开的二层模式,就可以满足千级的用户需求。

在二层模式下,大量用户必须访问同一个应用源地址,才能在日常繁杂的应用维护中,减少维护的成本。这样,就在所有的应用服务器和客户端之间,加上了负载均衡,这种网络服务器。它通过SNAT发布的虚拟地址,满足了上面的需求。

但同时,也将客户与应用服务器的直接对话,替换成了,负载均衡服务器与客户端,和负载均衡服务器与应用服务器段的通话。

              

在客户端访问负载均衡的虚拟地址的时候,通过网络的三次握手协议建立连接。

在负载均衡确认了客户端的真实性后,负载均衡再与应用服务器,也是通过网络的三次握手协议,建立连接,将应用服务器作为负载均衡的服务器池成员。再将客户端的数据转发到应用服务器。

这个看似满足解决了当下所有应用需求的方案,也存在的些不确定。

3
1 334
公告 Claire Zheng · 十月 9, 2022

2022年9月5日-10月24日(北京时间),我们正在举办🏆InterSystems开发者社区中文版首届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章!投票截止至10月23日,你的支持与喜爱,是作者获得“开发者社区奖”的关键!如何为你喜欢的作品投票呢?

0
0 180
文章 姚 鑫 · 十月 9, 2022 3m read

第十一章 CSP 架构 - Web Application Settings

Special Case: DeepSee

对于使用 DeepSeeWeb 应用程序,它需要访问 %DeepSee 包中的所有类。要使特定应用程序能够使用 DeepSee,请在 %SYS 命名空间中使用以下命令:

Do EnableDeepSee^%SYS.cspServer("/csp/webapp/")

其中 web-app-name 是带有斜杠的 Web 应用程序名称。前面的命令等价于以下命令:

Set ^SYS("Security","CSP","AllowClass","web-app-name","%DeepSee.") = 1
Set ^SYS("Security","CSP","AllowClass","web-app-name","%CSP.UI.Portal.About")=1

其中 web-app-name 是带有尾随冲突的 Web 应用程序的名称。请注意,第一行使用 %DeepSee。有一个尾随句点。

或者,要使所有应用程序都能使用 DeepSee,请使用以下变体:

Do EnableDeepSee^%SYS.cspServer(0)

例如,要启用 /csp/webapp Web 应用程序以使用 DeepSee,请使用以下命令:

Do EnableDeepSee^%SYS.
0
0 168
文章 姚 鑫 · 十月 8, 2022 2m read

第十章 CSP 架构 - Category

Category: AllowPrefix

如果应用程序依赖于调用以同一组字符开头的多个类或包,请使用AllowPrefix选项。

重要提示:如果应用程序依赖于调用上面列出的以外的任何类,则使用它可能是不安全的。建议确定是否需要调用此类,并为部署执行风险评估,以便了解使类可用的含义。

要使给定的Web应用程序能够调用以相同字符集开头的类或程序包,请在%sys命名空间中使用以下命令:

Set ^SYS("Security", "CSP", "AllowPrefix", "web-app-name", "prefix") = value

其中

  • Web-app-nameWeb应用程序的名称,后跟一个尾随斜杠。

要使所有Web应用程序都能使用给定的类或包,请将web-app-name指定为0;在这种情况下,可以省略括起来的引号。

  • 前缀是名称的前几个字符。

  • 值为10

如果将其指定为1,则Web应用程序可以调用这些类(或包)。

如果将其指定为0,则此Web应用程序无法调用这些类(或包)。

例如,要使/csp/webapp应用程序能够调用整个MyApp包,请使用以下命令:

Set ^SYS("Security", "CSP", "AllowPrefix", "/csp/webapps/", "MyApp.") = 1

请注意,前缀是 "MyApp.

0
0 145
文章 姚 鑫 · 九月 25, 2022 78m read

IRIS的23种设计模式

第一章 Caché 设计模式 简单工厂模式

定义

  • 简单工厂模式属于创建型模式,又可称为静态工厂模式,这是由一个工厂对象决定创建出哪一种产品类的实例

使用场景

  • 工厂类负责创建的对象比较少
  • 客户只需知道传入工厂类的参数,而无须关心创建对象的逻辑

优点

  • 使用户根据参数获得对一个的类实例,避免了直接实例化类型,降低了耦合性
  • 能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类:客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,所有的客户类都要进行修改

缺点

  • 可实例化的类型在编译期间已经被确定。
  • 如果增加新类型,则需要修改工厂,这违背了开放封闭原则
  • 子类多过不适合使用

示例

  • 用Caché 实现一个计算器控制台程序,要求输入两个数和运算符号。

可能会写成这样:

/// w ##class(PHA.YX.Design.Program).GetResult() 
ClassMethod GetResult()
{
	READ "输入第一个数字:", numberA,!
	READ "输入操作符:", operate,!
	READ "输入第二个数字:", numberB,!
	
	s result = ""
	i operate = "+" d
	.
2
1 470
文章 姚 鑫 · 十月 7, 2022 4m read

第九章 CSP 架构 - CSP 应用程序设置

CSP 应用程序设置

CSP 服务器接收到传入的 HTTP 请求时,它使用本地 CSP 应用程序设置来确定如何处理请求。本节介绍 如何使用 CSP 应用程序设置处理 CSP 应用程序请求。

启用对 %CSP 页面的应用程序访问

以下规则管理对页面和类的访问:

  1. 默认情况下,允许用户应用程序访问以下页面:
  • 允许 /csp/sys/ 应用程序及其所有子应用程序的页面
  • 允许使用 isc/studio/templates//isc/studio/usertemplates/ 应用程序的页面
  1. 默认情况下,允许用户应用程序访问所有非 % 类
  2. 用户应用程序还可以访问以下类:
  • %CSP.Broker, %CSP.StreamServer, %CSP.Login, %CSP.PasswordChange, %CSP.PageLookup 被允许
  • %ZEN.SVGComponent.svgPage%ZEN.Dialog.* 是允许的,有以下附加条件
    • 不允许所有其他 %ZEN.*
    • 允许所有其他 %Z*
  • 允许所有 %z*

除了检查 CSP 应用程序中的设置外,还会检查允许的类。可以通过导航到管理门户上的系统管理 > 安全 > 应用程序 > Web 应用程序来查看和更改应用程序设置。因此,类引用必须通过两组测试才能被允许。

0
0 182
文章 bai hongtao · 十月 7, 2022 4m read

在Cache 2018之前的版本中,数据库的高可用是通过第三方HA软件保障的,Cache数据库在2018以后及IRIS支持MIRROR技术,通过MIRROR可以保障数据库的高可用及数据的冗余,那么在新版本中,第三方HA软件与MIRROR是否可以同时使用以实现更高的数据库可用性?使用起来有哪些需要注意的?本文重点介绍探讨上述两个问题。

为得出正确结论,我们搭建了如下实验环境:

       我们采用3个服务器节点A、B、C分别部署IRIS 2021.1数据库,其中A节点、B节点部署第三方HA软件组成数据库高可用主备集群(本例中,采用的是基于POWER平台的PowerHA),该集群中定义A节点为主节点,B节点为备用节点,HA集群的共享资源组存放在共享SAN存储上,通过HA,生成HA集群的对外服务IP,即我们通常说的Service ip,保证在生产节点发生网络故障、主机故障、以及操作系统故障、手动切换等情况下,IRIS服务、共享资源组、以及HA的Service IP可自动切换至另外一台服务器,保障IRIS高可用,经测试,HA集群内部节点间服务切换时间约为30秒。

0
0 571
文章 姚 鑫 · 十月 6, 2022 4m read

第八章 CSP 架构 - CSP 网关配置

CSP 网关配置

CSP 网关是安装在 Web 服务器上并由其加载的 DLL 或共享库。 CSP 网关检测对扩展名为 .csp.cls 的文件的任何请求,并将它们发送到定义的 Caché 服务器进行处理。

CSP 网关管理器

可以使用 CSP 网关管理器(CSP Web 网关管理页面)或直接编辑其配置文件 csp.ini 来配置 CSP 网关。

CSP 网关管理器是一个小型 Web 应用程序,可以在浏览器中使用它。您可以通过导航到系统管理 > 配置 > CSP 网关管理来访问 CSP 网关管理器。默认情况下,它会访问专用 Web 服务器的 CSP 网关管理器。

要访问生产 Web 服务器的 CSP 网关管理器,请根据需要通过替换 localhost 或 localhost:<port_no> 来更改 URL

有关配置 CSP 网关的信息,请导航至系统管理 > 配置 > CSP 网关管理,然后单击帮助。有关更多详细信息,请参阅 CSP 网关配置指南。

注意:CSP Web 网关管理页面的本地化仅基于安装的 CSPres.xml 的内容(如果有)。如果不存在本地化文件,则 CSP Web Gateway 管理页面默认使用嵌入的英文文本。浏览器的语言设置对此机制没有影响。

0
0 123
问题 Liang Jianhui · 九月 30, 2022

访问了一个API,得到的返回结果里面有个时间字段,现在返回的格式是这样的 “2022-09-30T07:24:57.899Z”, 怎么样能转换成 YYYY/MM/DD hh:MM:ss的格式

1
0 223
文章 Qiao Peng · 十月 6, 2022 10m read

最近一些用户问到监控集成平台业务行为查询的问题,例如如何查询服务的平均耗时、发生错误的服务数量...

业务行为监控对于集成平台来说非常重要,可以帮助我们:

  • 监控系统健康情况 — 查看系统性能表现。例如发现队列积压和长耗时的消息处理,都可能是性能问题的表现。
  • 排查异常 — 通过查看业务行为数据,帮助我们判断特定的业务组件配置是否是造成性能瓶颈的主要原因。
  • 做业务规划 —  通过业务行为数据,了解各个业务量变化情况,并辅助我们做业务规划。
  • 做硬件规划 —  通过长期跟踪消息吞吐量的变化了解性能的变化和业务量的增长,进而辅助我们做硬件计划,避免出现在性能问题。

仅提供这些查询是很容易的,但要更好地监控集成平台的业务行为,需要更深入的了解InterSystems集成架构。

 

InterSystems集成架构

无论Ensemble、Health Connect还是InterSystems IRIS,它们都具有下面的集成架构:

通过业务服务向外发布服务、通过业务操作连接第三方接口、通过业务流程协同业务操作,它们统称为集成业务组件。可以简单理解为业务行为是由这些业务组件完成的:

  • 业务服务 = 服务,它启动一个业务流程;
  • 业务操作 = 接口,它通过接口操作第三方业务系统;
  • 业务流程 = 流程,它控制一笔业务需要按什么流程调用哪些接口。

要监控业务行为,服务、接口和流程都需要监

0
1 422
文章 姚 鑫 · 十月 5, 2022 3m read

第七章 CSP 架构 - URL 的 Web 服务器配置

URLWeb 服务器配置

提供了一个默认的 /csp 虚拟目录来运行 CSP 应用程序。如果正在运行多个 Caché 实例,它还提供了一个默认虚拟目录 /cacheinstance/csp 以供使用。如果正在运行多个 Caché 实例并使用虚拟目录 /csp 访问 CSP 应用程序,而之前没有 /cacheinstance,它将访问最后安装的 Caché 版本。如果计划允许使用以 http://localhost/csp 或 http//localhost/cacheinstance/csp 开头的应用程序路径调用所有 CSP 应用程序,则无需在 Web 服务器中进行任何更改配置。

如果要创建一个应用程序路径不是以 /csp/cacheinstance/csp 开头的 CSP 应用程序,则需要在 Web 服务器配置文件条目中进行更改,别名 /csp

下表显示了需要更改的配置文件。

网络服务器 配置文件
ApacheHP 安全网络服务器 UNIX®: /etc/httpd/conf/httpd.conf Windows: <web-server-install-directory>\conf\httpd.conf
Sun config/obj.conf and config/magnus.
0
0 174
问题 liu bo · 九月 27, 2022

*** Recovery started at Wed Sep 28 08:14:28 2022
     Current default directory: d:\dhc\devsoftware\ensemble\mgr
     Log file directory: d:\dhc\devsoftware\ensemble\mgr\
     WIJ file spec: d:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ
Recovering local (d:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ) image journal file...
Starting WIJ recovery for 'd:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ'.
  0 blocks pending in this WIJ.
WIJ pass # is

2
0 251
文章 姚 鑫 · 十月 4, 2022 3m read

第六章 CSP 架构 - 静态文件

静态文件

数据库服务器为所有 CSP 提供服务。 数据库服务器还可以通过 CSP 网关为 Web 应用程序提供任何类型的静态文件。在标准 Web 应用程序中,Web 服务器通常提供静态内容。要在 Caché 上运行 Zen 应用程序,必须配置 Web 服务器以允许服务器通过 CSP 网关提供所有静态文件。

注意:要运行基于 Zen 的应用程序,请启用“服务文件”选项并配置 Web 服务器以允许 Caché 服务器提供静态文件。然后 Zen 框架将能够提供依赖图像和 JavaScript 帮助文档。

指示字符编码

CSP 引擎通过流服务器以与主流 Web 服务器一致的方式处理静态文件,以确定 JavaScript 文件的字符编码。

现代惯例是将所有 JavaScript 文件标记为 application/javascript Content-Type,并且确保页面上使用的所有 JavaScript 文件都是这种情况。

以这种方式标记的 JavaScript 文件:

  • 如果文件包含 BOM(字节顺序标记),浏览器会自动检测到这一点并使用正确的字符集来读取它。
  • 如果该文件不包含 BOM,则浏览器假定该文件是 UTF-8
0
0 132
文章 姚 鑫 · 十月 3, 2022 2m read

第五章 CSP 架构 - 组件,信息流

CSP 组件:Web 服务器、CSP 网关、CSP 服务器

CSP 使用三个软件组件:Web 服务器、CSP 网关和 CSP 服务器(在 Caché 服务器上运行):

  • CSP 组件

Web服务器和CSP服务器可以由一台或多台计算机实现。在开发过程中,所有三个组件(Web 服务器、CSP 网关和 CSP 服务器)可能都位于一台 PC 上。在大规模部署中,可能有多个 Web 服务器和 CSP 服务器采用两层或三层配置。

这些组件(Web 服务器、CSP 网关、CSP 服务器)视为各有一个。它将 CSP 描述为好像只提供 HTML 页面,尽管 CSP 也可以提供 XML 页面,以及其他文本格式和二进制格式,例如图像。

每个组件的作用

Web 服务器是一个软件实用程序,它执行以下操作:

  • 接受传入的 HTTP 请求,通常来自浏览器
  • 检查权限
  • 可以提供静态内容
  • CSP 网关发送对 CSP 内容(以 .csp.cls 结尾的 URL)的请求

CSP 网关是一个共享库、一个 .dll 文件或一个 CGI 脚本。它执行以下操作:

  • 确定将请求发送到哪个 Caché 服务器。
  • 将请求发送到正确的 Caché 服务器。
  • 维护与 Caché 服务器的连接(以避免必须不断打开新连接)。
0
0 180
文章 姚 鑫 · 十月 2, 2022 2m read

第四章 Caché 服务器页面简介 - 通过 html 创建 csp 页面

创建基于 HTML 标记的 CSP 页面

要使用 HTML 文件创建 Hello.World 页面,请执行以下操作:

  1. 启动 Studio 并选择 File > New > CSP File > Caché Server Page
  2. 将新 CSP 文件的内容替换为以下内容:
<html>
<body>
<b>Hello, World!</b>
</body>
</html>
  1. 选择文件 > 保存。
  2. 在显示的另存为窗口中,双击默认 CSP 应用程序 csp/user
  3. 输入文件名 Hello.csp 并单击另存为以保存文件。
  4. Studio 窗口中,选择查看 > 网页。

与前面的示例一样,会看到 Hello, World!显示在浏览器中。

CSP 应用程序可以由单个 CSP 页面或一组页面组成。 CSP 应用程序作为一个单元,使用适用于整个应用程序的设置。系统提供 csp/user 作为默认的 CSP 应用程序。

还可以使用文本编辑器或 HTML 编辑器创建 HTML 文件。将此文件作为 Hello.csp 保存在本地目录 cachesys/csp/user 中(其中 cachesys 是安装 Caché 的位置)。

Hello.csp 页面的工作方式如下:

  1. 浏览器向本地 Web 服务器发送 Hello.
0
0 264
文章 姚 鑫 · 十月 1, 2022 2m read

第三章 Caché 服务器页面简介 - 通过 cls 创建 csp 页面

创建第一个 CSP 页面

本节介绍如何以两种不同的方式创建 Hello, World CSP 页面:

创建基于类的 CSP 页面

通过创建 %CSP.Page 的子类并覆盖其 OnPage 方法来创建 CSP 页面。通过此方法写入主设备的任何输出都会自动发送到 Web 浏览器并显示为网页。

  1. 打开Studio
  2. 选择 File > New Project 在本地数据库 USER 命名空间中创建一个新项目。
  3. 在向导的第一页上,输入 Test 作为包名,并输入 Hello 作为类名
  4. 在第二页上,选择 CSP 作为类类型。
  5. 单击完成。可以在 Studio 类编辑器中看到新的 CSP 类定义:
Class Test.Hello Extends %CSP.Page
{

ClassMethod OnPage() As %Status
{
	&html<<html>
<head>
</head>
<body>>
	; To do...
	&html<</body>
</html>>
	Quit $$$OK
}

}

  1. OnPage 方法中,替换注释:
 ; To do...

使用 Write 语句:

 Write "<b>Hello, World</b>",!
  1. 使用 Build > Compile
0
0 163
文章 姚 鑫 · 九月 30, 2022 2m read

第二章 Caché 服务器页面简介 - 你应该知道

你应该知道什么

要高效使用 CSP,应该熟悉以下内容:

  • Caché objects and ObjectScript

  • HTML

  • JavaScript

  • SQL

CSP Samples

Caché 附带一组示例CSP 页面。要查看这些:

  1. 打开Caché

  2. 要查看 CSP 示例,请确保计算机上的 Web 服务器正在运行。

  3. 启动浏览器并转到 CSP 示例菜单(使用位于以下位置的私有 Web 服务器:http://localhost:57772/csp/samples/menu.csp或位于以下位置的外部 Web` 服务器:http://localhost /csp/samples/menu.csp 。

  4. 如果安装的 Caché 具有正常或锁的安全功能,则可能会显示登录页面。如果是这样,请登录。

  5. Caché 显示示例 CSP 页面的列表以及每个页面的简短描述。单击感兴趣的任何内容。

CSP 文档

可以在此处找到有关 CSP 的文档:

  • 使用 Caché Server Pages 描述了如何创建 CSP 页面
  • 使用 ZEN 描述了如何使用 ZEN,这是一个在 CSP 之上工作的包,用于使用预构建的页面对象进行更快速的 Web 应用程序开发。 Zen 文档包括使用 Zen 组件、开发 Zen 应用程序和使用 Zen 报告。
0
0 211
文章 Weiwei Gu · 九月 28, 2022 3m read

Hi Developers,

嗨,各位开发者们:

各位都知道,Python是一个庞大而强大的生态系统,包含了成千上万的库和包,特别是在数据科学方面。

因此,我想首次尝试使用IRIS最近的一项功能--嵌入式Python,简单地导入一个名为datetime的Python库,生成带有时间戳成分的数据,并在InterSystems IRIS for Health Data Platform中持久化。同样的方法在IRIS数据平台上也可以使用。

1
0 198
文章 姚 鑫 · 九月 29, 2022 3m read

第一章 Caché 服务器页面简介 - 什么是CSP

Caché Server Pages (CSP) 既是用于构建交互式 CSP 应用程序的架构又是工具集。 CSP 技术允许构建和部署高性能、高度可扩展的 Web 应用程序。 CSP 允许动态生成网页,通常使用来自 Caché 数据库的数据。 “动态Dynamically”意味着每次从最近更改的数据源请求同一页面时,它可能会提供不同的内容。

CSP 用途广泛。它可以

  • 显示每分钟都在变化的库存数据。
  • 支持拥有数千名活跃用户的网络社区。
  • 根据存储在 Caché 数据库中的用户信息个性化页面。
  • 根据不同用户的要求和安全权限,根据用户数据为不同用户定制页面。
  • 提供 HTMLXML、图像或其他二进制或文本数据。
  • 提供快速性能,因为它与高性能 数据库紧密耦合。

CSP 非常适合数据库应用程序。除了提供对内置 Caché 数据库的快速访问之外,它还提供了许多基于 Web 的数据库应用程序必不可少的功能,包括

  • 会话管理
  • 页面认证
  • 能够从网页中执行交互式数据库操作。

CSP 支持两种风格的 Web 开发。

  • 为了使用类开发应用程序,CSP 提供了一个对象框架。
  • 为了使用 HTML 文件开发应用程序,CSP 提供了一种基于 HTML 的标记语言,允许在网页中包含对象和服务器端脚本。可以在一个应用程序中结合这两种技术以获得最大的灵活性。
0
0 445
文章 姚 鑫 · 九月 28, 2022 3m read

[toc]

第四十六章 功能跟踪器收集使用统计信息

作为 不断努力改进其产品以满足客户需求的一部分, 在 IRIS® 数据平台中包含一个名为 Feature Tracker 的软件实用程序,该软件实用程序收集软件模块使用情况的统计数据。本主题介绍特征跟踪器。

为什么 InterSystems 收集统计数据

Feature Tracker 收集的统计数据记录软件模块是否存在并在给定的 IRIS 实例中使用。 Feature Tracker 每周通过 https 将此信息发送给 InterSystems。这些统计数据有助于 InterSystems 规划开发和支持。 收集的信息不包括任何应用程序数据。

日志在哪里

如果 IRIS 成功发送数据,它会更新 <installdir>\mgr 目录中的 FeatureTracker.log 文件。此文件包含已发送数据的 JSON 格式副本。每个条目具有以下形式:

"FT.<feature>":<value>,

如果 IRIS 无法发送数据,它会再尝试几次。如果仍然不成功,它将停止尝试并在下一个定期安排的时间再次尝试。

IRIS 使用成功和不成功的尝试更新消息日志文件 (messages.log)。显示成功发送的条目具有以下形式:

mm/dd/yy-hh:mm:ss 0 %SYS.Task.
0
0 141