CN113296765B - 一种基于模型驱动的模块代码记忆方法及终端 - Google Patents

一种基于模型驱动的模块代码记忆方法及终端 Download PDF

Info

Publication number
CN113296765B
CN113296765B CN202110592254.7A CN202110592254A CN113296765B CN 113296765 B CN113296765 B CN 113296765B CN 202110592254 A CN202110592254 A CN 202110592254A CN 113296765 B CN113296765 B CN 113296765B
Authority
CN
China
Prior art keywords
code
model
module
file
memorizing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110592254.7A
Other languages
English (en)
Other versions
CN113296765A (zh
Inventor
许忠文
郝楷鑫
邵力强
袁瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Xieying Technology Co ltd
Original Assignee
Chengdu Xieying Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Xieying Technology Co ltd filed Critical Chengdu Xieying Technology Co ltd
Priority to CN202110592254.7A priority Critical patent/CN113296765B/zh
Publication of CN113296765A publication Critical patent/CN113296765A/zh
Application granted granted Critical
Publication of CN113296765B publication Critical patent/CN113296765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于模型驱动的模块代码记忆方法及终端,基于SCA建模工具平台构建的代码自动生成及用户代码添加后可记忆及保存入模型的高效调试方法,将模型构建完成后,生成的各个组件代码,均可添加、删除、查询以及修改,代码开发完成后,可通过合并变更代码到模型中,将之前增删改的代码完整且可记忆的保存于模型中,大大提高建模过程中各个模块生成的代码开发效率;本发明方法还具备了代码定位功能,可在构建好的模型中,任意选择属性或组件,将其对应的代码直接打开并对其进行修改或调整,大大提高了代码的开发速度。

Description

一种基于模型驱动的模块代码记忆方法及终端
技术领域
本发明属于代码生成技术领域,具体涉及一种基于模型驱动的模块代码记忆方法及终端。
背景技术
基于模型驱动的波形建模方法作为SCA建模工具平台的主要特征之一,其建模内容容纳组件、接口、IDL(接口描述语言)、端口以及其属性等多个类别的方法和类,这也直接显露了代码开发的增添繁重性。
基于模型的代码生成后,将会有大量的逻辑代码(用户代码)需要被添加进实现层中,而这部分代码对开发人员来说是至关重要的。用户代码在开发完成后,不仅需要与模型构建的各个属性及类型完全一致,还需要通过编译工具进行重编译。
如遇到项目调试期或开发人员需要修改部分代码内容,则很大程度上会产生已开发完成的代码需要再次重新开发的现象,这导致了大量代码开发期的效率浪费,也同时浪费了SCA建模工具平台的灵活性及时效性。
发明内容
针对现有技术中的上述不足,本发明提供的基于模型驱动的模块代码记忆方法及终端解决了现有的利用SCA建模工具平台进行代码开发时,代码可能会再次重新开发,以致代码开发期存在的效率浪费的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种基于模型驱动的模块代码记忆方法,包括以下步骤:
S1、在SCA建模工具平台中完成模型构建;
S2、验证当前模型是否符合SCA4相关规范;
若是,则进入步骤S4;
若否,则进入步骤S3;
S3、验证出错,根据错误提示对模型进行修改优化,并返回步骤S2;
S4、验证通过,生成模型对应代码文件,进入步骤S5;
其中,代码文件包括模型对应的C++语言的代码文件和模型中各个组件对应的描述符的代码文件;
S5、将生成的代码文件与构建的模型进行组合并保存;
S6、当需要对构建的模型进行修改时,打开对应组件生成的描述符的代码文件,并在需要修改的位置修改逻辑实现代码,作为更新的模块代码;
S7、将模块代码记忆保存到模型中并重新生成模型代码,实现模块代码记忆。
进一步地,所述步骤S4中,生成C++语言的代码文件的方法具体为:
A1、创建注入配置模块和相应的Guice注入器;
A2、基于注入配置模块配置的依赖项参数,创建收集器;
A3、基于收集器中的信息,通过Guice注入器创建基于SCA4的C++代码自动生成器;
A3、基于C++代码自动生成器生成模型对应的C++语言的代码文件。
进一步地,所述步骤S4中,通过收集模型中所有用到的IDL文件,进而生成各个组件的描述符的代码文件;
所述描述符的代码文件为XML格式,具体包括Dep文件、组件描述文件以及端口文件。
进一步地,所述步骤S4中的代码文件仅生成一次。
进一步地,所述步骤S4中,当C++语言的代码文件生成后,可对其进行添加修改;
添加修改的方法具体为:通过从模型中定位对应头文件对其进行添加修改,或者通过从模型中定位对面代码进行添加修改。
一种基于模型驱动的模块代码记忆终端,包括代码自动生成模块和模块代码记忆模块;
所述代码自动生成模块用于在模型构建完成后,自动生成对应C++语言及组件的描述符的代码文件;
所述模块代码记忆模块用于在代码文件自动生成后,当需要进行模型代码修改时,为用户提供定位代码修改位置,并将修改后的代码整合更新到模型中,实现模块代码记忆。
进一步地,所述代码自动生成模块运行时,其功能模块包括C++代码文件生成器、C++源写入器、SCA代码生成器和C++代码生成内部接口收集器;
所述C++代码文件生成器用于为客户端提供代码生成配置及变量设置空间,进而自动生成基于SCA4的C++语言的代码;其中,所述C++代码文件生成器中定义的变量包括文本、模型、语言生成类型、收集器、C++项目和注入器;
所述C++源写入器,用于验证生成的C++语言的代码文件与构建的模型的相关符合性;
所述SCA代码生成器用于收集模型中所有用到的IDL文件,进而为模型中所有组件生成XML格式的描述符的代码文件;其中,描述符的代码文件包括Dep文件、组件描述文件以及端口文件;
所述C++代码生成内部接口收集器用于收集模型的构建信息,以确保代码文件的正确生成。
进一步地,所述模块代码记忆模块运行时,其功能模块包括代码记录生成器、代码捕捉器和代码区域更新器;
所述代码记录生成器用于监控当前终端是否正确生成代码文件,并将生成的代码文件进行存储;
所述代码捕捉器用于基于存储的代码文件,在需要进行代码修改时,对修改的代码进行捕捉,获得模块代码,并将其传递至代码区域更新器;
所述代码区域更新器用于将将模块代码更新到模型中,实现模块代码记忆。
本发明的有益效果为:
(1)本发明提供的模块代码记忆方法,基于SCA建模工具平台构建的代码自动生成及用户代码添加后可记忆及保存入模型的高效调试方法,可充分体现代码开发期的时效性及灵活性;
(2)将模型构建完成后,生成的各个组件代码,均可添加、删除、查询以及修改,代码开发完成后,可通过合并变更代码到模型中,将之前增删改的代码完整且可记忆的保存于模型中,大大提高建模过程中各个模块生成的代码开发效率;
(3)本发明方法还具备了代码定位功能,可在构建好的模型中,任意选择属性或组件,将其对应的代码直接打开并对其进行修改或调整,大大提高了代码的开发速度;
(4)本方法不仅节省了无用且繁重的代码开发时间,还充分结合了SCA建模工具平台的优势,根据SCA建模工具平台的特点,可通过波形应用模型中的任一组件,生成选中组件的.h头文件并打开其CDT编辑器,在其中修改或添加标注,修改完成后,基于Spectra CX的模块代码记忆方法将自动捕获修改或添加的代码,并将其保存入模型中。
附图说明
图1为本发明提供的基于模型驱动的模块代码记忆方法流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例1:
如图1所示,一种基于模型驱动的模块代码记忆方法,包括以下步骤:
S1、在SCA建模工具平台中完成模型构建;
S2、验证当前模型是否符合SCA4相关规范;
若是,则进入步骤S4;
若否,则进入步骤S3;
S3、验证出错,根据错误提示对模型进行修改优化,并返回步骤S2;
S4、验证通过,生成模型对应代码文件,进入步骤S5;
其中,代码文件包括模型对应的C++语言的代码文件和模型中各个组件对应的描述符的代码文件;
S5、将生成的代码文件与构建的模型进行组合并保存;
S6、当需要对构建的模型进行修改时,打开对应组件生成的描述符的代码文件,并在需要修改的位置修改逻辑实现代码,作为更新的模块代码;
S7、将模块代码记忆保存到模型中并重新生成模型代码,实现模块代码记忆。
上述步骤S4中,生成C++语言的代码文件的方法具体为:
A1、创建注入配置模块和相应的Guice注入器;
A2、基于注入配置模块配置的依赖项参数,创建收集器;
A3、基于收集器中的信息,通过Guice注入器创建基于SCA4的C++代码自动生成器;
A3、基于C++代码自动生成器生成模型对应的C++语言的代码文件。
上述步骤S4中,通过收集模型中所有用到的IDL文件,进而生成各个组件的描述符的代码文件;
所述描述符的代码文件为XML格式,具体包括Dep文件、组件描述文件以及端口文件。
需要说明的是,上述步骤S4中的代码文件仅生成一次,即使后续改动后保存、删除再次生产,也能看到之前的所有改动或者新增的内容。
上述步骤S4中,当C++语言的代码文件生成后,可对其进行添加修改;
添加修改的方法具体为:通过从模型中定位对应头文件对其进行添加修改,或者通过从模型中定位对面代码进行添加修改。
上述步骤S5中,当将代码文件与构建的模型进行组合保存后,SCA建模平台的项目管理器中的主工程名称后会出现“*”符合,代表已更新且与模型整合成功,此时可以将之前所生成的.CPP文件夹全部删除。
上述步骤S6中,代码重新生成后,打开之前修改的代码文件,找到对应代码填充位置即可发现代码已成功保存并整合到模型中。
实施例2:
本实施例中提供了以实施例1中方法为基础的基于模型驱动的模块代码记忆终端,包括代码自动生成模块和模块代码记忆模块;
所述代码自动生成模块用于在模型构建完成后,自动生成对应C++语言及组件的描述符的代码文件;
所述模块代码记忆模块用于在代码文件自动生成后,当需要进行模型代码修改时,为用户提供定位代码修改位置,并将修改后的代码整合更新到模型中,实现模块代码记忆。
本实施例中的代码自动生成模块运行时,其功能模块包括C++代码文件生成器、C++源写入器、SCA代码生成器和C++代码生成内部接口收集器;
所述C++代码文件生成器用于为客户端提供代码生成配置及变量设置空间,进而自动生成基于SCA4的C++语言的代码;其中,所述C++代码文件生成器中定义的变量包括文本、模型、语言生成类型、收集器、C++项目和注入器;
具体地,在C++代码文件生成器执行生成之前需要进行初始化,包括创建依赖项注入配置模块和相应的Guice注入器,然后它根据需要从配置模块中注入设置,使用此注入器创建实际生成器的实例(基于SCA4的C++代码自动生成器),同时还创建了“收集器”,它是基于代码生成收集器的实例,该实例收集生成器所需的信息。需要说明的是,此方法是公开的,并与调用它的“运行”方法分开,以便客户端可以访问代码生成配置并设置,而无需执行生成,实现转换的基于SCA4的C++代码自动生成器;
所述C++源写入器,用于验证生成的C++语言的代码文件与构建的模型的相关符合性;
所述SCA代码生成器用于收集模型中所有用到的IDL文件,进而为模型中所有组件生成XML格式的描述符的代码文件;其中,描述符的代码文件包括Dep文件、组件描述文件以及端口文件;
所述C++代码生成内部接口收集器用于收集模型的构建信息,以确保代码文件的正确生成,同时仅生成代码文件一次;其中,通过SCA的组件配置文件中设置了exec_config_属性、config_config_exec属性用于外部分配,同时为PushConsumer使用私有list<port>提供的端口方法CosEventComm;该收集器所设置的多个接口均质池又组建直接实现或通过继承实现的接口,且能收集所需调用方法的所有属性和操作数据;
所述C++代码生成监控器用于监控终端中各个功能模块是否正常运行,并确定其运行时的状态及特征,达到及时提醒代码生成器对于信息的错误收集的目的。
本实施例中的模块代码记忆模块运行时,其功能模块包括代码记录生成器、代码捕捉器和代码区域更新器;
所述代码记录生成器用于监控当前终端是否正确生成代码文件,并将生成的代码文件进行存储;
具体地,该记录器主要以监控、存储为主要目的,通过调用控器所输出的工作状态判断是否正确生成代码,代码生成后存储到对于创建的Model_CPP文件夹中,也可以理解为数据库存储;
所述代码捕捉器用于基于存储的代码文件,在需要进行代码修改时,对修改的代码进行捕捉,获得模块代码,并将其传递至代码区域更新器;
具体地,代码捕捉器通过调用代码生成记录器的存储功能,将已存储的代码作为对比文件;在开发人员将代码修改完成,保存并重新生成后,捕捉器将初始化已存储的对应代码,继而对比两次所生成的代码,以达到捕捉修改代码的目的,同时,捕捉器工作完成后,将传递信息到代码区域更新器;
所述代码区域更新器用于将将模块代码更新到模型中,实现模块代码记忆;
具体地,更新器接收到捕捉器的信息后,通过调用初始化方法将更新池初始化,再调用code_updateAreaCode()方法将新捕捉到的代码更新入模型。

Claims (8)

1.一种基于模型驱动的模块代码记忆方法,其特征在于,包括以下步骤:
S1、在SCA建模工具平台中完成模型构建;
S2、验证当前模型是否符合SCA4相关规范;
若是,则进入步骤S4;
若否,则进入步骤S3;
S3、验证出错,根据错误提示对模型进行修改优化,并返回步骤S2;
S4、验证通过,生成模型对应代码文件,进入步骤S5;
其中,代码文件包括模型对应的C++语言的代码文件和模型中各个组件对应的描述符的代码文件;
S5、将生成的代码文件与构建的模型进行组合并保存;
S6、当需要对构建的模型进行修改时,打开对应组件生成的描述符的代码文件,并在需要修改的位置修改逻辑实现代码,作为更新的模块代码;
S7、将模块代码记忆保存到模型中并重新生成模型代码,实现模块代码记忆。
2.根据权利要求1所述的基于模型驱动的模块代码记忆方法,其特征在于,所述步骤S4中,生成C++语言的代码文件的方法具体为:
A1、创建注入配置模块和相应的Guice注入器;
A2、基于注入配置模块配置的依赖项参数,创建收集器;
A3、基于收集器中的信息,通过Guice注入器创建基于SCA4的C++代码自动生成器;
A3、基于C++代码自动生成器生成模型对应的C++语言的代码文件。
3.根据权利要求1所述的基于模型驱动的模块代码记忆方法,其特征在于,所述步骤S4中,通过收集模型中所有用到的IDL文件,进而生成各个组件的描述符的代码文件;
所述描述符的代码文件为XML格式,具体包括Dep文件、组件描述文件以及端口文件。
4.根据权利要求1所述的基于模型驱动的模块代码记忆方法,其特征在于,所述步骤S4中的代码文件仅生成一次。
5.根据权利要求1所述的基于模型驱动的模块代码记忆方法,其特征在于,所述步骤S4中,当C++语言的代码文件生成后,可对其进行添加修改;
添加修改的方法具体为:通过从模型中定位对应源文件对其进行添加修改,或者通过从模型中定位对应代码进行添加修改。
6.一种基于权利要求1~5任意一条权利要求所述的基于模型驱动的模块代码记忆终端,其特征在于,包括代码自动生成模块和模块代码记忆模块;
所述代码自动生成模块用于在模型构建完成后,自动生成对应C++语言及组件的描述符的代码文件;
所述模块代码记忆模块用于在代码文件自动生成后,当需要进行模型代码修改时,为用户提供定位代码修改位置,并将修改后的代码整合更新到模型中,实现模块代码记忆。
7.根据权利要求6所述的基于模型驱动的模块代码记忆终端,其特征在于,所述代码自动生成模块运行时,其功能模块包括C++代码文件生成器、C++源写入器、SCA代码生成器、C++代码生成内部接口收集器和C++代码生成监控器;
所述C++代码文件生成器用于为客户端提供代码生成配置及变量设置空间,进而自动生成基于SCA4的C++语言的代码;其中,所述C++代码文件生成器中定义的变量包括文本、模型、语言生成类型、收集器、C++项目和注入器;
所述C++源写入器,用于验证生成的C++语言的代码文件与构建的模型的相关符合性;
所述SCA代码生成器用于收集模型中所有用到的IDL文件,进而为模型中所有组件生成XML格式的描述符的代码文件;其中,描述符的代码文件包括Dep文件、组件描述文件以及端口文件;
所述C++代码生成内部接口收集器用于收集模型的构建信息,以确保代码文件的正确生成;
所述C++代码生成监控器用于监控终端中各个功能模块是否正常运行,并确定其运行时的状态及特征。
8.根据权利要求6所述的基于模型驱动的模块代码记忆终端,其特征在于,所述模块代码记忆模块运行时,其功能模块包括代码记录生成器、代码捕捉器和代码区域更新器;
所述代码记录生成器用于监控当前终端是否正确生成代码文件,并将生成的代码文件进行存储;
所述代码捕捉器用于基于存储的代码文件,在需要进行代码修改时,对修改的代码进行捕捉,获得模块代码,并将其传递至代码区域更新器;
所述代码区域更新器用于将将模块代码更新到模型中,实现模块代码记忆。
CN202110592254.7A 2021-05-28 2021-05-28 一种基于模型驱动的模块代码记忆方法及终端 Active CN113296765B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110592254.7A CN113296765B (zh) 2021-05-28 2021-05-28 一种基于模型驱动的模块代码记忆方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110592254.7A CN113296765B (zh) 2021-05-28 2021-05-28 一种基于模型驱动的模块代码记忆方法及终端

Publications (2)

Publication Number Publication Date
CN113296765A CN113296765A (zh) 2021-08-24
CN113296765B true CN113296765B (zh) 2023-11-03

Family

ID=77325956

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110592254.7A Active CN113296765B (zh) 2021-05-28 2021-05-28 一种基于模型驱动的模块代码记忆方法及终端

Country Status (1)

Country Link
CN (1) CN113296765B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311903A (zh) * 2007-05-22 2008-11-26 国际商业机器公司 对基于组件的软件系统中的组件进行重用的方法和装置
CN101615158A (zh) * 2009-08-10 2009-12-30 北京交通大学 一种计算机程序的调试方法
CN110825369A (zh) * 2019-11-07 2020-02-21 四川长虹电器股份有限公司 一种基于java语言的代码自动生成的方法
CN111399829A (zh) * 2020-03-13 2020-07-10 上海介方信息技术有限公司 一种基于模型驱动的波形建模方法及终端

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657868B2 (en) * 2005-03-14 2010-02-02 Research In Motion Limited System and method for applying development patterns for component based applications
US8650540B2 (en) * 2009-12-31 2014-02-11 International Business Machines Corporation Melding of mediation flow service component architecture (SCA) components
US8719813B2 (en) * 2011-11-29 2014-05-06 Raytheon Company Optimized SCA CORBA descriptor for SCA CORBA descriptor files

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311903A (zh) * 2007-05-22 2008-11-26 国际商业机器公司 对基于组件的软件系统中的组件进行重用的方法和装置
CN101615158A (zh) * 2009-08-10 2009-12-30 北京交通大学 一种计算机程序的调试方法
CN110825369A (zh) * 2019-11-07 2020-02-21 四川长虹电器股份有限公司 一种基于java语言的代码自动生成的方法
CN111399829A (zh) * 2020-03-13 2020-07-10 上海介方信息技术有限公司 一种基于模型驱动的波形建模方法及终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种支持动态管理的SCA服务模型研究;龙军等;《计算机科学》;第39卷(第12期);第114-117页 *
服务组件架构的框架元模型及实现扩展点研究;俞庆平等;《计算机系统应用》;第21卷(第7期);第95-100 *

Also Published As

Publication number Publication date
CN113296765A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
Mens et al. Evolving software architecture descriptions of critical systems
del Mar Gallardo et al. Debugging UML designs with model checking
US20040143819A1 (en) Generic software testing system and mechanism
CN106227654B (zh) 一种测试平台
CN110222318B (zh) 基于xml的数据生成工具开发方法
CN110209389B (zh) 一种基于xml的数据生成工具开发系统
CN112416337A (zh) 一种面向航天嵌入式系统的软件架构开发系统
EP3693860B1 (en) Generation of test models from behavior driven development scenarios based on behavior driven development step definitions and similarity analysis using neuro linguistic programming and machine learning mechanisms
US7181729B2 (en) Methods and systems for an interactive theorem-proving tool with reflective capabilities
Haberl et al. Model-level debugging of embedded real-time systems
Bonfiglio et al. Executable models to support automated software FMEA
Bouquet et al. Requirements traceability in automated test generation: application to smart card software validation
CN116680885A (zh) 一种基于SysML和Tango的复杂装置控制软件建模与验证方法
CN113296765B (zh) 一种基于模型驱动的模块代码记忆方法及终端
Polikarpova et al. Specifying reusable components
Memon et al. A planning-based approach to GUI testing
CN111506513B (zh) 一种基于层次化模型的文件系统测试方法
Busch et al. A cross-disciplinary language for change propagation rules
Bondavalli et al. Design validation of embedded dependable systems
Tonella et al. Code quality from the programmer’s perspective
Kohring et al. A requirements engineering environment within a tightly integrated SDE
Geuze Energy management in smart grids using timed automata
Giese et al. Integrating Verification in a Design Process for Distributed Production Control Systems
Fleisch Simulation and validation of component-based automotive control software
Barber et al. The Systems Engineering Process Activities: The Methodology and Supporting Tools

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Model Driven Module Code Memory Method and Terminal

Granted publication date: 20231103

Pledgee: Agricultural Bank of China Limited by Share Ltd. Chengdu high tech Industrial Development Zone Branch

Pledgor: Chengdu Xieying Technology Co.,Ltd.

Registration number: Y2024510000088