转到文章 Qiao Peng · 四月 23, 2021 SAMPLES>s x=$system.Encryption.SHA1Hash("ensmble") SAMPLES>s hashs="" f i=1:1:$l(x) s hashs=hashs_$zh(+$a($e(x,i))) SAMPLES>w hashs74BA9A6CBBC92F06D9B4166F9C5B4F7F8251AED
转到文章 Qiao Peng · 四月 23, 2021 可以调用操作系统的命令来获取CPU序列号。例如在Cache' for Windows上,可以执行:SAMPLES>s args=3SAMPLES>s args(1)="CPU"SAMPLES>s args(2)="get"SAMPLES>s args(3)="ProcessorID"SAMPLES>d $ZF(-100,"","wmic",.args)ProcessorId0FABFBFF000506EX0FABFBFF000006EX0FABFBFF000006EX0FABFBFF000006EX
转到文章 Qiao Peng · 四月 19, 2021 使用%request变量,它有属性CgiEnvs代表Cgi环境变量,然后找REMOTE_ADDR即可。例如: $G(%request.CgiEnvs("REMOTE_ADDR"))
转到文章 Qiao Peng · 四月 18, 2021 如果dll重新编译过,那么是需要重新生成代理类的;其它情况下并不需要。另外,Ensemble 2016里有.net 网关,通过Studio来建立dll代理类。不过它依然需要在dll代码发生变化时重新生成代理类。 这也是后续版本(尤其是InterSystems IRIS)推出动态对象网关的原因:通过动态网关就不用生成代理类了,从而避免因为.net/java端发生代码变更而需要重新生成代理类。$ZF()对DLL没有特殊要求。
转到文章 Qiao Peng · 四月 18, 2021 在Ensemble 2016中,使用$ZF(-4)来操作DLL是Caché的Callout网关的底层实现之一。这种方式比较通用。当然,如果这些DLL(ActiveX/COM)注册在Ensemble服务器上(Windows服务器),还有别的调用方式:使用Caché Activate 网关,用Studio来产生这些DLL的代理类,然后您就可以像使用Ensemble/Caché类一样使用这些DLL里的方法了。
转到文章 Qiao Peng · 四月 18, 2021 我想您的问题涉及3个方面:1. 如何以SQL访问Ensemble的数据:Ensemble的数据可以通过SQL操作。因此第三方SQL数据库可以直接将Ensemble作为一个SQL数据库,通过XDBC访问Ensemble,并使用SQL获取数据。同样,Ensemble也可以通过link table直接操作第三方SQL数据库。2. 如何发现数据在第三方数据库不存在?这需要一些逻辑,例如通过时间戳、自增的ID等信息判断。3. 批量快读:听起来,不是要实时进行数据同步,而是要批量处理。批量处理可以使用多种方式:a. 小批量可以通过SQL输出适配器;b. 大批量可以绕过适配器/Production,直接以link table或其它方式处理,这样不需要产生消息,效率更高。
转到文章 Qiao Peng · 四月 15, 2021 系统类%Library.GTWCatalog有一个类查询SQLDataSources用来获取DSN,例如: ClassMethod Test() { set rs=##class(%ResultSet).%New() set rs.ClassName="%Library.GTWCatalog" set rs.QueryName="SQLDataSources" set sc=rs.Execute(1) If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit while rs.%Next() { do rs.%Print() } }
转到文章 Qiao Peng · 四月 13, 2021 如果需要在InterSystems IRIS中对不同的编码的数据进行转换,可以使用函数$ZCVT。 例如将变量tStr的unicode值转换为GB2312: s tOutput=$ZCVT(tStr,"O","GB2312")
转到文章 Qiao Peng · 四月 12, 2021 ECP1:HIS-AAA4:CACHE 这也是一台Redhat主机吗?配置了几个ECP应用服务器?查看一下ECP的Maximum number of application servers设置,看看是多大。
转到文章 Qiao Peng · 四月 9, 2021 目前这是最主要的SMART on FHIR应用市场。但不少厂商都推出了自己的SMART on FHIR应用,放在自己的官网里,有些是免费的,更多是收费的。
转到文章
SAMPLES>s x=$system.Encryption.SHA1Hash("ensmble")
SAMPLES>s hashs="" f i=1:1:$l(x) s hashs=hashs_$zh(+$a($e(x,i)))
SAMPLES>w hashs
74BA9A6CBBC92F06D9B4166F9C5B4F7F8251AED
转到文章
是Windows吗?在Windows命令行,执行wmic CPU get ProcessorID,能得到CPU序列号吗?
转到文章
InterSystems Cache'
InterSystems IRIS
转到文章
可以调用操作系统的命令来获取CPU序列号。例如在Cache' for Windows上,可以执行:
SAMPLES>s args=3
SAMPLES>s args(1)="CPU"
SAMPLES>s args(2)="get"
SAMPLES>s args(3)="ProcessorID"
SAMPLES>d $ZF(-100,"","wmic",.args)
ProcessorId
0FABFBFF000506EX
0FABFBFF000006EX
0FABFBFF000006EX
0FABFBFF000006EX
转到文章
看起来是Windows系统SSL认证方面的问题。建议先查查Windows日志,另外考虑一下是否Cache'最近做过SSL方面的修改吗?
转到文章
使用%request变量,它有属性CgiEnvs代表Cgi环境变量,然后找REMOTE_ADDR即可。例如: $G(%request.CgiEnvs("REMOTE_ADDR"))
转到文章
如果dll重新编译过,那么是需要重新生成代理类的;其它情况下并不需要。另外,Ensemble 2016里有.net 网关,通过Studio来建立dll代理类。不过它依然需要在dll代码发生变化时重新生成代理类。
这也是后续版本(尤其是InterSystems IRIS)推出动态对象网关的原因:通过动态网关就不用生成代理类了,从而避免因为.net/java端发生代码变更而需要重新生成代理类。
$ZF()对DLL没有特殊要求。
转到文章
在Ensemble 2016中,使用$ZF(-4)来操作DLL是Caché的Callout网关的底层实现之一。这种方式比较通用。
当然,如果这些DLL(ActiveX/COM)注册在Ensemble服务器上(Windows服务器),还有别的调用方式:使用Caché Activate 网关,用Studio来产生这些DLL的代理类,然后您就可以像使用Ensemble/Caché类一样使用这些DLL里的方法了。
转到文章
我想您的问题涉及3个方面:
1. 如何以SQL访问Ensemble的数据:
Ensemble的数据可以通过SQL操作。因此第三方SQL数据库可以直接将Ensemble作为一个SQL数据库,通过XDBC访问Ensemble,并使用SQL获取数据。
同样,Ensemble也可以通过link table直接操作第三方SQL数据库。
2. 如何发现数据在第三方数据库不存在?
这需要一些逻辑,例如通过时间戳、自增的ID等信息判断。
3. 批量快读:
听起来,不是要实时进行数据同步,而是要批量处理。批量处理可以使用多种方式:a. 小批量可以通过SQL输出适配器;b. 大批量可以绕过适配器/Production,直接以link table或其它方式处理,这样不需要产生消息,效率更高。
转到文章
可以将Excel文件保存为CSV文件,然后直接导入IRIS即可。SMP页面路径在:系统资源管理器>SQL>向导>数据导入:
.png)
转到文章
系统类
%Library.GTWCatalog
有一个类查询SQLDataSources
用来获取DSN,例如:ClassMethod Test() { set rs=##class(%ResultSet).%New() set rs.ClassName="%Library.GTWCatalog" set rs.QueryName="SQLDataSources" set sc=rs.Execute(1) If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit while rs.%Next() { do rs.%Print() } }
转到文章
用GB18030,它向后兼容GB2312
转到文章
如果需要在InterSystems IRIS中对不同的编码的数据进行转换,可以使用函数$ZCVT。 例如将变量tStr的unicode值转换为GB2312:
s tOutput=$ZCVT(tStr,"O","GB2312")
转到文章
ECP1:HIS-AAA4:CACHE 这也是一台Redhat主机吗?配置了几个ECP应用服务器?查看一下ECP的Maximum number of application servers设置,看看是多大。
转到文章
目前这是最主要的SMART on FHIR应用市场。但不少厂商都推出了自己的SMART on FHIR应用,放在自己的官网里,有些是免费的,更多是收费的。
转到文章
对,目前IAM提供的是容器版本。如果有对IAM的需求,可以联系InterSystems的销售和销售工程师。