4.2.业务模型开发
基于框架进行特性业务模型开发时,原则上统一使用yang模型进行描述,在业务逻辑开发时,框架会通过接口形式提供各给特性,具体使用方式在”业务逻辑接口开发”章节会涉及。
开发步骤
在config-model模块包路径src/main/yang下新建xxx-business.yang业务模型,在yang模型内针对该特性进行存储数据描述。xxx为特性名称
业务逻辑层开发
基于配置框架进行特性开发,业务逻辑层承担着参数的合法性(Restful请求参数规格合法、业务合法)校验、初始化、数据转化(提供给框架,以便框架入库)、定制化数据查询、查询、删除等功能,其中新增和修改操作由该特性的唯一标志进行确定。
5.1.开发步骤
1:在config-package模块下新建包路径:xxx,在该包下建立xxxHandler.java,作为业务逻辑层,继承AbstractConfigHandler,并且将UI模型传入泛型参数,并根据业务具体特性实现接口即可,特殊场景下(获取其他特性配置信息、修改其他特性配置信息、显示驱动其他特性配置信息下发、当前特性不下发等)根据业务需要可以利用工具方法或重写重载方法进行处理。xxx为特性名称
南向适配层开发
基于配置框架进行特性开发时,框架需要业务提供模型对象和报文映射规则以及适用的设备和版本型号,以便通过调用报文自动生成模块生成报文,直接或经由离线配置模块传递给设备,因而业务需要进行南向适配层进行模型对象处理和报文映射规则等开发。
6.1.开发步骤
1:在config-device-adapter模块下新建包路径:xxx_adpter_ar,在该包下建立xxxConfigInterpreter.java,继承AbstractConfigInterpreter,并根据业务具体特性实现接口即可,特殊场景下(获取其他特性配置信息、修改其他特性配置信息、显示驱动其他特性配置信息下发、当前特性不下发等)根据业务需要可以利用工具方法或重写重载方法进行处理。xxx为特性名称
2:在相同包路径下新建xxx-adpter.xml,添加该南向适配对象适用设备款型和设备型号、特性
3:实现适配模型yang,以apssid为例,yang模型与报文xml格式需匹配,
[if !supportLists]1.[endif]config-model
(1),Config-model工程主要利用yang语言定义了业务模型,以及当业务模型和南向设备模型相差很大时定义的设备适配模型(设备适配模型和和南向设备非常接近,我认为当业务模型直接定义为南向设备模型或是定义为非常接近南向设备模型时,业务的实现非常困难或是无法实现,因此需要定义南向设备设配模型。比如ssid特性业务模型中定义leaf时更注重业务,ssid特性的设备模型(ssid-adapter-ar.yang)中属性更贴近设备。
leaf operation{type config-types:operation_base}属性来更方便定义业务的crud操作)
(2),定义AbstractAdapterServiceListener抽象类,提供Routed RPC的registerPath和unregisterPath。多线程实现。
[if !supportLists]2.[endif]config-package
定义UI模型对接前台提交数据。UI模型中不要使用基本数据类型,因为基本类型会有初始值,当前台没有带来这个属性的值时可能会影响业务的判断。
[if !supportLists](1)[endif]定义XXXHandler类(XXX为特性名称)
XXXHandler继承了AbstractConfigHandler类并把要操作的UI模型作为泛型参数穿入。AbstractConfigHandler类是实现ConfigHandler接口(此抽象类和接口在configframework-model工程中定义),该接口定义了一些框架会按照一定顺序调用的方法,这些方法会将UI模型转换为业务模型,并做一些校验处理。用抽象类继承此接口一方面是为了实现一些所有特性公共的操作方便我们的继承不在去自己实现,另一方面也方便了我们冲掉一些业务不需要方法(流程)。
[if !supportLists]3.[endif]config-device-adapter
(1)该工程南向设备紧密联系。一些特性下发到南向设备是通过XXXConfigInterpreter类中的一些重要方法进行数据转换并最后将适配模型或业务模型结合XXX-netconf.xml文件生成南向设备的报文。XXX-adapter.xml定义了此配置适用的设备款型,设备型号等。
(2)XXXConfigInterpreter类继承了抽象类AbstractConfigInterpreter.此抽象类继承了ConfigInterpreter接口(两者都定义在deviceconfig-model工程中)接口中的方法重点工作是将业务模型转化为适配模型,并对比得出设备当前配置和更改配置之间的差异,根据对比后的配置生成netconf报文下发到设备。