原子是什么
原子是CabloyJS最基本的要素,如文章、公告、请假单,等等
为什么叫原子?在化学反应中,原子是最基本的粒子。在CabloyJS中,通过原子的组合,就可以实现任何想要的功能,如CMS、OA、CRM、ERP,等等
原子的意义
正由于从各种业务模型中抽象出来一个通用的原子概念,因而,CabloyJS为原子实现了许多通用的特性和功能,从而可以便利的为各类实际业务赋能
术语说明
面向开发人员采用原子术语;面向终端用户采用数据术语。相关术语对照表如下:
| 中文 | 英文 | 中文 | 英文 | |
|---|---|---|---|---|
| 面向开发人员 | 原子 | Atom | 原子类型 | Atom Class |
| 面向终端用户 | 数据 | Data | 数据类型 | Data Class |
业务模块模版:module-business
如果要开发一个业务模块,建议使用业务模块模版module-business创建业务模块的文件骨架。此模版会自动创建与业务相关的代码,大量简化工作量
- 1$ cd /path/to/project
- 2$ npm run cli :create:module moduleName -- [--template=] [--suite=] [--force]
-
suite:指定为哪个套件创建模块
-
force:如果模块已经存在是否强制创建
-
template:目前提供了三个
模块文件模版:
| 名称 | 说明 |
|---|---|
| module-business | 此模版会创建与业务相关的代码,大量简化工作量 |
| module-business-details | 在module-business的基础上增加了与明细业务相关的代码文件 |
| module | 此模版仅包含基本的骨架代码文件 |
新建原子类型
采用模版module-business创建业务模块,系统会自动创建与原子类型相关的一系列源码文件。此外,我们还可以直接向现有的业务模块追加新的原子类型
- 1$ npm run cli :create:atom atomClassName -- [--module=]
统一存储
所有原子数据的基本信息都统一存储到数据表aAtom中,与业务相关的字段存储在业务表中,如testParty。aAtom与业务表是一对一的关系
这种存储机制体现了共性与个性的有机统一,有如下好处:
- 可统一配置
数据权限 - 可统一支持
增删改查等操作 - 可统一支持
用户星标、用户标签操作 - 可统一支持
语言、目录、标签操作 - 可统一支持
搜索操作 - 可统一支持
草稿\正式\历史数据生命周期 - 可统一支持
审批工作流
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
- 1const meta = {
- 2 base: {
- 3 atoms: {
- 4 party: {
- 5 info: {
- 6 bean: 'party',
- 7 title: 'Party',
- 8 tableName: 'testParty',
- 9 tableNameModes: {
- 10 default: 'testPartyView',
- 11 },
- 12 language: false,
- 13 category: true,
- 14 tag: true,
- 15 },
- 16 },
- 17 },
- 18 },
- 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实现实时的推送),从而有效避免您遗漏任何有意义的数据或者任务
评论: