原子是什么

原子是CabloyJS最基本的要素,如文章、公告、请假单,等等

为什么叫原子?在化学反应中,原子是最基本的粒子。在CabloyJS中,通过原子的组合,就可以实现任何想要的功能,如CMS、OA、CRM、ERP,等等

原子的意义

正由于从各种业务模型中抽象出来一个通用的原子概念,因而,CabloyJS为原子实现了许多通用的特性和功能,从而可以便利的为各类实际业务赋能

术语说明

面向开发人员采用原子术语;面向终端用户采用数据术语。相关术语对照表如下:

中文 英文 中文 英文
面向开发人员 原子 Atom 原子类型 Atom Class
面向终端用户 数据 Data 数据类型 Data Class

业务模块模版:module-business

如果要开发一个业务模块,建议使用业务模块模版module-business创建业务模块的文件骨架。此模版会自动创建与业务相关的代码,大量简化工作量

  1. 1$ cd /path/to/project
  2. 2$ npm run cli :create:module moduleName -- [--template=] [--suite=] [--force]
  • suite:指定为哪个套件创建模块

  • force:如果模块已经存在是否强制创建

  • template:目前提供了三个模块文件模版:

名称 说明
module-business 此模版会创建与业务相关的代码,大量简化工作量
module-business-details module-business的基础上增加了与明细业务相关的代码文件
module 此模版仅包含基本的骨架代码文件

新建原子类型

采用模版module-business创建业务模块,系统会自动创建与原子类型相关的一系列源码文件。此外,我们还可以直接向现有的业务模块追加新的原子类型

  1. 1$ npm run cli :create:atom atomClassName -- [--module=]

统一存储

所有原子数据的基本信息都统一存储到数据表aAtom中,与业务相关的字段存储在业务表中,如testPartyaAtom业务表是一对一的关系

这种存储机制体现了共性个性的有机统一,有如下好处:

  1. 可统一配置数据权限
  2. 可统一支持增删改查等操作
  3. 可统一支持用户星标用户标签操作
  4. 可统一支持语言目录标签操作
  5. 可统一支持搜索操作
  6. 可统一支持草稿\正式\历史数据生命周期
  7. 可统一支持审批工作流

aAtom核心字段清单

名称 类型 缺省值 说明
id int 自动增量 关键字段,其他表中引用此字段,名字一般为atomId
createdAt timestamp CURRENT_TIMESTAMP 原子创建时间
updatedAt timestamp CURRENT_TIMESTAMP 原子修改时间
deleted int 0 软删除标记
iid int 0 实例id
itemId int 0 对应的业务表条目Id
atomStage int 0 原子阶段,0:草稿 1:正式 2:历史
atomFlowId int 0 工作流实例Id
atomClassId int 0 对应的原子类型
atomName varchar NULL 原子标题
userIdCreated int 0 创建原子的用户
userIdUpdated int 0 修改原子的用户
allowComment int 1 是否允许评论
starCount int 0 点赞数量
commentCount int 0 评论数量
attachmentCount int 0 附件数量
readCount int 0 阅读次数
roleIdOwner int 0 原子归属角色Id
atomClosed int 0 草稿是否已关闭
atomIdDraft int 0 正式/历史对应的草稿Id
atomIdFormal int 0 草稿/历史对应的正式Id
atomStatic int 0 是否为静态数据
atomStaticKey varchar NULL 原子Key
atomRevision int 0 原子修订号
atomDisabled int 0 原子(作为资源)是否被禁用
atomLanguage varchar NULL 原子的locale值
atomCategoryId int 0 原子归属的目录Id
atomTags JSON NULL 原子归属的标签Id数组

原子类型

原子类型是原子对应的元数据信息,在模块的meta中设置,如模块test-party中原子类型party的元数据信息如下:

src/suite-vendor/test-party/modules/test-party/backend/src/meta.js

  1. 1const meta = {
  2. 2 base: {
  3. 3 atoms: {
  4. 4 party: {
  5. 5 info: {
  6. 6 bean: 'party',
  7. 7 title: 'Party',
  8. 8 tableName: 'testParty',
  9. 9 tableNameModes: {
  10. 10 default: 'testPartyView',
  11. 11 },
  12. 12 language: false,
  13. 13 category: true,
  14. 14 tag: true,
  15. 15 },
  16. 16 },
  17. 17 },
  18. 18 },
  19. 19};
名称 说明
bean 原子类型对应的Bean组件,用于增删改查等指令操作
title 原子类型的标题
tableName 原子类型对应的业务数据表名称
tableNameModes 进行select时,不同模式下采用不同的数据视图构造sql语句
language 是否启用本地化
category 是否启用目录管理,当language=true时,目录按语言分别管理
tag 是否启用标签管理,当language=true时,标签按语言分别管理
  • 更多元数据

除了在模块test-party中演示的元数据之外,还支持以下配置:

名称 缺省值 说明
simple false 是否启用简单模式,参见:简单模式
history true 是否禁用历史副本,参见:简单模式
inner false 是否用于内部管理。如果设置为true,那么在全局搜索数据时(不指定特定的原子类型),该原子类型被忽略
comment true 是否启用评论功能
attachment true 是否启用附件功能

用户星标、用户标签

用户可以对原子设置星标,也可以添加不同的标签,方便对原子快速分类、整理,以及查看

双色统计值提醒

CabloyJS提供了系统级别的双色统计值提醒机制,具体而言就是红色+橘色提示。不同颜色可以代表不同重要程度的数据,一般而言,红色代表紧急的数据,橘色代表重要的数据。当数据被设置星标或标签时,就会自动计算相应颜色的统计值,并进行及时的在线提醒(采用WebSocket实现实时的推送),从而有效避免您遗漏任何有意义的数据或者任务