当前位置:   article > 正文

CodeWave系列:6.CodeWave 智能开发平台 扩展依赖库开发_nasl.ide.version

nasl.ide.version

1.前言

前面五个章节,我们学习了CodeWave的页面布局,数据模型的构建以及使用,逻辑功能的实现等,通过前面章节的学习,我们基本上可以独立构建简单的业务逻辑了。但是对于一些负责的业务逻辑,单纯的使用前端页面是无法处理的,只能借助后端服务来处理业务。幸运的是,CodeWave也为我们提供了这样的能力,从本节开始,我们将学习扩展开发能力,用于处理我们的复杂业务。

2.概念介绍

在使用CodeWave进行低代码应用开发时,80%的常规场景可以直接拖拽搭建,而20%的定制化需求往往呈现低频、零散又无法绕行的长尾特征,对于此类需求我们开放了强大且灵活的扩展机制,让专业开发者可以通过传统编程方式实现,并纳入到低代码IT资产中进行沉淀,提供给广大低代码开发者使用。前端和服务端的传统开发技术栈不同,我们这里只介绍服务端扩展开发:目前有两种方式:

  • 扩展依赖库开发:推荐使用的方式,通过服务端脚手架开发工具,用传统开发IDE(Java+SpringBoot)编辑出服务端扩展逻辑、数据结构、枚举等编程设施,打包成为扩展依赖库,导入资产中心,提供给低代码应用开发者使用。
  • 扩展逻辑开发:通过在可视化IDE中直接创建Java扩展逻辑,实现Java语言的扩展开发,有一些场景限制,简单的逻辑算法可以实现。

3.扩展依赖库开发

3.1 创建Maven项目

服务端扩展依赖库的开发步骤如下:

(1)创建maven工程。(2)添加依赖jar包。(3)添加maven插件。(4)配置pom基础信息。(5)功能开发。(6)生成zip包。

3.1.1 创建maven项目

创建maven项目,确保maven使用3.0以上版本,JDK使用1.8。

img

3.1.2 引入开发所需的依赖包

jar包下载:nasl-metadata-collector-0.7.0.jar, 此jar包可以放在maven仓库上也可以放在本地工程中进行引用。这里使用本地导入jar包的方式。

img

3.1.3 引入依赖库maven插件

扩展依赖库maven插件,用于编译后进行打包,会生成library-<libraryName>-<version>.zip格式的压缩包,该压缩包便是最终上传至平台的依赖库包。压缩包中会包括当前依赖库的描述文件和所有的依赖jar包,在上传到平台时,会自动将所有的依赖项一并进行上传以保证依赖库的可用性。一般情况下使用了本插件后,不需要再使用spring或maven的打包插件。

  • 1.下载maven插件:nasl-metadata-maven-plugin-1.3.0.zip

    1. 将插件的jar文件和pom文件下载到本地并安装到本地仓库。
mvn install:install-file -Dfile="nasl-metadata-maven-plugin-1.3.0.jar" -DpomFile="pom.xml"
  • 1

也可使用下载的文件中提供的安装脚本。

img

  • 3.插件安装到本地仓库后,在项目的pom文件中添加该插件依赖,如下所示:
<plugin>
    <groupId>com.netease.lowcode</groupId>
    <artifactId>nasl-metadata-maven-plugin</artifactId>
    <version>1.3.0</version>
    <executions>
        <execution>
            <goals>
                <goal>archive</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

会在执行打包时,生成一个library-<libraryName>-<version>.zip格式压缩文件。

img

3.2 配置基础信息

依赖库的基础信息(标识、名称、版本号、描述、适用IDE版本)依赖于maven工程中的pom.xml文件,maven工程中必须要存在groupId、artifactId、version字段。对于基础信息的收集会读取工程根路径中的pom.xml,如果为父子工程,则对子工程的打包会读取子工程下的pom.xml文件。

2.3.1 依赖库适用的IDE最低版本

在pom.xml的<properties>标签中添加<nasl.ide.version>用于设置IDE最低版本。应用不能引入大于此版本的依赖库,例如应用的IDE版本为2.20,只能引入<nasl.ide.version><=2.20的依赖库。<nasl.ide.version>标签使用示例:

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
    <nasl.ide.version>2.22</nasl.ide.version>
    
</properties>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.2.2 依赖库标识,库版本,库标题,库描述

扩展依赖库的标识,由pom.xml文件中的artifactId字段决定。如果定义的artifactId包含-则会自动转换为_。pom.xml配置示例:

img

扩展依赖库的版本获取的是pom.xml文件中的version字段。版本号支持格式为x.y.z,如果定义的version包含-SNAPSHOT则会编译失败。pom.xml配置示例:

img

标题通过解析pom.xml中的name标签来生成,此标签为可选项,如果未声明name标签,则默认为artifactId标签对应的值。pom.xml配置示例:

img

描述是通过解析pom.xml中的description标签来生成,此标签为可选项,如果未声明description标签,则默认扩展依赖库描述为空字符串。pom.xml配置示例:

img

3.3 功能开发

项目中使用的NASL注解将被引入的jar包识别,将依赖库与平台融合,注解的功能如下:

  • 对方法使用@NasLogic注解将方法声明为平台的服务端逻辑
  • 对类使用@NaslStructure注解将类声明为平台的数据结构,可作为方法的出入参对象。
  • 对类的成员变量使用@NaslConfiguration注解将成员变量声明为平台的参数配置。

3.3.1 声明为Logic(逻辑)

使用注解可以将方法声明为Logic,即平台的逻辑,声明Logic有以下要求:

  • 必须为public方法,方法定义为非public则会编译失败
  • 静态方法需要在方法上添加@NaslLogic注解。非静态方法需要在类上添加Spring中的@Component(或@Service@Configuration)注解。
  • 方法的出入参仅支持以下数据类型:Boolean、Integer、Long、Double、String、LocalDate、LocalTime、ZonedDateTime、BigDecimal、List、Map。除这些默认类型外,其他数据类型需要用@NaslStructure声明为自定义数据结构。不支持泛型、Object。

示例代码如下:

  • 静态方法:为static方法使用@NaslLogic注解

img

  • 非静态方法:nasl.ide.version 3.3及以上版本支持非static方法。可以理解为原static方法的方式即我们普通spring项目中的静态方法,而3.3以上版本支持的非static方法,需要在依赖库中营造spring环境。

    第一步:在pom中引入springboot包
    img

    img

    第二步:方法修改为非static,在类名上加@Component注解,在springIOC中为当前类创建一个实例化的bean。

    img

3.3.2 声明为Structure(数据结构)

使用@NaslStructure注解可以将类声明为Structure,即平台的数据结构,定义数据结构有以下要求:

  • 类中的成员变量必须是public。
  • 成员变量需要有对应的get和Set方法。
  • 类中如果提供了有参构造函数,则必须显式提供无参构造函数。
  • 数据结构必须有成员变量,否则无意义。

img

3.3.3 声明为Configuration(自定义参数配置)

在类的成员变量上添加@NaslConfiguration注解即声明为Configuration,可以设置参数在不同环境下的默认值,如果未指定的话则默认为空字符串。

img

img

3.4.4 生成依赖库

代码编写完毕后,使用maven的clean和package,将在项目的target文件夹下生成依赖库zip压缩包。

img

在平台的资产中心-依赖库界面上传该压缩包。

img

3.4 使用依赖库

3.4.1 导入依赖库

(1)依赖库成功上传至资产中心后,点击IDE右上方“更多”按钮,点击弹出框中的“依赖库管理”。

img

(2)在弹窗中点击左下角“导入依赖库”按钮。

img

(3)在导入依赖库弹窗内选择需要的依赖库,点击“引入”按钮即可。

img

3.4.2 逻辑的使用

导入依赖库后在服务端逻辑下可查看并调用新增的依赖库逻辑。

img

4.扩展逻辑开发

Java扩展逻辑是面向Java专业开发者提供的一种扩展方式,即:可以在低代码IDE中编写Java代码。和扩展依赖库相比,它的优势是:可以将Java代码同低代码编程内容一起托管,而扩展依赖库则存在Java代码管理分散的问题,后续迭代需要找到当时开发的源码。而它也存在较明显的劣势,如:开发Java扩展逻辑时,输入参数、输出参数需要限定为CodeWave平台能够识别的数据类型,在引入三方jar包方面,操作也是比较麻烦,同时没有Java语法校验、不支持在线运行调试,开发者使用成本还是比较高的。

本节我们不对此进行展开说明,需要读者自行学习。

5.案例学习(扩展依赖库)

环境准备:平台3.3版本、Java8、Maven3,代码编辑器为IDEA。

案例学习:使用Java制作发送邮件的扩展依赖库逻辑,上传至平台在应用中调用依赖库逻辑发送邮件,逻辑的输入参数为邮件标题、邮件正文内容、收件人邮箱。

0

5.1 创建maven项目

前提条件:已安装Java8、Maven。

0

5.2 配置POM文件

5.2.1 引入依赖jar包

前提条件:已下载jar包(nasl-metadata-collector),jar包的下载及引入方式请参考服务端依赖库开发快速入门下的引入nasl-metadata-collecter的jar包。本案例使用maven仓库引用,dependency配置如下图所示。

0

5.2.2 添加maven插件依赖

前提条件:已下载并安装扩展依赖库Maven插件,插件的下载与安装请参考服务端依赖库开发快速入门-引入依赖库maven插件。maven插件用于生成最终的zip压缩包,plugin配置如下图所示。

0

5.2.3 配置依赖库信息

依赖库的信息包含:标识、版本号、名称、描述,在pom文件中进行配置,具体请参考服务端依赖库开发快速入门下的声明依赖库基础信息。本案例的配置如下:

0

5.2.4 添加其他依赖

本案例调用hutool工具包发送邮件,maven依赖如下:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5.3 功能开发

5.3.1 编写代码

创建包和类,类中创建public static方法,方法中编写用于发送邮件的代码,方法使用@NaslLogic注解,声明该方法是一个逻辑。方法的入参分别为收件人邮箱地址、邮件标题、邮件正文内容,方法的返回值类型为Boolean代表邮件是否发送成功。本案例的发件人邮箱信息写在方法体中,可根据实际需求添加方法参数从而动态传参。

0

5.3.2 代码打包

使用maven的clean后再使用package打包。(需要已安装扩展依赖库Maven插件,如未安装请参照服务端依赖库开发快速入门下的引入依赖库maven插件)

0

打包成功后,项目target文件夹下可以看到library–.zip格式压缩文件。

5.3.3 导入使用

成功生成zip压缩包后,进入平台地址,点击资产中心-依赖库,点击“手动上传”按钮,在弹窗中上传压缩包后将自动展示依赖库信息。可手动选择库分类,修改描述,点击“发布”即可完成扩展依赖库的上传。

0

进入平台IDE,点击右上角“更多”,点击“依赖库管理”。

0

在弹窗中点击“导入依赖库”

0

可使用搜索框搜索上传的依赖库,选择依赖库后点击引入。

0

成功引入后在依赖库管理界面中可以看到新引入的扩展依赖库。

5.4 使用依赖库

制作发送邮件的页面。

0

为按钮添加点击事件,事件中使用调用逻辑组件,在服务端逻辑下可以看到依赖库逻辑,选择发送邮件逻辑。

0

将表单项绑定的变量作为发送邮件逻辑的参数,使用布尔类型变量接收返回结果。

0

效果预览:

0

6.小结

本节我们学习了CodeWave的扩展开发功能,通过本节的学习,我们已经对扩展开发功能有一个大致的认识。我们首先学习了依赖库开发的概念,然后介绍了依赖库开发Jar包的构建,Jar包配置,Jar包业务开发,Jar包打包,Jar包部署以及Jar使用,最后通过案例学习对本节内容进行了串烧,上面是我们本节的全部内容,希望对同学们有所帮助。

**文末彩蛋:**作者一名热爱人工智能的专栏作者,致力于分享人工智能领域的最新知识、技术和趋势。这里,你将能够了解到人工智能在各个领域的应用和创新,探讨人工智能对未来社会的影响,以及探索人工智能背后的科学原理和技术实现。欢迎大家点赞,评论,收藏,让我们一起探索人工智能的奥秘,共同见证科技的进步!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/890629
推荐阅读
相关标签
  

闽ICP备14008679号