前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CodeWave系列:6.CodeWave 智能开发平台 扩展依赖库开发

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

作者头像
Freedom123
发布2024-03-29 18:18:44
530
发布2024-03-29 18:18:44
举报
文章被收录于专栏:DevOpsDevOps

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。

3.1.2 引入开发所需的依赖包

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

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文件下载到本地并安装到本地仓库。
代码语言:javascript
复制
mvn install:install-file -Dfile="nasl-metadata-maven-plugin-1.3.0.jar" -DpomFile="pom.xml"

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

  • 3.插件安装到本地仓库后,在项目的pom文件中添加该插件依赖,如下所示:
代码语言:javascript
复制
<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>

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

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>标签使用示例:

代码语言:javascript
复制
<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>
3.2.2 依赖库标识,库版本,库标题,库描述

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

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

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

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

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注解

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

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

3.3.2 声明为Structure(数据结构)

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

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

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

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

3.4.4 生成依赖库

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

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

3.4 使用依赖库

3.4.1 导入依赖库

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

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

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

3.4.2 逻辑的使用

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

4.扩展逻辑开发

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

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

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

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

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

5.1 创建maven项目

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

5.2 配置POM文件

5.2.1 引入依赖jar包

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

5.2.2 添加maven插件依赖

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

5.2.3 配置依赖库信息

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

5.2.4 添加其他依赖

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

代码语言:javascript
复制
<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>

5.3 功能开发

5.3.1 编写代码

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

5.3.2 代码打包

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

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

5.3.3 导入使用

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

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

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

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

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

5.4 使用依赖库

制作发送邮件的页面。

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

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

效果预览:

6.小结

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

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

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.概念介绍
  • 3.扩展依赖库开发
    • 3.1 创建Maven项目
      • 3.1.1 创建maven项目
      • 3.1.2 引入开发所需的依赖包
      • 3.1.3 引入依赖库maven插件
    • 3.2 配置基础信息
      • 2.3.1 依赖库适用的IDE最低版本
      • 3.2.2 依赖库标识,库版本,库标题,库描述
    • 3.3 功能开发
      • 3.3.1 声明为Logic(逻辑)
      • 3.3.2 声明为Structure(数据结构)
      • 3.3.3 声明为Configuration(自定义参数配置)
      • 3.4.4 生成依赖库
    • 3.4 使用依赖库
      • 3.4.1 导入依赖库
      • 3.4.2 逻辑的使用
  • 4.扩展逻辑开发
  • 5.案例学习(扩展依赖库)
    • 5.1 创建maven项目
      • 5.2 配置POM文件
        • 5.2.1 引入依赖jar包
        • 5.2.2 添加maven插件依赖
        • 5.2.3 配置依赖库信息
        • 5.2.4 添加其他依赖
      • 5.3 功能开发
        • 5.3.1 编写代码
        • 5.3.2 代码打包
        • 5.3.3 导入使用
      • 5.4 使用依赖库
      • 6.小结
      相关产品与服务
      千帆神笔 aPaaS
      千帆神笔 aPaaS 是一款专注于企业级应用可视化开发管理的开发平台。通过图形化业务建模、页面设计、流程编排创建全新应用,同时支持将多个 SaaS 应用按业务逻辑和审批流程进行自定义连接,提升开发效率3倍以上。千帆神笔 aPaaS 与企业微信深度集成,应用开发完成后可一键发布到企业微信,助力企业更高效的服务客户。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com