前面我们通过模块test-party提供的自定义指令partyOver,说明了如何通过前端和后端联动,来实现一个自定义指令的完整逻辑。这必然涉及到多个代码文件的创建与变更。那么,为了进一步简化开发步骤,提升开发体验,CabloyJS内置了一个Cli命令,通过此命令可以快速创建前后端代码骨架

下面,我们仍以模块test-party为例,创建一个新的自定义指令partyOver2

1. 通过Cli命令创建

  1. 1 npm run cli :create:atomAction
  2. 2 # 或者
  3. 3 npm run cli :create:atomAction partyOver2 -- --actionCode=102 --module=test-party --atomClassName=party
名称 说明
partyOver2 自定义指令名称
actionCode 指令代码,从101开始分配,要注意避免与现有指令冲突
module 指令所属模块名称
atomClassName 指令所属原子类型名称

2. 原子授权

自定义指令必须进行授权,相应的用户才能在前端使用该指令对应的按钮。但是,原子授权是通过模块的数据版本机制来实现的。我们既可以在现有数据版本中直接修改(因为当前版本还在开发当中),也可以在新的数据版本中修改(因为当前版本已经发布到生产环境,所以要开启新的数据版本)

因此,Cli命令没有添加原子授权的代码骨架,需要我们自行处理

src/suite-vendor/test-party/modules/test-party/backend/src/bean/version.manager.js

  1. 1async init(options) {
  2. 2 // init
  3. 3 if (options.version === 1) {
  4. 4 // add role rights
  5. 5 const roleRights = [
  6. 6 // custom
  7. 7 { roleName: 'system', action: 'partyOver', scopeNames: 0 },
  8. 8+ { roleName: 'system', action: 'partyOver2', scopeNames: 0 },
  9. 9 ];
  10. 10 await this.ctx.bean.role.addRoleRightBatch({ atomClassName: 'party', roleRights });
  11. 11 }
  12. 12}