Panda_05_单表功能开发(二)_建表及功能管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26981333/article/details/83105728

一、前言

在上一部分中,我们参考了权限规则功能,得到了我们的需求,知道要创建哪些表以及文件。

这一部分,我们来看下进行功能模块开发时,准备阶段需要做的事:

  1. 建表
  2. 注册资源
  3. 维护功能
  4. 分配功能

二、建表

以下内容主要讲述如何使用liquibase来创建数据表,如有兴趣可参考 Liquibase 官方指令文档

1.文件名

在如下目录新建文件
在这里插入图片描述
文件名如下:

[yyyy-MM-dd]-ProjectName-MoudleName-init-table-migration.groovy

例如

2018-09-20-panda-bpm-init-table-migration.groovy

2.文件结构

groovy文件结构如下:

databaseChangeLog
     changeSet
            createSequence
            createTable
            createTable
            ...
     changeSet
            createSequence
            createTable
            createTable
            ...
   ...

4.注意的点

参考 现有的建表 changeSet 写法, 添加新的 changeSet

其他建表需要注意的内容包括:

  • 基础建表语句
  • 表描述信息
  • 主键设置
  • 列描述信息
  • 合理的类型,长度
  • 是否允许 NULL
  • 默认值(如果有)
  • 索引(唯一索引,普通索引)
  • 主键自增起始 10001
  • oracle 是设置 sequence start with

who 字段(8个)

        column(name: "OBJECT_VERSION_NUMBER", type: "BIGINT", defaultValue : "1")
        column(name: "REQUEST_ID", type: "BIGINT", defaultValue : "-1")
        column(name: "PROGRAM_ID", type: "BIGINT", defaultValue : "-1")
        column(name: "CREATED_BY", type: "BIGINT", defaultValue : "-1")
        column(name: "CREATION_DATE", type: "DATETIME", defaultValueComputed : "CURRENT_TIMESTAMP")
        column(name: "LAST_UPDATED_BY", type: "BIGINT", defaultValue : "-1")
        column(name: "LAST_UPDATE_DATE", type: "DATETIME", defaultValueComputed : "CURRENT_TIMESTAMP")
        column(name: "LAST_UPDATE_LOGIN", type: "BIGINT", defaultValue : "-1")

扩展字段 16个(可以不要)

如果不要,在DTO类上加@ExtensionAttribute(disable=true)

TL 表均为联合主键,没有自增长、sequence 等

3.1 创建序列

        //序列
        if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){
            createSequence(sequenceName: 'SYS_SCRIPT_B_S', startValue:"10001")
        }

3.2 创建主键

            //主键
            if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){
                column(name:"SCRIPT_ID",type:"bigint",remarks:"nashorn脚本ID"){
                    constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK")
                }
            }else {
                column(name:"SCRIPT_ID",type:"bigint",autoIncrement: "true", startWith:"10001",remarks:"nashorn脚本ID"){
                    constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK")
                }
            }

3.3 唯一索引

   column(name: "SCRIPT_CODE", type:"nvarchar(30)", remarks: "脚本代码") {
                constraints(nullable: "false",unique:"true",uniqueConstraintName:"SYS_SCRIPT_B_U1")
   }

4.完整的groovy文件示例

如脚本引擎的groovy文件内容为:

package com.hand.hec.panda.db

import com.hand.hap.liquibase.MigrationHelper

def mhi = MigrationHelper.getInstance()
dbType = mhi.dbType()

//databaseChangeLog:  将logicalFilePath的值修改为与文件名相同
databaseChangeLog(logicalFilePath: "2018-09-06-panda-script-init-table-migration.groovy") {

    //changeSet   :  author为hand邮箱名, id为 日期-基础表名
    changeSet(author: "[email protected]", id: "20180817-SYS_SCRIPT_B") {
       
        //1.序列  :   序列名称为基础表_S , 起始值均为 10001
        if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){
            createSequence(sequenceName: 'SYS_SCRIPT_B_S', startValue:"10001")
        }

        //2.基表  :  tableName即为表名
        createTable(tableName: "SYS_SCRIPT_B") {
            
             //2.1 主键
            if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){
                column(name:"SCRIPT_ID",type:"bigint",remarks:"nashorn脚本ID"){
                    constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK")
                }
            }else {
                column(name:"SCRIPT_ID",type:"bigint",autoIncrement: "true", startWith:"10001",remarks:"nashorn脚本ID"){
                    constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK")
                }
            }

            // 2.2 字段
            column(name: "SCRIPT_CODE", type:"nvarchar(30)", remarks: "脚本代码") {
                constraints(nullable: "false",unique:"true",uniqueConstraintName:"SYS_SCRIPT_B_U1")
            }

            column(name: "SCRIPT_NAME", type:"nvarchar(30)", remarks: "脚本名称") {
                constraints(nullable: "false")
            }

            column(name: "SCRIPT_PATH", type: 'nvarchar(64)', remarks: "脚本文件路径")

            column(name: "SCRIPT_CONTENT", type: 'text', remarks: "脚本内容")

            column(name: "DESCRIPTION", type: 'nvarchar(240)', remarks: "描述")
            column(name: "ENABLED_FLAG", type: 'nvarchar(1)', remarks: "启用标志")
            column(name: "DELETED_FLAG", type: 'nvarchar(1)', remarks: "删除标志")

            //2.3 who 字段(9个),很多表都有这些字段
            column(name: "CLIENT_ID", type: 'bigint', remarks: "租户ID")
            column(name: "OBJECT_VERSION_NUMBER", type: "BIGINT", defaultValue: "1")
            column(name: "REQUEST_ID", type: "bigint", defaultValue: "-1")
            column(name: "PROGRAM_ID", type: "bigint", defaultValue: "-1")
            column(name: "CREATED_BY", type: "bigint", defaultValue: "-1")
            column(name: "CREATION_DATE", type: "datetime", defaultValueComputed: "CURRENT_TIMESTAMP")
            column(name: "LAST_UPDATED_BY", type: "bigint", defaultValue: "-1")
            column(name: "LAST_UPDATE_DATE", type: "datetime", defaultValueComputed: "CURRENT_TIMESTAMP")
            column(name: "LAST_UPDATE_LOGIN", type: "bigint", defaultValue: "-1")
           

            //2.4 扩展字段 16个(可以不要) 如果不要,在DTO类上加@ExtensionAttribute(disable=true)
            column(name: "ATTRIBUTE_CATEGORY", type: "nvarchar(30)")
            column(name: "ATTRIBUTE1", type: "nvarchar(240)")
            column(name: "ATTRIBUTE2", type: "nvarchar(240)")
            column(name: "ATTRIBUTE3", type: "nvarchar(240)")
            column(name: "ATTRIBUTE4", type: "nvarchar(240)")
            column(name: "ATTRIBUTE5", type: "nvarchar(240)")
            column(name: "ATTRIBUTE6", type: "nvarchar(240)")
            column(name: "ATTRIBUTE7", type: "nvarchar(240)")
            column(name: "ATTRIBUTE8", type: "nvarchar(240)")
            column(name: "ATTRIBUTE9", type: "nvarchar(240)")
            column(name: "ATTRIBUTE10", type: "nvarchar(240)")
            column(name: "ATTRIBUTE11", type: "nvarchar(240)")
            column(name: "ATTRIBUTE12", type: "nvarchar(240)")
            column(name: "ATTRIBUTE13", type: "nvarchar(240)")
            column(name: "ATTRIBUTE14", type: "nvarchar(240)")
            column(name: "ATTRIBUTE15", type: "nvarchar(240)")
            column(name: "ATTRIBUTE16", type: "nvarchar(240)")
            column(name: "ATTRIBUTE17", type: "nvarchar(240)")
            column(name: "ATTRIBUTE18", type: "nvarchar(240)")
            column(name: "ATTRIBUTE19", type: "nvarchar(240)")
            column(name: "ATTRIBUTE20", type: "nvarchar(240)")
        }

        //3.多语言表 :  TL 表均为联合主键,没有自增长、sequence 等
        createTable(tableName: "SYS_SCRIPT_B_TL") {
            //3.1 联合主键
            column(name:"CODE_ID",type:"bigint",remarks: "nashorn脚本ID"){
                constraints(nullable: "false", primaryKey: "true")
            }
            column(name:"LANG",type:"varchar(10)",remarks: "语言"){
                constraints(nullable: "false", primaryKey: "true")
            }

            //3.2 字段
            column(name:"DESCRIPTION",type:"varchar(240)",remarks: "脚本描述")
            column(name:"OBJECT_VERSION_NUMBER",type:"BIGINT",defaultValue: "1")
            column(name: "REQUEST_ID", type: "bigint", defaultValue : "-1")
            column(name: "PROGRAM_ID", type: "bigint", defaultValue : "-1")
            column(name: "CREATED_BY", type: "bigint", defaultValue : "-1")
            column(name: "CREATION_DATE", type: "datetime", defaultValueComputed : "CURRENT_TIMESTAMP")
            column(name: "LAST_UPDATED_BY", type: "bigint", defaultValue : "-1")
            column(name: "LAST_UPDATE_DATE", type: "datetime", defaultValueComputed : "CURRENT_TIMESTAMP")
            column(name: "LAST_UPDATE_LOGIN", type: "bigint", defaultValue : "-1")
            column(name:"ATTRIBUTE_CATEGORY",type:"varchar(30)")
            column(name:"ATTRIBUTE1",type:"varchar(240)")
            column(name:"ATTRIBUTE2",type:"varchar(240)")
            column(name:"ATTRIBUTE3",type:"varchar(240)")
            column(name:"ATTRIBUTE4",type:"varchar(240)")
            column(name:"ATTRIBUTE5",type:"varchar(240)")
            column(name:"ATTRIBUTE6",type:"varchar(240)")
            column(name:"ATTRIBUTE7",type:"varchar(240)")
            column(name:"ATTRIBUTE8",type:"varchar(240)")
            column(name:"ATTRIBUTE9",type:"varchar(240)")
            column(name:"ATTRIBUTE10",type:"varchar(240)")
            column(name:"ATTRIBUTE11",type:"varchar(240)")
            column(name:"ATTRIBUTE12",type:"varchar(240)")
            column(name:"ATTRIBUTE13",type:"varchar(240)")
            column(name:"ATTRIBUTE14",type:"varchar(240)")
            column(name:"ATTRIBUTE15",type:"varchar(240)")
        }

    }

}

5.fnd_business_rule_test_b表的groovy文件

参考上面示例以及fnd_business_rule_b表,来创建fnd_business_rule_test_b表的groovy文件.

6.执行groovy文件

(1)先执行 mvn clean install 进行打包。

(2)打包完成之后,在项目根目录(panda-parent)执行如下命令即可(请先将数据库信息修改成正确的):

mvn process-resources -D skipLiquibaseRun=false -D db.driver=org.postgresql.Driver -D db.url=jdbc:postgresql://192.168.100.90:90/haha_dev -D db.user=hahga_dev -D db.password=hahadev

三、注册资源

所有要用到的链接都要注册成资源

我们参考权限规则功能,得到需要注册的资源如下:

1.HTML页面

在这里插入图片描述

如上图,两处页面的链接都需要注册成资源。于是我们注册两条资源:
只需要注册权限规则页面即可,不需要注册明细页面的资源。(存疑
在这里插入图片描述

参考权限规则功能的资源管理,创建一条HTML页面资源如下:

fnd/FND502/fndBusinessRuleTest.screen

2.URL服务

对于Controller中的请求url,我们也需要将其注册为资源。

fnd/businessRuleTest/query
fnd/businessRuleTest/submit
fnd/businessRuleTest/remove

四、功能维护

在这里插入图片描述

参考权限规则的功能维护,维护一条功能。

父级功能为 BPM权限
入口页面为 前面注册的HTML页面

五、功能分配

在这里插入图片描述

去功能分配下面参考我们的功能是否被勾选中。

六、参考资料

1.HAP参考手册

猜你喜欢

转载自blog.csdn.net/qq_26981333/article/details/83105728