HISUI
IRIS升级相关问题
2021年01月29日 16时17分

IRIS升级相关问题

1. 解密算法变化

2010或2016使用##class(%CSP.Page).Encrypt($lb("类名.方法名"))来加密码请求参数,在iris中加密算法发生变化。基础平台提供支持2010,2016,IRIS的加密方法##class(websys.Page).Encrypt($lb("类名.方法"))

2. 1972端口变化

客户端如果要连接iris服务时,用到端口,2010,2016默认使用1972,IRIS默认使用51773,为此基础平台提供##class(ext.util.String).GetConnPort()来获得端口.其它端口变化如下:

端口:1972改成51773
Telent端口:23改成22322
web端口:57772 改成52773

3. IRIS不再提供jdk1.6的支持

只有jdk1.7,jdk1.8,影响使用jdbc连接的产品,如润乾报表。且提供的JAR中调用IRIS与以前的2010/2016的API不同。

4. 实体类定义不规范问题处理

iris对实体类定义更加严格。如:global名称不能超过31个字符。SQL Storage的RowId层级定义中Expression位置检查(IndexLocSetKPI - RowID Specifications - invalid expression '{L5}'. Must be a {Li} or any field from Map Data.)

5. 数据库连接的动态库发生改变

6. 第三方链接用户名与密码变化

参数名称从CacheUserName/CachePassword变成IRISUserName/IRISPassword

7. WebService请求的路径发生变化

iMedical8.4版及之前的WebService请求路径和Web应用路径都是使用以下:

http://ip:port/imedical/web/xx   // 8.4

在基于iris库基础上的8.5系统上使用WebService统一修改成

http://ip:port/imedical/webservice/xx  // 8.5

Web路径统一修改成

http://ip:port/imedical/web/xx   // 8.5

即为了管理应用路径及License拆分了路径与配置。
所以需要把以前写死了Webservice路径的地方作出相应修改。

8. 实体类增加DSTIME参数

为了让BI工具DeepSee跟踪数据变更,实体类通过继承User.Abstract来获得DSTIME参数定义。在数据发生变化时IRIS引擎会自动在^OBJ.DSTIME中记录这些操作,格式如:^OBJ.DSTIME(类名,DSTIME,对象ID) = 执行的操作代码

9. %SQLQuery返回空问题

Query FindDocMark(ExaBorough As %String) As %SQLQuery(ROWSPEC="MarkDesc:%String,MarkId:%String")
{
SELECT DepmMarkDr->CTPCP_Desc,DepmMarkDr INTO :MarkDesc,:MarkId FROM SQLUser.DHCDepMark WHERE DepmBorDr=:ExaBorough Group By DepmMarkDr
}

上面代码在2016,2010中可以得到值,但在IRIS中返回空,去掉INTO :MarkDesc,:MarkId即可兼容

10. include webgen后编译的SQL不能运行问题

sql语句修改成对象操作,或不引用webgen

11. XML导出不兼容2016

IRIS导出的xml导入2016/2010库会报如下错误:
[%msg: <ERROR #5840: Unable to import file 'C:\InterSystems\Ensemble\mgr\Temp\xx.png' as this is not a supported type.>]
则需要把xml中第二行

<Export generator="IRIS" version="26" zv="Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2020.1 (Build 215U)" ts="2021-02-25 09:42:29">

修改成(IRIS修改成Cache,26修改成25)

<Export generator="Cache" version="25" zv="Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2020.1 (Build 215U)" ts="2021-02-25 09:42:29">

如导出的实体类xml中包含

<Type>%Storage.SQL</Type>

则需要修改成

<Type>%Library.CacheSQLStorage</Type>

注:
1. 可通过运行d $system.OBJ.SetQualifiers("/exportversion=2016.2")命令全库导出兼容2016的xml
2. Studio->Tools->Options界面,Environment->AdvancedExport Flags中写入/exportversion=cache2016.2就可以在当前studio导出兼容2016的xml

  1. 在terminal运行d $system.OBJ.Export("类名.cls","/tmp/ctloc2016.xml","/exportversion=cache2016.2"),导出兼容2016的xml到服务器/tmp/下

12. 服务器从window server系统转成Linux系统

升级数据库同时,一般操作系统也同时会发生变化,Window系统对文件名大小写不敏感,而Linux系统对文件名严格区分大小写,所以当应用界面不能成功引入资源(js,css,png等)时,请修改csp中引用的名称。

iMedical应用的文件名规范为:.js,.csp,.css应该为小写。

上一篇: 下一篇:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

访问量: 379611