文章
· 十一月 20, 2023 阅读大约需 2 分钟

通过XSL自动生成消息模型

前言

在日常工作中经常会遇到大量的接口开发需求,对于没有IRIS开发经验的同事来说很不友好,需要求助于公司开发人员来做接口开发,对项目联调进度多少会有些影响,本文站在没有IRIS开发经验的工作人员角度来阐述一下如何利用xslt转换文件自动生成接口联调所需要的Message模型。

基本思路是首先定义一套通用的数据模型,用来接收定义消息所需要的基础属性,包括类名,请求&响应(对应继承Ens.Request&Ens.Response),节点名称、节点长度、是否必填、默认值、字段约束等等。

Class M.MSG.CreatMSGRequest Extends (Ens.Request, %JSON.Adaptor)
{ Parameter XMLNAME = "Request"; /// 类名
Property Action As %String [ Required ]; /// 请求或响应,请求:1,响应:2
Property ASK As %Integer(VALUELIST = ",1,2,0") [ Required ]; /// 消息注释
Property MsgDesc As %String(MAXLEN = 300); /// 消息标准
Property MsgStandard As %String [ InitialExpression = "JSON&XML" ]; /// 类名
Property ClassName As %String(MAXLEN = 300); /// 节点集合
Property Nodes As list Of M.MSG.Node(XMLNAME = "Nodes");

}

Class M.MSG.Node Extends (%SerialObject, %XML.Adaptor, %JSON.Adaptor)
{ Parameter XMLIGNORENULL = 1; Parameter XMLNAME = "Node"; /// 节点描述/节点注释
Property NodeDesc As %String(MAXLEN = ""); /// 节点名称
Property NodeName As %String(MAXLEN = "") [ Required ]; /// 节点类型(%String,%Date,list)
Property NodeType As %String(VALUELIST = ",ROOT,ENTRY,COLLECTION,VARCHAR2,DATE,INT,REGEX") [ Required ]; /// 节点长度
Property NodeLength As %String; /// 是否必填,1是0否
Property IfRequired As %String; /// 默认值
Property DefaultValue As %String(MAXLEN = ""); /// 别名
Property Alias As %String(MAXLEN = ""); /// 字段约束
Property Constraint As %String(MAXLEN = ""); /// 循环子节点
Property NodeList As list Of M.MSG.Node(XMLNAME = "NodeList");

}

然后再定义一套消息转换模型,功能是将接收到的数据请求转换为IRIS可识别的代码,本存为本地文件

最后再通过IRIS自带的工具类将本地文件生成为Message代码

Set tSC = $SYSTEM.OBJ.ImportDir(代码文件,"*.*","")

最终实现效果如下

本文仅提供自动生成消息类的思路,通过定义的通用消息模型,再加上简单的表单提交页面,即可实现自动生成消息模型,欢迎大家指正,谢谢!

讨论 (1)1
登录或注册以继续