diff --git a/docs/config/api.ts b/docs/config/api.ts index e3df23bb6..103067cc2 100644 --- a/docs/config/api.ts +++ b/docs/config/api.ts @@ -1,14 +1,15 @@ export default [ '/api', - { - title: 'HTTP API', - type: 'subMenu', - children: ['/api/http', '/api/http/rest-api'], - }, + // { + // title: 'HTTP API', + // type: 'subMenu', + // children: ['/api/http', '/api/http/rest-api'], + // }, { title: '@nocobase/acl', - type: 'subMenu', - children: ['/api/acl/acl', '/api/acl/acl-role', '/api/acl/acl-resource'], + link: '/api/acl/acl', + // type: 'subMenu', + // children: ['/api/acl/acl', '/api/acl/acl-role', '/api/acl/acl-resource'], }, { title: '@nocobase/actions', @@ -52,6 +53,18 @@ export default [ '/api/database/operators', ], }, + { + title: '@nocobase/data-source-manager', + type: 'subMenu', + children: [ + '/api/data-source-manager', + '/api/data-source-manager/data-source', + '/api/data-source-manager/i-collection-manager', + '/api/data-source-manager/i-collection', + '/api/data-source-manager/i-repository', + '/api/data-source-manager/i-model', + ], + }, { title: '@nocobase/logger', link: '/api/logger', @@ -61,14 +74,18 @@ export default [ type: 'subMenu', children: [ '/api/resourcer', - '/api/resourcer/resource', + // '/api/resourcer/resource', '/api/resourcer/action', - '/api/resourcer/middleware', + // '/api/resourcer/middleware', ], }, { title: '@nocobase/sdk', - link: '/api/sdk', + children: [ + '/api/sdk', + '/api/sdk/auth', + '/api/sdk/storage', + ] }, { title: '@nocobase/server', @@ -91,6 +108,10 @@ export default [ { title: '@nocobase/test', type: 'subMenu', - children: ['/api/test/e2e'], + children: [ + '/api/test/server', + '/api/test/client', + '/api/test/e2e', + ], }, ] \ No newline at end of file diff --git a/docs/config/development.ts b/docs/config/development.ts index 6c71f3650..35b6e4e35 100644 --- a/docs/config/development.ts +++ b/docs/config/development.ts @@ -7,6 +7,7 @@ export default [ '/development', '/development/your-fisrt-plugin', '/development/app-ds', + '/development/pm', // '/development/plugin-ds', // '/development/learning-guide', ], @@ -17,37 +18,46 @@ export default [ type: 'group', children: [ '/development/server', + '/development/server/data-source', { title: 'Collections & Fields', 'title.zh-CN': '数据表和字段', children: [ '/development/server/collections', - '/development/server/collections/options', - '/development/server/collections/configure', - '/development/server/collections/association-fields', - '/development/server/collections/field-extension', + '/development/server/collections/field-type', + '/development/server/collections/field-interface', '/development/server/collections/collection-template', + // '/development/server/collections/options', + '/development/server/collections/plugin-collections', + // '/development/server/collections/association-fields', + // '/development/server/collections/field-extension', + // '/development/server/collections/collection-template', ], }, - // { - // title: 'Resources & Actions', - // 'title.zh-CN': '资源和操作', - // children: [ - // '/development/server/resources-actions', - // '/development/server/resources-actions/configuration', - // // '/development/server/resources-actions/to-resource', - // '/development/server/resources-actions/vs-router', - // ], - // }, - '/development/server/resources-actions', - // '/development/server/routing', + { + title: 'Resources & Actions', + 'title.zh-CN': '资源和操作', + children: [ + '/development/server/resources-actions-v2', + // '/development/server/resources-actions-v2/request', + '/development/server/resources-actions-v2/resource-manager', + // '/development/server/resources-actions/configuration', + // '/development/server/resources-actions/to-resource', + // '/development/server/resources-actions/vs-router', + ], + }, + // '/development/server/resources-actions', + '/development/server/context', '/development/server/middleware', - '/development/server/commands', + '/development/server/routing', + '/development/server/acl', '/development/server/events', + '/development/server/caching', + '/development/server/migration', + '/development/server/commands', '/development/server/i18n', '/development/server/logger', '/development/server/telemetry', - '/development/server/migration', '/development/server/test', ], }, diff --git a/docs/config/handbook.ts b/docs/config/handbook.ts new file mode 100644 index 000000000..3b477088b --- /dev/null +++ b/docs/config/handbook.ts @@ -0,0 +1,796 @@ +export default [ + { + title: 'Guide', + 'title.zh-CN': '指南', + link: '/handbook', + }, + { + title: '数据建模', + 'title.zh-CN': '数据建模', + type: 'group', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/handbook/data-modeling', + }, + { + title: 'Data model tools', + 'title.zh-CN': '数据建模工具', + children: [ + { + title: 'Data source manager', + 'title.zh-CN': '数据源管理', + // subTitle: '@nocobase/plugin-data-source-manager', + link: '/handbook/data-source-manager', + }, + { + title: 'Graph collection manager', + 'title.zh-CN': '可视化数据表管理', + // subTitle: '@nocobase/plugin-graph-collection-manager', + link: '/handbook/graph-collection-manager', + }, + ], + }, + { + title: 'Data sources', + 'title.zh-CN': '数据源', + children: [ + { + title: 'Data sources: Main database', + 'title.zh-CN': '主数据库:Main', + // subTitle: '@nocobase/plugin-collection-manager', + link: '/handbook/data-source-main', + }, + { + title: 'External MySQL', + 'title.zh-CN': '外部数据源:MySQL', + // subTitle: '@nocobase/plugin-data-source-external-mysql', + link: '/handbook/data-source-external-mysql', + }, + { + title: 'External MariaDB', + 'title.zh-CN': '外部数据源:MariaDB', + // subTitle: '@nocobase/plugin-data-source-external-mariadb', + link: '/handbook/data-source-external-mariadb', + }, + { + title: 'External PostgreSQL', + 'title.zh-CN': '外部数据源:PostgreSQL', + // subTitle: '@nocobase/plugin-data-source-external-postgres', + link: '/handbook/data-source-external-postgres', + }, + ], + }, + { + title: 'Collections', + 'title.zh-CN': '数据表', + children: [ + { + title: '文件表', + 'title.zh-CN': '文件表', + // subTitle: '@nocobase/plugin-collection-fdw', + link: '/handbook/file-manager/file-collection', + }, + { + title: '树表', + 'title.zh-CN': '树表', + // subTitle: '@nocobase/plugin-collection-fdw', + link: '/handbook/collection-tree', + }, + { + title: '日历表', + 'title.zh-CN': '日历表', + // subTitle: '@nocobase/plugin-collection-fdw', + link: '/handbook/calendar/calendar-collection', + }, + { + title: 'Expression collection', + 'title.zh-CN': '表达式表', + // subTitle: '@nocobase/plugin-collection-fdw', + link: '/handbook/workflow-dynamic-calculation/expression', + }, + { + title: 'SQL 表', + 'title.zh-CN': 'SQL 表', + // subTitle: '@nocobase/plugin-collection-sql', + link: '/handbook/collection-sql', + }, + { + title: '数据库视图', + 'title.zh-CN': '数据库视图', + // subTitle: '@nocobase/plugin-collection-view', + link: '/handbook/collection-view', + }, + { + title: 'Foreign data collection(FDW)', + 'title.zh-CN': '外部数据表', + // subTitle: '@nocobase/plugin-collection-fdw', + link: '/handbook/collection-fdw', + }, + ], + }, + { + title: 'Collection fields', + 'title.zh-CN': '数据表字段', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + // subTitle: '@nocobase/plugin-data-source-external-mariadb', + link: '/handbook/data-modeling/collection-fields', + }, + { + title: 'Field types', + 'title.zh-CN': '数据类型', + children: [ + { + title: 'String', + 'title.zh-CN': '字符串', + link: '/handbook/data-modeling/collection-fields/types/string', + }, + ], + }, + { + title: 'Field interfaces', + 'title.zh-CN': 'UI 类型', + children: [ + { + title: '附件', + 'title.zh-CN': '附件', + link: '/handbook/file-manager/attachment-field', + }, + { + title: '公式', + 'title.zh-CN': '公式', + link: '/handbook/field-formula', + }, + { + title: '中国行政区划', + 'title.zh-CN': '中国行政区划', + link: '/handbook/china-region', + }, + { + title: '自动编码', + 'title.zh-CN': '自动编码', + link: '/handbook/field-sequence', + }, + { + title: '快照', + 'title.zh-CN': '快照', + link: '/handbook/field-snapshot', + }, + ], + }, + ], + }, + ], + }, + { + title: 'Edit UI', + 'title.zh-CN': '配置界面', + type: 'group', + children: [ + { + title: 'Edit UI mode', + 'title.zh-CN': '配置界面模式', + link: '/handbook/ui/ui-editor' + }, + { + title: 'Menu', + 'title.zh-CN': '菜单', + link: '/handbook/ui/menus' + }, + { + title: 'Page', + 'title.zh-CN': '页面', + link: '/handbook/ui/pages' + }, + { + title: 'Pop-up', + 'title.zh-CN': '弹窗', + link: '/handbook/ui/pop-up' + }, + { + title: 'Blocks', + 'title.zh-CN': '添加区块', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/handbook/ui/blocks' + }, + { + title: 'Data blocks', + 'title.zh-CN': '数据区块', + children: [ + { + title: 'Table', + 'title.zh-CN': '表格', + link: '/handbook/ui/blocks/data-blocks/table' + }, + { + title: 'Form', + 'title.zh-CN': '表单', + link: '/handbook/ui/blocks/data-blocks/form' + }, + { + title: 'Table', + 'title.zh-CN': '详情', + link: '/handbook/ui/blocks/data-blocks/details' + }, + { + title: 'Gantt', + 'title.zh-CN': '甘特图', + link: '/handbook/block-gantt' + }, + { + title: 'Calendar', + 'title.zh-CN': '日历', + link: '/handbook/calendar/calendar-block' + }, + ], + }, + { + title: 'Filter blocks', + 'title.zh-CN': '筛选区块', + children: [ + { + title: 'Form', + 'title.zh-CN': '表单', + link: '/handbook/ui/blocks/filter-blocks/form' + }, + ], + }, + { + title: 'Other blocks', + 'title.zh-CN': '其他区块', + children: [ + { + title: 'Markdown', + 'title.zh-CN': 'Markdown', + link: '/handbook/ui/blocks/other-blocks/markdown' + }, + { + title: 'Workflow todos', + 'title.zh-CN': '工作流待办', + link: '/handbook/workflow-manual/workflow-todos-block' + }, + ], + }, + ], + }, + { + title: 'Configure fields', + 'title.zh-CN': '配置字段', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/handbook/ui/fields' + }, + { + title: '通用属性设置', + 'title.zh-CN': '通用属性设置', + children: [ + { + title: '表格字段', + 'title.zh-CN': '表格字段', + link: '/handbook/ui/fields/field-settings/table-column', + }, + { + title: '表单字段', + 'title.zh-CN': '表单字段', + link: '/handbook/ui/fields/field-settings/form-item', + }, + { + title: '批量编辑表单', + 'title.zh-CN': '批量编辑表单', + link: '/handbook/ui/fields/field-settings/BulkEditFormItem', + }, + { + title: '筛选表单字', + 'title.zh-CN': '筛选表单', + link: '/handbook/ui/fields/field-settings/filter-form-item', + }, + { + title: '折叠面板', + 'title.zh-CN': '折叠面板', + link: '/handbook/ui/fields/field-settings/FilterCollapseItem', + }, + ], + }, + { + title: '特有属性设置', + 'title.zh-CN': '特有属性设置', + children: [ + { + title: 'DatePicker', + 'title.zh-CN': 'DatePicker', + link: '/handbook/ui/fields/field-settings/DatePicker', + }, + { + title: '级联选择', + 'title.zh-CN': '级联选择', + link: '/handbook/ui/fields/field-settings/CascadeSelect', + }, + { + title: '子表单', + 'title.zh-CN': '子表单', + link: '/handbook/ui/fields/field-settings/Nester', + }, + { + title: '弹窗子表单', + 'title.zh-CN': '弹窗子表单', + link: '/handbook/ui/fields/field-settings/PopoverNester', + }, + { + title: '选择器', + 'title.zh-CN': '选择器', + link: '/handbook/ui/fields/field-settings/Select', + }, + { + title: '数据选择器', + 'title.zh-CN': '数据选择器', + link: '/handbook/ui/fields/field-settings/Picker', + }, + { + title: '子表格', + 'title.zh-CN': '子表格', + link: '/handbook/ui/fields/field-settings/SubTable', + }, + { + title: '标签', + 'title.zh-CN': '标签', + link: '/handbook/ui/fields/field-settings/Tag', + }, + { + title: '文件管理器', + 'title.zh-CN': '文件管理器', + link: '/handbook/ui/fields/field-settings/FileManager', + }, + ], + }, + ], + }, + { + title: 'Configure actions', + 'title.zh-CN': '配置操作', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/handbook/ui/actions' + }, + { + title: '常用设置项', + 'title.zh-CN': '常用设置项', + children: [ + { + title: '联动规则', + 'title.zh-CN': '联动规则', + link: '/handbook/ui/actions/linkage' + }, + { + title: '打开方式', + 'title.zh-CN': '打开方式', + link: '/handbook/ui/actions/open-mode' + }, + { + title: '弹窗尺寸', + 'title.zh-CN': '弹窗尺寸', + link: '/handbook/ui/actions/popup-size' + }, + { + title: '二次确认', + 'title.zh-CN': '二次确认', + link: '/handbook/ui/actions/double-check' + }, + { + title: '绑定工作流', + 'title.zh-CN': '绑定工作流', + link: '/handbook/ui/actions/bind-workflow' + }, + { + title: '字段赋值', + 'title.zh-CN': '字段赋值', + link: '/handbook/ui/actions/assign-values' + }, + ], + }, + { + title: '操作类型', + 'title.zh-CN': '操作类型', + children: [ + { + title: 'Pop-up', + 'title.zh-CN': '自定义弹窗', + link: '/handbook/ui/actions/types/pop-up' + }, + { + title: 'Add new', + 'title.zh-CN': '添加', + link: '/handbook/ui/actions/types/add-new' + }, + ], + }, + ], + }, + { + title: 'Mobile client', + 'title.zh-CN': '移动端', + link: '/handbook/mobile-client' + }, + ], + }, + { + title: '核心模块', + 'title.zh-CN': '核心模块', + type: 'group', + children: [ + { + title: 'Users & permissions', + 'title.zh-CN': '用户和权限', + children: [ + { + title: 'Users', + 'title.zh-CN': '用户', + // subTitle: '@nocobase/plugin-users', + link: '/handbook/users', + }, + { + title: 'ACL', + 'title.zh-CN': '角色和权限', + link: '/handbook/acl', + }, + { + title: 'Departments', + 'title.zh-CN': '部门', + link: '/handbook/departments', + }, + ], + }, + { + title: 'Users authentication', + 'title.zh-CN': '用户认证', + children: [ + { + title: 'Authentication', + 'title.zh-CN': '用户认证', + // subTitle: '@nocobase/plugin-auth', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/handbook/auth', + }, + { + title: 'User manual', + 'title.zh-CN': '使用手册', + link: '/handbook/auth/user', + }, + { + title: 'Development', + 'title.zh-CN': '开发指南', + children: ['/handbook/auth/dev/guide', '/handbook/auth/dev/api'], + }, + ], + }, + { + title: 'Authentication - CAS', + 'title.zh-CN': '用户认证 - CAS', + // subTitle: '@nocobase/plugin-cas', + link: '/handbook/auth-cas', + }, + { + title: 'Authentication - OIDC', + 'title.zh-CN': '用户认证 - OIDC', + // subTitle: '@nocobase/plugin-oidc', + children: [ + { + title: 'User manual', + 'title.zh-CN': '使用手册', + link: '/handbook/auth-oidc', + }, + { + title: 'Example', + 'title.zh-CN': '示例', + children: ['/handbook/auth-oidc/example/google'], + }, + ], + }, + { + title: 'Authentication - SAML', + 'title.zh-CN': '用户认证 - SAML', + // subTitle: '@nocobase/plugin-saml', + children: [ + { + title: 'User manual', + 'title.zh-CN': '使用手册', + link: '/handbook/auth-saml', + }, + { + title: 'Example', + 'title.zh-CN': '示例', + children: ['/handbook/auth-saml/example/google'], + }, + ], + }, + { + title: 'Authentication - SMS', + 'title.zh-CN': '用户认证 - 短信', + // subTitle: '@nocobase/plugin-sms-auth', + link: '/handbook/auth-sms', + }, + { + title: 'Verification', + 'title.zh-CN': '验证码', + // subTitle: '@nocobase/plugin-verification', + link: '/handbook/verification', + }, + { + title: 'API Keys', + 'title.zh-CN': 'API 密钥', + // subTitle: '@nocobase/plugin-verification', + link: '/handbook/api-keys', + }, + ], + }, + { + title: 'Workflow', + 'title.zh-CN': '工作流', + children: [ + { + title: 'Workflow', + 'title.zh-CN': '工作流', + // subTitle: '@nocobase/plugin-workflow', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/handbook/workflow', + }, + { + title: 'User manual', + 'title.zh-CN': '使用手册', + children: [ + '/handbook/workflow/manual', + '/handbook/workflow/manual/advanced', + { + title: 'Triggers', + 'title.zh-CN': '触发器', + children: [ + '/handbook/workflow/manual/triggers', + '/handbook/workflow/manual/triggers/collection', + '/handbook/workflow/manual/triggers/schedule', + ], + }, + { + title: 'Nodes', + 'title.zh-CN': '节点', + children: [ + '/handbook/workflow/manual/nodes', + '/handbook/workflow/manual/nodes/condition', + '/handbook/workflow/manual/nodes/calculation', + '/handbook/workflow/manual/nodes/create', + '/handbook/workflow/manual/nodes/update', + '/handbook/workflow/manual/nodes/destroy', + '/handbook/workflow/manual/nodes/query', + '/handbook/workflow/manual/nodes/end', + ], + }, + ], + }, + { + title: 'Development', + 'title.zh-CN': '开发指南', + children: [ + '/handbook/workflow/development', + '/handbook/workflow/development/trigger', + '/handbook/workflow/development/instruction', + '/handbook/workflow/development/api', + ], + }, + ], + }, + { + title: 'Workflow - Aggregate', + 'title.zh-CN': '工作流 - 聚合节点', + // subTitle: '@nocobase/plugin-workflow-aggregate', + link: '/handbook/workflow-aggregate', + }, + { + title: 'Workflow - Approval', + 'title.zh-CN': '工作流 - 审批', + // subTitle: '@nocobase/plugin-workflow-approval', + link: '/handbook/workflow-approval', + }, + { + title: 'Workflow - Delay', + 'title.zh-CN': '工作流 - 延时节点', + // subTitle: '@nocobase/plugin-workflow-delay', + link: '/handbook/workflow-delay', + }, + { + title: 'Workflow - Dynamic calculation', + 'title.zh-CN': '工作流 - 动态表达式计算', + // subTitle: '@nocobase/plugin-workflow-dynamic-calculation', + link: '/handbook/workflow-dynamic-calculation', + }, + { + title: 'Workflow - Form trigger', + 'title.zh-CN': '工作流 - 表单事件', + // subTitle: '@nocobase/plugin-workflow-form-trigger', + link: '/handbook/workflow-form-trigger', + }, + { + title: 'Workflow - JSON query', + 'title.zh-CN': '工作流 - JSON 解析节点', + // subTitle: '@nocobase/plugin-workflow-json-query', + link: '/handbook/workflow-json-query', + }, + { + title: 'Workflow - Loop', + 'title.zh-CN': '工作流 - 循环节点', + // subTitle: '@nocobase/plugin-workflow-loop', + link: '/handbook/workflow-loop', + }, + { + title: 'Workflow - Manual', + 'title.zh-CN': '工作流 - 人工节点', + // subTitle: '@nocobase/plugin-workflow-manual', + link: '/handbook/workflow-manual', + }, + { + title: 'Workflow - Parallel', + 'title.zh-CN': '工作流 - 并行分支节点', + // subTitle: '@nocobase/plugin-workflow-parallel', + link: '/handbook/workflow-parallel', + }, + { + title: 'Workflow - Request', + 'title.zh-CN': '工作流 - HTTP 请求节点', + // subTitle: '@nocobase/plugin-workflow-request', + link: '/handbook/workflow-request', + }, + { + title: 'Workflow - Request interceptor', + 'title.zh-CN': '工作流 - 请求拦截器', + // subTitle: '@nocobase/plugin-workflow-request-interceptor', + link: '/handbook/workflow-request-interceptor', + }, + { + title: 'Workflow - Response message', + 'title.zh-CN': '工作流 - 响应消息', + // subTitle: '@nocobase/plugin-workflow-response-message', + link: '/handbook/workflow-response-message', + }, + { + title: 'Workflow - SQL', + 'title.zh-CN': '工作流 - SQL 操作节点', + // subTitle: '@nocobase/plugin-workflow-sql', + link: '/handbook/workflow-sql', + }, + { + title: 'Workflow - Varaible', + 'title.zh-CN': '工作流 - 变量节点', + // subTitle: '@nocobase/plugin-workflow-variable', + link: '/handbook/workflow-variable', + }, + ], + }, + { + title: 'File storages', + 'title.zh-CN': '文件存储', + children: [ + { + title: '文件管理器', + 'title.zh-CN': '文件管理器', + link: '/handbook/file-manager', + }, + { + title: '文件存储:本地', + 'title.zh-CN': '文件存储:本地', + link: '/handbook/file-manager/file-storage-local', + }, + { + title: '文件存储:OSS', + 'title.zh-CN': '文件存储:OSS', + link: '/handbook/file-storage-oss', + }, + { + title: '文件存储:S3', + 'title.zh-CN': '文件存储:S3', + link: '/handbook/file-storage-s3', + }, + { + title: '文件存储:COS', + 'title.zh-CN': '文件存储:COS', + link: '/handbook/file-storage-cos', + }, + ], + }, + { + title: 'Logging and monitoring', + 'title.zh-CN': '日志和监控', + children: [ + { + title: 'Logger', + 'title.zh-CN': '日志', + // subTitle: '@nocobase/plugin-logger', + link: '/handbook/logger', + }, + { + title: 'Telemetry - Prometheus', + 'title.zh-CN': '遥测 - Prometheus', + // subTitle: '@nocobase/plugin-telemetry-prometheus', + link: '/handbook/telemetry-prometheus', + }, + { + title: 'Audit logs', + 'title.zh-CN': '审计日志', + // subTitle: '@nocobase/plugin-audit-logs', + link: '/handbook/audit-logs', + }, + ], + }, + { + title: '多应用管理', + 'title.zh-CN': '多应用管理', + // subTitle: '@nocobase/plugin-api-doc', + link: '/handbook/multi-app-manager', + // children: ['/plugins/api-doc'], + }, + ], + }, + { + title: 'System management', + 'title.zh-CN': '系统管理', + type: 'group', + children: [ + { + title: 'Plugin manager', + 'title.zh-CN': '插件管理', + link: '/handbook/plugin-manager' + }, + { + title: 'System settings', + 'title.zh-CN': '系统设置', + // subTitle: '@nocobase/plugin-system-settings', + link: '/handbook/system-settings', + }, + { + title: 'Theme editor', + 'title.zh-CN': '主题编辑器', + // subTitle: '@nocobase/plugin-theme-editor', + link: '/handbook/theme-editor', + }, + { + title: 'Localization management', + 'title.zh-CN': '本地化管理', + // subTitle: '@nocobase/plugin-localization-management', + link: '/handbook/localization-management', + }, + { + title: 'Backup & Restore', + 'title.zh-CN': '备份和还原', + // subTitle: '@nocobase/plugin-backup-restore', + link: '/handbook/backup-restore', + }, + ], + }, + { + title: 'Others', + 'title.zh-CN': '其他', + type: 'group', + children: [ + { + title: 'API doc', + 'title.zh-CN': 'API 文档', + // subTitle: '@nocobase/plugin-api-doc', + link: '/handbook/api-doc', + // children: ['/plugins/api-doc'], + }, + ], + }, +] diff --git a/docs/config/index.ts b/docs/config/index.ts index 57f5e0b37..e03c0b63c 100644 --- a/docs/config/index.ts +++ b/docs/config/index.ts @@ -1,16 +1,16 @@ import api from './api'; import breaking from './breaking'; import development from './development'; -import manual from './manual'; +import handbook from './handbook'; import nav from './nav'; -import plugins from './plugins'; import welcome from './welcome'; const sidebar = { '/welcome': welcome, - '/manual': manual, + // '/manual': manual, + '/handbook': handbook, '/development': development, - '/plugins': plugins, + // '/plugins': plugins, '/api': api, '/breaking-changes': breaking, }; diff --git a/docs/config/manual.ts b/docs/config/manual.ts index 1610427a5..63a7baf77 100644 --- a/docs/config/manual.ts +++ b/docs/config/manual.ts @@ -15,73 +15,87 @@ export default [ type: 'group', children: [ { - title: 'Data source', - 'title.zh-CN': '数据源配置', + title: 'Data modeling', + 'title.zh-CN': '数据建模', children: [ { title: 'Overview', 'title.zh-CN': '概述', - link: '/manual/collection', + link: '/manual/data-modeling', }, { title: 'Collection management', 'title.zh-CN': '数据表管理', + link: '/manual/collection/management', + }, + { + title: '字段类型', + 'title.zh-CN': '字段类型', children: [ { - title: 'Collection management', - 'title.zh-CN': '数据表管理', - link: '/manual/collection/management', + title: '概述', + 'title.zh-CN': '概述', + link: '/manual/data-modeling/fields', + }, + { + title: 'Field data type', + 'title.zh-CN': '字段数据类型', + children: [], }, { - title: 'Collection templates', - 'title.zh-CN': '数据表模板', + title: 'Field interface', + 'title.zh-CN': '字段 UI 类型', children: [ - '/manual/collection/collection-templates', - '/manual/collection/collection-templates/general', - '/manual/collection/collection-templates/tree', - '/manual/collection/collection-templates/calender', - '/manual/collection/collection-templates/file', - '/manual/collection/collection-templates/expression', - '/manual/collection/collection-templates/sql', - '/manual/collection/collection-templates/view', + '/manual/collection/fields', + '/manual/collection/fields/basic', + '/manual/collection/fields/choices', + '/manual/collection/fields/media', + '/manual/collection/fields/date', + '/manual/collection/fields/relation', + '/manual/collection/fields/map', + '/manual/collection/fields/advanced', + '/manual/collection/fields/system', ], - } + }, ], }, { - title: 'Third-party databases', - 'title.zh-CN': '第三方数据库', + title: 'Collection templates', + 'title.zh-CN': '数据表模板', children: [ - { - title: 'Connect to external data tables', - 'title.zh-CN': '连接外部数据表', - children: [ - '/manual/collection/collection-fdw', - '/manual/collection/collection-fdw/enable-federated', - ], - }, - '/manual/collection/multiple-databases', + '/manual/collection/collection-templates', + '/manual/collection/collection-templates/general', + '/manual/collection/collection-templates/tree', + '/manual/collection/collection-templates/calender', + '/manual/collection/collection-templates/file', + '/manual/collection/collection-templates/expression', + '/manual/collection/collection-templates/sql', ], }, { - title: 'Fields', - 'title.zh-CN': '字段', + title: '连接数据库视图', + 'title.zh-CN': '连接数据库视图', + link: '/manual/collection/collection-templates/view', + }, + { + title: 'Connect to foreign data', + 'title.zh-CN': '连接外部数据', children: [ - '/manual/collection/fields', - '/manual/collection/fields/basic', - '/manual/collection/fields/choices', - '/manual/collection/fields/media', - '/manual/collection/fields/date', - '/manual/collection/fields/relation', - '/manual/collection/fields/map', - '/manual/collection/fields/advanced', - '/manual/collection/fields/system', + '/manual/collection/collection-fdw', + '/manual/collection/collection-fdw/enable-federated', ], }, + '/manual/collection/inherit', { - title: 'Inherit', - 'title.zh-CN': '继承', - link: '/manual/collection/inherit', + title: 'Multiple data sources', + 'title.zh-CN': '多数据源', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '#', + }, + ], }, ], }, diff --git a/docs/config/nav.ts b/docs/config/nav.ts index 73aa211f2..16e653a9b 100644 --- a/docs/config/nav.ts +++ b/docs/config/nav.ts @@ -20,15 +20,20 @@ export default [ // link: '/breaking-changes', // }, { - title: 'User manual', + title: 'Handbook', 'title.zh-CN': '使用手册', - link: '/manual/quick-start/the-first-app', - }, - { - title: 'Plugins', - 'title.zh-CN': '插件列表', - link: '/plugins', + link: '/handbook', }, + // { + // title: 'User manual', + // 'title.zh-CN': '使用手册', + // link: '/manual/quick-start/the-first-app', + // }, + // { + // title: 'Plugins', + // 'title.zh-CN': '插件列表', + // link: '/plugins', + // }, { title: 'Plugin development', 'title.zh-CN': '插件开发', diff --git a/docs/config/plugins.ts b/docs/config/plugins.ts index e2399cfbf..d30928d5c 100644 --- a/docs/config/plugins.ts +++ b/docs/config/plugins.ts @@ -10,8 +10,8 @@ export default [ type: 'group', children: [ { - title: 'Data Model', - 'title.zh-CN': '数据模型', + title: 'Data modeling', + 'title.zh-CN': '数据建模', children: [ { title: 'Collection manager', @@ -25,24 +25,42 @@ export default [ }, ], }, - { - title: 'Connect to foreign data', - 'title.zh-CN': '连接外部数据', - subTitle: '@nocobase/plugin-collection-fdw', - link: '/plugins/collection-fdw', - }, { title: 'Graph collection manager', 'title.zh-CN': '可视化数据表管理', subTitle: '@nocobase/plugin-graph-collection-manager', link: '/plugins/graph-collection-manager', }, - ], - }, - { - title: 'Fields', - 'title.zh-CN': '字段', - children: [ + { + title: 'Connect to foreign data(FDW)', + 'title.zh-CN': '连接外部数据(FDW)', + subTitle: '@nocobase/plugin-collection-fdw', + link: '/plugins/collection-fdw', + }, + { + title: 'Data source manager', + 'title.zh-CN': '数据源管理', + subTitle: '@nocobase/plugin-data-source-manager', + link: '/plugins/data-source-manager', + }, + { + title: 'Data source - MariaDB', + 'title.zh-CN': '数据源 - MariaDB', + subTitle: '@nocobase/plugin-data-source-mariadb', + link: '/plugins/data-source-mariadb', + }, + { + title: 'Data source - MySQL', + 'title.zh-CN': '数据源 - MySQL', + subTitle: '@nocobase/plugin-data-source-mysql', + link: '/plugins/data-source-mysql', + }, + { + title: 'Data source - PostgreSQL', + 'title.zh-CN': '数据源 - PostgreSQL', + subTitle: '@nocobase/plugin-data-source-postgres', + link: '/plugins/data-source-postgres', + }, { title: 'China region', 'title.zh-CN': '中国行政区', @@ -67,12 +85,37 @@ export default [ subTitle: '@nocobase/plugin-snapshot-field', link: '/plugins/snapshot-field', }, + { + title: 'File manager', + 'title.zh-CN': '文件管理器', + subTitle: '@nocobase/plugin-file-manager', + link: '/plugins/file-manager', + // children: ['/plugins/file-manager', '/plugins/file-manager/user'], + }, ], }, { - title: 'Blocks', - 'title.zh-CN': '区块', + title: 'UI editor', + 'title.zh-CN': 'UI 配置', children: [ + { + title: 'UI schema storage', + 'title.zh-CN': 'UI schema 存储', + subTitle: '@nocobase/plugin-ui-schema-storage', + link: '/plugins/ui-schema-storage', + }, + { + title: 'Web client', + 'title.zh-CN': 'WEB 客户端', + subTitle: '@nocobase/plugin-client', + link: '/plugins/client', + }, + { + title: 'Mobile client', + 'title.zh-CN': 'Mobile 客户端', + subTitle: '@nocobase/plugin-mobile-client', + link: '/plugins/mobile-client', + }, { title: 'Data visualization', 'title.zh-CN': '数据可视化', @@ -127,12 +170,6 @@ export default [ subTitle: '@nocobase/plugin-map', link: '/plugins/map', }, - ], - }, - { - title: 'Actions', - 'title.zh-CN': '操作', - children: [ { title: 'Action - Bulk edit ', 'title.zh-CN': '操作 - 批量编辑', @@ -178,28 +215,9 @@ export default [ ], }, { - title: 'Users & permissions', - 'title.zh-CN': '用户和权限', + title: 'Users authentication', + 'title.zh-CN': '用户认证', children: [ - { - title: 'Users', - 'title.zh-CN': '用户', - subTitle: '@nocobase/plugin-users', - link: '/plugins/users', - }, - { - title: 'ACL', - 'title.zh-CN': '权限控制', - subTitle: '@nocobase/plugin-acl', - children: [ - { - title: 'Overview', - 'title.zh-CN': '概述', - link: '/plugins/acl', - }, - '/plugins/acl/user', - ], - }, { title: 'Authentication', 'title.zh-CN': '用户认证', @@ -268,6 +286,37 @@ export default [ subTitle: '@nocobase/plugin-sms-auth', link: '/plugins/sms-auth', }, + { + title: 'Verification', + 'title.zh-CN': '验证码', + subTitle: '@nocobase/plugin-verification', + link: '/plugins/verification', + }, + ], + }, + { + title: 'Users & permissions', + 'title.zh-CN': '用户和权限', + children: [ + { + title: 'Users', + 'title.zh-CN': '用户', + subTitle: '@nocobase/plugin-users', + link: '/plugins/users', + }, + { + title: 'ACL', + 'title.zh-CN': '权限控制', + subTitle: '@nocobase/plugin-acl', + children: [ + { + title: 'Overview', + 'title.zh-CN': '概述', + link: '/plugins/acl', + }, + '/plugins/acl/user', + ], + }, ], }, { @@ -413,90 +462,6 @@ export default [ }, ], }, - { - title: 'System management', - 'title.zh-CN': '系统管理', - children: [ - { - title: 'System settings', - 'title.zh-CN': '系统设置', - subTitle: '@nocobase/plugin-system-settings', - link: '/plugins/system-settings', - }, - { - title: 'Backup & Restore', - 'title.zh-CN': '备份和还原', - subTitle: '@nocobase/plugin-backup-restore', - link: '/plugins/backup-restore', - }, - { - title: 'Multi-app manager', - 'title.zh-CN': '多应用管理', - subTitle: '@nocobase/plugin-multi-app-manager', - link: '/plugins/multi-app-manager', - }, - { - title: 'Theme editor', - 'title.zh-CN': '主题编辑器', - subTitle: '@nocobase/plugin-theme-editor', - link: '/plugins/theme-editor', - }, - ], - }, - { - title: 'System & security', - 'title.zh-CN': '系统和安全', - children: [ - { - title: 'Audit logs', - 'title.zh-CN': '审计日志', - subTitle: '@nocobase/plugin-audit-logs', - link: '/plugins/audit-logs', - }, - { - title: 'Logger', - 'title.zh-CN': '日志', - subTitle: '@nocobase/plugin-logger', - link: '/plugins/logger', - }, - { - title: 'Telemetry - Prometheus', - 'title.zh-CN': '遥测 - Prometheus', - subTitle: '@nocobase/plugin-telemetry-prometheus', - link: '/plugins/telemetry-prometheus', - }, - { - title: 'UI schema storage', - 'title.zh-CN': 'UI schema 存储', - subTitle: '@nocobase/plugin-ui-schema-storage', - link: '/plugins/ui-schema-storage', - }, - // { - // title: 'Client - Web', - // 'title.zh-CN': '客户端 - Web', - // subTitle: '@nocobase/plugin-client', - // children: [ - // { - // title: 'Overview', - // 'title.zh-CN': '概述', - // link: '/plugins/client', - // }, - // ], - // }, - ], - }, - { - title: 'Third party services', - 'title.zh-CN': '第三方服务', - children: [ - { - title: 'Verification', - 'title.zh-CN': '验证码', - subTitle: '@nocobase/plugin-verification', - link: '/plugins/verification', - }, - ], - }, { title: 'Others', 'title.zh-CN': '其他', @@ -516,17 +481,10 @@ export default [ // children: ['/plugins/api-keys'], }, { - title: 'Client - Mobile', - 'title.zh-CN': '客户端 - 移动端', - subTitle: '@nocobase/plugin-mobile-client', - link: '/plugins/mobile-client', - }, - { - title: 'File manager', - 'title.zh-CN': '文件管理器', - subTitle: '@nocobase/plugin-file-manager', - link: '/plugins/file-manager', - // children: ['/plugins/file-manager', '/plugins/file-manager/user'], + title: 'Backup & Restore', + 'title.zh-CN': '备份和还原', + subTitle: '@nocobase/plugin-backup-restore', + link: '/plugins/backup-restore', }, { title: 'Localization management', @@ -534,6 +492,24 @@ export default [ subTitle: '@nocobase/plugin-localization-management', link: '/plugins/localization-management', }, + { + title: 'Multi-app manager', + 'title.zh-CN': '多应用管理', + subTitle: '@nocobase/plugin-multi-app-manager', + link: '/plugins/multi-app-manager', + }, + { + title: 'System settings', + 'title.zh-CN': '系统设置', + subTitle: '@nocobase/plugin-system-settings', + link: '/plugins/system-settings', + }, + { + title: 'Theme editor', + 'title.zh-CN': '主题编辑器', + subTitle: '@nocobase/plugin-theme-editor', + link: '/plugins/theme-editor', + }, ], }, ], diff --git a/docs/config/welcome.ts b/docs/config/welcome.ts index 89894b54f..0cd87ba8a 100644 --- a/docs/config/welcome.ts +++ b/docs/config/welcome.ts @@ -52,7 +52,7 @@ export default [ title: 'Release notes', 'title.zh-CN': '更新日志', children: [ - // '/welcome/release/v0200-changelog', + '/welcome/release/v0200-changelog', '/welcome/release/v0190-changelog', '/welcome/release/v0180-changelog', '/welcome/release/v0170-changelog', diff --git a/docs/zh-CN/api/acl/acl.md b/docs/zh-CN/api/acl/acl.md index 7e4486aef..b5d44286f 100644 --- a/docs/zh-CN/api/acl/acl.md +++ b/docs/zh-CN/api/acl/acl.md @@ -2,261 +2,28 @@ ## 概览 -ACL 为 Nocobase 中的权限控制模块。在 ACL 中注册角色、资源以及配置相应权限之后,即可对角色进行权限判断。 - ### 基本使用 -```javascript -const { ACL } = require('@nocobase/acl'); - -const acl = new ACL(); - -// 定义一个名称为 member 的角色 -const memberRole = acl.define({ - role: 'member', -}); - -// 使 member 角色拥有 posts 资源的 list 权限 -memberRole.grantAction('posts:list'); - -acl.can('member', 'posts:list'); // true -acl.can('member', 'posts:edit'); // null -``` - ### 概念解释 -- 角色 (`ACLRole`):权限判断的对象 -- 资源 (`ACLResource`):在 Nocobase ACL 中,资源通常对应一个数据库表,概念上可类比为 Restful API 中的 Resource。 -- Action:对资源的操作,如 `create`、`read`、`update`、`delete` 等。 -- 策略 (`ACLAvailableStrategy`): 通常每个角色都有自己的权限策略,策略中定义了默认情况下的用户权限。 -- 授权:在 `ACLRole` 实例中调用 `grantAction` 函数,为角色授予 `Action` 的访问权限。 -- 鉴权:在 `ACL` 实例中调用 `can` 函数,函数返回结果即为用户的鉴权结果。 - ## 类方法 ### `constructor()` -构造函数,创建一个 `ACL` 实例。 - -```typescript -import { ACL } from '@nocobase/database'; - -const acl = new ACL(); -``` - ### `define()` -定义一个 ACL 角色 - -**签名** - -- `define(options: DefineOptions): ACLRole` - -**类型** - -```typescript -interface DefineOptions { - role: string; - allowConfigure?: boolean; - strategy?: string | AvailableStrategyOptions; - actions?: ResourceActionsOptions; - routes?: any; -} -``` - -**详细信息** - -- `role` - 角色名称 - -```typescript -// 定义一个名称为 admin 的角色 -acl.define({ - role: 'admin', -}); -``` - -- `allowConfigure` - 是否允许配置权限 -- `strategy` - 角色的权限策略 - - 可以为 `string`,为要使用的策略名,表示使用已定义的策略。 - - 可以为 `AvailableStrategyOptions`,为该角色定义一个新的策略,参考[`setAvailableActions()`](#setavailableactions)。 -- `actions` - 定义角色时,可传入角色可访问的 `actions` 对象, - 之后会依次调用 `aclRole.grantAction` 授予资源权限。详见 [`aclRole.grantAction`](./acl-role.md#grantaction) - -```typescript -acl.define({ - role: 'admin', - actions: { - 'posts:edit': {}, - }, -}); -// 等同于 -const role = acl.define({ - role: 'admin', -}); - -role.grantAction('posts:edit', {}); -``` - -### `getRole()` - -根据角色名称返回已注册的角色对象 - -**签名** - -- `getRole(name: string): ACLRole` - -### `removeRole()` - -根据角色名称移除角色 - -**签名** - -- `removeRole(name: string)` - ### `can()` -鉴权函数 - -**签名** - -- `can(options: CanArgs): CanResult | null` +### `registerSnippet()` -**类型** +### `setAvailableAction()` -```typescript -interface CanArgs { - role: string; // 角色名称 - resource: string; // 资源名称 - action: string; //操作名称 -} +### `setAvailableStrategy()` -interface CanResult { - role: string; // 角色名称 - resource: string; // 资源名称 - action: string; // 操作名称 - params?: any; // 注册权限时传入的参数 -} -``` - -**详细信息** - -`can` 方法首先会判断角色是否有注册对应的 `Action` 权限,如果没有则会去判断角色的 `strategy` 是否匹配。 -调用返回为`null`时,表示角色无权限,反之返回 `CanResult`对象,表示角色有权限。 - -**示例** - -```typescript -// 定义角色,注册权限 -acl.define({ - role: 'admin', - actions: { - 'posts:edit': { - fields: ['title', 'content'], - }, - }, -}); - -const canResult = acl.can({ - role: 'admin', - resource: 'posts', - action: 'edit', -}); -/** - * canResult = { - * role: 'admin', - * resource: 'posts', - * action: 'edit', - * params: { - * fields: ['title', 'content'], - * } - * } - */ +### `allow()` -acl.can({ - role: 'admin', - resource: 'posts', - action: 'destroy', -}); // null -``` +### `addFixedParams()` ### `use()` -**签名** - -- `use(fn: any)` - 向 middlewares 中添加中间件函数。 - ### `middleware()` - -返回一个中间件函数,用于在 `@nocobase/server` 中使用。使用此 `middleware` 之后,`@nocobase/server` 在每次请求处理之前都会进行权限判断。 - -### `allow()` - -设置资源为可公开访问 - -**签名** - -- `allow(resourceName: string, actionNames: string[] | string, condition?: string | ConditionFunc)` - -**类型** - -```typescript -type ConditionFunc = (ctx: any) => Promise | boolean; -``` - -**详细信息** - -- resourceName - 资源名称 -- actionNames - 资源动作名 -- condition? - 配置生效条件 - - 传入 `string`,表示使用已定义的条件,注册条件使用 `acl.allowManager.registerCondition` 方法。 - - ```typescript - acl.allowManager.registerAllowCondition('superUser', async () => { - return ctx.state.user?.id === 1; - }); - - // 开放 users:list 的权限,条件为 superUser - acl.allow('users', 'list', 'superUser'); - ``` - - - 传入 ConditionFunc,可接收 `ctx` 参数,返回 `boolean`,表示是否生效。 - ```typescript - // 当用户ID为1时,可以访问 user:list - acl.allow('users', 'list', (ctx) => { - return ctx.state.user?.id === 1; - }); - ``` - -**示例** - -```typescript -// 注册 users:login 可以被公开访问 -acl.allow('users', 'login'); -``` - -### `setAvailableActions()` - -**签名** - -- `setAvailableStrategy(name: string, options: AvailableStrategyOptions)` - -注册一个可用的权限策略 - -**类型** - -```typescript -interface AvailableStrategyOptions { - displayName?: string; - actions?: false | string | string[]; - allowConfigure?: boolean; - resource?: '*'; -} -``` - -**详细信息** - -- displayName - 策略名称 -- allowConfigure - 此策略是否拥有 **配置资源** 的权限,设置此项为`true`之后,请求判断在 `ACL` 中注册成为 `configResources` 资源的权限,会返回通过。 -- actions - 策略内的 actions 列表,支持通配符 `*` -- resource - 策略内的 resource 定义,支持通配符 `*` diff --git a/docs/zh-CN/api/actions.md b/docs/zh-CN/api/actions.md index dc26964d5..89576bee7 100644 --- a/docs/zh-CN/api/actions.md +++ b/docs/zh-CN/api/actions.md @@ -2,362 +2,22 @@ ## 概览 -针对常用的 CRUD 等数据资源的操作,NocoBase 内置了对应操作方法,并通过数据表资源自动映射相关的操作。 +### 基本使用 -```javascript -import { Application } from '@nocobase/server'; +### 概念解释 -const app = new Application({ - database: { - dialect: 'sqlite', - storage: './db.sqlite', - }, - registerActions: true, // 注册内置资源操作,默认为 True -}); -``` +## 操作方法 -内置的操作方法都是注册在 `application` 中的 `resourcer` 实例上。 -通常情况下无需直接调用内置的 action 方法,在需要扩展默认操作行为时,可以在自定义的操作方法内调用默认方法。 +### add +### create +### destroy +### get +### list +### remove +### set +### toggle +### update +### move +### firstOrCreate +### updateOrCreate -## 资源操作 - -### `list()` - -获取数据列表。对应资源操作的 URL 为 `GET /api/:list`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ---------- | ---------- | ------ | ---------------- | -| `filter` | `Filter` | - | 过滤参数 | -| `fields` | `string[]` | - | 要获取的字段 | -| `except` | `string[]` | - | 要排除的字段 | -| `appends` | `string[]` | - | 要附加的关系字段 | -| `sort` | `string[]` | - | 排序参数 | -| `page` | `number` | 1 | 分页 | -| `pageSize` | `number` | 20 | 每页数据条数 | - -**示例** - -当需要提供一个查询数据列表的接口,但不是默认以 JSON 格式输出时,可以基于内置默认方法进行扩展: - -```ts -import actions from '@nocobase/actions'; - -app.actions({ - async ['books:list'](ctx, next) { - ctx.action.mergeParams({ - except: ['content'], - }); - - await actions.list(ctx, async () => { - const { rows } = ctx.body; - // transform JSON to CSV output - ctx.body = rows - .map((row) => - Object.keys(row) - .map((key) => row[key]) - .join(','), - ) - .join('\n'); - ctx.type = 'text/csv'; - - await next(); - }); - }, -}); -``` - -请求示例,将获得 CSV 格式文件的返回: - -```shell -curl -X GET http://localhost:13000/api/books:list -``` - -### `get()` - -获取单条数据。对应资源操作的 URL 为 `GET /api/:get`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------ | ------------------ | ------ | ---------------- | -| `filterByTk` | `number \| string` | - | 过滤主键 | -| `filter` | `Filter` | - | 过滤参数 | -| `fields` | `string[]` | - | 要获取的字段 | -| `except` | `string[]` | - | 要排除的字段 | -| `appends` | `string[]` | - | 要附加的关系字段 | -| `sort` | `string[]` | - | 排序参数 | -| `page` | `number` | 1 | 分页 | -| `pageSize` | `number` | 20 | 每页数据条数 | - -**示例** - -基于 NocoBase 内置的文件管理插件,可以扩展当客户端请求以资源标识下载一个文件时,返回文件流: - -```ts -import path from 'path'; -import actions from '@nocobase/actions'; -import { STORAGE_TYPE_LOCAL } from '@nocobase/plugin-file-manager'; - -app.actions({ - async ['attachments:get'](ctx, next) { - ctx.action.mergeParams({ - appends: ['storage'], - }); - - await actions.get(ctx, async () => { - if (ctx.accepts('json', 'application/octet-stream') === 'json') { - return next(); - } - - const { body: attachment } = ctx; - const { storage } = attachment; - - if (storage.type !== STORAGE_TYPE_LOCAL) { - return ctx.redirect(attachment.url); - } - - ctx.body = fs.createReadStream(path.resolve(storage.options.documentRoot?, storage.path)); - ctx.attachment(attachment.filename); - ctx.type = 'application/octet-stream'; - - await next(); - }); - } -}); -``` - -请求示例,将获得文件流的返回: - -```shell -curl -X GET -H "Accept: application/octet-stream" http://localhost:13000/api/attachments:get?filterByTk=1 -``` - -### `create()` - -创建单条数据。对应资源操作的 URL 为 `POST /api/:create`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| -------- | -------- | ------ | ------------ | -| `values` | `Object` | - | 要创建的数据 | - -**示例** - -类似文件管理插件,创建带有二进制内容的数据作为上传文件的附件: - -```ts -import multer from '@koa/multer'; -import actions from '@nocobase/actions'; - -app.actions({ - async ['files:create'](ctx, next) { - if (ctx.request.type === 'application/json') { - return actions.create(ctx, next); - } - - if (ctx.request.type !== 'multipart/form-data') { - return ctx.throw(406); - } - - // 文件保存处理仅用 multer() 作为示例,不代表完整的逻辑 - multer().single('file')(ctx, async () => { - const { file, body } = ctx.request; - const { filename, mimetype, size, path } = file; - - ctx.action.mergeParams({ - values: { - filename, - mimetype, - size, - path: file.path, - meta: typeof body.meta === 'string' ? JSON.parse(body.meta) : {}; - } - }); - - await actions.create(ctx, next); - }); - } -}); -``` - -请求示例,可以创建文件表的普通数据,也可以含附件一起提交: - -```shell -# 仅创建普通数据 -curl -X POST -H "Content-Type: application/json" -d '{"filename": "some-file.txt", "mimetype": "text/plain", "size": 5, "url": "https://cdn.yourdomain.com/some-file.txt"}' "http://localhost:13000/api/files:create" - -# 含附件一起提交 -curl -X POST -F "file=@/path/to/some-file.txt" -F 'meta={"length": 100}' "http://localhost:13000/api/files:create" -``` - -### `update()` - -更新一条或多条数据。对应的 URL 为 `PUT /api/:update`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------ | ------------------ | ------ | ---------- | -| `filter` | `Filter` | - | 过滤参数 | -| `filterByTk` | `number \| string` | - | 过滤主键 | -| `values` | `Object` | - | 更新数据值 | - -注:参数中的 `filter` 和 `filterByTk` 至少提供一项。 - -**示例** - -类似 `create()` 的例子,更新文件记录可以扩展为可携带二进制内容的数据作为更新的文件: - -```ts -import multer from '@koa/multer'; -import actions from '@nocobase/actions'; - -app.actions({ - async ['files:update'](ctx, next) { - if (ctx.request.type === 'application/json') { - return actions.update(ctx, next); - } - - if (ctx.request.type !== 'multipart/form-data') { - return ctx.throw(406); - } - - // 文件保存处理仅用 multer() 作为示例,不代表完整的逻辑 - multer().single('file')(ctx, async () => { - const { file, body } = ctx.request; - const { filename, mimetype, size, path } = file; - - ctx.action.mergeParams({ - values: { - filename, - mimetype, - size, - path: file.path, - meta: typeof body.meta === 'string' ? JSON.parse(body.meta) : {}; - } - }); - - await actions.update(ctx, next); - }); - } -}); -``` - -请求示例,可以创建文件表的普通数据,也可以含附件一起提交: - -```shell -# 仅创建普通数据 -curl -X PUT -H "Content-Type: application/json" -d '{"filename": "some-file.txt", "mimetype": "text/plain", "size": 5, "url": "https://cdn.yourdomain.com/some-file.txt"}' "http://localhost:13000/api/files:update" - -# 含附件一起提交 -curl -X PUT -F "file=@/path/to/some-file.txt" -F 'meta={"length": 100}' "http://localhost:13000/api/files:update" -``` - -### `destroy()` - -删除一条或多条数据。对应的 URL 为 `DELETE /api/:destroy`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------ | ------------------ | ------ | -------- | -| `filter` | `Filter` | - | 过滤参数 | -| `filterByTk` | `number \| string` | - | 过滤主键 | - -注:参数中的 `filter` 和 `filterByTk` 至少提供一项。 - -**示例** - -类似对文件管理插件扩展一个删除文件数据也需要同时删除对应文件的操作处理: - -```ts -import actions from '@nocobase/actions'; - -app.actions({ - async ['files:destroy'](ctx, next) { - // const repository = getRepositoryFromParams(ctx); - - // const { filterByTk, filter } = ctx.action.params; - - // const items = await repository.find({ - // fields: [repository.collection.filterTargetKey], - // appends: ['storage'], - // filter, - // filterByTk, - // context: ctx, - // }); - - // await items.reduce((promise, item) => promise.then(async () => { - // await item.removeFromStorage(); - // await item.destroy(); - // }), Promise.resolve()); - - await actions.destroy(ctx, async () => { - // do something - await next(); - }); - }, -}); -``` - -### `move()` - -对应的 URL 为 `POST /api/:move`。 - -此方法用于移动数据,调整数据的排序。例如在页面中,拖拽一个元素到另一个元素的上方或下方,可调用此方法实现顺序调整。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------- | -------------------------- | ------ | ---------------------------------------------------- | -| `sourceId` | `targetKey` | - | 移动的元素ID | -| `targetId` | `targetKey` | - | 与移动元素交换位置的元素ID | -| `sortField` | `string` | `sort` | 排序存储的字段名 | -| `targetScope` | `string` | - | 排序的scope,一个 resource 可以按照不同的 scope 排序 | -| `sticky` | `boolean` | - | 是否置顶移动的元素 | -| `method` | `insertAfter` \| `prepend` | - | 插入类型,插入目标元素之前还是之后 | - -## 关系资源资源操作 - -### `add()` - -添加与对象的关联关系,对应的 URL 为 `POST /api/:add`。适用于 `hasMany` 和 `belongsToMany` 关联。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| -------- | -------------------------- | ------ | ---------------- | -| `values` | `TargetKey \| TargetKey[]` | - | 添加的关联对象ID | - -### `remove()` - -移除与对象的关联关系,对应的 URL 为 `POST /api/:remove`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| -------- | -------------------------- | ------ | ---------------- | -| `values` | `TargetKey \| TargetKey[]` | - | 移除的关联对象ID | - -### `set()` - -设置关联的关联对象,对应的 URL 为 `POST /api/:set`。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| -------- | -------------------------- | ------ | ------------------ | -| `values` | `TargetKey \| TargetKey[]` | - | 设置的关联对象的ID | - -### `toggle()` - -切换关联的关联对象,对应的 URL 为 `POST /api/:toggle`。`toggle` 在内部判断关联对象是否已经存在,如果存在则移除,如果不存在则添加。 - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| -------- | ----------- | ------ | ------------------ | -| `values` | `TargetKey` | - | 切换的关联对象的ID | diff --git a/docs/zh-CN/api/data-source-manager/data-source.md b/docs/zh-CN/api/data-source-manager/data-source.md new file mode 100644 index 000000000..01d64bf2b --- /dev/null +++ b/docs/zh-CN/api/data-source-manager/data-source.md @@ -0,0 +1,24 @@ +# DataSource + +## API + +### constructor() + +### collectionManager +### resourceManager +### acl + +### name + +### middleware() + +### testConnection() + +### load() + +### createCollectionManager() + +### createResourceManager() + +### createACL() + diff --git a/docs/zh-CN/api/data-source-manager/i-collection-manager.md b/docs/zh-CN/api/data-source-manager/i-collection-manager.md new file mode 100644 index 000000000..aac086292 --- /dev/null +++ b/docs/zh-CN/api/data-source-manager/i-collection-manager.md @@ -0,0 +1,24 @@ +# ICollectionManager + +```ts +export interface ICollectionManager { + registerFieldTypes(types: Record): void; + registerFieldInterfaces(interfaces: Record): void; + registerCollectionTemplates(templates: Record): void; + registerModels(models: Record): void; + registerRepositories(repositories: Record): void; + + getRegisteredRepository(key: string): IRepository; + + defineCollection(options: CollectionOptions): ICollection; + + extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ICollection; + + hasCollection(name: string): boolean; + getCollection(name: string): ICollection; + + getCollections(): Array; + getRepository(name: string, sourceId?: string | number): IRepository; + sync(): Promise; +} +``` \ No newline at end of file diff --git a/docs/zh-CN/api/data-source-manager/i-collection.md b/docs/zh-CN/api/data-source-manager/i-collection.md new file mode 100644 index 000000000..313936998 --- /dev/null +++ b/docs/zh-CN/api/data-source-manager/i-collection.md @@ -0,0 +1 @@ +# ICollection diff --git a/docs/zh-CN/api/data-source-manager/i-model.md b/docs/zh-CN/api/data-source-manager/i-model.md new file mode 100644 index 000000000..773fa97d6 --- /dev/null +++ b/docs/zh-CN/api/data-source-manager/i-model.md @@ -0,0 +1 @@ +# IModel \ No newline at end of file diff --git a/docs/zh-CN/api/data-source-manager/i-repository.md b/docs/zh-CN/api/data-source-manager/i-repository.md new file mode 100644 index 000000000..e4361db96 --- /dev/null +++ b/docs/zh-CN/api/data-source-manager/i-repository.md @@ -0,0 +1,2 @@ +# IRepository + diff --git a/docs/zh-CN/api/data-source-manager/index.md b/docs/zh-CN/api/data-source-manager/index.md new file mode 100644 index 000000000..a4bde5581 --- /dev/null +++ b/docs/zh-CN/api/data-source-manager/index.md @@ -0,0 +1,9 @@ +# DataSourceManager + +## API + +### add() + +### use() + +### middleware() diff --git a/docs/zh-CN/api/resourcer/action.md b/docs/zh-CN/api/resourcer/action.md index 453f45ce4..fe5ab12df 100644 --- a/docs/zh-CN/api/resourcer/action.md +++ b/docs/zh-CN/api/resourcer/action.md @@ -1,151 +1,19 @@ -# Action +# ctx.action -Action 是对资源的操作过程的描述,通常包含数据库处理等,类似其他框架中的 service 层,最简化的实现可以是一个 Koa 的中间件函数。在资源管理器里,针对特定资源定义的普通操作函数会被包装成 Action 类型的实例,当请求匹配对应资源的操作时,执行对应的操作过程。 +## 概览 -## 构造函数 +### 基本使用 -通常不需要直接实例化 Action,而是由资源管理器自动调用 `Action` 的静态方法 `toInstanceMap()` 进行实例化。 +### 概念解释 -### `constructor(options: ActionOptions)` +## API -**参数** +### action.resourceName -| 参数名 | 类型 | 默认值 | 描述 | -| -------------- | ---------------------------- | ------ | -------------------- | -| `handler` | `Function` | - | 操作函数 | -| `middlewares?` | `Middleware \| Middleware[]` | - | 针对操作的中间件 | -| `values?` | `Object` | - | 默认的操作数据 | -| `fields?` | `string[]` | - | 默认针对的字段组 | -| `appends?` | `string[]` | - | 默认附加的关联字段组 | -| `except?` | `string[]` | - | 默认排除的字段组 | -| `filter` | `FilterOptions` | - | 默认的过滤参数 | -| `sort` | `string[]` | - | 默认的排序参数 | -| `page` | `number` | - | 默认的页码 | -| `pageSize` | `number` | - | 默认的每页数量 | -| `maxPageSize` | `number` | - | 默认最大每页数量 | +### action.actionName -## 实例成员 +### action.sourceId -### `actionName` +### action.params -被实例化后对应的操作名称。在实例化时从请求中解析获取。 - -### `resourceName` - -被实例化后对应的资源名称。在实例化时从请求中解析获取。 - -### `resourceOf` - -被实例化后对应的关系资源的主键值。在实例化时从请求中解析获取。 - -### `readonly middlewares` - -针对操作的中间件列表。 - -### `params` - -操作参数。包含对应操作的所有相关参数,实例化时根据定义的 action 参数初始化,之后请求中解析前端传入的参数并根据对应参数的合并策略合并。如果有其他中间件的处理,也会有类似的合并过程。直到 handler 处理时,访问 params 得到的是经过多次合并的最终参数。 - -参数的合并过程提供了针对操作处理的可扩展性,可以通过自定义中间件的方式按业务需求进行参数的前置解析和处理,例如表单提交的参数验证就可以在此环节实现。 - -预设的参数可以参考 [/api/actions] 中不同操作的参数。 - -参数中还包含请求资源路由的描述部分,具体如下: - -| 参数名 | 类型 | 默认值 | 描述 | -| ----------------- | ------------------ | ------ | -------------------- | -| `resourceName` | `string` | - | 资源名称 | -| `resourceIndex` | `string \| number` | - | 资源的主键值 | -| `associatedName` | `string` | - | 所属关系资源的名称 | -| `associatedIndex` | `string \| number` | - | 所属关系资源的主键值 | -| `associated` | `Object` | - | 所属关系资源的实例 | -| `actionName` | `string` | - | 操作名称 | - -**示例** - -```ts -app.resourcer.define('books', { - actions: { - publish(ctx, next) { - ctx.body = ctx.action.params.values; - // { - // id: 1234567890 - // publishedAt: '2019-01-01', - // } - }, - }, - middlewares: [ - async (ctx, next) => { - ctx.action.mergeParams({ - values: { - id: Math.random().toString(36).substr(2, 10), - publishedAt: new Date(), - }, - }); - await next(); - }, - ], -}); -``` - -## 实例方法 - -### `mergeParams()` - -将额外的参数合并至当前参数集,且可以根据不同的策略进行合并。 - -**签名** - -- `mergeParams(params: ActionParams, strategies: MergeStrategies = {})` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------ | ----------------- | ------ | ---------------------- | -| `params` | `ActionParams` | - | 额外的参数集 | -| `strategies` | `MergeStrategies` | - | 针对每个参数的合并策略 | - -内置操作的默认合并策略如下表: - -| 参数名 | 类型 | 默认值 | 合并策略 | 描述 | -| ------------ | ------------------ | ------ | -------------- | ------------------ | -| `filterByTk` | `number \| string` | - | SQL `and` | 查询主键值 | -| `filter` | `FilterOptions` | - | SQL `and` | 查询过滤参数 | -| `fields` | `string[]` | - | 取并集 | 字段组 | -| `appends` | `string[]` | `[]` | 取并集 | 附加的关联字段组 | -| `except` | `string[]` | `[]` | 取并集 | 排除的字段组 | -| `whitelist` | `string[]` | `[]` | 取交集 | 可处理字段的白名单 | -| `blacklist` | `string[]` | `[]` | 取并集 | 可处理字段的黑名单 | -| `sort` | `string[]` | - | SQL `order by` | 查询排序参数 | -| `page` | `number` | - | 覆盖 | 页码 | -| `pageSize` | `number` | - | 覆盖 | 每页数量 | -| `values` | `Object` | - | 深度合并 | 操作提交的数据 | - -**示例** - -```ts -ctx.action.mergeParams( - { - filter: { - name: 'foo', - }, - fields: ['id', 'name'], - except: ['name'], - sort: ['id'], - page: 1, - pageSize: 10, - values: { - name: 'foo', - }, - }, - { - filter: 'and', - fields: 'union', - except: 'union', - sort: 'overwrite', - page: 'overwrite', - pageSize: 'overwrite', - values: 'deepMerge', - }, -); -``` +### action.mergeParams() diff --git a/docs/zh-CN/api/resourcer/index.md b/docs/zh-CN/api/resourcer/index.md index 53036258a..26e67416c 100644 --- a/docs/zh-CN/api/resourcer/index.md +++ b/docs/zh-CN/api/resourcer/index.md @@ -2,284 +2,15 @@ ## 概览 -Nocobase 中的接口遵循面向资源的设计模式。Resourcer 主要用于管理 API 资源与路由。 +### 基本使用 -```javascript -const Koa = require('koa'); -const { Resourcer } = require('@nocobase/resourcer'); +### 概念解释 -const resourcer = new Resourcer(); +## 类方法 -// 定义一个资源接口 -resourcer.define({ - name: 'users', - actions: { - async list(ctx) { - ctx.body = [ - { - name: 'u1', - age: 18, - }, - { - name: 'u2', - age: 20, - }, - ]; - }, - }, -}); - -const app = new Koa(); - -// 可在 koa 实例中使用 -app.use( - resourcer.middleware({ - prefix: '/api', // resourcer 路由前缀 - }), -); - -app.listen(3000); -``` - -启动服务后,使用`curl`发起请求: - -```bash ->$ curl localhost:3000/api/users -[{"name":"u1","age":18},{"name":"u2","age":20}] -``` - -更多 Resourcer 的使用说明可参考[资源与操作](/development/guide/resources-actions)。 Resourcer 内置于 [NocoBase Application](/api/server/application#resourcer) ,可以通过 `app.resourcer` 访问。 - -## 构造函数 - -用于创建 Resourcer 管理器实例。 - -**签名** - -- `constructor(options: ResourcerOptions)` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------------ | -------- | ------------ | ---------------------------- | -| `prefix` | `string` | - | 路由路径前缀 | -| `accessors` | `Object` | _以下成员值_ | 默认操作方法名称标识 | -| `accessors.list` | `string` | `'list'` | 列举操作方法名称标识 | -| `accessors.get` | `string` | `'get'` | 获取操作方法名称标识 | -| `accessors.create` | `string` | `'create'` | 创建操作方法名称标识 | -| `accessors.update` | `string` | `'update'` | 更新操作方法名称标识 | -| `accessors.delete` | `string` | `'destroy'` | 删除操作方法名称标识 | -| `accessors.add` | `string` | `'add'` | 增加关联操作方法名称标识 | -| `accessors.remove` | `string` | `'remove'` | 移除关联操作方法名称标识 | -| `accessors.set` | `string` | `'set'` | 全量设置关联操作方法名称标识 | - -**示例** - -在创建 app 时,可以通过 `resourcer` 选项传入: - -```ts -const app = new Application({ - // 对应默认 resourcer 实例的配置项 - resourcer: { - prefix: process.env.API_BASE_PATH, - }, -}); -``` - -## 实例方法 - -### `define()` - -定义并向资源管理器注册一个资源对象。通常代替 `Resource` 类的构造函数使用。 - -**签名** - -- `define(options: ResourceOptions): Resource` - -**参数** - -详见 [Resource 构造函数](/api/server/resourcer/resource#构造函数)。 - -**示例** - -```ts -app.resourcer.define({ - name: 'books', - actions: { - // 扩展的 action - publish(ctx, next) { - ctx.body = 'ok'; - }, - }, -}); -``` - -### `isDefined()` - -检查对应名称的资源是否已被注册。 - -**签名** - -- `isDefined(name: string): boolean` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------ | -------- | ------ | -------- | -| `name` | `string` | - | 资源名称 | - -**示例** - -```ts -app.resourcer.isDefined('books'); // true -``` - -### `registerAction()` - -向资源管理器注册一个操作,可以指定针对特定的资源,如不指定资源名称,则认为是针对全局所有资源都可访问的操作。 - -**签名** - -- `registerAction(name: string, handler: HandlerType): void` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| --------- | ------------- | ------ | ------------ | -| `name` | `string` | - | 操作名称 | -| `handler` | `HandlerType` | - | 操作处理函数 | - -`name` 的值如果以 `:` 开头则代表仅针对 `` 资源可访问,否则认为是全局操作。 - -**示例** - -```ts -// 注册后任意资源都可以进行 upload 操作 -app.resourcer.registerAction('upload', async (ctx, next) => { - ctx.body = 'ok'; -}); - -// 仅针对 attachments 资源注册 upload 操作 -app.resourcer.registerAction('attachments:upload', async (ctx, next) => { - ctx.body = 'ok'; -}); -``` - -### `registerActions()` - -向资源管理器注册多个操作的集合方法。 - -**签名** - -- `registerActions(actions: { [name: string]: HandlerType }): void` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| --------- | --------------------------------- | ------ | -------- | -| `actions` | `{ [name: string]: HandlerType }` | - | 操作集合 | - -**示例** - -```ts -app.resourcer.registerActions({ - upload: async (ctx, next) => { - ctx.body = 'ok'; - }, - 'attachments:upload': async (ctx, next) => { - ctx.body = 'ok'; - }, -}); -``` - -### `getResource()` - -获取对应名称的资源对象。 - -**签名** - -- `getResource(name: string): Resource` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------ | -------- | ------ | -------- | -| `name` | `string` | - | 资源名称 | - -**示例** - -```ts -app.resourcer.getResource('books'); -``` - -### `getAction()` - -获取对应名称的操作处理函数。 - -**签名** - -- `getAction(name: string): HandlerType` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------ | -------- | ------ | -------- | -| `name` | `string` | - | 操作名称 | - -`name` 的值如果以 `:` 开头则代表仅针对 `` 资源的操作,否则认为是全局操作。 - -**示例** - -```ts -app.resourcer.getAction('upload'); -app.resourcer.getAction('attachments:upload'); -``` - -### `use()` - -以 Koa 的形式注册一个中间件,中间件形成一个队列,并排在所有资源的操作处理函数之前执行。 - -**签名** - -- `use(middleware: Middleware | Middleware[]): void` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------ | ---------------------------- | ------ | ------ | -| `middleware` | `Middleware \| Middleware[]` | - | 中间件 | - -**示例** - -```ts -app.resourcer.use(async (ctx, next) => { - console.log(ctx.req.url); - await next(); -}); -``` - -### `middleware()` - -生成一个兼容 Koa 的中间件,用于将资源的路由处理注入到应用中。 - -**签名** - -- `middleware(options: KoaMiddlewareOptions): KoaMiddleware` - -**参数** - -| 参数名 | 类型 | 默认值 | 描述 | -| -------------------- | -------- | ------ | ----------------------------------------------------------- | -| `options.prefix?` | `string` | `''` | 路径前缀。 | -| `options.accessors?` | `Object` | `{}` | 常用方法的名称映射,与构造函数的 `accessors` 参数结构相同。 | - -**示例** - -```ts -const koa = new Koa(); - -const resourcer = new Resourcer(); - -// 生成兼容 Koa 的中间件 -koa.use(resourcer.middleware()); -``` +### resourcer.registerActionHandlers() +### resourcer.define() +### resourcer.isDefined() +### resourcer.import() +### resourcer.use() +### resourcer.middleware() diff --git a/docs/zh-CN/api/sdk.md b/docs/zh-CN/api/sdk.md deleted file mode 100644 index 90c42c77f..000000000 --- a/docs/zh-CN/api/sdk.md +++ /dev/null @@ -1,277 +0,0 @@ -# @nocobase/sdk - -## APIClient - -```ts -class APIClient { - // axios 实例 - axios: AxiosInstance; - // 构造器 - constructor(instance?: AxiosInstance | AxiosRequestConfig); - // 客户端请求,支持 AxiosRequestConfig 和 ResourceActionOptions - request, D = any>( - config: AxiosRequestConfig | ResourceActionOptions, - ): Promise; - // 获取资源 - resource(name: string, of?: any): R; -} -``` - -初始化实例 - -```ts -import axios from 'axios'; -import { APIClient } from '@nocobase/sdk'; - -// 提供 AxiosRequestConfig 配置参数 -const api = new APIClient({ - baseURL: 'https://localhost:8000/api', -}); - -// 提供 AxiosInstance -const instance = axios.create({ - baseURL: 'https://localhost:8000/api', -}); -const api = new APIClient(instance); -``` - -## Mock - -```ts -import { APIClient } from '@nocobase/sdk'; -import MockAdapter from 'axios-mock-adapter'; - -const api = new APIClient({ - baseURL: 'https://localhost:8000/api', -}); - -const mock = new MockAdapter(api.axios); - -mock.onGet('users:get').reply(200, { - data: { id: 1, name: 'John Smith' }, -}); - -await api.request({ url: 'users:get' }); -``` - -## Storage - -APIClient 默认使用的 localStorage,你也可以自定义 Storage,如: - -```ts -import { Storage } from '@nocobase/sdk'; - -class MemoryStorage extends Storage { - items = new Map(); - - clear() { - this.items.clear(); - } - - getItem(key: string) { - return this.items.get(key); - } - - setItem(key: string, value: string) { - return this.items.set(key, value); - } - - removeItem(key: string) { - return this.items.delete(key); - } -} - -const api = new APIClient({ - baseURL: 'https://localhost:8000/api', - storageClass: CustomStorage, -}); -``` - -## Auth - -```ts -// 登录并记录 token -api.auth.signIn({ email, password }); -// 注销并删除 token -api.auth.signOut(); -// 设置 token -api.auth.setToken('123'); -// 设置 role(当需要多角色时) -api.auth.setRole('admin'); -// 设置 locale(当需要多语言时) -api.auth.setLocale('zh-CN'); -``` - -自定义 Auth - -```ts -import { Auth } from '@nocobase/sdk'; - -class CustomAuth extends Auth {} - -const api = new APIClient({ - baseURL: 'https://localhost:8000/api', - authClass: CustomAuth, -}); -``` - -## Request - -```ts -// url -await api.request({ - url: 'users:list', - // request params - params: { - filter: { - 'email.$includes': 'noco', - }, - }, - // request body - data, -}); - -// resource & action -await api.request({ - resource: 'users', - action: 'list', - // action params - params: { - filter: { - 'email.$includes': 'noco', - }, - page: 1, - }, -}); -``` - -## Resource action - -```ts -await api.resource('collection')[action](); -await api.resource('collection.association', collectionId)[action](); -``` - -## Action API - -```ts -await api.resource('collection').create(); -await api.resource('collection').get(); -await api.resource('collection').list(); -await api.resource('collection').update(); -await api.resource('collection').destroy(); -await api.resource('collection.association', collectionId).create(); -await api.resource('collection.association', collectionId).get(); -await api.resource('collection.association', collectionId).list(); -await api.resource('collection.association', collectionId).update(); -await api.resource('collection.association', collectionId).destroy(); -``` - -### `get` - -```ts -interface Resource { - get: (options?: GetActionOptions) => Promise; -} - -interface GetActionOptions { - filter?: any; - filterByTk?: any; - fields?: string || string[]; - appends?: string || string[]; - expect?: string || string[]; - sort?: string[]; -} -``` - -### `list` - -```ts -interface Resource { - list: (options?: ListActionOptions) => Promise; -} - -interface ListActionOptions { - filter?: any; - filterByTk?: any; - fields?: string || string[]; - appends?: string || string[]; - expect?: string || string[]; - sort?: string[]; - page?: number; - pageSize?: number; - paginate?: boolean; -} -``` - -### `create` - -```ts -interface Resource { - create: (options?: CreateActionOptions) => Promise; -} - -interface CreateActionOptions { - whitelist?: string[]; - blacklist?: string[]; - values?: { [key: sting]: any }; -} -``` - -### `update` - -```ts -interface Resource { - update: (options?: UpdateActionOptions) => Promise; -} - -interface UpdateActionOptions { - filter?: any; - filterByTk?: any; - whitelist?: string[]; - blacklist?: string[]; - values?: { [key: sting]: any }; -} -``` - -### `destroy` - -```ts -interface Resource { - destroy: (options?: DestroyActionOptions) => Promise; -} - -interface DestroyActionOptions { - filter?: any; - filterByTk?: any; -} -``` - -### `move` - -```ts -interface Resource { - move: (options?: MoveActionOptions) => Promise; -} - -interface MoveActionOptions { - sourceId: any; - targetId?: any; - /** @default 'sort' */ - sortField?: any; - targetScope?: { [key: string]: any }; - sticky?: boolean; - method?: 'insertAfter' | 'prepend'; -} -``` - -### `` - -```ts -interface AttachmentResource {} - -interface UploadActionOptions {} - -api.resource('attachments').upload(); -api.resource('attachments').upload(); -``` diff --git a/docs/zh-CN/api/sdk/auth.md b/docs/zh-CN/api/sdk/auth.md new file mode 100644 index 000000000..e301ba8b6 --- /dev/null +++ b/docs/zh-CN/api/sdk/auth.md @@ -0,0 +1,9 @@ +# Auth + +## 概览 + +### 基本使用 + +### 概念解释 + +## API \ No newline at end of file diff --git a/docs/zh-CN/api/sdk/index.md b/docs/zh-CN/api/sdk/index.md new file mode 100644 index 000000000..7641ed298 --- /dev/null +++ b/docs/zh-CN/api/sdk/index.md @@ -0,0 +1,21 @@ +# APIClient + +## 概览 + +### 基本使用 + +### 概念解释 + +## API + +### constructor() + +### axios + +### auth + +### storage + +### request() + +### resource() diff --git a/docs/zh-CN/api/sdk/storage.md b/docs/zh-CN/api/sdk/storage.md new file mode 100644 index 000000000..2000a26bf --- /dev/null +++ b/docs/zh-CN/api/sdk/storage.md @@ -0,0 +1,9 @@ +# Storage + +## 概览 + +### 基本使用 + +### 概念解释 + +## API \ No newline at end of file diff --git a/docs/zh-CN/api/test/client.md b/docs/zh-CN/api/test/client.md new file mode 100644 index 000000000..c433b97a0 --- /dev/null +++ b/docs/zh-CN/api/test/client.md @@ -0,0 +1,14 @@ +# Client + +## 概览 + +### 基本使用 + +### 概念解释 + +## API + +### defineConfig +### sleep +### @testing-library/react +### @testing-library/user-event \ No newline at end of file diff --git a/docs/zh-CN/api/test/e2e.md b/docs/zh-CN/api/test/e2e.md index 520113bf5..fcbda8733 100644 --- a/docs/zh-CN/api/test/e2e.md +++ b/docs/zh-CN/api/test/e2e.md @@ -1,4 +1,4 @@ -# E2E +# End-to-End ## 概览 diff --git a/docs/zh-CN/api/test/server.md b/docs/zh-CN/api/test/server.md new file mode 100644 index 000000000..d1dad23eb --- /dev/null +++ b/docs/zh-CN/api/test/server.md @@ -0,0 +1,16 @@ +# Server + +## 概览 + +### 基本使用 + +### 概念解释 + +## API + +### defineConfig +### mockDatabase +### mockServer +### createMockServer +### MockServer +### sleep \ No newline at end of file diff --git a/docs/zh-CN/development/pm.md b/docs/zh-CN/development/pm.md new file mode 100644 index 000000000..65167d94b --- /dev/null +++ b/docs/zh-CN/development/pm.md @@ -0,0 +1 @@ +# 插件管理器 \ No newline at end of file diff --git a/docs/zh-CN/development/server/acl.md b/docs/zh-CN/development/server/acl.md new file mode 100644 index 000000000..950dcf9b0 --- /dev/null +++ b/docs/zh-CN/development/server/acl.md @@ -0,0 +1,12 @@ +# 权限控制 + +### acl.define() +### acl.can() +### acl.registerSnippet() +### acl.setAvailableAction() +### acl.setAvailableStrategy() +### acl.allow() +### acl.addFixedParams() +### acl.use() +### acl.middleware() + diff --git a/docs/zh-CN/development/server/auth.md b/docs/zh-CN/development/server/auth.md new file mode 100644 index 000000000..69b9c7a90 --- /dev/null +++ b/docs/zh-CN/development/server/auth.md @@ -0,0 +1 @@ +# 用户认证 \ No newline at end of file diff --git a/docs/zh-CN/development/server/caching.md b/docs/zh-CN/development/server/caching.md new file mode 100644 index 000000000..356f4f715 --- /dev/null +++ b/docs/zh-CN/development/server/caching.md @@ -0,0 +1 @@ +# 缓存 \ No newline at end of file diff --git a/docs/zh-CN/development/server/collections/collection-template.md b/docs/zh-CN/development/server/collections/collection-template.md index 77b8007df..de0dfe45b 100644 --- a/docs/zh-CN/development/server/collections/collection-template.md +++ b/docs/zh-CN/development/server/collections/collection-template.md @@ -1,78 +1 @@ # Collection 模板 - - -📢 Collection 模板计划在 2022 年第四季度提供。 - - -在实际的业务场景中,不同的 collection 可能有自己的初始化规则和业务逻辑,NocoBase 通过提供 Collection 模板来解决这类问题。 - -## 常规表 - -```ts -db.collection({ - name: 'posts', - fields: [ - { - type: 'string', - name: 'title', - }, - ], -}); -``` - -## 树结构表 - -```ts -db.collection({ - name: 'categories', - tree: 'adjacency-list', - fields: [ - { - type: 'string', - name: 'name', - }, - { - type: 'string', - name: 'description', - }, - { - type: 'belongsTo', - name: 'parent', - target: 'categories', - foreignKey: 'parentId', - }, - { - type: 'hasMany', - name: 'children', - target: 'categories', - foreignKey: 'parentId', - }, - ], -}); -``` - -## 父子继承表 - -```ts -db.collection({ - name: 'a', - fields: [], -}); - -db.collection({ - name: 'b', - inherits: 'a', - fields: [], -}); -``` - -## 更多模板 - -如日历表,每个初始化的表都需要初始化特殊的 cron 和 exclude 字段,而这种字段的定义就由模板来完成 - -```ts -db.collection({ - name: 'events', - template: 'calendar', -}); -``` diff --git a/docs/zh-CN/development/server/collections/field-interface.md b/docs/zh-CN/development/server/collections/field-interface.md new file mode 100644 index 000000000..19940bc57 --- /dev/null +++ b/docs/zh-CN/development/server/collections/field-interface.md @@ -0,0 +1,55 @@ +# 字段 UI 类型(Interface) + +**Basic** + +- input +- textarea +- phone +- email +- integer +- number +- percent +- password +- icon + +**Choices** + +- checkbox +- select +- multipleSelect +- radioGroup +- checkboxGroup +- chinaRegion + +**Media** + +- attachment +- markdown +- richText + +**Date & Time** + +- datetime +- time + +**Relation** + +- linkTo - `type: 'belongsToMany'` +- oho - `type: 'hasOne'` +- obo - `type: 'belongsTo'` +- o2m - `type: 'hasMany'` +- m2o - `type: 'belongsTo'` +- m2m - `type: 'belongsToMany'` + +**Advanced** + +- formula +- sequence + +**System info** + +- id +- createdAt +- createdBy +- updatedAt +- updatedBy diff --git a/docs/zh-CN/development/server/collections/field-type.md b/docs/zh-CN/development/server/collections/field-type.md new file mode 100644 index 000000000..e56bf0abb --- /dev/null +++ b/docs/zh-CN/development/server/collections/field-type.md @@ -0,0 +1,31 @@ +# 字段数据类型(Type) + +**Attribute Type** + +- 'boolean' +- 'integer' +- 'bigInt' +- 'double' +- 'real' +- 'decimal' +- 'string' +- 'text' +- 'password' +- 'date' +- 'time' +- 'array' +- 'json' +- 'jsonb' +- 'uuid' +- 'uid' +- 'formula' +- 'radio' +- 'sort' +- 'virtual' + +**Association Type** + +- 'belongsTo' +- 'hasOne' +- 'hasMany' +- 'belongsToMany' \ No newline at end of file diff --git a/docs/zh-CN/development/server/collections/index.md b/docs/zh-CN/development/server/collections/index.md index 9680a71fd..2bda774a2 100644 --- a/docs/zh-CN/development/server/collections/index.md +++ b/docs/zh-CN/development/server/collections/index.md @@ -1,8 +1,40 @@ -# 核心概念 +--- +tocDepth: 5 +--- -## Collection +# Collection 配置 -Collection 是所有种类数据的集合,中文翻译为「数据表」,如订单、商品、用户、评论等都是 Collection。不同 Collection 通过 name 区分,如: +Collection 是所有种类数据的集合,中文翻译为「数据表」,如订单、商品、用户、评论等都是 Collection。Collection 也是一种用于描述数据结构的协议。 + +## CollectionOptions + +```ts +interface CollectionOptions { + name: string; + title?: string; + // 父子继承 + inherits?: string | string[]; + fields?: FieldOptions[]; + timestamps?: boolean; + paranoid?: boolean; + sortable?: CollectionSortable; + model?: string; + repository?: string; + [key: string]: any; +} +``` + +### `name` + +数据表标识 + +```ts +interface CollectionOptions { + name: string; +} +``` + +不同 Collection 通过 name 区分,如: ```ts // 订单 @@ -23,172 +55,118 @@ Collection 是所有种类数据的集合,中文翻译为「数据表」,如 } ``` -## Collection Field +### `title` -每个 Collection 都有若干 Fields。 +数据表标题,用于优化显示的文案。 ```ts -// Collection 配置 -{ - name: 'users', - fields: [ - { type: 'string', name: 'name' }, - { type: 'integer', name: 'age' }, - // 其他字段 - ], -} -// 示例数据 -[ - { - name: '张三', - age: 20, - }, - { - name: '李四', - age: 18, - } -]; +interface CollectionOptions { + title?: string; +} ``` -在 NocoBase 中 Collection Field 的构成包括: - - - -### Field Type +示例 -不同字段通过 name 区分,type 表示字段的数据类型,分为 Attribute Type 和 Association Type,如: - -**属性 - Attribute Type** - -- string -- text -- date -- boolean -- time -- float -- json -- location -- password -- virtual -- ... +```ts +{ + name: 'orders', + title: '订单', +} +``` -**关系 - Association Type** +### `inherits` -- hasOne -- hasMany -- belongsTo -- belongsToMany -- ... +用于表示继承关系,如 b 继承 a -### Field Component +```ts +{ + name: 'a' +} +// b 继承 a +{ + name: 'b', + inherits: 'a', +} +``` -字段有了数据类型,字段值的 IO 没问题了,但是还不够,如果需要将字段展示在界面上,还需要另一个维度的配置 —— `uiSchema`,如: +多继承 -```tsx | pure -// 邮箱字段,用 Input 组件展示,使用 email 校验规则 +```ts { - type: 'string', - name: 'email', - uiSchema: { - 'x-component': 'Input', - 'x-component-props': { size: 'large' }, - 'x-validator': 'email', - 'x-pattern': 'editable', // 可编辑状态,还有 readonly 不可编辑状态、read-pretty 阅读态 - }, + name: 'a' } - -// 数据示例 { - email: 'admin@nocobase.com', + name: 'b', +} +{ + name: 'c' + inherits: ['a', 'b'], } - -// 组件示例 - ``` -uiSchema 用于配置字段展示在界面上的组件,每个字段组件都会对应一个 value,包括几个维护的配置: +### `repository` -- 字段的组件 -- 组件的参数 -- 字段的校验规则 -- 字段的模式(editable、readonly、read-pretty) -- 字段的默认值 -- 其他 +数据操作类 -[更多信息查看 UI Schema 章节](/development/client/ui-schema-designer/what-is-ui-schema)。 +```ts +// 定义一个 Repository +class UserRepository {} -NocoBase 内置的字段组件有: +// collection 配置 +{ + name: 'users', + repository: UserRepository, +} -- Input -- InputNumber -- Select -- Radio -- Checkbox -- ... +// 用法 +const repository: UserRepository = dataSource.getRepository('users'); +const instance: UserModel = await repository.create(); +``` -### Field Interface +### `model` -有了 Field Type 和 Field Component 就可以自由组合出若干字段,我们将这种组合之后的模板称之为 Field Interface,如: +数据模型类 ```ts -// 邮箱字段 string + input,email 校验规则 -{ - type: 'string', - name: 'email', - uiSchema: { - 'x-component': 'Input', - 'x-component-props': {}, - 'x-validator': 'email', - }, -} +// 定义一个 Model +class UserModel {} -// 手机字段 string + input,phone 校验规则 +// collection 配置 { - type: 'string', - name: 'phone', - uiSchema: { - 'x-component': 'Input', - 'x-component-props': {}, - 'x-validator': 'phone', - }, + name: 'users', + model: UserModel, } + +// 用法 +const repository = dataSource.getRepository('users'); +const instance: UserModel = await repository.create(); ``` -上面 email 和 phone 每次都需要配置完整的 uiSchema 非常繁琐,为了简化配置,又引申出另一个概念 Field interface,可以将一些参数模板化,如: +### `fields` ```ts -// email 字段的模板 -interface email { - type: 'string'; - uiSchema: { - 'x-component': 'Input', - 'x-component-props': {}, - 'x-validator': 'email', - }; -} - -// phone 字段的模板 -interface phone { - type: 'string'; - uiSchema: { - 'x-component': 'Input', - 'x-component-props': {}, - 'x-validator': 'phone', - }; -} - -// 简化之后的字段配置 -// email -{ - interface: 'email', - name: 'email', +interface CollectionOptions { + fields?: CollectionFieldOptions[]; } +``` -// phone -{ - interface: 'phone', - name: 'phone', +## CollectionFieldOptions + +```ts +interface CollectionFieldOptions { + name: string; + type?: string; + interface?: string; + uiSchema?: ISchema; + defaultValue?: any; + [key: string]: any; } ``` -[更多 Field Interface 点此查看](https://github.com/nocobase/nocobase/tree/main/packages/core/client/src/collection-manager/interfaces) +### `name` + +### `type` + +### `interface` + +### `uiSchema` diff --git a/docs/zh-CN/development/server/collections/plugin-collections.md b/docs/zh-CN/development/server/collections/plugin-collections.md new file mode 100644 index 000000000..72a617530 --- /dev/null +++ b/docs/zh-CN/development/server/collections/plugin-collections.md @@ -0,0 +1,41 @@ +# 配置插件的数据表 + +NocoBase 提供了许多插件用于各种数据源的数据表管理,但是插件的数据表并不适合暴露给这些插件管理。在插件里,自定义的数据表必须放在插件的 `src/server/collections/*.ts` 目录下,这些配置的数据表,在插件激活时自动与数据库同步,并生成相对应的数据表和字段。 + +:::warning +插件配置的数据表一般不会暴露给数据表管理插件管理,所以在数据表管理界面并不可见,但权限允许范畴内的 CRUD 等操作是允许的。 +::: + +## API 参考 + +### defineCollection + +例如 `examples.ts`,内容如下: + +```ts +import { defineCollection } from '@nocobase/server'; + +export default defineCollection({ + name: 'examples', +}); +``` + +详情参考 [defineCollection()](/api/database#definecollection) + +### extendCollection + +扩展已有 collection 的配置,使用 `extendCollection()` + +```ts +import { extendCollection } from '@nocobase/server'; + +export default extendCollection({ + name: 'examples', +}); +``` + +详情参考 [extendCollection()](/api/database#extendcollection) + +## 示例 + +- 待补充 \ No newline at end of file diff --git a/docs/zh-CN/development/server/context.md b/docs/zh-CN/development/server/context.md new file mode 100644 index 000000000..9c1aca48b --- /dev/null +++ b/docs/zh-CN/development/server/context.md @@ -0,0 +1,50 @@ +# 请求和响应的上下文 - Context + +Context 是 Koa 中处理用户请求中的一个对象,贯穿整个请求生命周期。一般在 Middleware、Action 中使用,简称为 ctx。 + +在中间件中使用 + +```ts +app.use(async (ctx, next) => {}); +app.resourceManager.use(async (ctx, next) => {}); +``` + +在资源操作中使用 + +```ts +resourceManager.registerActionHandlers({ + async create(ctx, next) {}, +}); + +resourceManager.define({ + name: 'users', + actions: { + async create(ctx, next) {}, + }, +}); +``` + +## 常用的 API + +### ctx.action + +#### action.actionName + +#### action.resourceName + +#### action.sourceId + +#### action.params + +#### action.mergeParams() + +### ctx.app + +### ctx.getCurrentLocale() + +### ctx.getBearerToken() + +### ctx.i18n + +### ctx.withoutDataWrapping + diff --git a/docs/zh-CN/development/server/data-source.md b/docs/zh-CN/development/server/data-source.md new file mode 100644 index 000000000..18f22f3c8 --- /dev/null +++ b/docs/zh-CN/development/server/data-source.md @@ -0,0 +1,75 @@ +# 数据源 + +## 概述 + +NocoBase 提供了许多用于管理各种数据源的数据表和字段的插件,例如: + +- `@nocobase/plugin-collection-manager` 数据表管理,用于管理用户自定义的数据表和字段 +- `@nocobase/plugin-graph-collection-manager` 可视化数据表管理,类 ER 工具的方式查看管理用户自定义的数据表和字段 +- `@nocobase/plugin-db-connection-manager` 连接第三方数据库,支持 MySQL 和 PostgreSQL +- `@nocobase/plugin-api-collection-manager` API 数据源管理 + +其中 + +- `@nocobase/plugin-collection-manager` 和 `@nocobase/plugin-graph-collection-manager` 用于管理用户自定义的数据表和字段 +- `@nocobase/plugin-db-connection-manager` 可以直接连接现有的数据库,目前已经支持 MySQL 和 PostgreSQL 数据库 +- `@nocobase/plugin-api-collection-manager` API 数据源管理 + +每个数据源都有自己的 Collections 和 Resources + +- Collection 是一种用于描述数据结构的协议 +- Resource 是一种用于描述资源和操作的协议 + +更多内容详见「数据表和字段」和「资源和操作」章节。 + +## 相关 API 总纲 + +- DataSourceManager + - add() + - middleware() +- DataSource + - collectionManager + - collectionManager.registerModels() + - collectionManager.registerRepositories() + - collectionManager.registerFieldTypes() + - collectionManager.registerCollectionTemplates() + - collectionManager.registerFieldInterfaces() + - collectionManager.defineCollection() + - collectionManager.extendCollection() + - collectionManager.getCollections() + - resourceManager + - resourceManager.registerActionHandlers() + - resourceManager.define() + - resourceManager.isDefined() + - resourceManager.use() + - middleware() + +## 如何扩展其他数据源 + +```ts +interface IDataSource { + addCollection: (collection) => void; + addCollections: (collections) => void; + getCollections: () => Collection[]; + middleware: () => KoaMiddleware; +} + +class GitHubDataSource { + +} + +class PluginCustomDataSourceServer extends Plugin { + async load() { + const dataSource1 = new GitHubDataSource({ + name: 'ds1', + ... + }); + dataSource1.addCollections({}); + this.dataSourceManager.add(dataSource1); + } +} +``` + +## 示例插件 + +- 待补充 \ No newline at end of file diff --git a/docs/zh-CN/development/server/resources-actions-v2/image.png b/docs/zh-CN/development/server/resources-actions-v2/image.png new file mode 100644 index 000000000..fedd743af Binary files /dev/null and b/docs/zh-CN/development/server/resources-actions-v2/image.png differ diff --git a/docs/zh-CN/development/server/resources-actions-v2/index.md b/docs/zh-CN/development/server/resources-actions-v2/index.md index 899224e4c..cee301583 100644 --- a/docs/zh-CN/development/server/resources-actions-v2/index.md +++ b/docs/zh-CN/development/server/resources-actions-v2/index.md @@ -1,86 +1,68 @@ # 核心概念 -## 资源 Resource +在 RESTful API 设计中,"Resource"(资源)和 "Action"(动作)是两个关键概念,它们定义了 API 的核心结构和行为。 -在 NocoBase 里,资源(resource)有两种表达方式: +- **Resource(资源):** + - **定义:** 是 API 中的核心实体,它代表了应用程序中的某个数据或对象。每个资源都有一个唯一的标识符(URI),用于访问该资源。资源可以是具体的实体(如用户、文章)或抽象概念(如订单、评论)。 + - **例子:** + - `/users` 表示用户资源 + - `/articles` 表示文章资源 -- `` -- `.` +- **Action(操作):** + - **定义:** 是对资源执行的操作或行为,它定义了客户端可以对资源执行的操作类型。在 RESTful API 中,常用的 HTTP 方法(动词)如 GET、POST、PUT、DELETE 等被用于表示对资源的不同操作。 + - **例子:** + - `GET /users` 表示获取所有用户资源的操作 + - `POST /users` 表示创建新用户资源的操作 + - `PUT /users/{id}` 表示更新特定用户资源的操作 + - `DELETE /users/{id}` 表示删除特定用户资源的操作 - +综合来说,RESTful API 的设计理念是基于资源的,每个资源通过唯一的 URI 进行标识,并使用标准的 HTTP 方法来定义对资源的操作。资源和动作的结合使 API 更加直观和符合自然语言的表达方式,提高了可读性和可维护性。 -- collection 是所有抽象数据的集合 -- association 为 collection 的关联数据 +## NocoBase 的 Resource & Action 与 RESTful API 的差异 - +### 资源 -示例 +在 NocoBase 中,资源(resource)分为 collection 和 association -- `posts` 文章 -- `posts.user` 文章用户 -- `posts.tags` 文章标签 +- collection 资源,如 `/users`,`/articles` +- association 资源,如 `/users/{uid}/articles` -配置 +在 NocoBase 中,资源最多只有两层结构,不支持更多层级,如 `/users/{uid}/articles/{aid}/comments`。因为在关系模型中,所有的数据关系都可以划分为一对一、一对多、多对一、多对多关系,这四种基本类型只需要两层结构即可,更复杂的情况,可以放在筛选里处理。 -```js -// 文章 -{ - name: 'posts', -} -// 文章用户 -{ - name: 'posts.user', -} -// 文章标签 -{ - name: 'posts.tags', -} -``` +### 操作 -## 操作 Action +在 NocoBase 中,操作(Action)不依赖于请求方法,而是需要显式定义 -以 `:` 的方式表示资源操作 +Collection 资源 -- `:` -- `.:` +| 资源操作 | NocoBase HTTP API | RESTful API | +| -- | -- | -- | +| 查看用户列表 | `GET /users:list` | `GET /users` | +| 新增用户 | `POST /users:create` | `POST /users` | +| 查看某用户详情 | `POST /users:get/{id}` | `GET /users/{id}` | +| 更新某用户 | `POST /users:update/{id}` | `PUT /users/{id}` | +| 删除某用户 | `POST /users:destroy/{id}` | `DELETE /users/{id}` | -**示例** +Association 资源 -- `posts:create` 创建文章 -- `posts.user:get` 查看文章用户 -- `posts.tags:add` 附加文章标签(将现有的标签与文章关联) +| 资源操作 | NocoBase HTTP API | RESTful API | +| -- | -- | -- | +| 获取所有用户资源 | `GET /users/{uid}/articles:list` | `GET /users/{uid}/articles` | +| 创建新用户资源 | `POST /users/{uid}/articles:create` | `POST /users/{uid}/articles` | +| 获取特定用户资源 | `POST /users/{uid}/articles:get/{aid}` | `GET /users/{uid}/articles/{aid}` | +| 更新特定用户资源 | `POST /users/{uid}/articles:update/{aid}` | `PUT /users/{uid}/articles/{aid}` | +| 删除特定用户资源 | `POST /users/{uid}/articles:destroy/{aid}` | `DELETE /users/{uid}/articles/{aid}` | -配置 +以上 list、create、get、update、destroy 操作可以与标准的 RESTful API 映射。除此之外,也可以有更多自定义的操作,如: -```js -// 文章资源的增删改查配置 -{ - name: 'posts', - actions: { - create: async (ctx, next) => {}, - get: async (ctx, next) => {}, - list: async (ctx, next) => {}, - update: async (ctx, next) => {}, - destroy: async (ctx, next) => {}, - }, -} +| 资源操作 | NocoBase HTTP API | +| -- | -- | +| 登录用户 | `POST /users:signIn` | +| 注销用户 | `POST /users:signOut` | -// 文章用户 -{ - name: 'posts.tags', - actions: { - create: async (ctx, next) => {}, - get: async (ctx, next) => {}, - list: async (ctx, next) => {}, - update: async (ctx, next) => {}, - destroy: async (ctx, next) => {}, - add: async (ctx, next) => {}, - remove: async (ctx, next) => {}, - }, -} -``` +### 请求格式 -## 如何请求资源 +NocoBase 资源的请求格式为 ```bash /api/: @@ -89,52 +71,76 @@ /api///:/ ``` -**示例** +所有资源都通过 filterByTk 定位 -posts 资源 +- collection 资源,filterByTk 必须是唯一的 +- association 资源,filterByTk 可能并不是唯一的,需要同时结合 sourceId 来定位。 -```bash -POST /api/posts:create -GET /api/posts:list -GET /api/posts:get/1 -POST /api/posts:update/1 -POST /api/posts:destroy/1 -``` +### 响应格式 -posts.comments 资源 +响应的格式 -```bash -POST /api/posts/1/comments:create -GET /api/posts/1/comments:list -GET /api/posts/1/comments:get/1 -POST /api/posts/1/comments:update/1 -POST /api/posts/1/comments:destroy/1 +```ts +type ResponseResult = { + data?: any; // 主体数据 + meta?: any; // 附加数据 + errors?: ResponseError[]; // 报错 +}; + +type ResponseError = { + code?: string; + message: string; +}; ``` -posts.tags 资源 +查看列表 ```bash -POST /api/posts/1/tags:create -GET /api/posts/1/tags:get -GET /api/posts/1/tags:list -POST /api/posts/1/tags:update -POST /api/posts/1/tags:destroy -POST /api/posts/1/tags:add -GET /api/posts/1/tags:remove +GET /api/posts:list + +Response 200 (application/json) + +{ + data: [ + { + id: 1 + } + ], + meta: { + count: 1 + page: 1, + pageSize: 1, + totalPage: 1 + }, +} ``` -## 资源定位 +查看详情 -所有资源都通过 `filterByTk` 定位 +```bash +GET /api/posts:get/1 -- collection 资源,`filterByTk` 必须是唯一的 -- association 资源,`filterByTk` 可能并不是唯一的,需要同时提供 `sourceId` 来定位。 +Response 200 (application/json) -例如 `tables.fields` 表示数据表的字段 +{ + data: { + id: 1 + }, +} +``` + +报错 ```bash -GET /api/tables/table1/fields/title -GET /api/tables/table2/fields/title -``` +POST /api/posts:create -table1 和 table2 都有 title 字段,title 在 table1 里是唯一的,但是其他表也可能有 title 字段 +Response 400 (application/json) + +{ + errors: [ + { + message: 'name must be required', + }, + ], +} +``` diff --git a/docs/zh-CN/development/server/resources-actions-v2/options.md b/docs/zh-CN/development/server/resources-actions-v2/options.md new file mode 100644 index 000000000..1f74b1a66 --- /dev/null +++ b/docs/zh-CN/development/server/resources-actions-v2/options.md @@ -0,0 +1,76 @@ +# 配置资源 + +Resource 是一种用于描述资源和操作的协议 + +## 参数说明 + +```ts +interface ResourceOptions { + name: string; + type?: string; + actions?: any; + middlewares?: any; +} +``` + +### `name` + +在 NocoBase 里,资源(resource)有两种表达方式: + +- `` +- `.` + +示例 + +- `posts` 文章 +- `posts.user` 文章用户 +- `posts.tags` 文章标签 + +配置 + +```js +// 文章 +{ + name: 'posts', +} +// 文章用户 +{ + name: 'posts.user', +} +// 文章标签 +{ + name: 'posts.tags', +} +``` + +### `actions` + +资源的操作 + +```ts +{ + name: 'posts', + actions: { + create: async (ctx, next) => {}, + get: async (ctx, next) => {}, + list: async (ctx, next) => {}, + update: async (ctx, next) => {}, + destroy: async (ctx, next) => {}, + }, +} + +{ + name: 'posts.tags', + actions: { + create: async (ctx, next) => {}, + get: async (ctx, next) => {}, + list: async (ctx, next) => {}, + update: async (ctx, next) => {}, + destroy: async (ctx, next) => {}, + add: async (ctx, next) => {}, + remove: async (ctx, next) => {}, + }, +} +``` + +### `middlewares` diff --git a/docs/zh-CN/development/server/resources-actions-v2/request.md b/docs/zh-CN/development/server/resources-actions-v2/request.md new file mode 100644 index 000000000..e29af0de3 --- /dev/null +++ b/docs/zh-CN/development/server/resources-actions-v2/request.md @@ -0,0 +1,3 @@ +# 配置资源 + +在 NocoBase 中,已存在的 collection(包括 association)会自动转为相对应的 resource diff --git a/docs/zh-CN/development/server/resources-actions-v2/resource-manager.md b/docs/zh-CN/development/server/resources-actions-v2/resource-manager.md new file mode 100644 index 000000000..8aa6a29f3 --- /dev/null +++ b/docs/zh-CN/development/server/resources-actions-v2/resource-manager.md @@ -0,0 +1,98 @@ +# 配置资源 + +在各个 NocoBase 的各个数据源里,已存在的 collection(包括 association)会自动转为相对应的 resource,如下图所示: + +![Alt text](./image.png) + +因此,通常只需要在全局为所有资源注册全局操作即可,如以下数据源代码片段: + +```ts +const collectionManager = new CollectionManager(); +const resourceManager = new ResourceManager(); + +collectionManager.defineCollection({ + name: 'products', +}); + +collectionManager.defineCollection({ + name: 'orders', +}); + +resourceManager.use(collectionManager.toResourceMiddleware()); + +resourceManager.registerActionHandlers({ + async create(ctx, next) {}, + async update(ctx, next) {}, + async list(ctx, next) {}, + async get(ctx, next) {}, + async destroy(ctx, next) {}, +}); +``` + +## ResourceManager + +### resourceManager.registerActionHandlers() + +因为 Collection & Association 会自动转为 Resource,所以大部分通用的场景并不需要再配置资源了,只需要在全局为所有资源注册全局操作即可。 + +```ts +resourceManager.registerActionHandlers({ + async create(ctx, next) {}, + async update(ctx, next) {}, + async list(ctx, next) {}, + async get(ctx, next) {}, + async destroy(ctx, next) {}, +}); +``` + +也可以为某资源注册特定的操作 + +```ts +resourceManager.registerActionHandlers({ + 'users:updateProfile': async (ctx, next) => {}, +}); +``` + +### resourceManager.define() + +特殊情况也可以单独为资源定义特殊的操作 + +```ts +resourceManager.define({ + name: 'pm', + actions: { + add: async (ctx, next) => { + }, + enable: async (ctx, next) => { + }, + disable: async (ctx, next) => { + }, + remove: async (ctx, next) => { + }, + } +}); +``` + +```ts +resourceManager.define({ + name: 'auth', + actions: { + signIn: async (ctx, next) => { + }, + signOut: async (ctx, next) => { + }, + signUp: async (ctx, next) => { + }, + check: async (ctx, next) => { + }, + } +}); +``` + +### resourceManager.use() + +添加资源级中间件,只有请求已定义的 resource 时才执行,更多内容查看「[中间件](/development/server/middleware)」章节 + +## 示例 + +- 待补充 \ No newline at end of file diff --git a/docs/zh-CN/plugins/acl/index.md b/docs/zh-CN/handbook/acl/index.md similarity index 100% rename from docs/zh-CN/plugins/acl/index.md rename to docs/zh-CN/handbook/acl/index.md diff --git a/docs/zh-CN/plugins/acl/user/index.md b/docs/zh-CN/handbook/acl/user/index.md similarity index 100% rename from docs/zh-CN/plugins/acl/user/index.md rename to docs/zh-CN/handbook/acl/user/index.md diff --git a/docs/zh-CN/plugins/acl/user/static/ApOObW9lGoRGE0xcFcscpDZ5nid.png b/docs/zh-CN/handbook/acl/user/static/ApOObW9lGoRGE0xcFcscpDZ5nid.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/ApOObW9lGoRGE0xcFcscpDZ5nid.png rename to docs/zh-CN/handbook/acl/user/static/ApOObW9lGoRGE0xcFcscpDZ5nid.png diff --git a/docs/zh-CN/plugins/acl/user/static/AtS4bAdLCojw2Ex4FvjcEn1tngx.gif b/docs/zh-CN/handbook/acl/user/static/AtS4bAdLCojw2Ex4FvjcEn1tngx.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/AtS4bAdLCojw2Ex4FvjcEn1tngx.gif rename to docs/zh-CN/handbook/acl/user/static/AtS4bAdLCojw2Ex4FvjcEn1tngx.gif diff --git a/docs/zh-CN/plugins/acl/user/static/CIZCbruUtoFZe1xIHUWcS2HwnEh.png b/docs/zh-CN/handbook/acl/user/static/CIZCbruUtoFZe1xIHUWcS2HwnEh.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/CIZCbruUtoFZe1xIHUWcS2HwnEh.png rename to docs/zh-CN/handbook/acl/user/static/CIZCbruUtoFZe1xIHUWcS2HwnEh.png diff --git a/docs/zh-CN/plugins/acl/user/static/DAICbLqwLo6nLzx9LcpcRFj5nAf.png b/docs/zh-CN/handbook/acl/user/static/DAICbLqwLo6nLzx9LcpcRFj5nAf.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/DAICbLqwLo6nLzx9LcpcRFj5nAf.png rename to docs/zh-CN/handbook/acl/user/static/DAICbLqwLo6nLzx9LcpcRFj5nAf.png diff --git a/docs/zh-CN/plugins/acl/user/static/DYmDbQ2AGoZzCGxgQrcccDgNnVg.gif b/docs/zh-CN/handbook/acl/user/static/DYmDbQ2AGoZzCGxgQrcccDgNnVg.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/DYmDbQ2AGoZzCGxgQrcccDgNnVg.gif rename to docs/zh-CN/handbook/acl/user/static/DYmDbQ2AGoZzCGxgQrcccDgNnVg.gif diff --git a/docs/zh-CN/plugins/acl/user/static/E5P7bepyPobSYhxIFH3c1T1onRg.png b/docs/zh-CN/handbook/acl/user/static/E5P7bepyPobSYhxIFH3c1T1onRg.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/E5P7bepyPobSYhxIFH3c1T1onRg.png rename to docs/zh-CN/handbook/acl/user/static/E5P7bepyPobSYhxIFH3c1T1onRg.png diff --git a/docs/zh-CN/plugins/acl/user/static/EB0gbEm3bo7zXfxzcxocAh1snth.gif b/docs/zh-CN/handbook/acl/user/static/EB0gbEm3bo7zXfxzcxocAh1snth.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/EB0gbEm3bo7zXfxzcxocAh1snth.gif rename to docs/zh-CN/handbook/acl/user/static/EB0gbEm3bo7zXfxzcxocAh1snth.gif diff --git a/docs/zh-CN/plugins/acl/user/static/EIvgbZPupooY9IxeH5Gc0Vxan0g.png b/docs/zh-CN/handbook/acl/user/static/EIvgbZPupooY9IxeH5Gc0Vxan0g.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/EIvgbZPupooY9IxeH5Gc0Vxan0g.png rename to docs/zh-CN/handbook/acl/user/static/EIvgbZPupooY9IxeH5Gc0Vxan0g.png diff --git a/docs/zh-CN/plugins/acl/user/static/EiCSbyvcToilFqxngPlcabEnnog.gif b/docs/zh-CN/handbook/acl/user/static/EiCSbyvcToilFqxngPlcabEnnog.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/EiCSbyvcToilFqxngPlcabEnnog.gif rename to docs/zh-CN/handbook/acl/user/static/EiCSbyvcToilFqxngPlcabEnnog.gif diff --git a/docs/zh-CN/plugins/acl/user/static/FoykbYbvNorP1axz1DKcdQ66nrh.png b/docs/zh-CN/handbook/acl/user/static/FoykbYbvNorP1axz1DKcdQ66nrh.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/FoykbYbvNorP1axz1DKcdQ66nrh.png rename to docs/zh-CN/handbook/acl/user/static/FoykbYbvNorP1axz1DKcdQ66nrh.png diff --git a/docs/zh-CN/plugins/acl/user/static/FpqdbZ04noXYClxvvPBcYsPFnNf.png b/docs/zh-CN/handbook/acl/user/static/FpqdbZ04noXYClxvvPBcYsPFnNf.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/FpqdbZ04noXYClxvvPBcYsPFnNf.png rename to docs/zh-CN/handbook/acl/user/static/FpqdbZ04noXYClxvvPBcYsPFnNf.png diff --git a/docs/zh-CN/plugins/acl/user/static/FshmbDt5connlpxtExrc73orn1b.png b/docs/zh-CN/handbook/acl/user/static/FshmbDt5connlpxtExrc73orn1b.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/FshmbDt5connlpxtExrc73orn1b.png rename to docs/zh-CN/handbook/acl/user/static/FshmbDt5connlpxtExrc73orn1b.png diff --git a/docs/zh-CN/plugins/acl/user/static/GR9jb8gPso3LRjxFIb9cndOBnub.gif b/docs/zh-CN/handbook/acl/user/static/GR9jb8gPso3LRjxFIb9cndOBnub.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/GR9jb8gPso3LRjxFIb9cndOBnub.gif rename to docs/zh-CN/handbook/acl/user/static/GR9jb8gPso3LRjxFIb9cndOBnub.gif diff --git a/docs/zh-CN/plugins/acl/user/static/GYWIbViYxo2peYxT0xMcyZO2n5c.png b/docs/zh-CN/handbook/acl/user/static/GYWIbViYxo2peYxT0xMcyZO2n5c.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/GYWIbViYxo2peYxT0xMcyZO2n5c.png rename to docs/zh-CN/handbook/acl/user/static/GYWIbViYxo2peYxT0xMcyZO2n5c.png diff --git a/docs/zh-CN/plugins/acl/user/static/I5uKbd4NXoUBL0x3jpIc6UXrnCb.png b/docs/zh-CN/handbook/acl/user/static/I5uKbd4NXoUBL0x3jpIc6UXrnCb.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/I5uKbd4NXoUBL0x3jpIc6UXrnCb.png rename to docs/zh-CN/handbook/acl/user/static/I5uKbd4NXoUBL0x3jpIc6UXrnCb.png diff --git a/docs/zh-CN/plugins/acl/user/static/IHmhbshM8oDxxJx3VYyc6A7rn1c.png b/docs/zh-CN/handbook/acl/user/static/IHmhbshM8oDxxJx3VYyc6A7rn1c.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/IHmhbshM8oDxxJx3VYyc6A7rn1c.png rename to docs/zh-CN/handbook/acl/user/static/IHmhbshM8oDxxJx3VYyc6A7rn1c.png diff --git a/docs/zh-CN/plugins/acl/user/static/JVxSbTW1soiPz3xDqiPcTR4Znbe.png b/docs/zh-CN/handbook/acl/user/static/JVxSbTW1soiPz3xDqiPcTR4Znbe.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/JVxSbTW1soiPz3xDqiPcTR4Znbe.png rename to docs/zh-CN/handbook/acl/user/static/JVxSbTW1soiPz3xDqiPcTR4Znbe.png diff --git a/docs/zh-CN/plugins/acl/user/static/KHgXbk4oRo7qWQxlP2pc5Otnnsd.gif b/docs/zh-CN/handbook/acl/user/static/KHgXbk4oRo7qWQxlP2pc5Otnnsd.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/KHgXbk4oRo7qWQxlP2pc5Otnnsd.gif rename to docs/zh-CN/handbook/acl/user/static/KHgXbk4oRo7qWQxlP2pc5Otnnsd.gif diff --git a/docs/zh-CN/plugins/acl/user/static/KNeebcJghocQbVxLltycetuMnTb.gif b/docs/zh-CN/handbook/acl/user/static/KNeebcJghocQbVxLltycetuMnTb.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/KNeebcJghocQbVxLltycetuMnTb.gif rename to docs/zh-CN/handbook/acl/user/static/KNeebcJghocQbVxLltycetuMnTb.gif diff --git a/docs/zh-CN/plugins/acl/user/static/MolVbOe3GozpHYx3efAcg5ZLnzg.png b/docs/zh-CN/handbook/acl/user/static/MolVbOe3GozpHYx3efAcg5ZLnzg.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/MolVbOe3GozpHYx3efAcg5ZLnzg.png rename to docs/zh-CN/handbook/acl/user/static/MolVbOe3GozpHYx3efAcg5ZLnzg.png diff --git a/docs/zh-CN/plugins/acl/user/static/OtZab2PZEomdf5xvZIhcosLAnGc.gif b/docs/zh-CN/handbook/acl/user/static/OtZab2PZEomdf5xvZIhcosLAnGc.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/OtZab2PZEomdf5xvZIhcosLAnGc.gif rename to docs/zh-CN/handbook/acl/user/static/OtZab2PZEomdf5xvZIhcosLAnGc.gif diff --git a/docs/zh-CN/plugins/acl/user/static/PFYqbxqCvoAxVUx29UYctS8KnRf.png b/docs/zh-CN/handbook/acl/user/static/PFYqbxqCvoAxVUx29UYctS8KnRf.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/PFYqbxqCvoAxVUx29UYctS8KnRf.png rename to docs/zh-CN/handbook/acl/user/static/PFYqbxqCvoAxVUx29UYctS8KnRf.png diff --git a/docs/zh-CN/plugins/acl/user/static/ROF6b4SkboxFezxftsjczo9GnOb.png b/docs/zh-CN/handbook/acl/user/static/ROF6b4SkboxFezxftsjczo9GnOb.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/ROF6b4SkboxFezxftsjczo9GnOb.png rename to docs/zh-CN/handbook/acl/user/static/ROF6b4SkboxFezxftsjczo9GnOb.png diff --git a/docs/zh-CN/plugins/acl/user/static/RXwSbzriCorfatxFtbXceEYynrL.png b/docs/zh-CN/handbook/acl/user/static/RXwSbzriCorfatxFtbXceEYynrL.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/RXwSbzriCorfatxFtbXceEYynrL.png rename to docs/zh-CN/handbook/acl/user/static/RXwSbzriCorfatxFtbXceEYynrL.png diff --git a/docs/zh-CN/plugins/acl/user/static/RgAIbdr1QofBorxbiYjcG7lun3e.gif b/docs/zh-CN/handbook/acl/user/static/RgAIbdr1QofBorxbiYjcG7lun3e.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/RgAIbdr1QofBorxbiYjcG7lun3e.gif rename to docs/zh-CN/handbook/acl/user/static/RgAIbdr1QofBorxbiYjcG7lun3e.gif diff --git a/docs/zh-CN/plugins/acl/user/static/S5lbbuqAwovP2BxIMOjcy1wLnwb.gif b/docs/zh-CN/handbook/acl/user/static/S5lbbuqAwovP2BxIMOjcy1wLnwb.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/S5lbbuqAwovP2BxIMOjcy1wLnwb.gif rename to docs/zh-CN/handbook/acl/user/static/S5lbbuqAwovP2BxIMOjcy1wLnwb.gif diff --git a/docs/zh-CN/plugins/acl/user/static/SNB8bN20JoxqFwx3BoXc5O9nnod.png b/docs/zh-CN/handbook/acl/user/static/SNB8bN20JoxqFwx3BoXc5O9nnod.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/SNB8bN20JoxqFwx3BoXc5O9nnod.png rename to docs/zh-CN/handbook/acl/user/static/SNB8bN20JoxqFwx3BoXc5O9nnod.png diff --git a/docs/zh-CN/plugins/acl/user/static/SyiPbKA9WoJs5FxkZChcrXusnTf.png b/docs/zh-CN/handbook/acl/user/static/SyiPbKA9WoJs5FxkZChcrXusnTf.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/SyiPbKA9WoJs5FxkZChcrXusnTf.png rename to docs/zh-CN/handbook/acl/user/static/SyiPbKA9WoJs5FxkZChcrXusnTf.png diff --git a/docs/zh-CN/plugins/acl/user/static/UY2Db5jEyotKkMxS8qoc7C2Nnnv.png b/docs/zh-CN/handbook/acl/user/static/UY2Db5jEyotKkMxS8qoc7C2Nnnv.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/UY2Db5jEyotKkMxS8qoc7C2Nnnv.png rename to docs/zh-CN/handbook/acl/user/static/UY2Db5jEyotKkMxS8qoc7C2Nnnv.png diff --git a/docs/zh-CN/plugins/acl/user/static/Vpo9bBdw9oavWoxp2m4cBeDEnod.png b/docs/zh-CN/handbook/acl/user/static/Vpo9bBdw9oavWoxp2m4cBeDEnod.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/Vpo9bBdw9oavWoxp2m4cBeDEnod.png rename to docs/zh-CN/handbook/acl/user/static/Vpo9bBdw9oavWoxp2m4cBeDEnod.png diff --git a/docs/zh-CN/plugins/acl/user/static/WDiCbdoluonCzDxjHUtc3yKPnmb.png b/docs/zh-CN/handbook/acl/user/static/WDiCbdoluonCzDxjHUtc3yKPnmb.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/WDiCbdoluonCzDxjHUtc3yKPnmb.png rename to docs/zh-CN/handbook/acl/user/static/WDiCbdoluonCzDxjHUtc3yKPnmb.png diff --git a/docs/zh-CN/plugins/acl/user/static/WI0ab4oznobXB8xpL7Jc2PXgnhe.gif b/docs/zh-CN/handbook/acl/user/static/WI0ab4oznobXB8xpL7Jc2PXgnhe.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/WI0ab4oznobXB8xpL7Jc2PXgnhe.gif rename to docs/zh-CN/handbook/acl/user/static/WI0ab4oznobXB8xpL7Jc2PXgnhe.gif diff --git a/docs/zh-CN/plugins/acl/user/static/XEU3byFr6osZ5WxgCdCcOKjHnMf.gif b/docs/zh-CN/handbook/acl/user/static/XEU3byFr6osZ5WxgCdCcOKjHnMf.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/XEU3byFr6osZ5WxgCdCcOKjHnMf.gif rename to docs/zh-CN/handbook/acl/user/static/XEU3byFr6osZ5WxgCdCcOKjHnMf.gif diff --git a/docs/zh-CN/plugins/acl/user/static/XJytbsa8xopRSXxliqRc3YZUnTb.png b/docs/zh-CN/handbook/acl/user/static/XJytbsa8xopRSXxliqRc3YZUnTb.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/XJytbsa8xopRSXxliqRc3YZUnTb.png rename to docs/zh-CN/handbook/acl/user/static/XJytbsa8xopRSXxliqRc3YZUnTb.png diff --git a/docs/zh-CN/plugins/acl/user/static/Y3Yrb3bNGoHJLExWJsGc0I9Jn8d.png b/docs/zh-CN/handbook/acl/user/static/Y3Yrb3bNGoHJLExWJsGc0I9Jn8d.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/Y3Yrb3bNGoHJLExWJsGc0I9Jn8d.png rename to docs/zh-CN/handbook/acl/user/static/Y3Yrb3bNGoHJLExWJsGc0I9Jn8d.png diff --git a/docs/zh-CN/plugins/acl/user/static/Yi7pbJn5votBFXxi5bOcUWuRned.png b/docs/zh-CN/handbook/acl/user/static/Yi7pbJn5votBFXxi5bOcUWuRned.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/Yi7pbJn5votBFXxi5bOcUWuRned.png rename to docs/zh-CN/handbook/acl/user/static/Yi7pbJn5votBFXxi5bOcUWuRned.png diff --git a/docs/zh-CN/plugins/acl/user/static/Yot3bmSRSohJUDxbt4ccjc7Enbb.gif b/docs/zh-CN/handbook/acl/user/static/Yot3bmSRSohJUDxbt4ccjc7Enbb.gif similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/Yot3bmSRSohJUDxbt4ccjc7Enbb.gif rename to docs/zh-CN/handbook/acl/user/static/Yot3bmSRSohJUDxbt4ccjc7Enbb.gif diff --git a/docs/zh-CN/plugins/acl/user/static/ZtAbbjIk3oJzg8xH9fccXrFenmf.png b/docs/zh-CN/handbook/acl/user/static/ZtAbbjIk3oJzg8xH9fccXrFenmf.png similarity index 100% rename from docs/zh-CN/plugins/acl/user/static/ZtAbbjIk3oJzg8xH9fccXrFenmf.png rename to docs/zh-CN/handbook/acl/user/static/ZtAbbjIk3oJzg8xH9fccXrFenmf.png diff --git a/docs/zh-CN/plugins/action-bulk-edit/index.md b/docs/zh-CN/handbook/action-bulk-edit/index.md similarity index 100% rename from docs/zh-CN/plugins/action-bulk-edit/index.md rename to docs/zh-CN/handbook/action-bulk-edit/index.md diff --git a/docs/zh-CN/plugins/action-bulk-edit/static/ADLkbw3g0o4dgBxncrGcqxsAnpf.png b/docs/zh-CN/handbook/action-bulk-edit/static/ADLkbw3g0o4dgBxncrGcqxsAnpf.png similarity index 100% rename from docs/zh-CN/plugins/action-bulk-edit/static/ADLkbw3g0o4dgBxncrGcqxsAnpf.png rename to docs/zh-CN/handbook/action-bulk-edit/static/ADLkbw3g0o4dgBxncrGcqxsAnpf.png diff --git a/docs/zh-CN/plugins/action-bulk-edit/static/H6CCbiXCJossUKxi15ucGt8mnyh.png b/docs/zh-CN/handbook/action-bulk-edit/static/H6CCbiXCJossUKxi15ucGt8mnyh.png similarity index 100% rename from docs/zh-CN/plugins/action-bulk-edit/static/H6CCbiXCJossUKxi15ucGt8mnyh.png rename to docs/zh-CN/handbook/action-bulk-edit/static/H6CCbiXCJossUKxi15ucGt8mnyh.png diff --git a/docs/zh-CN/plugins/action-bulk-edit/static/NTMAbTY1wowNOGx0iSacsd8anLh.gif b/docs/zh-CN/handbook/action-bulk-edit/static/NTMAbTY1wowNOGx0iSacsd8anLh.gif similarity index 100% rename from docs/zh-CN/plugins/action-bulk-edit/static/NTMAbTY1wowNOGx0iSacsd8anLh.gif rename to docs/zh-CN/handbook/action-bulk-edit/static/NTMAbTY1wowNOGx0iSacsd8anLh.gif diff --git a/docs/zh-CN/plugins/action-bulk-update/index.md b/docs/zh-CN/handbook/action-bulk-update/index.md similarity index 100% rename from docs/zh-CN/plugins/action-bulk-update/index.md rename to docs/zh-CN/handbook/action-bulk-update/index.md diff --git a/docs/zh-CN/plugins/action-bulk-update/static/CWWrbfcHho0vphxAHu1cQdDTnIf.gif b/docs/zh-CN/handbook/action-bulk-update/static/CWWrbfcHho0vphxAHu1cQdDTnIf.gif similarity index 100% rename from docs/zh-CN/plugins/action-bulk-update/static/CWWrbfcHho0vphxAHu1cQdDTnIf.gif rename to docs/zh-CN/handbook/action-bulk-update/static/CWWrbfcHho0vphxAHu1cQdDTnIf.gif diff --git a/docs/zh-CN/plugins/action-bulk-update/static/Tb0ZbOmd1oqw9TxWVamcOEhrntd.png b/docs/zh-CN/handbook/action-bulk-update/static/Tb0ZbOmd1oqw9TxWVamcOEhrntd.png similarity index 100% rename from docs/zh-CN/plugins/action-bulk-update/static/Tb0ZbOmd1oqw9TxWVamcOEhrntd.png rename to docs/zh-CN/handbook/action-bulk-update/static/Tb0ZbOmd1oqw9TxWVamcOEhrntd.png diff --git a/docs/zh-CN/plugins/custom-request/index.md b/docs/zh-CN/handbook/action-custom-request/index.md similarity index 100% rename from docs/zh-CN/plugins/custom-request/index.md rename to docs/zh-CN/handbook/action-custom-request/index.md diff --git a/docs/zh-CN/plugins/action-duplicate/index.md b/docs/zh-CN/handbook/action-duplicate/index.md similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/index.md rename to docs/zh-CN/handbook/action-duplicate/index.md diff --git a/docs/zh-CN/plugins/action-duplicate/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png b/docs/zh-CN/handbook/action-duplicate/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png rename to docs/zh-CN/handbook/action-duplicate/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png diff --git a/docs/zh-CN/plugins/action-duplicate/static/Ox76b54eho4fTUxdk67cjcjenCc.png b/docs/zh-CN/handbook/action-duplicate/static/Ox76b54eho4fTUxdk67cjcjenCc.png similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/Ox76b54eho4fTUxdk67cjcjenCc.png rename to docs/zh-CN/handbook/action-duplicate/static/Ox76b54eho4fTUxdk67cjcjenCc.png diff --git a/docs/zh-CN/plugins/action-duplicate/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png b/docs/zh-CN/handbook/action-duplicate/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png rename to docs/zh-CN/handbook/action-duplicate/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png diff --git a/docs/zh-CN/plugins/action-duplicate/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png b/docs/zh-CN/handbook/action-duplicate/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png rename to docs/zh-CN/handbook/action-duplicate/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png diff --git a/docs/zh-CN/plugins/action-duplicate/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif b/docs/zh-CN/handbook/action-duplicate/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif rename to docs/zh-CN/handbook/action-duplicate/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif diff --git a/docs/zh-CN/plugins/action-duplicate/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png b/docs/zh-CN/handbook/action-duplicate/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png rename to docs/zh-CN/handbook/action-duplicate/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png diff --git a/docs/zh-CN/plugins/action-duplicate/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png b/docs/zh-CN/handbook/action-duplicate/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png similarity index 100% rename from docs/zh-CN/plugins/action-duplicate/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png rename to docs/zh-CN/handbook/action-duplicate/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png diff --git a/docs/zh-CN/plugins/export/index.md b/docs/zh-CN/handbook/action-export/index.md similarity index 100% rename from docs/zh-CN/plugins/export/index.md rename to docs/zh-CN/handbook/action-export/index.md diff --git a/docs/zh-CN/plugins/import/index.md b/docs/zh-CN/handbook/action-import/index.md similarity index 100% rename from docs/zh-CN/plugins/import/index.md rename to docs/zh-CN/handbook/action-import/index.md diff --git a/docs/zh-CN/plugins/action-print/index.md b/docs/zh-CN/handbook/action-print/index.md similarity index 100% rename from docs/zh-CN/plugins/action-print/index.md rename to docs/zh-CN/handbook/action-print/index.md diff --git a/docs/zh-CN/plugins/api-doc/index.md b/docs/zh-CN/handbook/api-doc/index.md similarity index 100% rename from docs/zh-CN/plugins/api-doc/index.md rename to docs/zh-CN/handbook/api-doc/index.md diff --git a/docs/zh-CN/plugins/api-doc/static/HYjubXpVOokLitxuC90cxSzHnJb.png b/docs/zh-CN/handbook/api-doc/static/HYjubXpVOokLitxuC90cxSzHnJb.png similarity index 100% rename from docs/zh-CN/plugins/api-doc/static/HYjubXpVOokLitxuC90cxSzHnJb.png rename to docs/zh-CN/handbook/api-doc/static/HYjubXpVOokLitxuC90cxSzHnJb.png diff --git a/docs/zh-CN/plugins/api-doc/static/NFhXbRvfgoP08QxpAwdclb17nfc.png b/docs/zh-CN/handbook/api-doc/static/NFhXbRvfgoP08QxpAwdclb17nfc.png similarity index 100% rename from docs/zh-CN/plugins/api-doc/static/NFhXbRvfgoP08QxpAwdclb17nfc.png rename to docs/zh-CN/handbook/api-doc/static/NFhXbRvfgoP08QxpAwdclb17nfc.png diff --git a/docs/zh-CN/plugins/api-keys/image-1.png b/docs/zh-CN/handbook/api-keys/image-1.png similarity index 100% rename from docs/zh-CN/plugins/api-keys/image-1.png rename to docs/zh-CN/handbook/api-keys/image-1.png diff --git a/docs/zh-CN/plugins/api-keys/image.png b/docs/zh-CN/handbook/api-keys/image.png similarity index 100% rename from docs/zh-CN/plugins/api-keys/image.png rename to docs/zh-CN/handbook/api-keys/image.png diff --git a/docs/zh-CN/plugins/api-keys/index.md b/docs/zh-CN/handbook/api-keys/index.md similarity index 100% rename from docs/zh-CN/plugins/api-keys/index.md rename to docs/zh-CN/handbook/api-keys/index.md diff --git a/docs/zh-CN/plugins/audit-logs/index.md b/docs/zh-CN/handbook/audit-logs/index.md similarity index 100% rename from docs/zh-CN/plugins/audit-logs/index.md rename to docs/zh-CN/handbook/audit-logs/index.md diff --git a/docs/zh-CN/plugins/cas/index.md b/docs/zh-CN/handbook/auth-cas/index.md similarity index 100% rename from docs/zh-CN/plugins/cas/index.md rename to docs/zh-CN/handbook/auth-cas/index.md diff --git a/docs/zh-CN/plugins/cas/static/AGr7blmfHoef1kxKpDVc7JTnnlf.png b/docs/zh-CN/handbook/auth-cas/static/AGr7blmfHoef1kxKpDVc7JTnnlf.png similarity index 100% rename from docs/zh-CN/plugins/cas/static/AGr7blmfHoef1kxKpDVc7JTnnlf.png rename to docs/zh-CN/handbook/auth-cas/static/AGr7blmfHoef1kxKpDVc7JTnnlf.png diff --git a/docs/zh-CN/plugins/cas/static/OAYab64AWoL3jkxeLUDc3YBfnFs.png b/docs/zh-CN/handbook/auth-cas/static/OAYab64AWoL3jkxeLUDc3YBfnFs.png similarity index 100% rename from docs/zh-CN/plugins/cas/static/OAYab64AWoL3jkxeLUDc3YBfnFs.png rename to docs/zh-CN/handbook/auth-cas/static/OAYab64AWoL3jkxeLUDc3YBfnFs.png diff --git a/docs/zh-CN/plugins/cas/static/P3eDbyNhioPiJIxEIzWcfyTfnRe.png b/docs/zh-CN/handbook/auth-cas/static/P3eDbyNhioPiJIxEIzWcfyTfnRe.png similarity index 100% rename from docs/zh-CN/plugins/cas/static/P3eDbyNhioPiJIxEIzWcfyTfnRe.png rename to docs/zh-CN/handbook/auth-cas/static/P3eDbyNhioPiJIxEIzWcfyTfnRe.png diff --git a/docs/zh-CN/plugins/cas/static/XnzpbO09Vo5ha6xJfsTcifEunkh.png b/docs/zh-CN/handbook/auth-cas/static/XnzpbO09Vo5ha6xJfsTcifEunkh.png similarity index 100% rename from docs/zh-CN/plugins/cas/static/XnzpbO09Vo5ha6xJfsTcifEunkh.png rename to docs/zh-CN/handbook/auth-cas/static/XnzpbO09Vo5ha6xJfsTcifEunkh.png diff --git a/docs/zh-CN/plugins/oidc/example/google.md b/docs/zh-CN/handbook/auth-oidc/example/google.md similarity index 100% rename from docs/zh-CN/plugins/oidc/example/google.md rename to docs/zh-CN/handbook/auth-oidc/example/google.md diff --git a/docs/zh-CN/plugins/oidc/example/static/2023-12-03-17-20-14.png b/docs/zh-CN/handbook/auth-oidc/example/static/2023-12-03-17-20-14.png similarity index 100% rename from docs/zh-CN/plugins/oidc/example/static/2023-12-03-17-20-14.png rename to docs/zh-CN/handbook/auth-oidc/example/static/2023-12-03-17-20-14.png diff --git a/docs/zh-CN/plugins/oidc/example/static/2023-12-03-17-23-18.png b/docs/zh-CN/handbook/auth-oidc/example/static/2023-12-03-17-23-18.png similarity index 100% rename from docs/zh-CN/plugins/oidc/example/static/2023-12-03-17-23-18.png rename to docs/zh-CN/handbook/auth-oidc/example/static/2023-12-03-17-23-18.png diff --git a/docs/zh-CN/plugins/oidc/example/static/2023-12-03-18-28-33.png b/docs/zh-CN/handbook/auth-oidc/example/static/2023-12-03-18-28-33.png similarity index 100% rename from docs/zh-CN/plugins/oidc/example/static/2023-12-03-18-28-33.png rename to docs/zh-CN/handbook/auth-oidc/example/static/2023-12-03-18-28-33.png diff --git a/docs/zh-CN/plugins/oidc/index.md b/docs/zh-CN/handbook/auth-oidc/index.md similarity index 100% rename from docs/zh-CN/plugins/oidc/index.md rename to docs/zh-CN/handbook/auth-oidc/index.md diff --git a/docs/zh-CN/plugins/oidc/static/2023-12-03-18-18-22.png b/docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-18-22.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2023-12-03-18-18-22.png rename to docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-18-22.png diff --git a/docs/zh-CN/plugins/oidc/static/2023-12-03-18-19-33.png b/docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-19-33.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2023-12-03-18-19-33.png rename to docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-19-33.png diff --git a/docs/zh-CN/plugins/oidc/static/2023-12-03-18-19-48.png b/docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-19-48.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2023-12-03-18-19-48.png rename to docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-19-48.png diff --git a/docs/zh-CN/plugins/oidc/static/2023-12-03-18-20-35.png b/docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-20-35.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2023-12-03-18-20-35.png rename to docs/zh-CN/handbook/auth-oidc/static/2023-12-03-18-20-35.png diff --git a/docs/zh-CN/plugins/oidc/static/2024-01-11-10-40-02.png b/docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-40-02.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2024-01-11-10-40-02.png rename to docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-40-02.png diff --git a/docs/zh-CN/plugins/oidc/static/2024-01-11-10-41-56.png b/docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-41-56.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2024-01-11-10-41-56.png rename to docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-41-56.png diff --git a/docs/zh-CN/plugins/oidc/static/2024-01-11-10-42-44.png b/docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-42-44.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2024-01-11-10-42-44.png rename to docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-42-44.png diff --git a/docs/zh-CN/plugins/oidc/static/2024-01-11-10-43-39.png b/docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-43-39.png similarity index 100% rename from docs/zh-CN/plugins/oidc/static/2024-01-11-10-43-39.png rename to docs/zh-CN/handbook/auth-oidc/static/2024-01-11-10-43-39.png diff --git a/docs/zh-CN/plugins/saml/example/google.md b/docs/zh-CN/handbook/auth-saml/example/google.md similarity index 100% rename from docs/zh-CN/plugins/saml/example/google.md rename to docs/zh-CN/handbook/auth-saml/example/google.md diff --git a/docs/zh-CN/plugins/saml/example/static/2023-12-03-17-43-40.png b/docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-43-40.png similarity index 100% rename from docs/zh-CN/plugins/saml/example/static/2023-12-03-17-43-40.png rename to docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-43-40.png diff --git a/docs/zh-CN/plugins/saml/example/static/2023-12-03-17-53-20.png b/docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-53-20.png similarity index 100% rename from docs/zh-CN/plugins/saml/example/static/2023-12-03-17-53-20.png rename to docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-53-20.png diff --git a/docs/zh-CN/plugins/saml/example/static/2023-12-03-17-57-33.png b/docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-57-33.png similarity index 100% rename from docs/zh-CN/plugins/saml/example/static/2023-12-03-17-57-33.png rename to docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-57-33.png diff --git a/docs/zh-CN/plugins/saml/example/static/2023-12-03-17-58-06.png b/docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-58-06.png similarity index 100% rename from docs/zh-CN/plugins/saml/example/static/2023-12-03-17-58-06.png rename to docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-58-06.png diff --git a/docs/zh-CN/plugins/saml/example/static/2023-12-03-17-59-27.png b/docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-59-27.png similarity index 100% rename from docs/zh-CN/plugins/saml/example/static/2023-12-03-17-59-27.png rename to docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-17-59-27.png diff --git a/docs/zh-CN/plugins/saml/example/static/2023-12-03-18-32-59.png b/docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-18-32-59.png similarity index 100% rename from docs/zh-CN/plugins/saml/example/static/2023-12-03-18-32-59.png rename to docs/zh-CN/handbook/auth-saml/example/static/2023-12-03-18-32-59.png diff --git a/docs/zh-CN/plugins/saml/index.md b/docs/zh-CN/handbook/auth-saml/index.md similarity index 94% rename from docs/zh-CN/plugins/saml/index.md rename to docs/zh-CN/handbook/auth-saml/index.md index 8ac392405..950a85f61 100644 --- a/docs/zh-CN/plugins/saml/index.md +++ b/docs/zh-CN/handbook/auth-saml/index.md @@ -12,7 +12,7 @@ SAML 插件遵循 SAML2.0 协议标准,实现用户使用第三方身份认证 进入用户认证插件管理页面。 -![](../oidc/static/2023-12-03-18-19-33.png) +![](../auth-oidc/static/2023-12-03-18-19-33.png) 添加 - SAML @@ -32,7 +32,7 @@ SAML 插件遵循 SAML2.0 协议标准,实现用户使用第三方身份认证 ## 字段映射 -字段映射需要在IdP的配置平台上进行配置,可参考[示例](../saml/example/google.md)。 +字段映射需要在IdP的配置平台上进行配置,可参考[示例](../auth-saml/example/google.md)。 NocoBase可供映射的字段有: diff --git a/docs/zh-CN/plugins/saml/static/2023-12-03-18-29-18.png b/docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-29-18.png similarity index 100% rename from docs/zh-CN/plugins/saml/static/2023-12-03-18-29-18.png rename to docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-29-18.png diff --git a/docs/zh-CN/plugins/saml/static/2023-12-03-18-29-45.png b/docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-29-45.png similarity index 100% rename from docs/zh-CN/plugins/saml/static/2023-12-03-18-29-45.png rename to docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-29-45.png diff --git a/docs/zh-CN/plugins/saml/static/2023-12-03-18-30-08.png b/docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-30-08.png similarity index 100% rename from docs/zh-CN/plugins/saml/static/2023-12-03-18-30-08.png rename to docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-30-08.png diff --git a/docs/zh-CN/plugins/saml/static/2023-12-03-18-30-33.png b/docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-30-33.png similarity index 100% rename from docs/zh-CN/plugins/saml/static/2023-12-03-18-30-33.png rename to docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-30-33.png diff --git a/docs/zh-CN/plugins/saml/static/2023-12-03-18-32-21.png b/docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-32-21.png similarity index 100% rename from docs/zh-CN/plugins/saml/static/2023-12-03-18-32-21.png rename to docs/zh-CN/handbook/auth-saml/static/2023-12-03-18-32-21.png diff --git a/docs/zh-CN/plugins/sms-auth/index.md b/docs/zh-CN/handbook/auth-sms/index.md similarity index 94% rename from docs/zh-CN/plugins/sms-auth/index.md rename to docs/zh-CN/handbook/auth-sms/index.md index ad11372c4..5f5cb86ec 100644 --- a/docs/zh-CN/plugins/sms-auth/index.md +++ b/docs/zh-CN/handbook/auth-sms/index.md @@ -10,7 +10,7 @@ 进入用户认证插件管理页面。 -![](../oidc/static/2023-12-03-18-19-33.png) +![](../auth-oidc/static/2023-12-03-18-19-33.png) 添加 - 短信 (SMS) diff --git a/docs/zh-CN/plugins/sms-auth/static/2023-12-03-19-02-33.png b/docs/zh-CN/handbook/auth-sms/static/2023-12-03-19-02-33.png similarity index 100% rename from docs/zh-CN/plugins/sms-auth/static/2023-12-03-19-02-33.png rename to docs/zh-CN/handbook/auth-sms/static/2023-12-03-19-02-33.png diff --git a/docs/zh-CN/plugins/sms-auth/static/2023-12-03-19-04-34.png b/docs/zh-CN/handbook/auth-sms/static/2023-12-03-19-04-34.png similarity index 100% rename from docs/zh-CN/plugins/sms-auth/static/2023-12-03-19-04-34.png rename to docs/zh-CN/handbook/auth-sms/static/2023-12-03-19-04-34.png diff --git a/docs/zh-CN/plugins/sms-auth/static/2023-12-03-19-06-26.png b/docs/zh-CN/handbook/auth-sms/static/2023-12-03-19-06-26.png similarity index 100% rename from docs/zh-CN/plugins/sms-auth/static/2023-12-03-19-06-26.png rename to docs/zh-CN/handbook/auth-sms/static/2023-12-03-19-06-26.png diff --git a/docs/zh-CN/plugins/auth/dev/api.md b/docs/zh-CN/handbook/auth/dev/api.md similarity index 100% rename from docs/zh-CN/plugins/auth/dev/api.md rename to docs/zh-CN/handbook/auth/dev/api.md diff --git a/docs/zh-CN/plugins/auth/dev/guide.md b/docs/zh-CN/handbook/auth/dev/guide.md similarity index 100% rename from docs/zh-CN/plugins/auth/dev/guide.md rename to docs/zh-CN/handbook/auth/dev/guide.md diff --git a/docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-08-49.png b/docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-08-49.png similarity index 100% rename from docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-08-49.png rename to docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-08-49.png diff --git a/docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-12-45.png b/docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-12-45.png similarity index 100% rename from docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-12-45.png rename to docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-12-45.png diff --git a/docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-17-07.png b/docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-17-07.png similarity index 100% rename from docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-17-07.png rename to docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-17-07.png diff --git a/docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-19-51.png b/docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-19-51.png similarity index 100% rename from docs/zh-CN/plugins/auth/dev/static/2023-12-20-12-19-51.png rename to docs/zh-CN/handbook/auth/dev/static/2023-12-20-12-19-51.png diff --git a/docs/zh-CN/plugins/auth/dev/static/2023-12-22-10-21-28.png b/docs/zh-CN/handbook/auth/dev/static/2023-12-22-10-21-28.png similarity index 100% rename from docs/zh-CN/plugins/auth/dev/static/2023-12-22-10-21-28.png rename to docs/zh-CN/handbook/auth/dev/static/2023-12-22-10-21-28.png diff --git a/docs/zh-CN/plugins/auth/index.md b/docs/zh-CN/handbook/auth/index.md similarity index 75% rename from docs/zh-CN/plugins/auth/index.md rename to docs/zh-CN/handbook/auth/index.md index 3d7919f23..bb62b585f 100644 --- a/docs/zh-CN/plugins/auth/index.md +++ b/docs/zh-CN/handbook/auth/index.md @@ -11,10 +11,10 @@ NocoBase 的用户认证模块主要由两部分组成: 除此之外,Nocobase还提供了其他多种用户认证方式插件 -- [@nocobase/plugin-sms-auth](../sms-auth/index.md) - 提供短信验证登录功能 -- [@nocobase/plugin-saml](../saml/index.md) - 提供SAML SSO登录功能 -- [@nocobase/plugin-oidc](../oidc/index.md) - 提供OIDC SSO登录功能 -- [@nocobase/plugin-cas](../cas/index.md) - 提供CAS SSO登录功能 +- [@nocobase/plugin-auth-sms](../auth-sms/index.md) - 提供短信验证登录功能 +- [@nocobase/plugin-auth-saml](../auth-saml/index.md) - 提供SAML SSO登录功能 +- [@nocobase/plugin-auth-oidc](../auth-oidc/index.md) - 提供OIDC SSO登录功能 +- [@nocobase/plugin-auth-cas](../auth-cas/index.md) - 提供CAS SSO登录功能 通过以上插件,管理员配置好相应的认证方式以后,用户可以直接使用 Google Workspace, Microsoft Azure 等平台提供的用户身份登录系统,也可以对 接Auth0, Logto, Keycloak 等平台工具。除此之外,开发者也可以通过我们提供的基础接口很方便地扩展自己所需要的其他认证方式。 diff --git a/docs/zh-CN/plugins/auth/user/index.md b/docs/zh-CN/handbook/auth/user/index.md similarity index 82% rename from docs/zh-CN/plugins/auth/user/index.md rename to docs/zh-CN/handbook/auth/user/index.md index 74f60becb..e41e4f2b3 100644 --- a/docs/zh-CN/plugins/auth/user/index.md +++ b/docs/zh-CN/handbook/auth/user/index.md @@ -21,10 +21,10 @@ NocoBase 目前支持的用户认证类型有: - 密码 (Password),用户认证插件内置 -- 短信 (SMS),[sms-auth 插件](../../sms-auth/index.md) 扩展 -- CAS,[cas-auth 插件](../../cas/index.md) 扩展 -- SAML,[saml-auth 插件](../../saml/index.md) 扩展 -- OIDC,[oidc-auth 插件](../../oidc/index.md) 扩展 +- 短信 (SMS),[sms-auth 插件](../../auth-sms/index.md) 扩展 +- CAS,[cas-auth 插件](../../auth-cas/index.md) 扩展 +- SAML,[saml-auth 插件](../../auth-saml/index.md) 扩展 +- OIDC,[oidc-auth 插件](../../auth-oidc/index.md) 扩展 除此之外,也可以自己扩展用户认证,参考[开发指南](../dev/guide.md)。 diff --git a/docs/zh-CN/plugins/auth/user/static/EvrrbNVmUoJVczxJvkzclPKqn7e.png b/docs/zh-CN/handbook/auth/user/static/EvrrbNVmUoJVczxJvkzclPKqn7e.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/EvrrbNVmUoJVczxJvkzclPKqn7e.png rename to docs/zh-CN/handbook/auth/user/static/EvrrbNVmUoJVczxJvkzclPKqn7e.png diff --git a/docs/zh-CN/plugins/auth/user/static/GOJ0bwOYVoNkBKxkpmGcEqyqnI2.png b/docs/zh-CN/handbook/auth/user/static/GOJ0bwOYVoNkBKxkpmGcEqyqnI2.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/GOJ0bwOYVoNkBKxkpmGcEqyqnI2.png rename to docs/zh-CN/handbook/auth/user/static/GOJ0bwOYVoNkBKxkpmGcEqyqnI2.png diff --git a/docs/zh-CN/plugins/auth/user/static/HYNZb9vvXo0GXuxpLCvcDTC5nfh.png b/docs/zh-CN/handbook/auth/user/static/HYNZb9vvXo0GXuxpLCvcDTC5nfh.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/HYNZb9vvXo0GXuxpLCvcDTC5nfh.png rename to docs/zh-CN/handbook/auth/user/static/HYNZb9vvXo0GXuxpLCvcDTC5nfh.png diff --git a/docs/zh-CN/plugins/auth/user/static/Kc72bM430oWacrxbxvScS3S3nGc.png b/docs/zh-CN/handbook/auth/user/static/Kc72bM430oWacrxbxvScS3S3nGc.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/Kc72bM430oWacrxbxvScS3S3nGc.png rename to docs/zh-CN/handbook/auth/user/static/Kc72bM430oWacrxbxvScS3S3nGc.png diff --git a/docs/zh-CN/plugins/auth/user/static/NsBebeTkAoDSnExFStmc84iondd.png b/docs/zh-CN/handbook/auth/user/static/NsBebeTkAoDSnExFStmc84iondd.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/NsBebeTkAoDSnExFStmc84iondd.png rename to docs/zh-CN/handbook/auth/user/static/NsBebeTkAoDSnExFStmc84iondd.png diff --git a/docs/zh-CN/plugins/auth/user/static/OyOHbaKJyogTBXxhW5wcO3QEn0e.png b/docs/zh-CN/handbook/auth/user/static/OyOHbaKJyogTBXxhW5wcO3QEn0e.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/OyOHbaKJyogTBXxhW5wcO3QEn0e.png rename to docs/zh-CN/handbook/auth/user/static/OyOHbaKJyogTBXxhW5wcO3QEn0e.png diff --git a/docs/zh-CN/plugins/auth/user/static/Rs2obD3ZRohmtjxlQxPcT123n7e.png b/docs/zh-CN/handbook/auth/user/static/Rs2obD3ZRohmtjxlQxPcT123n7e.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/Rs2obD3ZRohmtjxlQxPcT123n7e.png rename to docs/zh-CN/handbook/auth/user/static/Rs2obD3ZRohmtjxlQxPcT123n7e.png diff --git a/docs/zh-CN/plugins/auth/user/static/Ut6KbpRe0oI1NoxHkbZcXftkndc.png b/docs/zh-CN/handbook/auth/user/static/Ut6KbpRe0oI1NoxHkbZcXftkndc.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/Ut6KbpRe0oI1NoxHkbZcXftkndc.png rename to docs/zh-CN/handbook/auth/user/static/Ut6KbpRe0oI1NoxHkbZcXftkndc.png diff --git a/docs/zh-CN/plugins/auth/user/static/UulRbfMpWogGHnxpk1Yc0asenFe.png b/docs/zh-CN/handbook/auth/user/static/UulRbfMpWogGHnxpk1Yc0asenFe.png similarity index 100% rename from docs/zh-CN/plugins/auth/user/static/UulRbfMpWogGHnxpk1Yc0asenFe.png rename to docs/zh-CN/handbook/auth/user/static/UulRbfMpWogGHnxpk1Yc0asenFe.png diff --git a/docs/zh-CN/plugins/backup-restore/image-1.png b/docs/zh-CN/handbook/backup-restore/image-1.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image-1.png rename to docs/zh-CN/handbook/backup-restore/image-1.png diff --git a/docs/zh-CN/plugins/backup-restore/image-2.png b/docs/zh-CN/handbook/backup-restore/image-2.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image-2.png rename to docs/zh-CN/handbook/backup-restore/image-2.png diff --git a/docs/zh-CN/plugins/backup-restore/image-3.png b/docs/zh-CN/handbook/backup-restore/image-3.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image-3.png rename to docs/zh-CN/handbook/backup-restore/image-3.png diff --git a/docs/zh-CN/plugins/backup-restore/image-4.png b/docs/zh-CN/handbook/backup-restore/image-4.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image-4.png rename to docs/zh-CN/handbook/backup-restore/image-4.png diff --git a/docs/zh-CN/plugins/backup-restore/image-5.png b/docs/zh-CN/handbook/backup-restore/image-5.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image-5.png rename to docs/zh-CN/handbook/backup-restore/image-5.png diff --git a/docs/zh-CN/plugins/backup-restore/image-6.png b/docs/zh-CN/handbook/backup-restore/image-6.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image-6.png rename to docs/zh-CN/handbook/backup-restore/image-6.png diff --git a/docs/zh-CN/plugins/backup-restore/image.png b/docs/zh-CN/handbook/backup-restore/image.png similarity index 100% rename from docs/zh-CN/plugins/backup-restore/image.png rename to docs/zh-CN/handbook/backup-restore/image.png diff --git a/docs/zh-CN/plugins/backup-restore/index.md b/docs/zh-CN/handbook/backup-restore/index.md similarity index 100% rename from docs/zh-CN/plugins/backup-restore/index.md rename to docs/zh-CN/handbook/backup-restore/index.md diff --git a/docs/zh-CN/plugins/gantt/index.md b/docs/zh-CN/handbook/block-gantt/index.md similarity index 100% rename from docs/zh-CN/plugins/gantt/index.md rename to docs/zh-CN/handbook/block-gantt/index.md diff --git a/docs/zh-CN/plugins/gantt/static/BRIcbgJ8Do7SQ5xHshUcHVjdnMc.gif b/docs/zh-CN/handbook/block-gantt/static/BRIcbgJ8Do7SQ5xHshUcHVjdnMc.gif similarity index 100% rename from docs/zh-CN/plugins/gantt/static/BRIcbgJ8Do7SQ5xHshUcHVjdnMc.gif rename to docs/zh-CN/handbook/block-gantt/static/BRIcbgJ8Do7SQ5xHshUcHVjdnMc.gif diff --git a/docs/zh-CN/plugins/gantt/static/LcyebGwVVoEBdvx4ZDicXOj1n8f.png b/docs/zh-CN/handbook/block-gantt/static/LcyebGwVVoEBdvx4ZDicXOj1n8f.png similarity index 100% rename from docs/zh-CN/plugins/gantt/static/LcyebGwVVoEBdvx4ZDicXOj1n8f.png rename to docs/zh-CN/handbook/block-gantt/static/LcyebGwVVoEBdvx4ZDicXOj1n8f.png diff --git a/docs/zh-CN/plugins/gantt/static/MDvAbz30ooHoiQxkqRYcDGG1npb.gif b/docs/zh-CN/handbook/block-gantt/static/MDvAbz30ooHoiQxkqRYcDGG1npb.gif similarity index 100% rename from docs/zh-CN/plugins/gantt/static/MDvAbz30ooHoiQxkqRYcDGG1npb.gif rename to docs/zh-CN/handbook/block-gantt/static/MDvAbz30ooHoiQxkqRYcDGG1npb.gif diff --git a/docs/zh-CN/plugins/gantt/static/P3klb1WIOoL4msxQWiycleCgnPb.png b/docs/zh-CN/handbook/block-gantt/static/P3klb1WIOoL4msxQWiycleCgnPb.png similarity index 100% rename from docs/zh-CN/plugins/gantt/static/P3klb1WIOoL4msxQWiycleCgnPb.png rename to docs/zh-CN/handbook/block-gantt/static/P3klb1WIOoL4msxQWiycleCgnPb.png diff --git a/docs/zh-CN/plugins/gantt/static/PK01bb2aOo97nIxBzwgcCoXlnjb.png b/docs/zh-CN/handbook/block-gantt/static/PK01bb2aOo97nIxBzwgcCoXlnjb.png similarity index 100% rename from docs/zh-CN/plugins/gantt/static/PK01bb2aOo97nIxBzwgcCoXlnjb.png rename to docs/zh-CN/handbook/block-gantt/static/PK01bb2aOo97nIxBzwgcCoXlnjb.png diff --git a/docs/zh-CN/plugins/iframe-block/index.md b/docs/zh-CN/handbook/block-iframe/index.md similarity index 100% rename from docs/zh-CN/plugins/iframe-block/index.md rename to docs/zh-CN/handbook/block-iframe/index.md diff --git a/docs/zh-CN/plugins/kanban/index.md b/docs/zh-CN/handbook/block-kanban/index.md similarity index 100% rename from docs/zh-CN/plugins/kanban/index.md rename to docs/zh-CN/handbook/block-kanban/index.md diff --git a/docs/zh-CN/plugins/kanban/static/ER09beUFAoC59JxXPprctLmbnwE.gif b/docs/zh-CN/handbook/block-kanban/static/ER09beUFAoC59JxXPprctLmbnwE.gif similarity index 100% rename from docs/zh-CN/plugins/kanban/static/ER09beUFAoC59JxXPprctLmbnwE.gif rename to docs/zh-CN/handbook/block-kanban/static/ER09beUFAoC59JxXPprctLmbnwE.gif diff --git a/docs/zh-CN/plugins/kanban/static/GrhobxsDJoB72Bx0kCAcXPp8nwe.png b/docs/zh-CN/handbook/block-kanban/static/GrhobxsDJoB72Bx0kCAcXPp8nwe.png similarity index 100% rename from docs/zh-CN/plugins/kanban/static/GrhobxsDJoB72Bx0kCAcXPp8nwe.png rename to docs/zh-CN/handbook/block-kanban/static/GrhobxsDJoB72Bx0kCAcXPp8nwe.png diff --git a/docs/zh-CN/plugins/kanban/static/JupDbsBBSowHoqx5fIhcWVn5nTg.png b/docs/zh-CN/handbook/block-kanban/static/JupDbsBBSowHoqx5fIhcWVn5nTg.png similarity index 100% rename from docs/zh-CN/plugins/kanban/static/JupDbsBBSowHoqx5fIhcWVn5nTg.png rename to docs/zh-CN/handbook/block-kanban/static/JupDbsBBSowHoqx5fIhcWVn5nTg.png diff --git a/docs/zh-CN/handbook/calendar/calendar-block.md b/docs/zh-CN/handbook/calendar/calendar-block.md new file mode 100644 index 000000000..62451bae4 --- /dev/null +++ b/docs/zh-CN/handbook/calendar/calendar-block.md @@ -0,0 +1 @@ +# 日历区块 diff --git a/docs/zh-CN/handbook/calendar/calendar-collection.md b/docs/zh-CN/handbook/calendar/calendar-collection.md new file mode 100644 index 000000000..9f17d00ee --- /dev/null +++ b/docs/zh-CN/handbook/calendar/calendar-collection.md @@ -0,0 +1,5 @@ +# 日历表 + +:::info +This feature is powered by plugin-calendar. +::: \ No newline at end of file diff --git a/docs/zh-CN/handbook/calendar/index.md b/docs/zh-CN/handbook/calendar/index.md new file mode 100644 index 000000000..92195de80 --- /dev/null +++ b/docs/zh-CN/handbook/calendar/index.md @@ -0,0 +1 @@ +# 日历 \ No newline at end of file diff --git a/docs/zh-CN/plugins/china-region/index.md b/docs/zh-CN/handbook/china-region/index.md similarity index 100% rename from docs/zh-CN/plugins/china-region/index.md rename to docs/zh-CN/handbook/china-region/index.md diff --git a/docs/zh-CN/plugins/client/index.md b/docs/zh-CN/handbook/client/index.md similarity index 100% rename from docs/zh-CN/plugins/client/index.md rename to docs/zh-CN/handbook/client/index.md diff --git a/docs/zh-CN/plugins/client/user/index.md b/docs/zh-CN/handbook/client/user/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/index.md rename to docs/zh-CN/handbook/client/user/index.md diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/index.md b/docs/zh-CN/handbook/client/user/plugin-manager/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/index.md rename to docs/zh-CN/handbook/client/user/plugin-manager/index.md diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/DtkpbfloNog6gtxM6RWcqDYwnph.png b/docs/zh-CN/handbook/client/user/plugin-manager/static/DtkpbfloNog6gtxM6RWcqDYwnph.png similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/DtkpbfloNog6gtxM6RWcqDYwnph.png rename to docs/zh-CN/handbook/client/user/plugin-manager/static/DtkpbfloNog6gtxM6RWcqDYwnph.png diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/Ehu2boQ2xowSrnxpMS1ctIprnMd.png b/docs/zh-CN/handbook/client/user/plugin-manager/static/Ehu2boQ2xowSrnxpMS1ctIprnMd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/Ehu2boQ2xowSrnxpMS1ctIprnMd.png rename to docs/zh-CN/handbook/client/user/plugin-manager/static/Ehu2boQ2xowSrnxpMS1ctIprnMd.png diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/K8JDbo9JCo9iCExVEw4cKHfOnPg.png b/docs/zh-CN/handbook/client/user/plugin-manager/static/K8JDbo9JCo9iCExVEw4cKHfOnPg.png similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/K8JDbo9JCo9iCExVEw4cKHfOnPg.png rename to docs/zh-CN/handbook/client/user/plugin-manager/static/K8JDbo9JCo9iCExVEw4cKHfOnPg.png diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/LcP9b9oVwoN5ZQx2CZScJ7TAn9c.gif b/docs/zh-CN/handbook/client/user/plugin-manager/static/LcP9b9oVwoN5ZQx2CZScJ7TAn9c.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/LcP9b9oVwoN5ZQx2CZScJ7TAn9c.gif rename to docs/zh-CN/handbook/client/user/plugin-manager/static/LcP9b9oVwoN5ZQx2CZScJ7TAn9c.gif diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/Mgo0bjYccoNjmNxNT8rcfF0tndd.png b/docs/zh-CN/handbook/client/user/plugin-manager/static/Mgo0bjYccoNjmNxNT8rcfF0tndd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/Mgo0bjYccoNjmNxNT8rcfF0tndd.png rename to docs/zh-CN/handbook/client/user/plugin-manager/static/Mgo0bjYccoNjmNxNT8rcfF0tndd.png diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/NOz2b4To1o1fMbxqnb8cfqacnfT.gif b/docs/zh-CN/handbook/client/user/plugin-manager/static/NOz2b4To1o1fMbxqnb8cfqacnfT.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/NOz2b4To1o1fMbxqnb8cfqacnfT.gif rename to docs/zh-CN/handbook/client/user/plugin-manager/static/NOz2b4To1o1fMbxqnb8cfqacnfT.gif diff --git a/docs/zh-CN/plugins/client/user/plugin-manager/static/VehkbE6RqogLlcxoRrVcEvpJn0e.gif b/docs/zh-CN/handbook/client/user/plugin-manager/static/VehkbE6RqogLlcxoRrVcEvpJn0e.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-manager/static/VehkbE6RqogLlcxoRrVcEvpJn0e.gif rename to docs/zh-CN/handbook/client/user/plugin-manager/static/VehkbE6RqogLlcxoRrVcEvpJn0e.gif diff --git a/docs/zh-CN/plugins/client/user/plugin-settings/index.md b/docs/zh-CN/handbook/client/user/plugin-settings/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-settings/index.md rename to docs/zh-CN/handbook/client/user/plugin-settings/index.md diff --git a/docs/zh-CN/plugins/client/user/plugin-settings/static/N50VbOPHpoKvYVxacuUc1i6Cnrd.jpeg b/docs/zh-CN/handbook/client/user/plugin-settings/static/N50VbOPHpoKvYVxacuUc1i6Cnrd.jpeg similarity index 100% rename from docs/zh-CN/plugins/client/user/plugin-settings/static/N50VbOPHpoKvYVxacuUc1i6Cnrd.jpeg rename to docs/zh-CN/handbook/client/user/plugin-settings/static/N50VbOPHpoKvYVxacuUc1i6Cnrd.jpeg diff --git a/docs/zh-CN/plugins/client/user/static/CbzRbkcI2onjbkxFOVccwafpnrh.png b/docs/zh-CN/handbook/client/user/static/CbzRbkcI2onjbkxFOVccwafpnrh.png similarity index 100% rename from docs/zh-CN/plugins/client/user/static/CbzRbkcI2onjbkxFOVccwafpnrh.png rename to docs/zh-CN/handbook/client/user/static/CbzRbkcI2onjbkxFOVccwafpnrh.png diff --git a/docs/zh-CN/plugins/client/user/static/M6U6b8YAgovpFIxTzaccmcp5nme.png b/docs/zh-CN/handbook/client/user/static/M6U6b8YAgovpFIxTzaccmcp5nme.png similarity index 100% rename from docs/zh-CN/plugins/client/user/static/M6U6b8YAgovpFIxTzaccmcp5nme.png rename to docs/zh-CN/handbook/client/user/static/M6U6b8YAgovpFIxTzaccmcp5nme.png diff --git a/docs/zh-CN/plugins/client/user/static/PqPnbVWuYo9GYgxCrxfcTK8rnof.png b/docs/zh-CN/handbook/client/user/static/PqPnbVWuYo9GYgxCrxfcTK8rnof.png similarity index 100% rename from docs/zh-CN/plugins/client/user/static/PqPnbVWuYo9GYgxCrxfcTK8rnof.png rename to docs/zh-CN/handbook/client/user/static/PqPnbVWuYo9GYgxCrxfcTK8rnof.png diff --git a/docs/zh-CN/plugins/client/user/static/T3J0b4zZ2o8ZiUxBG7lcgNYIn2g.png b/docs/zh-CN/handbook/client/user/static/T3J0b4zZ2o8ZiUxBG7lcgNYIn2g.png similarity index 100% rename from docs/zh-CN/plugins/client/user/static/T3J0b4zZ2o8ZiUxBG7lcgNYIn2g.png rename to docs/zh-CN/handbook/client/user/static/T3J0b4zZ2o8ZiUxBG7lcgNYIn2g.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/add-new.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/add-new.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/add-new.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/add-new.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/add-record.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/add-record.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/add-record.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/add-record.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/custom-request.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/custom-request.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/custom-request.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/custom-request.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/delete.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/delete.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/delete.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/delete.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/duplicate.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/duplicate.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/duplicate.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/duplicate.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/edit.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/edit.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/edit.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/edit.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/export.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/export.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/export.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/export.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/filter.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/filter.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/filter.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/filter.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/import.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/import.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/import.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/import.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/index.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/index.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/index.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/open-popup.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/open-popup.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/open-popup.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/open-popup.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/print.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/print.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/print.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/print.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/refresh.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/refresh.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/refresh.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/refresh.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/save-record.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/save-record.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/save-record.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/save-record.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/ApcrbSF87oD3roxGW80cFkAxn2c.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/ApcrbSF87oD3roxGW80cFkAxn2c.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/ApcrbSF87oD3roxGW80cFkAxn2c.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/ApcrbSF87oD3roxGW80cFkAxn2c.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/BoEEbVUptoQCXOxvFJTc0p8Vnlb.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/BoEEbVUptoQCXOxvFJTc0p8Vnlb.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/BoEEbVUptoQCXOxvFJTc0p8Vnlb.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/BoEEbVUptoQCXOxvFJTc0p8Vnlb.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/C8RzbI7v5opcUNx7OWzcz1l6nxc.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/C8RzbI7v5opcUNx7OWzcz1l6nxc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/C8RzbI7v5opcUNx7OWzcz1l6nxc.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/C8RzbI7v5opcUNx7OWzcz1l6nxc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/CzfCbLjC3oPItSxoeGAcDh0Rnte.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/CzfCbLjC3oPItSxoeGAcDh0Rnte.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/CzfCbLjC3oPItSxoeGAcDh0Rnte.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/CzfCbLjC3oPItSxoeGAcDh0Rnte.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/DKwnbW8MfohvHjxplG4cVkcnn8d.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/DKwnbW8MfohvHjxplG4cVkcnn8d.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/DKwnbW8MfohvHjxplG4cVkcnn8d.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/DKwnbW8MfohvHjxplG4cVkcnn8d.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/DTzUb0LcPoimfBxvHoHcDD5znAf.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/DTzUb0LcPoimfBxvHoHcDD5znAf.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/DTzUb0LcPoimfBxvHoHcDD5znAf.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/DTzUb0LcPoimfBxvHoHcDD5znAf.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/G1bpbybaVoAWKlx4mCmc6HvQn0b.gif b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/G1bpbybaVoAWKlx4mCmc6HvQn0b.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/G1bpbybaVoAWKlx4mCmc6HvQn0b.gif rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/G1bpbybaVoAWKlx4mCmc6HvQn0b.gif diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/H1hPbS7CWooWjpxAUfActBgbnsW.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/H1hPbS7CWooWjpxAUfActBgbnsW.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/H1hPbS7CWooWjpxAUfActBgbnsW.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/H1hPbS7CWooWjpxAUfActBgbnsW.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/J0udbzu0AoU7sVxJ9xtcvQdLnNc.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/J0udbzu0AoU7sVxJ9xtcvQdLnNc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/J0udbzu0AoU7sVxJ9xtcvQdLnNc.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/J0udbzu0AoU7sVxJ9xtcvQdLnNc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/JzDSbax1BoXxy2xrD6CcYuEKnRp.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/JzDSbax1BoXxy2xrD6CcYuEKnRp.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/JzDSbax1BoXxy2xrD6CcYuEKnRp.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/JzDSbax1BoXxy2xrD6CcYuEKnRp.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/KR15bOuXoo0u5QxZXmjcNbUJnoe.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/KsK1b5DOwoKI1qx4Qhscahrrneb.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/KsK1b5DOwoKI1qx4Qhscahrrneb.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/KsK1b5DOwoKI1qx4Qhscahrrneb.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/KsK1b5DOwoKI1qx4Qhscahrrneb.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/MDtybwjRsoC8qfxrFAecdJpkngc.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/MDtybwjRsoC8qfxrFAecdJpkngc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/MDtybwjRsoC8qfxrFAecdJpkngc.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/MDtybwjRsoC8qfxrFAecdJpkngc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/NRH9bnRw8ogxRkxZ7i3clbW1nRv.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/NRH9bnRw8ogxRkxZ7i3clbW1nRv.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/NRH9bnRw8ogxRkxZ7i3clbW1nRv.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/NRH9bnRw8ogxRkxZ7i3clbW1nRv.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/Ox76b54eho4fTUxdk67cjcjenCc.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/Ox76b54eho4fTUxdk67cjcjenCc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/Ox76b54eho4fTUxdk67cjcjenCc.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/Ox76b54eho4fTUxdk67cjcjenCc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/PAgIbrq5xoMKKfxoG8mcOIOynpf.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/PAgIbrq5xoMKKfxoG8mcOIOynpf.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/PAgIbrq5xoMKKfxoG8mcOIOynpf.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/PAgIbrq5xoMKKfxoG8mcOIOynpf.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/Pkf4bvn30oWEIjxrFmPc3d0lnPd.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/QBHTb3fVBot2lqxdGnhcf29tnrb.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/QBHTb3fVBot2lqxdGnhcf29tnrb.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/QBHTb3fVBot2lqxdGnhcf29tnrb.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/QBHTb3fVBot2lqxdGnhcf29tnrb.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/QPq9bd2xaoB6unxVvEPccbJsnRg.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/QPq9bd2xaoB6unxVvEPccbJsnRg.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/QPq9bd2xaoB6unxVvEPccbJsnRg.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/QPq9bd2xaoB6unxVvEPccbJsnRg.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/QqICbfLMMozpgBxYBpMcKuOKnmg.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/R3f2biRIdoEm7DxUO6Ec1abXnKc.gif diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/R5eGbDbcEoLPrexCEzAcgnWfnjT.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/R5eGbDbcEoLPrexCEzAcgnWfnjT.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/R5eGbDbcEoLPrexCEzAcgnWfnjT.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/R5eGbDbcEoLPrexCEzAcgnWfnjT.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/RDaibir7Jo6NHzx4IuGcYiKLnGb.gif b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/RDaibir7Jo6NHzx4IuGcYiKLnGb.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/RDaibir7Jo6NHzx4IuGcYiKLnGb.gif rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/RDaibir7Jo6NHzx4IuGcYiKLnGb.gif diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/RUsJb4OBFow7zcxSgKocJN6Fnah.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/RUsJb4OBFow7zcxSgKocJN6Fnah.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/RUsJb4OBFow7zcxSgKocJN6Fnah.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/RUsJb4OBFow7zcxSgKocJN6Fnah.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/RZhIbo49lo2vV5xV5hZc0jkfn1d.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/SGMubg0mCoVcbSxmOficmvisnHd.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/SGMubg0mCoVcbSxmOficmvisnHd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/SGMubg0mCoVcbSxmOficmvisnHd.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/SGMubg0mCoVcbSxmOficmvisnHd.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/SHP3b6s7YoabQ2xFO5pc8ZwDnNg.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/SHP3b6s7YoabQ2xFO5pc8ZwDnNg.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/SHP3b6s7YoabQ2xFO5pc8ZwDnNg.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/SHP3b6s7YoabQ2xFO5pc8ZwDnNg.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/SU3PbOHyDoPT13xt4n2c785Engd.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/SU3PbOHyDoPT13xt4n2c785Engd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/SU3PbOHyDoPT13xt4n2c785Engd.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/SU3PbOHyDoPT13xt4n2c785Engd.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/U9AwbR4ehodjDyxFgdFcjZssn1e.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/U9AwbR4ehodjDyxFgdFcjZssn1e.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/U9AwbR4ehodjDyxFgdFcjZssn1e.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/U9AwbR4ehodjDyxFgdFcjZssn1e.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/U9VCbG9I6ohTzQxzvPIc6oR3nid.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/Vz3kbrsk4oikc0xdbt6czL0Tn4b.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/Vz3kbrsk4oikc0xdbt6czL0Tn4b.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/Vz3kbrsk4oikc0xdbt6czL0Tn4b.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/Vz3kbrsk4oikc0xdbt6czL0Tn4b.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/W7uJbyoy3oyeM1xQKZrc0GxMnhd.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/W7uJbyoy3oyeM1xQKZrc0GxMnhd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/W7uJbyoy3oyeM1xQKZrc0GxMnhd.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/W7uJbyoy3oyeM1xQKZrc0GxMnhd.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/WQAObL0sUocLRIx1dydcmaOEnQf.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/WQAObL0sUocLRIx1dydcmaOEnQf.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/WQAObL0sUocLRIx1dydcmaOEnQf.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/WQAObL0sUocLRIx1dydcmaOEnQf.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/WnChbrBPNoBvbFxZcVVccn5wnlg.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/WnChbrBPNoBvbFxZcVVccn5wnlg.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/WnChbrBPNoBvbFxZcVVccn5wnlg.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/WnChbrBPNoBvbFxZcVVccn5wnlg.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/WqjNbus2yozg3LxpRecccPA5nIb.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/WqjNbus2yozg3LxpRecccPA5nIb.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/WqjNbus2yozg3LxpRecccPA5nIb.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/WqjNbus2yozg3LxpRecccPA5nIb.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/static/XbxybS8u3od6TfxiQDYcTMq4n7g.png b/docs/zh-CN/handbook/client/user/ui-designer/actions/static/XbxybS8u3od6TfxiQDYcTMq4n7g.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/static/XbxybS8u3od6TfxiQDYcTMq4n7g.png rename to docs/zh-CN/handbook/client/user/ui-designer/actions/static/XbxybS8u3od6TfxiQDYcTMq4n7g.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/submit-to-workflow.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/submit-to-workflow.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/submit-to-workflow.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/submit-to-workflow.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/submit.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/submit.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/submit.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/submit.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/update-record.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/update-record.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/update-record.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/update-record.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/actions/view.md b/docs/zh-CN/handbook/client/user/ui-designer/actions/view.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/actions/view.md rename to docs/zh-CN/handbook/client/user/ui-designer/actions/view.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/index.md b/docs/zh-CN/handbook/client/user/ui-designer/blocks/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/index.md rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/index.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif b/docs/zh-CN/handbook/client/user/ui-designer/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif rename to docs/zh-CN/handbook/client/user/ui-designer/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif diff --git a/docs/zh-CN/plugins/client/user/ui-designer/fields/index.md b/docs/zh-CN/handbook/client/user/ui-designer/fields/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/fields/index.md rename to docs/zh-CN/handbook/client/user/ui-designer/fields/index.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/fields/static/BpmibJbEgoijTgxHkqdcjodanVc.gif b/docs/zh-CN/handbook/client/user/ui-designer/fields/static/BpmibJbEgoijTgxHkqdcjodanVc.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/fields/static/BpmibJbEgoijTgxHkqdcjodanVc.gif rename to docs/zh-CN/handbook/client/user/ui-designer/fields/static/BpmibJbEgoijTgxHkqdcjodanVc.gif diff --git a/docs/zh-CN/plugins/client/user/ui-designer/fields/static/MIcrb5RbUoGYoZxWazPcGMWInjc.png b/docs/zh-CN/handbook/client/user/ui-designer/fields/static/MIcrb5RbUoGYoZxWazPcGMWInjc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/fields/static/MIcrb5RbUoGYoZxWazPcGMWInjc.png rename to docs/zh-CN/handbook/client/user/ui-designer/fields/static/MIcrb5RbUoGYoZxWazPcGMWInjc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/fields/static/P82Kbwh5moSEL5x5UeYcn6kIn3Y.png b/docs/zh-CN/handbook/client/user/ui-designer/fields/static/P82Kbwh5moSEL5x5UeYcn6kIn3Y.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/fields/static/P82Kbwh5moSEL5x5UeYcn6kIn3Y.png rename to docs/zh-CN/handbook/client/user/ui-designer/fields/static/P82Kbwh5moSEL5x5UeYcn6kIn3Y.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/fields/static/WBkubBX4QoUQ3HxPUHPcht2VnnK.png b/docs/zh-CN/handbook/client/user/ui-designer/fields/static/WBkubBX4QoUQ3HxPUHPcht2VnnK.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/fields/static/WBkubBX4QoUQ3HxPUHPcht2VnnK.png rename to docs/zh-CN/handbook/client/user/ui-designer/fields/static/WBkubBX4QoUQ3HxPUHPcht2VnnK.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/index.md b/docs/zh-CN/handbook/client/user/ui-designer/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/index.md rename to docs/zh-CN/handbook/client/user/ui-designer/index.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/index.md b/docs/zh-CN/handbook/client/user/ui-designer/menus/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/index.md rename to docs/zh-CN/handbook/client/user/ui-designer/menus/index.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png b/docs/zh-CN/handbook/client/user/ui-designer/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png rename to docs/zh-CN/handbook/client/user/ui-designer/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png b/docs/zh-CN/handbook/client/user/ui-designer/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png rename to docs/zh-CN/handbook/client/user/ui-designer/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png b/docs/zh-CN/handbook/client/user/ui-designer/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png rename to docs/zh-CN/handbook/client/user/ui-designer/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png b/docs/zh-CN/handbook/client/user/ui-designer/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png rename to docs/zh-CN/handbook/client/user/ui-designer/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png b/docs/zh-CN/handbook/client/user/ui-designer/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png rename to docs/zh-CN/handbook/client/user/ui-designer/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png b/docs/zh-CN/handbook/client/user/ui-designer/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png rename to docs/zh-CN/handbook/client/user/ui-designer/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/pages/index.md b/docs/zh-CN/handbook/client/user/ui-designer/pages/index.md similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/pages/index.md rename to docs/zh-CN/handbook/client/user/ui-designer/pages/index.md diff --git a/docs/zh-CN/plugins/client/user/ui-designer/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png b/docs/zh-CN/handbook/client/user/ui-designer/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png rename to docs/zh-CN/handbook/client/user/ui-designer/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif b/docs/zh-CN/handbook/client/user/ui-designer/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif rename to docs/zh-CN/handbook/client/user/ui-designer/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif diff --git a/docs/zh-CN/plugins/client/user/ui-designer/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png b/docs/zh-CN/handbook/client/user/ui-designer/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png rename to docs/zh-CN/handbook/client/user/ui-designer/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png b/docs/zh-CN/handbook/client/user/ui-designer/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png rename to docs/zh-CN/handbook/client/user/ui-designer/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png diff --git a/docs/zh-CN/plugins/client/user/ui-designer/static/X8u0b5QJFomar7xbFTKceqIPngb.jpg b/docs/zh-CN/handbook/client/user/ui-designer/static/X8u0b5QJFomar7xbFTKceqIPngb.jpg similarity index 100% rename from docs/zh-CN/plugins/client/user/ui-designer/static/X8u0b5QJFomar7xbFTKceqIPngb.jpg rename to docs/zh-CN/handbook/client/user/ui-designer/static/X8u0b5QJFomar7xbFTKceqIPngb.jpg diff --git a/docs/zh-CN/plugins/collection-fdw/enable-federated.md b/docs/zh-CN/handbook/collection-fdw/enable-federated.md similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/enable-federated.md rename to docs/zh-CN/handbook/collection-fdw/enable-federated.md diff --git a/docs/zh-CN/plugins/collection-fdw/image-1.png b/docs/zh-CN/handbook/collection-fdw/image-1.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-1.png rename to docs/zh-CN/handbook/collection-fdw/image-1.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-10.png b/docs/zh-CN/handbook/collection-fdw/image-10.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-10.png rename to docs/zh-CN/handbook/collection-fdw/image-10.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-2.png b/docs/zh-CN/handbook/collection-fdw/image-2.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-2.png rename to docs/zh-CN/handbook/collection-fdw/image-2.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-3.png b/docs/zh-CN/handbook/collection-fdw/image-3.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-3.png rename to docs/zh-CN/handbook/collection-fdw/image-3.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-4.png b/docs/zh-CN/handbook/collection-fdw/image-4.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-4.png rename to docs/zh-CN/handbook/collection-fdw/image-4.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-5.png b/docs/zh-CN/handbook/collection-fdw/image-5.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-5.png rename to docs/zh-CN/handbook/collection-fdw/image-5.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-6.png b/docs/zh-CN/handbook/collection-fdw/image-6.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-6.png rename to docs/zh-CN/handbook/collection-fdw/image-6.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-7.png b/docs/zh-CN/handbook/collection-fdw/image-7.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-7.png rename to docs/zh-CN/handbook/collection-fdw/image-7.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-8.png b/docs/zh-CN/handbook/collection-fdw/image-8.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-8.png rename to docs/zh-CN/handbook/collection-fdw/image-8.png diff --git a/docs/zh-CN/plugins/collection-fdw/image-9.png b/docs/zh-CN/handbook/collection-fdw/image-9.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image-9.png rename to docs/zh-CN/handbook/collection-fdw/image-9.png diff --git a/docs/zh-CN/plugins/collection-fdw/image.png b/docs/zh-CN/handbook/collection-fdw/image.png similarity index 100% rename from docs/zh-CN/plugins/collection-fdw/image.png rename to docs/zh-CN/handbook/collection-fdw/image.png diff --git a/docs/zh-CN/plugins/collection-fdw/index.md b/docs/zh-CN/handbook/collection-fdw/index.md similarity index 73% rename from docs/zh-CN/plugins/collection-fdw/index.md rename to docs/zh-CN/handbook/collection-fdw/index.md index ac6408c10..bcb837848 100644 --- a/docs/zh-CN/plugins/collection-fdw/index.md +++ b/docs/zh-CN/handbook/collection-fdw/index.md @@ -4,6 +4,13 @@ 基于数据库的 foreign data wrapper 实现的连接远程数据表的功能插件。目前支持 MySQL 和 PostgreSQL 数据库。 +:::info{title="连接数据源 vs 连接外部数据"} +- **连接数据源** 指的是与特定数据库或 API 服务建立连接,可以完整的使用数据库的特性或 API 提供的服务; +- **连接外部数据** 指的是从外部获取数据并映射到本地使用,在数据库里叫 FDW(Foreign Data Wrapper),是一种数据库技术,侧重于将远程表当做本地表使用,只能一张一张表的连接。因为是远程访问,所以在使用时会有各种约束和局限。 + +二者之间联系:前者用于建立与数据源的连接,后者用于跨数据源访问。例如,连接了某个 PostgreSQL 数据源,这个数据源里有某个表是基于 FDW 创建的外部数据表。 +::: + ### MySQL MySQL 通过 `federated` 引擎,需要激活,支持连接远程 MySQL 及其协议兼容数据库,如 MariaDB。详情文档参考 [Federated Storage Engine](https://dev.mysql.com/doc/refman/8.0/en/federated-storage-engine.html)。 diff --git a/docs/zh-CN/handbook/collection-sql/index.md b/docs/zh-CN/handbook/collection-sql/index.md new file mode 100644 index 000000000..72706902b --- /dev/null +++ b/docs/zh-CN/handbook/collection-sql/index.md @@ -0,0 +1 @@ +# SQL 表 \ No newline at end of file diff --git a/docs/zh-CN/handbook/collection-tree/index.md b/docs/zh-CN/handbook/collection-tree/index.md new file mode 100644 index 000000000..923f6ba81 --- /dev/null +++ b/docs/zh-CN/handbook/collection-tree/index.md @@ -0,0 +1,5 @@ +# 树表 + +:::info +This feature is powered by plugin-collection-tree. +::: \ No newline at end of file diff --git a/docs/zh-CN/handbook/collection-view/index.md b/docs/zh-CN/handbook/collection-view/index.md new file mode 100644 index 000000000..33a0d2d81 --- /dev/null +++ b/docs/zh-CN/handbook/collection-view/index.md @@ -0,0 +1 @@ +# 数据库视图 \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-modeling/collection-fields/field-interfaces.md b/docs/zh-CN/handbook/data-modeling/collection-fields/field-interfaces.md new file mode 100644 index 000000000..a8bb6ed9d --- /dev/null +++ b/docs/zh-CN/handbook/data-modeling/collection-fields/field-interfaces.md @@ -0,0 +1 @@ +# 内置 UI 类型 \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-modeling/collection-fields/field-types.md b/docs/zh-CN/handbook/data-modeling/collection-fields/field-types.md new file mode 100644 index 000000000..bef2aab0a --- /dev/null +++ b/docs/zh-CN/handbook/data-modeling/collection-fields/field-types.md @@ -0,0 +1 @@ +# 内置数据类型 \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-modeling/collection-fields/index.md b/docs/zh-CN/handbook/data-modeling/collection-fields/index.md new file mode 100644 index 000000000..d53669f2d --- /dev/null +++ b/docs/zh-CN/handbook/data-modeling/collection-fields/index.md @@ -0,0 +1,56 @@ +# 概述 + +| Field Interface | Field type | +| ------------------- | ---------------------- | +| Single line text | String | +| Long text | text | +| Phone | String | +| Email | String | +| URL | String | +| Integer | bigInt
Integer | +| Number | double
float
decimal | +| Percent | double
float
decimal | +| Password | password | +| Color | String | +| Icon | String | +| Checkbox | boolean | +| Single select | String
Enum
Integer | +| Multiple select | Array
JSON
Set | +| Radio group | String
Enum
Integer | +| Checkbox group | Array
JSON
Set | +| Markdown | Text | +| Rich Text | Text | +| Datetime | DatetimeTz
Datetime
Date | +| Time | TimeTz
Time | +| Created at | DatetimeTz | +| Last updated at | DatetimeTz | +| Point | Point | +| Line | Line | +| Circle | Cirecle | +| Polygon | Polygon | +| JSON | JSON
JSONB | +| | | +| ID | integer | +| uuid | uuid | +| Table OID | - | +| Sort | Sort | +| Sequence | sequence | +| Formula | Formula | +| | | +| o2o | hasOne
belongsTo | +| o2m | hasMany | +| m2o | belongsTo | +| m2m | belongsToMany | +| | | +| Collection selector | String | +| Snapshot | json | +| | | +| China region | belongsToMany | +| Attachment | belongsToMany | +| Created by | belongsTo | +| Last updated by | belongsTo | +| | | +| | virtual | +| | radio | +| | context | +| | uid | diff --git a/docs/zh-CN/handbook/data-modeling/collection-fields/types/string.md b/docs/zh-CN/handbook/data-modeling/collection-fields/types/string.md new file mode 100644 index 000000000..00a707cbb --- /dev/null +++ b/docs/zh-CN/handbook/data-modeling/collection-fields/types/string.md @@ -0,0 +1 @@ +# 字符串 \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-modeling/image-1.png b/docs/zh-CN/handbook/data-modeling/image-1.png new file mode 100644 index 000000000..4b35e70ab Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-1.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image-2.png b/docs/zh-CN/handbook/data-modeling/image-2.png new file mode 100644 index 000000000..d2459316f Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-2.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image-3.png b/docs/zh-CN/handbook/data-modeling/image-3.png new file mode 100644 index 000000000..a7560eff4 Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-3.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image-4.png b/docs/zh-CN/handbook/data-modeling/image-4.png new file mode 100644 index 000000000..40b7c945e Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-4.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image-5.png b/docs/zh-CN/handbook/data-modeling/image-5.png new file mode 100644 index 000000000..0573d1e42 Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-5.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image-6.png b/docs/zh-CN/handbook/data-modeling/image-6.png new file mode 100644 index 000000000..7db85130d Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-6.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image-7.png b/docs/zh-CN/handbook/data-modeling/image-7.png new file mode 100644 index 000000000..e691e6c3c Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image-7.png differ diff --git a/docs/zh-CN/handbook/data-modeling/image.png b/docs/zh-CN/handbook/data-modeling/image.png new file mode 100644 index 000000000..b8e1d88b2 Binary files /dev/null and b/docs/zh-CN/handbook/data-modeling/image.png differ diff --git a/docs/zh-CN/handbook/data-modeling/index.md b/docs/zh-CN/handbook/data-modeling/index.md new file mode 100644 index 000000000..70bff2eec --- /dev/null +++ b/docs/zh-CN/handbook/data-modeling/index.md @@ -0,0 +1,77 @@ +# 概述 + +数据建模是一种系统的方法,通过它可以对数据进行抽象和描述,以便更好地理解和组织数据。这涉及创建一个模型,该模型用于呈现数据之间的关系、结构和规则,从而有助于系统设计、分析和决策。数据建模包括使用不同的技术和图形表示,如实体关系图、数据流程图或数据库表设计,以便更清晰地定义和沟通数据的特征和用途。这有助于团队更有效地管理、利用和理解系统中的数据。 + +NocoBase 的数据建模具有以下特色: + +## 提供了简易的数据表管理界面 + +用于创建各种模型(数据表)或连接已有模型(数据表) + +![Alt text](./image-1.png) + +## 提供了类 ER 图的可视化界面 + +ER 图用于从用户和业务需求中提取实体和它们之间的关系,它提供了一种直观且易于理解的方式来描述数据模型,通过 ER 图可以更清晰地理解系统中的主要数据实体和它们之间的联系。 + +![Alt text](./image-5.png) + +## 提供了丰富的字段类型 + +NocoBase 的数据表字段包括「数据类型」和「UI 类型」两个维度: + +- 数据类型(Field type):用于定义字段可以存储的数据的种类、格式和结构; +- UI 类型(Field interface):是指在用户界面中用于显示和输入字段值的控件类型。 + +## 提供了富有想象空间的数据表模板 + +用于预定义特定结构下的数据模型,目前已支持的数据表模板包括: + +- 普通表:内置了常用的系统字段; +- 树表:树结构表,目前只支持邻接表设计; +- 日历表:用于创建日历相关的事件表; +- 文件表:用于文件存储的管理; +- 表达式表:用于工作流的动态表达式场景; +- SQL 表:并不是实际的数据库表,而是快速的将 SQL 查询,结构化的展示出来。 + +![Alt text](./image-2.png) + +## 支持连接数据表视图 + +提供了更灵活、更高层次的数据访问方式,使得分析和报告更为简便,提高了数据的可用性和可维护性。 + +![Alt text](./image-4.png) + +## 支持 FDW 技术 + +"FDW" 是 "Foreign Data Wrapper" 的缩写,中文是 "外部数据包装器"。FDW 是一种数据库技术,允许数据库系统直接访问和查询外部数据源中的数据(当做本地表使用),而无需将数据复制到本地数据库。这种技术使得在数据库中可以轻松地集成和查询来自不同来源的数据。 + +![Alt text](./image-3.png) + +## 支持表继承 + +可以创建一个父表,然后从该父表派生出子表。子表会继承父表的结构,同时还可以定义自己的列。这种设计模式有助于组织和管理具有相似结构但可能有一些差异的数据。 + +以下是关于支持继承表的一些常见特点: + +- 父表: 父表包含了通用的列和数据,定义了整个继承层次结构的基本结构。 +- 子表: 子表继承了父表的结构,但还可以额外定义自己的列。这允许每个子表具有父表的通用属性,同时又可以包含特定于子类的属性。 +- 查询: 在查询时,可以选择查询整个继承层次结构,也可以只查询父表或特定的子表。这使得能够根据需要检索和处理不同层次的数据。 +- 继承关系: 父表和子表之间建立了继承关系,这意味着可以使用父表的结构来定义一致的属性,同时允许子表扩展或覆盖这些属性。 + +这种设计模式有助于减少数据冗余,简化数据库模型,同时使数据更容易维护。然而,需要谨慎使用,因为继承表可能会增加查询的复杂性,特别是在处理整个继承层次结构时。支持继承表的数据库系统通常提供了特定的语法和工具来管理和查询这种表结构。 + +![Alt text](./image-6.png) + +## 多数据源的支持 + +可以连接各种数据源,目前已支持的数据源有 MySQL 和 PostgreSQL。除此之外,也可以自由扩展,可以是常见的各类数据库,也可以是提供 API(SDK)的平台。 + +![Alt text](./image-7.png) + +:::info{title="连接数据源 vs 连接外部数据"} +- **连接数据源** 指的是与特定数据库或 API 服务建立连接,可以完整的使用数据库的特性或 API 提供的服务; +- **连接外部数据** 指的是从外部获取数据并映射到本地使用,在数据库里叫 FDW(Foreign Data Wrapper),是一种数据库技术,侧重于将远程表当做本地表使用,只能一张一张表的连接。因为是远程访问,所以在使用时会有各种约束和局限。 + +二者之间联系:前者用于建立与数据源的连接,后者用于跨数据源访问。例如,连接了某个 PostgreSQL 数据源,这个数据源里有某个表是基于 FDW 创建的外部数据表。 +::: diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-1.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-1.png new file mode 100644 index 000000000..8251bada6 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-1.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-10.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-10.png new file mode 100644 index 000000000..bae40b2e3 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-10.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-2.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-2.png new file mode 100644 index 000000000..7d219d066 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-2.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-3.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-3.png new file mode 100644 index 000000000..f2d66e78a Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-3.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-4.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-4.png new file mode 100644 index 000000000..ec08dde95 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-4.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-5.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-5.png new file mode 100644 index 000000000..49de1452b Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-5.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-6.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-6.png new file mode 100644 index 000000000..9b3f9bed4 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-6.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-7.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-7.png new file mode 100644 index 000000000..7c2f38cf1 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-7.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-8.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-8.png new file mode 100644 index 000000000..7caaccd64 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-8.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image-9.png b/docs/zh-CN/handbook/data-source-external-mariadb/image-9.png new file mode 100644 index 000000000..0be86b804 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image-9.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/image.png b/docs/zh-CN/handbook/data-source-external-mariadb/image.png new file mode 100644 index 000000000..1dcee93a9 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mariadb/image.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mariadb/index.md b/docs/zh-CN/handbook/data-source-external-mariadb/index.md new file mode 100644 index 000000000..83e1de5e5 --- /dev/null +++ b/docs/zh-CN/handbook/data-source-external-mariadb/index.md @@ -0,0 +1,53 @@ +# 外部数据源 - MariaDB + +:::info +This feature is powered by plugin-data-source-external-mariadb. +::: + +## 介绍 + +支持接入 MariaDB 数据库,并将其中的数据表作为区块展示在界面上 + +## 安装 + +该插件为商业插件,需要通过插件管理器上传并激活插件 + +![Alt text](./image.png) + +## 使用说明 + +选择 MariaDB 数据源 + +![Alt text](./image-2.png) + +填写需要接入的 MariaDB 数据库信息 + +![Alt text](./image-1.png) + +查看并配置已接入的数据表 + +![Alt text](./image-3.png) + +数据源支持「数据表」和「权限」的配置 + +![Alt text](./image-4.png) + +配置字段 + +![Alt text](./image-6.png) + +不支持的字段类型会单独展示出来,这些字段需要开发适配之后才能使用 + +![Alt text](./image-7.png) + +作为区块展示 + +![Alt text](./image-8.png) + +表格区块 + +![Alt text](./image-10.png) + +:::warning{title=警告} +作为区块展示的数据表必须配置了主键,并且主键不能为联合主键 +::: \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-1.png b/docs/zh-CN/handbook/data-source-external-mysql/image-1.png new file mode 100644 index 000000000..8251bada6 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-1.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-10.png b/docs/zh-CN/handbook/data-source-external-mysql/image-10.png new file mode 100644 index 000000000..bae40b2e3 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-10.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-2.png b/docs/zh-CN/handbook/data-source-external-mysql/image-2.png new file mode 100644 index 000000000..7d219d066 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-2.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-3.png b/docs/zh-CN/handbook/data-source-external-mysql/image-3.png new file mode 100644 index 000000000..f2d66e78a Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-3.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-4.png b/docs/zh-CN/handbook/data-source-external-mysql/image-4.png new file mode 100644 index 000000000..ec08dde95 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-4.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-5.png b/docs/zh-CN/handbook/data-source-external-mysql/image-5.png new file mode 100644 index 000000000..49de1452b Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-5.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-6.png b/docs/zh-CN/handbook/data-source-external-mysql/image-6.png new file mode 100644 index 000000000..9b3f9bed4 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-6.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-7.png b/docs/zh-CN/handbook/data-source-external-mysql/image-7.png new file mode 100644 index 000000000..7c2f38cf1 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-7.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-8.png b/docs/zh-CN/handbook/data-source-external-mysql/image-8.png new file mode 100644 index 000000000..7caaccd64 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-8.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image-9.png b/docs/zh-CN/handbook/data-source-external-mysql/image-9.png new file mode 100644 index 000000000..0be86b804 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image-9.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/image.png b/docs/zh-CN/handbook/data-source-external-mysql/image.png new file mode 100644 index 000000000..1dcee93a9 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-mysql/image.png differ diff --git a/docs/zh-CN/handbook/data-source-external-mysql/index.md b/docs/zh-CN/handbook/data-source-external-mysql/index.md new file mode 100644 index 000000000..2d583e2ae --- /dev/null +++ b/docs/zh-CN/handbook/data-source-external-mysql/index.md @@ -0,0 +1,53 @@ +# 外部数据源 - MySQL + +:::info +This feature is powered by plugin-data-source-external-mysql. +::: + +## 介绍 + +支持接入 MySQL 数据库,并将其中的数据表作为区块展示在界面上 + +## 安装 + +该插件为商业插件,需要通过插件管理器上传并激活插件 + +![Alt text](./image.png) + +## 使用说明 + +选择 MySQL 数据源 + +![Alt text](./image-2.png) + +填写需要接入的 MySQL 数据库信息 + +![Alt text](./image-1.png) + +查看并配置已接入的数据表 + +![Alt text](./image-3.png) + +数据源支持「数据表」和「权限」的配置 + +![Alt text](./image-4.png) + +配置字段 + +![Alt text](./image-6.png) + +不支持的字段类型会单独展示出来,这些字段需要开发适配之后才能使用 + +![Alt text](./image-7.png) + +作为区块展示 + +![Alt text](./image-8.png) + +表格区块 + +![Alt text](./image-10.png) + +:::warning{title=警告} +作为区块展示的数据表必须配置了主键,并且主键不能为联合主键 +::: \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-1.png b/docs/zh-CN/handbook/data-source-external-postgres/image-1.png new file mode 100644 index 000000000..8251bada6 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-1.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-10.png b/docs/zh-CN/handbook/data-source-external-postgres/image-10.png new file mode 100644 index 000000000..bae40b2e3 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-10.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-2.png b/docs/zh-CN/handbook/data-source-external-postgres/image-2.png new file mode 100644 index 000000000..7d219d066 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-2.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-3.png b/docs/zh-CN/handbook/data-source-external-postgres/image-3.png new file mode 100644 index 000000000..f2d66e78a Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-3.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-4.png b/docs/zh-CN/handbook/data-source-external-postgres/image-4.png new file mode 100644 index 000000000..ec08dde95 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-4.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-5.png b/docs/zh-CN/handbook/data-source-external-postgres/image-5.png new file mode 100644 index 000000000..49de1452b Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-5.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-6.png b/docs/zh-CN/handbook/data-source-external-postgres/image-6.png new file mode 100644 index 000000000..9b3f9bed4 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-6.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-7.png b/docs/zh-CN/handbook/data-source-external-postgres/image-7.png new file mode 100644 index 000000000..7c2f38cf1 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-7.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-8.png b/docs/zh-CN/handbook/data-source-external-postgres/image-8.png new file mode 100644 index 000000000..7caaccd64 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-8.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image-9.png b/docs/zh-CN/handbook/data-source-external-postgres/image-9.png new file mode 100644 index 000000000..0be86b804 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image-9.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/image.png b/docs/zh-CN/handbook/data-source-external-postgres/image.png new file mode 100644 index 000000000..1dcee93a9 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-external-postgres/image.png differ diff --git a/docs/zh-CN/handbook/data-source-external-postgres/index.md b/docs/zh-CN/handbook/data-source-external-postgres/index.md new file mode 100644 index 000000000..0278c4e81 --- /dev/null +++ b/docs/zh-CN/handbook/data-source-external-postgres/index.md @@ -0,0 +1,53 @@ +# 外部数据源 - PostgreSQL + +:::info +This feature is powered by plugin-data-source-external-postgres. +::: + +## 介绍 + +支持接入 PostgreSQL 数据库,并将其中的数据表作为区块展示在界面上 + +## 安装 + +该插件为商业插件,需要通过插件管理器上传并激活插件 + +![Alt text](./image.png) + +## 使用说明 + +选择 PostgreSQL 数据源 + +![Alt text](./image-2.png) + +填写需要接入的 PostgreSQL 数据库信息 + +![Alt text](./image-1.png) + +查看并配置已接入的数据表 + +![Alt text](./image-3.png) + +数据源支持「数据表」和「权限」的配置 + +![Alt text](./image-4.png) + +配置字段 + +![Alt text](./image-6.png) + +不支持的字段类型会单独展示出来,这些字段需要开发适配之后才能使用 + +![Alt text](./image-7.png) + +作为区块展示 + +![Alt text](./image-8.png) + +表格区块 + +![Alt text](./image-10.png) + +:::warning{title=警告} +作为区块展示的数据表必须配置了主键,并且主键不能为联合主键 +::: \ No newline at end of file diff --git a/docs/zh-CN/handbook/data-source-main/image-1.png b/docs/zh-CN/handbook/data-source-main/image-1.png new file mode 100644 index 000000000..4b35e70ab Binary files /dev/null and b/docs/zh-CN/handbook/data-source-main/image-1.png differ diff --git a/docs/zh-CN/handbook/data-source-main/image-2.png b/docs/zh-CN/handbook/data-source-main/image-2.png new file mode 100644 index 000000000..d2459316f Binary files /dev/null and b/docs/zh-CN/handbook/data-source-main/image-2.png differ diff --git a/docs/zh-CN/handbook/data-source-main/image-3.png b/docs/zh-CN/handbook/data-source-main/image-3.png new file mode 100644 index 000000000..a7560eff4 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-main/image-3.png differ diff --git a/docs/zh-CN/handbook/data-source-main/image-4.png b/docs/zh-CN/handbook/data-source-main/image-4.png new file mode 100644 index 000000000..40b7c945e Binary files /dev/null and b/docs/zh-CN/handbook/data-source-main/image-4.png differ diff --git a/docs/zh-CN/handbook/data-source-main/image-5.png b/docs/zh-CN/handbook/data-source-main/image-5.png new file mode 100644 index 000000000..0573d1e42 Binary files /dev/null and b/docs/zh-CN/handbook/data-source-main/image-5.png differ diff --git a/docs/zh-CN/handbook/data-source-main/image-6.png b/docs/zh-CN/handbook/data-source-main/image-6.png new file mode 100644 index 000000000..7db85130d Binary files /dev/null and b/docs/zh-CN/handbook/data-source-main/image-6.png differ diff --git a/docs/zh-CN/handbook/data-source-main/index.md b/docs/zh-CN/handbook/data-source-main/index.md new file mode 100644 index 000000000..d07582e47 --- /dev/null +++ b/docs/zh-CN/handbook/data-source-main/index.md @@ -0,0 +1,13 @@ +# 主数据库 + +:::info +This feature is powered by plugin-data-source-main. +::: + +## 介绍 + +用于存储 NocoBase 应用的元数据,包括系统数据、自定义数据等,支持 MySQL、PostgreSQL、SQLite 等关系型数据库。 + +## 安装 + +内置插件无需安装。 diff --git a/docs/zh-CN/plugins/collection-manager/static/BOc1bNQAwoM8VMxDDQBckjRgnyg.png b/docs/zh-CN/handbook/data-source-main/static/BOc1bNQAwoM8VMxDDQBckjRgnyg.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/static/BOc1bNQAwoM8VMxDDQBckjRgnyg.png rename to docs/zh-CN/handbook/data-source-main/static/BOc1bNQAwoM8VMxDDQBckjRgnyg.png diff --git a/docs/zh-CN/plugins/collection-manager/static/HuVTbc8WAortfkxHw0mcBhScnic.png b/docs/zh-CN/handbook/data-source-main/static/HuVTbc8WAortfkxHw0mcBhScnic.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/static/HuVTbc8WAortfkxHw0mcBhScnic.png rename to docs/zh-CN/handbook/data-source-main/static/HuVTbc8WAortfkxHw0mcBhScnic.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/static/GjqEbeQ8IoFUFtxeS8cc16Fjnac.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/static/GjqEbeQ8IoFUFtxeS8cc16Fjnac.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/static/GjqEbeQ8IoFUFtxeS8cc16Fjnac.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/static/GjqEbeQ8IoFUFtxeS8cc16Fjnac.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/static/OHftb05waogIjzxjUgNcfUIan8f.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/static/OHftb05waogIjzxjUgNcfUIan8f.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/static/OHftb05waogIjzxjUgNcfUIan8f.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/static/OHftb05waogIjzxjUgNcfUIan8f.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/static/ZOtzbc1BOoailOxdK41cnJvvnjd.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/static/ZOtzbc1BOoailOxdK41cnJvvnjd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/cascade-select/static/ZOtzbc1BOoailOxdK41cnJvvnjd.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/cascade-select/static/ZOtzbc1BOoailOxdK41cnJvvnjd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/file-manager/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/file-manager/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/file-manager/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/file-manager/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/file-manager/static/PmuLburnvoPOwfxXOcNcFYxdnId.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/file-manager/static/PmuLburnvoPOwfxXOcNcFYxdnId.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/file-manager/static/PmuLburnvoPOwfxXOcNcFYxdnId.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/file-manager/static/PmuLburnvoPOwfxXOcNcFYxdnId.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/static/DVSobGGxuoBncUxwz7Oc6MJfn5C.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/static/DVSobGGxuoBncUxwz7Oc6MJfn5C.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/static/DVSobGGxuoBncUxwz7Oc6MJfn5C.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/static/DVSobGGxuoBncUxwz7Oc6MJfn5C.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/static/UyHLbOe4YoH5sBxTPFJcBhrxnme.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/static/UyHLbOe4YoH5sBxTPFJcBhrxnme.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/static/UyHLbOe4YoH5sBxTPFJcBhrxnme.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/static/UyHLbOe4YoH5sBxTPFJcBhrxnme.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/static/VEhzbnCSfooc1jxDr7EcGV4enaf.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/static/VEhzbnCSfooc1jxDr7EcGV4enaf.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/record-picker/static/VEhzbnCSfooc1jxDr7EcGV4enaf.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/record-picker/static/VEhzbnCSfooc1jxDr7EcGV4enaf.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/select/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/select/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/select/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/select/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/AWz1bGNV3oTl8UxyXbNcFRXsnDe.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/AWz1bGNV3oTl8UxyXbNcFRXsnDe.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/AWz1bGNV3oTl8UxyXbNcFRXsnDe.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/AWz1bGNV3oTl8UxyXbNcFRXsnDe.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/CZYAbOp1Ho6HxYxwxuyclVDxnBf.gif b/docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/CZYAbOp1Ho6HxYxwxuyclVDxnBf.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/CZYAbOp1Ho6HxYxwxuyclVDxnBf.gif rename to docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/CZYAbOp1Ho6HxYxwxuyclVDxnBf.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/DbUxbR6jFoJ1jWx2BVYc2WkFnQh.gif b/docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/DbUxbR6jFoJ1jWx2BVYc2WkFnQh.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/DbUxbR6jFoJ1jWx2BVYc2WkFnQh.gif rename to docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/DbUxbR6jFoJ1jWx2BVYc2WkFnQh.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/ZIOdbT8nGoNAqZxqsmAcbAITnAg.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/ZIOdbT8nGoNAqZxqsmAcbAITnAg.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/select/static/ZIOdbT8nGoNAqZxqsmAcbAITnAg.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/select/static/ZIOdbT8nGoNAqZxqsmAcbAITnAg.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-detail/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-detail/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-detail/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-detail/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-detail/static/TI2Mbl7dDotd9BxJt6ucXr2OnPc.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-detail/static/TI2Mbl7dDotd9BxJt6ucXr2OnPc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-detail/static/TI2Mbl7dDotd9BxJt6ucXr2OnPc.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-detail/static/TI2Mbl7dDotd9BxJt6ucXr2OnPc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/static/NEQRbYpxSoy3AyxgiC5cWOSRnFd.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/static/NEQRbYpxSoy3AyxgiC5cWOSRnFd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/static/NEQRbYpxSoy3AyxgiC5cWOSRnFd.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/static/NEQRbYpxSoy3AyxgiC5cWOSRnFd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/static/UTzwbpNczoCK0kxtFPhcGYoKneb.gif b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/static/UTzwbpNczoCK0kxtFPhcGYoKneb.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/static/UTzwbpNczoCK0kxtFPhcGYoKneb.gif rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/static/UTzwbpNczoCK0kxtFPhcGYoKneb.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/static/ZHqsbWKTYoMjZ4xX0rKc5ff2ndk.gif b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/static/ZHqsbWKTYoMjZ4xX0rKc5ff2ndk.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form(popover)/static/ZHqsbWKTYoMjZ4xX0rKc5ff2ndk.gif rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form(popover)/static/ZHqsbWKTYoMjZ4xX0rKc5ff2ndk.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form/static/U7DXb1zmYo7MOLxASIaciyk6nUc.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form/static/U7DXb1zmYo7MOLxASIaciyk6nUc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form/static/U7DXb1zmYo7MOLxASIaciyk6nUc.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form/static/U7DXb1zmYo7MOLxASIaciyk6nUc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form/static/W0KVbjO2Qo7vDwxHlwpcj6ionhf.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form/static/W0KVbjO2Qo7vDwxHlwpcj6ionhf.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-form/static/W0KVbjO2Qo7vDwxHlwpcj6ionhf.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-form/static/W0KVbjO2Qo7vDwxHlwpcj6ionhf.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/AwLMboMECoBBmIxBHcmcuT9xnAe.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/AwLMboMECoBBmIxBHcmcuT9xnAe.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/AwLMboMECoBBmIxBHcmcuT9xnAe.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/AwLMboMECoBBmIxBHcmcuT9xnAe.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/GgBUbe5ZIoT7ojxqV4Pcwz8gn5g.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/GgBUbe5ZIoT7ojxqV4Pcwz8gn5g.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/GgBUbe5ZIoT7ojxqV4Pcwz8gn5g.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/GgBUbe5ZIoT7ojxqV4Pcwz8gn5g.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/QDq8b1umdokplcxVwjFcmvecntb.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/QDq8b1umdokplcxVwjFcmvecntb.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/QDq8b1umdokplcxVwjFcmvecntb.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/QDq8b1umdokplcxVwjFcmvecntb.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/WJ45buLjoohisGx7uX2cBOJpnrg.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/WJ45buLjoohisGx7uX2cBOJpnrg.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/WJ45buLjoohisGx7uX2cBOJpnrg.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/WJ45buLjoohisGx7uX2cBOJpnrg.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/YGLGbcWiJo6tHcxY7jrcfKumnSh.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/YGLGbcWiJo6tHcxY7jrcfKumnSh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/sub-table/static/YGLGbcWiJo6tHcxY7jrcfKumnSh.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/sub-table/static/YGLGbcWiJo6tHcxY7jrcfKumnSh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/summary/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/summary/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/summary/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/summary/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/tag/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/tag/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/tag/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/tag/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/tag/static/HC7jbnrqNo9vXexyLXecSA30nqd.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/tag/static/HC7jbnrqNo9vXexyLXecSA30nqd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/tag/static/HC7jbnrqNo9vXexyLXecSA30nqd.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/tag/static/HC7jbnrqNo9vXexyLXecSA30nqd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/tag/static/HPzlbp2WooC0gix1FUWcmZVfnBf.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/tag/static/HPzlbp2WooC0gix1FUWcmZVfnBf.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/tag/static/HPzlbp2WooC0gix1FUWcmZVfnBf.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/tag/static/HPzlbp2WooC0gix1FUWcmZVfnBf.png diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/title/index.md b/docs/zh-CN/handbook/data-source-main/user/association-fields/title/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/title/index.md rename to docs/zh-CN/handbook/data-source-main/user/association-fields/title/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/association-fields/title/static/H97TbGjbwonXIPxctydchPdSnud.png b/docs/zh-CN/handbook/data-source-main/user/association-fields/title/static/H97TbGjbwonXIPxctydchPdSnud.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/association-fields/title/static/H97TbGjbwonXIPxctydchPdSnud.png rename to docs/zh-CN/handbook/data-source-main/user/association-fields/title/static/H97TbGjbwonXIPxctydchPdSnud.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/calender/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/calender/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/calender/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/calender/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/calender/static/JHaTbG3rCo4L0yxUUYQc1OfTnrd.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/calender/static/JHaTbG3rCo4L0yxUUYQc1OfTnrd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/calender/static/JHaTbG3rCo4L0yxUUYQc1OfTnrd.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/calender/static/JHaTbG3rCo4L0yxUUYQc1OfTnrd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/calender/static/UX2nbqRrdormvlxqQrFcFf3EnCc.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/calender/static/UX2nbqRrdormvlxqQrFcFf3EnCc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/calender/static/UX2nbqRrdormvlxqQrFcFf3EnCc.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/calender/static/UX2nbqRrdormvlxqQrFcFf3EnCc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/A6xibwy6ZoyskKxGmdQc7jOcnRe.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/A6xibwy6ZoyskKxGmdQc7jOcnRe.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/A6xibwy6ZoyskKxGmdQc7jOcnRe.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/A6xibwy6ZoyskKxGmdQc7jOcnRe.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/OLLTb4M2vocObkxd3bkcxZkLnqh.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/OLLTb4M2vocObkxd3bkcxZkLnqh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/OLLTb4M2vocObkxd3bkcxZkLnqh.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/OLLTb4M2vocObkxd3bkcxZkLnqh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/OTDBbV7ygocjFLxQyt0czIorn5c.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/OTDBbV7ygocjFLxQyt0czIorn5c.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/OTDBbV7ygocjFLxQyt0czIorn5c.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/OTDBbV7ygocjFLxQyt0czIorn5c.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/V6sCbY59GoZ6g5xlAaJcutx5nUb.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/V6sCbY59GoZ6g5xlAaJcutx5nUb.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/V6sCbY59GoZ6g5xlAaJcutx5nUb.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/V6sCbY59GoZ6g5xlAaJcutx5nUb.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/YLhxb1qGxoniCgxB13IcrDiZntf.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/YLhxb1qGxoniCgxB13IcrDiZntf.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/expression/static/YLhxb1qGxoniCgxB13IcrDiZntf.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/expression/static/YLhxb1qGxoniCgxB13IcrDiZntf.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/file/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/file/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/file/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/file/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/BOlXbQXsOo5ae8xTC6Gc4lAlnRe.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/BOlXbQXsOo5ae8xTC6Gc4lAlnRe.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/BOlXbQXsOo5ae8xTC6Gc4lAlnRe.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/BOlXbQXsOo5ae8xTC6Gc4lAlnRe.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/JRRtb9rtfoNfWOxkEVQcWF0Nndd.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/JRRtb9rtfoNfWOxkEVQcWF0Nndd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/JRRtb9rtfoNfWOxkEVQcWF0Nndd.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/JRRtb9rtfoNfWOxkEVQcWF0Nndd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/PJhDbmWJgo2kBNxtDqIcMmCjnvh.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/PJhDbmWJgo2kBNxtDqIcMmCjnvh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/PJhDbmWJgo2kBNxtDqIcMmCjnvh.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/PJhDbmWJgo2kBNxtDqIcMmCjnvh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/Z3Jgb8N4QosogDxOvBMc33RPnQb.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/Z3Jgb8N4QosogDxOvBMc33RPnQb.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/file/static/Z3Jgb8N4QosogDxOvBMc33RPnQb.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/file/static/Z3Jgb8N4QosogDxOvBMc33RPnQb.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/general/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/general/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/general/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/general/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/general/static/JM3ab75AroudtGxgvszc7aEznnb.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/general/static/JM3ab75AroudtGxgvszc7aEznnb.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/general/static/JM3ab75AroudtGxgvszc7aEznnb.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/general/static/JM3ab75AroudtGxgvszc7aEznnb.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/general/static/NG7NbgZIpolAp8xXy8JcKJDRnGe.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/general/static/NG7NbgZIpolAp8xXy8JcKJDRnGe.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/general/static/NG7NbgZIpolAp8xXy8JcKJDRnGe.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/general/static/NG7NbgZIpolAp8xXy8JcKJDRnGe.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/FbR1bpv4DoSq0oxKAFxcKo1tnPh.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/FbR1bpv4DoSq0oxKAFxcKo1tnPh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/FbR1bpv4DoSq0oxKAFxcKo1tnPh.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/FbR1bpv4DoSq0oxKAFxcKo1tnPh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/KjtpbmJvOoTW0VxZIXEcIWVVnkd.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/KjtpbmJvOoTW0VxZIXEcIWVVnkd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/KjtpbmJvOoTW0VxZIXEcIWVVnkd.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/KjtpbmJvOoTW0VxZIXEcIWVVnkd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/LMe9bH9VTovGZyxFg41cgZwynDd.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/LMe9bH9VTovGZyxFg41cgZwynDd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/LMe9bH9VTovGZyxFg41cgZwynDd.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/LMe9bH9VTovGZyxFg41cgZwynDd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/OVq4bpTpxob4jSx4BaOcFDIfnLg.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/OVq4bpTpxob4jSx4BaOcFDIfnLg.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/OVq4bpTpxob4jSx4BaOcFDIfnLg.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/OVq4bpTpxob4jSx4BaOcFDIfnLg.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/OtJJbUmi0oz1LNx82PPcQkgWnIc.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/OtJJbUmi0oz1LNx82PPcQkgWnIc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/OtJJbUmi0oz1LNx82PPcQkgWnIc.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/OtJJbUmi0oz1LNx82PPcQkgWnIc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/OwJ3b5kQPo6ASNx7uKvc8NAGnYc.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/OwJ3b5kQPo6ASNx7uKvc8NAGnYc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/OwJ3b5kQPo6ASNx7uKvc8NAGnYc.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/OwJ3b5kQPo6ASNx7uKvc8NAGnYc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/WROObVm7Fojhj5xPq52cmINZn7b.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/WROObVm7Fojhj5xPq52cmINZn7b.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/sql/static/WROObVm7Fojhj5xPq52cmINZn7b.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/sql/static/WROObVm7Fojhj5xPq52cmINZn7b.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/MmJhbxcoeo66DqxMDhaclBGPndh.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/MmJhbxcoeo66DqxMDhaclBGPndh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/MmJhbxcoeo66DqxMDhaclBGPndh.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/MmJhbxcoeo66DqxMDhaclBGPndh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/MtYebfdtAook0ZxJZkfcrGTAnHh.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/MtYebfdtAook0ZxJZkfcrGTAnHh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/MtYebfdtAook0ZxJZkfcrGTAnHh.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/MtYebfdtAook0ZxJZkfcrGTAnHh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/Q1OgbmzcHowD3fxFylUcGMBbndc.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/Q1OgbmzcHowD3fxFylUcGMBbndc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/Q1OgbmzcHowD3fxFylUcGMBbndc.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/Q1OgbmzcHowD3fxFylUcGMBbndc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/VDg1bTG3noShtXxtU7QcwGMKnch.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/VDg1bTG3noShtXxtU7QcwGMKnch.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/tree/static/VDg1bTG3noShtXxtU7QcwGMKnch.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/tree/static/VDg1bTG3noShtXxtU7QcwGMKnch.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/index.md b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/index.md rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/AEvTbdf38oXhlnxlS6lcPpV0nVe.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/AEvTbdf38oXhlnxlS6lcPpV0nVe.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/AEvTbdf38oXhlnxlS6lcPpV0nVe.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/AEvTbdf38oXhlnxlS6lcPpV0nVe.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/Ey2Ob9o39oP95Yx2bRIcbamznLd.gif b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/Ey2Ob9o39oP95Yx2bRIcbamznLd.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/Ey2Ob9o39oP95Yx2bRIcbamznLd.gif rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/Ey2Ob9o39oP95Yx2bRIcbamznLd.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/PGUxb8ur2oylWdxn9wuc99vVnrc.gif b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/PGUxb8ur2oylWdxn9wuc99vVnrc.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/PGUxb8ur2oylWdxn9wuc99vVnrc.gif rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/PGUxb8ur2oylWdxn9wuc99vVnrc.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/PguWbMOdAoA5wYxPWopcFGNMn7b.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/PguWbMOdAoA5wYxPWopcFGNMn7b.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/PguWbMOdAoA5wYxPWopcFGNMn7b.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/PguWbMOdAoA5wYxPWopcFGNMn7b.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/PnZ1bBK5OopbXFxkqBfclaTknih.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/PnZ1bBK5OopbXFxkqBfclaTknih.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/PnZ1bBK5OopbXFxkqBfclaTknih.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/PnZ1bBK5OopbXFxkqBfclaTknih.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/QVhmbkwRso7zrAxP3e8cjoKbndf.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/QVhmbkwRso7zrAxP3e8cjoKbndf.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/QVhmbkwRso7zrAxP3e8cjoKbndf.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/QVhmbkwRso7zrAxP3e8cjoKbndf.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/Rh9Vb4rLXorm57xKGaWcQdR1nkh.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/Rh9Vb4rLXorm57xKGaWcQdR1nkh.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/Rh9Vb4rLXorm57xKGaWcQdR1nkh.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/Rh9Vb4rLXorm57xKGaWcQdR1nkh.png diff --git a/docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/T2qXbDwugovgGJxjmOWcnYQfnYc.png b/docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/T2qXbDwugovgGJxjmOWcnYQfnYc.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/collection-templates/view/static/T2qXbDwugovgGJxjmOWcnYQfnYc.png rename to docs/zh-CN/handbook/data-source-main/user/collection-templates/view/static/T2qXbDwugovgGJxjmOWcnYQfnYc.png diff --git a/docs/zh-CN/plugins/collection-manager/user/field-interfaces/index.md b/docs/zh-CN/handbook/data-source-main/user/field-interfaces/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/field-interfaces/index.md rename to docs/zh-CN/handbook/data-source-main/user/field-interfaces/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/index.md b/docs/zh-CN/handbook/data-source-main/user/index.md similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/index.md rename to docs/zh-CN/handbook/data-source-main/user/index.md diff --git a/docs/zh-CN/plugins/collection-manager/user/static/A8yMbUDaSo9zWpxs2Dncrqwjn9e.png b/docs/zh-CN/handbook/data-source-main/user/static/A8yMbUDaSo9zWpxs2Dncrqwjn9e.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/A8yMbUDaSo9zWpxs2Dncrqwjn9e.png rename to docs/zh-CN/handbook/data-source-main/user/static/A8yMbUDaSo9zWpxs2Dncrqwjn9e.png diff --git a/docs/zh-CN/plugins/collection-manager/user/static/BBPvbjjv0or01vx1SzBcXtN9n9f.png b/docs/zh-CN/handbook/data-source-main/user/static/BBPvbjjv0or01vx1SzBcXtN9n9f.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/BBPvbjjv0or01vx1SzBcXtN9n9f.png rename to docs/zh-CN/handbook/data-source-main/user/static/BBPvbjjv0or01vx1SzBcXtN9n9f.png diff --git a/docs/zh-CN/plugins/collection-manager/user/static/Dpmeb5HinokF1Pxfu0BcAmgOnfd.gif b/docs/zh-CN/handbook/data-source-main/user/static/Dpmeb5HinokF1Pxfu0BcAmgOnfd.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/Dpmeb5HinokF1Pxfu0BcAmgOnfd.gif rename to docs/zh-CN/handbook/data-source-main/user/static/Dpmeb5HinokF1Pxfu0BcAmgOnfd.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/EUynbO9QPo1iHpxQxwXcYyTLnMf.gif b/docs/zh-CN/handbook/data-source-main/user/static/EUynbO9QPo1iHpxQxwXcYyTLnMf.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/EUynbO9QPo1iHpxQxwXcYyTLnMf.gif rename to docs/zh-CN/handbook/data-source-main/user/static/EUynbO9QPo1iHpxQxwXcYyTLnMf.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/HjXmbyAndo07izxp9AQcA5YSnyd.gif b/docs/zh-CN/handbook/data-source-main/user/static/HjXmbyAndo07izxp9AQcA5YSnyd.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/HjXmbyAndo07izxp9AQcA5YSnyd.gif rename to docs/zh-CN/handbook/data-source-main/user/static/HjXmbyAndo07izxp9AQcA5YSnyd.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/JgMZbj7izo2Ugex8vKmc6fTzntb.gif b/docs/zh-CN/handbook/data-source-main/user/static/JgMZbj7izo2Ugex8vKmc6fTzntb.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/JgMZbj7izo2Ugex8vKmc6fTzntb.gif rename to docs/zh-CN/handbook/data-source-main/user/static/JgMZbj7izo2Ugex8vKmc6fTzntb.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/L6vtbzAUAoxNn6xNwDkcveQenPg.gif b/docs/zh-CN/handbook/data-source-main/user/static/L6vtbzAUAoxNn6xNwDkcveQenPg.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/L6vtbzAUAoxNn6xNwDkcveQenPg.gif rename to docs/zh-CN/handbook/data-source-main/user/static/L6vtbzAUAoxNn6xNwDkcveQenPg.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/OYC6b09tEor0E6x5WTXc5FjvnIc.gif b/docs/zh-CN/handbook/data-source-main/user/static/OYC6b09tEor0E6x5WTXc5FjvnIc.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/OYC6b09tEor0E6x5WTXc5FjvnIc.gif rename to docs/zh-CN/handbook/data-source-main/user/static/OYC6b09tEor0E6x5WTXc5FjvnIc.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/PM70bxBbDo14KcxYke1cl6GQn9S.gif b/docs/zh-CN/handbook/data-source-main/user/static/PM70bxBbDo14KcxYke1cl6GQn9S.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/PM70bxBbDo14KcxYke1cl6GQn9S.gif rename to docs/zh-CN/handbook/data-source-main/user/static/PM70bxBbDo14KcxYke1cl6GQn9S.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/PQKrbFbmUoYcX6xS6d7c8Enun4a.gif b/docs/zh-CN/handbook/data-source-main/user/static/PQKrbFbmUoYcX6xS6d7c8Enun4a.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/PQKrbFbmUoYcX6xS6d7c8Enun4a.gif rename to docs/zh-CN/handbook/data-source-main/user/static/PQKrbFbmUoYcX6xS6d7c8Enun4a.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/R35gbnMFjolgS9xfO9wczmXmnG0.gif b/docs/zh-CN/handbook/data-source-main/user/static/R35gbnMFjolgS9xfO9wczmXmnG0.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/R35gbnMFjolgS9xfO9wczmXmnG0.gif rename to docs/zh-CN/handbook/data-source-main/user/static/R35gbnMFjolgS9xfO9wczmXmnG0.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/TkNGb5tLRoY7JVxjlIrc9Ol3njd.png b/docs/zh-CN/handbook/data-source-main/user/static/TkNGb5tLRoY7JVxjlIrc9Ol3njd.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/TkNGb5tLRoY7JVxjlIrc9Ol3njd.png rename to docs/zh-CN/handbook/data-source-main/user/static/TkNGb5tLRoY7JVxjlIrc9Ol3njd.png diff --git a/docs/zh-CN/plugins/collection-manager/user/static/UPPCbpZb5oU9Frxyc0JcIzbhn1b.gif b/docs/zh-CN/handbook/data-source-main/user/static/UPPCbpZb5oU9Frxyc0JcIzbhn1b.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/UPPCbpZb5oU9Frxyc0JcIzbhn1b.gif rename to docs/zh-CN/handbook/data-source-main/user/static/UPPCbpZb5oU9Frxyc0JcIzbhn1b.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/WNA9beotVoYfLqxfBsVcchhvn9y.gif b/docs/zh-CN/handbook/data-source-main/user/static/WNA9beotVoYfLqxfBsVcchhvn9y.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/WNA9beotVoYfLqxfBsVcchhvn9y.gif rename to docs/zh-CN/handbook/data-source-main/user/static/WNA9beotVoYfLqxfBsVcchhvn9y.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/WPoJbqedXozxb0xAQP3cKghzn8d.gif b/docs/zh-CN/handbook/data-source-main/user/static/WPoJbqedXozxb0xAQP3cKghzn8d.gif similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/WPoJbqedXozxb0xAQP3cKghzn8d.gif rename to docs/zh-CN/handbook/data-source-main/user/static/WPoJbqedXozxb0xAQP3cKghzn8d.gif diff --git a/docs/zh-CN/plugins/collection-manager/user/static/X8RTbD6FPodn1dxk3OscieZrnie.png b/docs/zh-CN/handbook/data-source-main/user/static/X8RTbD6FPodn1dxk3OscieZrnie.png similarity index 100% rename from docs/zh-CN/plugins/collection-manager/user/static/X8RTbD6FPodn1dxk3OscieZrnie.png rename to docs/zh-CN/handbook/data-source-main/user/static/X8RTbD6FPodn1dxk3OscieZrnie.png diff --git a/docs/zh-CN/handbook/data-source-manager/image-7.png b/docs/zh-CN/handbook/data-source-manager/image-7.png new file mode 100644 index 000000000..e691e6c3c Binary files /dev/null and b/docs/zh-CN/handbook/data-source-manager/image-7.png differ diff --git a/docs/zh-CN/handbook/data-source-manager/image.png b/docs/zh-CN/handbook/data-source-manager/image.png new file mode 100644 index 000000000..64114e61c Binary files /dev/null and b/docs/zh-CN/handbook/data-source-manager/image.png differ diff --git a/docs/zh-CN/handbook/data-source-manager/index.md b/docs/zh-CN/handbook/data-source-manager/index.md new file mode 100644 index 000000000..e4f8c093b --- /dev/null +++ b/docs/zh-CN/handbook/data-source-manager/index.md @@ -0,0 +1,24 @@ +# 数据源管理 + +:::info +This feature is powered by plugin-data-source-manager. +::: + +## 介绍 + +NocoBase 提供了数据源管理插件,用于管理数据源的数据表,数据源管理插件只是提供所有数据源的管理界面,并不提供接入数据源的能力,需要和适配的各种数据源插件搭配使用,目前支持接入的数据源包括: + +- Main 数据库:NocoBase 主数据库,支持 MySQL、PostgreSQL、SQLite 等关系型数据库。 +- External MySQL:使用外部的 MySQL 数据库作为数据源。 +- External MariaDB:使用外部的 MariaDB 数据库作为数据源。 +- External PostgreSQL:使用外部的 PostgreSQL 数据库作为数据源。 + +除此之外,也可以扩展,可以是常见的各类数据库,也可以是提供 API(SDK)的平台。 + +## 安装 + +内置插件无需安装。 + +## 使用手册 + +![Alt text](./image-7.png) diff --git a/docs/zh-CN/plugins/data-visualization/dev/index.md b/docs/zh-CN/handbook/data-visualization/dev/index.md similarity index 100% rename from docs/zh-CN/plugins/data-visualization/dev/index.md rename to docs/zh-CN/handbook/data-visualization/dev/index.md diff --git a/docs/zh-CN/plugins/data-visualization/dev/static/FHzPbretYo6KWexv9wccM91Hnff.png b/docs/zh-CN/handbook/data-visualization/dev/static/FHzPbretYo6KWexv9wccM91Hnff.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/dev/static/FHzPbretYo6KWexv9wccM91Hnff.png rename to docs/zh-CN/handbook/data-visualization/dev/static/FHzPbretYo6KWexv9wccM91Hnff.png diff --git a/docs/zh-CN/plugins/data-visualization/index.md b/docs/zh-CN/handbook/data-visualization/index.md similarity index 100% rename from docs/zh-CN/plugins/data-visualization/index.md rename to docs/zh-CN/handbook/data-visualization/index.md diff --git a/docs/zh-CN/plugins/data-visualization/static/2023-11-28-14-06-23.png b/docs/zh-CN/handbook/data-visualization/static/2023-11-28-14-06-23.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/static/2023-11-28-14-06-23.png rename to docs/zh-CN/handbook/data-visualization/static/2023-11-28-14-06-23.png diff --git a/docs/zh-CN/plugins/data-visualization/step-by-step/index.md b/docs/zh-CN/handbook/data-visualization/step-by-step/index.md similarity index 100% rename from docs/zh-CN/plugins/data-visualization/step-by-step/index.md rename to docs/zh-CN/handbook/data-visualization/step-by-step/index.md diff --git a/docs/zh-CN/plugins/data-visualization/step-by-step/static/IJiQbtTxwoLz8lxsgbwc77Ggntb.png b/docs/zh-CN/handbook/data-visualization/step-by-step/static/IJiQbtTxwoLz8lxsgbwc77Ggntb.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/step-by-step/static/IJiQbtTxwoLz8lxsgbwc77Ggntb.png rename to docs/zh-CN/handbook/data-visualization/step-by-step/static/IJiQbtTxwoLz8lxsgbwc77Ggntb.png diff --git a/docs/zh-CN/plugins/data-visualization/user/chart-block.md b/docs/zh-CN/handbook/data-visualization/user/chart-block.md similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/chart-block.md rename to docs/zh-CN/handbook/data-visualization/user/chart-block.md diff --git a/docs/zh-CN/plugins/data-visualization/user/configure.md b/docs/zh-CN/handbook/data-visualization/user/configure.md similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/configure.md rename to docs/zh-CN/handbook/data-visualization/user/configure.md diff --git a/docs/zh-CN/plugins/data-visualization/user/filter.md b/docs/zh-CN/handbook/data-visualization/user/filter.md similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/filter.md rename to docs/zh-CN/handbook/data-visualization/user/filter.md diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-15-16-21.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-15-16-21.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-15-16-21.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-15-16-21.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-15-17-23.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-15-17-23.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-15-17-23.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-15-17-23.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-15-19-16.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-15-19-16.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-15-19-16.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-15-19-16.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-17-48-11.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-17-48-11.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-17-48-11.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-17-48-11.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-18-03-03.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-18-03-03.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-18-03-03.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-18-03-03.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-23-34.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-23-34.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-23-34.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-23-34.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-27-51.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-27-51.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-27-51.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-27-51.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-29-44.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-29-44.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-29-44.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-29-44.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-32-30.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-32-30.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-32-30.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-32-30.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-38-59.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-38-59.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-38-59.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-38-59.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-39-43.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-39-43.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-39-43.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-39-43.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-42-32.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-42-32.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-42-32.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-42-32.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-45-41.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-45-41.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-45-41.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-45-41.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-49-18.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-49-18.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-49-18.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-49-18.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-50-20.png b/docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-50-20.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/2023-11-28-20-50-20.png rename to docs/zh-CN/handbook/data-visualization/user/static/2023-11-28-20-50-20.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/A680brszPoHrB7xFEWucIdjjnSg.png b/docs/zh-CN/handbook/data-visualization/user/static/A680brszPoHrB7xFEWucIdjjnSg.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/A680brszPoHrB7xFEWucIdjjnSg.png rename to docs/zh-CN/handbook/data-visualization/user/static/A680brszPoHrB7xFEWucIdjjnSg.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/BlkEby9Z7or3CWxvhTCcLXumnHf.png b/docs/zh-CN/handbook/data-visualization/user/static/BlkEby9Z7or3CWxvhTCcLXumnHf.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/BlkEby9Z7or3CWxvhTCcLXumnHf.png rename to docs/zh-CN/handbook/data-visualization/user/static/BlkEby9Z7or3CWxvhTCcLXumnHf.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/DEFSbBh6WoujLyxoktHcXEADnom.png b/docs/zh-CN/handbook/data-visualization/user/static/DEFSbBh6WoujLyxoktHcXEADnom.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/DEFSbBh6WoujLyxoktHcXEADnom.png rename to docs/zh-CN/handbook/data-visualization/user/static/DEFSbBh6WoujLyxoktHcXEADnom.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/E2pwbBm4BofyHzxut4jcjonJn0s.png b/docs/zh-CN/handbook/data-visualization/user/static/E2pwbBm4BofyHzxut4jcjonJn0s.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/E2pwbBm4BofyHzxut4jcjonJn0s.png rename to docs/zh-CN/handbook/data-visualization/user/static/E2pwbBm4BofyHzxut4jcjonJn0s.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/K0trbvxhxoVayLx84sUcX5nLnUh.png b/docs/zh-CN/handbook/data-visualization/user/static/K0trbvxhxoVayLx84sUcX5nLnUh.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/K0trbvxhxoVayLx84sUcX5nLnUh.png rename to docs/zh-CN/handbook/data-visualization/user/static/K0trbvxhxoVayLx84sUcX5nLnUh.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/OjTRbDlhHo32npxFBsicKGJinXd.png b/docs/zh-CN/handbook/data-visualization/user/static/OjTRbDlhHo32npxFBsicKGJinXd.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/OjTRbDlhHo32npxFBsicKGJinXd.png rename to docs/zh-CN/handbook/data-visualization/user/static/OjTRbDlhHo32npxFBsicKGJinXd.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/R0VlbVbkEoVcL1xA2xEcxHQLn1c.png b/docs/zh-CN/handbook/data-visualization/user/static/R0VlbVbkEoVcL1xA2xEcxHQLn1c.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/R0VlbVbkEoVcL1xA2xEcxHQLn1c.png rename to docs/zh-CN/handbook/data-visualization/user/static/R0VlbVbkEoVcL1xA2xEcxHQLn1c.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/SVYhbc1LNoFSvzxYoOAc78mvn3e.png b/docs/zh-CN/handbook/data-visualization/user/static/SVYhbc1LNoFSvzxYoOAc78mvn3e.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/SVYhbc1LNoFSvzxYoOAc78mvn3e.png rename to docs/zh-CN/handbook/data-visualization/user/static/SVYhbc1LNoFSvzxYoOAc78mvn3e.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/SdgrbugCjopiffxOrLZcZKhxnEh.png b/docs/zh-CN/handbook/data-visualization/user/static/SdgrbugCjopiffxOrLZcZKhxnEh.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/SdgrbugCjopiffxOrLZcZKhxnEh.png rename to docs/zh-CN/handbook/data-visualization/user/static/SdgrbugCjopiffxOrLZcZKhxnEh.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/TUZCbKXHOo6fN6xfxSWcjkhhngg.png b/docs/zh-CN/handbook/data-visualization/user/static/TUZCbKXHOo6fN6xfxSWcjkhhngg.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/TUZCbKXHOo6fN6xfxSWcjkhhngg.png rename to docs/zh-CN/handbook/data-visualization/user/static/TUZCbKXHOo6fN6xfxSWcjkhhngg.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/TdsOb1FBfomRaxxSdrHciggGnub.png b/docs/zh-CN/handbook/data-visualization/user/static/TdsOb1FBfomRaxxSdrHciggGnub.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/TdsOb1FBfomRaxxSdrHciggGnub.png rename to docs/zh-CN/handbook/data-visualization/user/static/TdsOb1FBfomRaxxSdrHciggGnub.png diff --git a/docs/zh-CN/plugins/data-visualization/user/static/UrFGbUN1GonqkpxyaUUclAefns3.png b/docs/zh-CN/handbook/data-visualization/user/static/UrFGbUN1GonqkpxyaUUclAefns3.png similarity index 100% rename from docs/zh-CN/plugins/data-visualization/user/static/UrFGbUN1GonqkpxyaUUclAefns3.png rename to docs/zh-CN/handbook/data-visualization/user/static/UrFGbUN1GonqkpxyaUUclAefns3.png diff --git a/docs/zh-CN/handbook/departments/index.md b/docs/zh-CN/handbook/departments/index.md new file mode 100644 index 000000000..9f3d9e419 --- /dev/null +++ b/docs/zh-CN/handbook/departments/index.md @@ -0,0 +1 @@ +# 部门 diff --git a/docs/zh-CN/plugins/formula-field/index.md b/docs/zh-CN/handbook/field-formula/index.md similarity index 100% rename from docs/zh-CN/plugins/formula-field/index.md rename to docs/zh-CN/handbook/field-formula/index.md diff --git a/docs/zh-CN/plugins/sequence-field/index.md b/docs/zh-CN/handbook/field-sequence/index.md similarity index 100% rename from docs/zh-CN/plugins/sequence-field/index.md rename to docs/zh-CN/handbook/field-sequence/index.md diff --git a/docs/zh-CN/plugins/snapshot-field/index.md b/docs/zh-CN/handbook/field-snapshot/index.md similarity index 100% rename from docs/zh-CN/plugins/snapshot-field/index.md rename to docs/zh-CN/handbook/field-snapshot/index.md diff --git a/docs/zh-CN/plugins/file-manager/aliyun-oss.md b/docs/zh-CN/handbook/file-manager/aliyun-oss.md similarity index 100% rename from docs/zh-CN/plugins/file-manager/aliyun-oss.md rename to docs/zh-CN/handbook/file-manager/aliyun-oss.md diff --git a/docs/zh-CN/plugins/file-manager/amazon-s3.md b/docs/zh-CN/handbook/file-manager/amazon-s3.md similarity index 100% rename from docs/zh-CN/plugins/file-manager/amazon-s3.md rename to docs/zh-CN/handbook/file-manager/amazon-s3.md diff --git a/docs/zh-CN/handbook/file-manager/attachment-field.md b/docs/zh-CN/handbook/file-manager/attachment-field.md new file mode 100644 index 000000000..18ad6b3ad --- /dev/null +++ b/docs/zh-CN/handbook/file-manager/attachment-field.md @@ -0,0 +1 @@ +# 附件字段 \ No newline at end of file diff --git a/docs/zh-CN/handbook/file-manager/file-collection.md b/docs/zh-CN/handbook/file-manager/file-collection.md new file mode 100644 index 000000000..bcaebc780 --- /dev/null +++ b/docs/zh-CN/handbook/file-manager/file-collection.md @@ -0,0 +1,5 @@ +# 文件表 + +:::info +This feature is powered by plugin-file-manager. +::: \ No newline at end of file diff --git a/docs/zh-CN/plugins/file-manager/index.md b/docs/zh-CN/handbook/file-manager/index.md similarity index 100% rename from docs/zh-CN/plugins/file-manager/index.md rename to docs/zh-CN/handbook/file-manager/index.md diff --git a/docs/zh-CN/plugins/file-manager/local.md b/docs/zh-CN/handbook/file-manager/local.md similarity index 100% rename from docs/zh-CN/plugins/file-manager/local.md rename to docs/zh-CN/handbook/file-manager/local.md diff --git a/docs/zh-CN/plugins/file-manager/tencent-cos.md b/docs/zh-CN/handbook/file-manager/tencent-cos.md similarity index 100% rename from docs/zh-CN/plugins/file-manager/tencent-cos.md rename to docs/zh-CN/handbook/file-manager/tencent-cos.md diff --git a/docs/zh-CN/plugins/graph-collection-manager/index.md b/docs/zh-CN/handbook/graph-collection-manager/index.md similarity index 100% rename from docs/zh-CN/plugins/graph-collection-manager/index.md rename to docs/zh-CN/handbook/graph-collection-manager/index.md diff --git a/docs/zh-CN/handbook/index.md b/docs/zh-CN/handbook/index.md new file mode 100644 index 000000000..46a7781a8 --- /dev/null +++ b/docs/zh-CN/handbook/index.md @@ -0,0 +1,11 @@ +# 手册指南 + +1. 如果你是第一接触 NocoBase,建议你从「[数据建模 - 概述](/handbook/data-modeling)」开始了解,这一章节你可以了解到 NocoBase 数据建模的特色; +2. 更进一步,你可以在界面里添加「[页面](/handbook/ui/pages)」和「[区块](/handbook/ui/blocks)」了,你可以选择合适的区块来展示数据源里的数据; +3. 接下来,为数据区块「[配置字段](/handbook/ui/fields)」和「[配置操作](/handbook/ui/actions)」,到这一步简单的数据处理流程就都可以了; +4. 如果你想编排操作,可以查看「[工作流](/handbook/workflow)」章节,工作流提供了各种触发器和动作节点,可以满足你对编排操作的无限想象; +5. 有操作就需要配置权限,你可以查看「[用户和权限](/handbook/acl)」,这一章除了可以了解到如何配置操作权限以外,也可以更进一步了解到「[组织架构](/handbook/departments)」的概念,其中包括用户、角色、部门的管理。 +6. 如果你已经有了现成的 IdP(身份提供者),查阅「[用户认证](/handbook/auth)」章节,可以帮助你了解如何接入第三方用户服务商; +7. 你可以在「[系统设置](/handbook/system-settings)」里启用多语言,如果你所使用的语言翻译不完整,你可以使用「[本地化管理](/handbook/localization-management)」来翻译,也欢迎你为 NocoBase [贡献翻译](/welcome/community/translations); +8. 「[日志和监控](/handbook/logger)」是管理和维护 NocoBase 的重要工具,可以帮助开发及时发现和解决问题,优化系统性能,确保系统的安全性和稳定性,提高系统的可靠性和可用性; +9. 你可以在「[插件管理器](/handbook/plugin-manager)」里,查看所有已经添加的插件,插件需要激活才能使用。如果现有的插件不能满足你的需求,你也可以自己动手「[开发插件](/development)」,再通过插件管理器添加进来。 diff --git a/docs/zh-CN/plugins/localization-management/index.md b/docs/zh-CN/handbook/localization-management/index.md similarity index 100% rename from docs/zh-CN/plugins/localization-management/index.md rename to docs/zh-CN/handbook/localization-management/index.md diff --git a/docs/zh-CN/plugins/localization-management/static/BFRcbhE31oEAHOxss5ncRnEvnZb.png b/docs/zh-CN/handbook/localization-management/static/BFRcbhE31oEAHOxss5ncRnEvnZb.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/BFRcbhE31oEAHOxss5ncRnEvnZb.png rename to docs/zh-CN/handbook/localization-management/static/BFRcbhE31oEAHOxss5ncRnEvnZb.png diff --git a/docs/zh-CN/plugins/localization-management/static/DxQ8bDrtsoi8ObxadwZcCYntn9d.png b/docs/zh-CN/handbook/localization-management/static/DxQ8bDrtsoi8ObxadwZcCYntn9d.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/DxQ8bDrtsoi8ObxadwZcCYntn9d.png rename to docs/zh-CN/handbook/localization-management/static/DxQ8bDrtsoi8ObxadwZcCYntn9d.png diff --git a/docs/zh-CN/plugins/localization-management/static/GaqEbrgAdokzgJxqicMcdKxMnQf.png b/docs/zh-CN/handbook/localization-management/static/GaqEbrgAdokzgJxqicMcdKxMnQf.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/GaqEbrgAdokzgJxqicMcdKxMnQf.png rename to docs/zh-CN/handbook/localization-management/static/GaqEbrgAdokzgJxqicMcdKxMnQf.png diff --git a/docs/zh-CN/plugins/localization-management/static/IkBhbaqrfodzsMxxueIcUENnnTd.png b/docs/zh-CN/handbook/localization-management/static/IkBhbaqrfodzsMxxueIcUENnnTd.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/IkBhbaqrfodzsMxxueIcUENnnTd.png rename to docs/zh-CN/handbook/localization-management/static/IkBhbaqrfodzsMxxueIcUENnnTd.png diff --git a/docs/zh-CN/plugins/localization-management/static/IkFDbWE8ios6qSxp78scf2BOnQg.png b/docs/zh-CN/handbook/localization-management/static/IkFDbWE8ios6qSxp78scf2BOnQg.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/IkFDbWE8ios6qSxp78scf2BOnQg.png rename to docs/zh-CN/handbook/localization-management/static/IkFDbWE8ios6qSxp78scf2BOnQg.png diff --git a/docs/zh-CN/plugins/localization-management/static/Pi1nbxvVEoqSIox28FkcYkw7nID.png b/docs/zh-CN/handbook/localization-management/static/Pi1nbxvVEoqSIox28FkcYkw7nID.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/Pi1nbxvVEoqSIox28FkcYkw7nID.png rename to docs/zh-CN/handbook/localization-management/static/Pi1nbxvVEoqSIox28FkcYkw7nID.png diff --git a/docs/zh-CN/plugins/localization-management/static/S49abMq61oBfMFxRvs7cZTgHnoh.png b/docs/zh-CN/handbook/localization-management/static/S49abMq61oBfMFxRvs7cZTgHnoh.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/S49abMq61oBfMFxRvs7cZTgHnoh.png rename to docs/zh-CN/handbook/localization-management/static/S49abMq61oBfMFxRvs7cZTgHnoh.png diff --git a/docs/zh-CN/plugins/localization-management/static/TmD3bXzJ2onTXcxyaWXc2g30n0e.png b/docs/zh-CN/handbook/localization-management/static/TmD3bXzJ2onTXcxyaWXc2g30n0e.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/TmD3bXzJ2onTXcxyaWXc2g30n0e.png rename to docs/zh-CN/handbook/localization-management/static/TmD3bXzJ2onTXcxyaWXc2g30n0e.png diff --git a/docs/zh-CN/plugins/localization-management/static/XO9TbVodPo01SrxFPrkcUsVmngg.png b/docs/zh-CN/handbook/localization-management/static/XO9TbVodPo01SrxFPrkcUsVmngg.png similarity index 100% rename from docs/zh-CN/plugins/localization-management/static/XO9TbVodPo01SrxFPrkcUsVmngg.png rename to docs/zh-CN/handbook/localization-management/static/XO9TbVodPo01SrxFPrkcUsVmngg.png diff --git a/docs/zh-CN/plugins/logger/index.md b/docs/zh-CN/handbook/logger/index.md similarity index 100% rename from docs/zh-CN/plugins/logger/index.md rename to docs/zh-CN/handbook/logger/index.md diff --git a/docs/zh-CN/plugins/logger/static/2023-12-26-23-01-17.png b/docs/zh-CN/handbook/logger/static/2023-12-26-23-01-17.png similarity index 100% rename from docs/zh-CN/plugins/logger/static/2023-12-26-23-01-17.png rename to docs/zh-CN/handbook/logger/static/2023-12-26-23-01-17.png diff --git a/docs/zh-CN/plugins/map/index.md b/docs/zh-CN/handbook/map/index.md similarity index 100% rename from docs/zh-CN/plugins/map/index.md rename to docs/zh-CN/handbook/map/index.md diff --git a/docs/zh-CN/handbook/map/map-block.md b/docs/zh-CN/handbook/map/map-block.md new file mode 100644 index 000000000..bc540f284 --- /dev/null +++ b/docs/zh-CN/handbook/map/map-block.md @@ -0,0 +1 @@ +# 地图区块 diff --git a/docs/zh-CN/plugins/mobile-client/index.md b/docs/zh-CN/handbook/mobile-client/index.md similarity index 100% rename from docs/zh-CN/plugins/mobile-client/index.md rename to docs/zh-CN/handbook/mobile-client/index.md diff --git a/docs/zh-CN/plugins/multi-app-manager/index.md b/docs/zh-CN/handbook/multi-app-manager/index.md similarity index 100% rename from docs/zh-CN/plugins/multi-app-manager/index.md rename to docs/zh-CN/handbook/multi-app-manager/index.md diff --git a/docs/zh-CN/handbook/plugin-manager/index.md b/docs/zh-CN/handbook/plugin-manager/index.md new file mode 100644 index 000000000..79170dc53 --- /dev/null +++ b/docs/zh-CN/handbook/plugin-manager/index.md @@ -0,0 +1 @@ +# 插件管理 \ No newline at end of file diff --git a/docs/zh-CN/plugins/system-settings/index.md b/docs/zh-CN/handbook/system-settings/index.md similarity index 100% rename from docs/zh-CN/plugins/system-settings/index.md rename to docs/zh-CN/handbook/system-settings/index.md diff --git a/docs/zh-CN/plugins/telemetry-prometheus/index.md b/docs/zh-CN/handbook/telemetry-prometheus/index.md similarity index 100% rename from docs/zh-CN/plugins/telemetry-prometheus/index.md rename to docs/zh-CN/handbook/telemetry-prometheus/index.md diff --git a/docs/zh-CN/plugins/theme-editor/index.md b/docs/zh-CN/handbook/theme-editor/index.md similarity index 100% rename from docs/zh-CN/plugins/theme-editor/index.md rename to docs/zh-CN/handbook/theme-editor/index.md diff --git a/docs/zh-CN/plugins/ui-schema-storage/index.md b/docs/zh-CN/handbook/ui-schema-storage/index.md similarity index 100% rename from docs/zh-CN/plugins/ui-schema-storage/index.md rename to docs/zh-CN/handbook/ui-schema-storage/index.md diff --git a/docs/zh-CN/handbook/ui/blocks/data-blocks/form.md b/docs/zh-CN/handbook/ui/blocks/data-blocks/form.md new file mode 100644 index 000000000..dca0589d5 --- /dev/null +++ b/docs/zh-CN/handbook/ui/blocks/data-blocks/form.md @@ -0,0 +1 @@ +# 表单区块 \ No newline at end of file diff --git a/docs/zh-CN/handbook/ui/blocks/data-blocks/table.md b/docs/zh-CN/handbook/ui/blocks/data-blocks/table.md new file mode 100644 index 000000000..3ea4e4c0c --- /dev/null +++ b/docs/zh-CN/handbook/ui/blocks/data-blocks/table.md @@ -0,0 +1 @@ +# 表格区块 \ No newline at end of file diff --git a/docs/zh-CN/handbook/ui/blocks/filter-blocks/form.md b/docs/zh-CN/handbook/ui/blocks/filter-blocks/form.md new file mode 100644 index 000000000..b93671ea2 --- /dev/null +++ b/docs/zh-CN/handbook/ui/blocks/filter-blocks/form.md @@ -0,0 +1 @@ +# 表单筛选区块 \ No newline at end of file diff --git a/docs/zh-CN/handbook/ui/blocks/index.md b/docs/zh-CN/handbook/ui/blocks/index.md new file mode 100644 index 000000000..dbf065873 --- /dev/null +++ b/docs/zh-CN/handbook/ui/blocks/index.md @@ -0,0 +1,75 @@ +# 区块 + +区块是内容的载体,可以放置于页面(Page)、对话框(Modal)或抽屉(Drawer)里,多个区块可以自由拖拽排列。 + +## 添加区块 + +区块可以放置于页面(Page)、对话框(Modal)或抽屉(Drawer)里 + +### 页面里的区块 + +目前页面里的区块类型包括:数据区块、筛选区块、其他区块 + +![](./static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png) + +### 弹窗(对话框或抽屉)里的区块 + +弹窗有对话框和抽屉两种,和页面一样也可以添加区块,区别在于弹窗里的区块通常为单条记录的添加、编辑或查看等,区块类型包括当前数据区块、关系区块、其他区块。 + +#### 抽屉 + +![](./static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png) + +#### 对话框 + +![](./static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png) + +## 区块的设计器 + +每个区块右上角都有三个小图标,从左到右分别为: + +1. 拖拽布局 +2. 快捷添加区块 +3. 区块参数配置 + +![](./static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png) + +简单的区块所有的配置项都集中在「区块参数配置」里,如 Markdown + +![](./static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png) + +复杂的数据类型区块还会提供独立的内嵌的「配置字段」和「配置操作」 + +![](./static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png) + +除此之外,也可以自由发挥,提供更多嵌套的可能,如图表区块 + +![](./static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png) + +## 区块布局 + +多个区块可以通过拖拽调整布局 + +![](./static/XjdHbvC9ZotdQAx8GJoczwoancc.gif) + +## 区块模板 + +可以将一个数据类型区块保存为模板,以后添加区块时可以直接复制或引用这个模板。比如,一个数据表的表单,既用于新增数据,又用于编辑数据,那就可以将这个表单保存为模板,在新增数据和编辑数据的界面里引用它。 + +### 如何添加和使用模板? + +1. 将数据区块保存为区块模板(只有数据类型的区块才有这个配置项) + +![](./static/JNiLb7rksoY07ox092ycaarenGd.png) + +1. 添加区块时,选择复制或引用模板 + +![](./static/ImutbF0YDoWldOxrPilcwQFHnSe.png) + +### 复制和引用的区别 + +复制是基于区块模板创建的全新区块,区块有调整不影响模块;引用是直接使用区块模板,区块调整会改变模板,所有引用了当前模板的区块都会产生变化。 + +## 区块类型 + +![区块类型](./static/image.png) diff --git a/docs/zh-CN/handbook/ui/blocks/other-blocks/markdown.md b/docs/zh-CN/handbook/ui/blocks/other-blocks/markdown.md new file mode 100644 index 000000000..156775371 --- /dev/null +++ b/docs/zh-CN/handbook/ui/blocks/other-blocks/markdown.md @@ -0,0 +1 @@ +# Markdown 区块 \ No newline at end of file diff --git a/docs/zh-CN/handbook/ui/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png b/docs/zh-CN/handbook/ui/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png new file mode 100644 index 000000000..a2479759d Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/BEmxbD2SgoUTDexnYjzcmh7Knhg.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png b/docs/zh-CN/handbook/ui/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png new file mode 100644 index 000000000..45698aa22 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/EicAbMa7Jo2MD9x8FSfcpgTGnHc.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png b/docs/zh-CN/handbook/ui/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png new file mode 100644 index 000000000..32ab59bd3 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/ImutbF0YDoWldOxrPilcwQFHnSe.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png b/docs/zh-CN/handbook/ui/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png new file mode 100644 index 000000000..d5b5018b2 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/JNiLb7rksoY07ox092ycaarenGd.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png b/docs/zh-CN/handbook/ui/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png new file mode 100644 index 000000000..cc7603c71 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/L0aJb1V9DoETnNxrr1gcz0g0nDb.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png b/docs/zh-CN/handbook/ui/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png new file mode 100644 index 000000000..717d3ea48 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/OpBcbf9UlooZ5UxZDwwcHZi8nWf.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png b/docs/zh-CN/handbook/ui/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png new file mode 100644 index 000000000..b8aeaf4f3 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/PSD8bf1fzoZkIUxJW7lc4XuGnee.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png b/docs/zh-CN/handbook/ui/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png new file mode 100644 index 000000000..77c986e9d Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/Tvjfb4qr4osyzxxPKdRcfn1knsd.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png b/docs/zh-CN/handbook/ui/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png new file mode 100644 index 000000000..4abc2a9a8 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/Uo6ubaMwFo5bi1xVMU5cshlTn1g.png differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif b/docs/zh-CN/handbook/ui/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif new file mode 100644 index 000000000..a43b0c671 Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/XjdHbvC9ZotdQAx8GJoczwoancc.gif differ diff --git a/docs/zh-CN/handbook/ui/blocks/static/image.png b/docs/zh-CN/handbook/ui/blocks/static/image.png new file mode 100644 index 000000000..9f9954a8a Binary files /dev/null and b/docs/zh-CN/handbook/ui/blocks/static/image.png differ diff --git a/docs/zh-CN/handbook/ui/fields/index.md b/docs/zh-CN/handbook/ui/fields/index.md new file mode 100644 index 000000000..e5e1f558f --- /dev/null +++ b/docs/zh-CN/handbook/ui/fields/index.md @@ -0,0 +1,2 @@ +# 字段概述 + diff --git a/docs/zh-CN/handbook/ui/menus/index.md b/docs/zh-CN/handbook/ui/menus/index.md new file mode 100644 index 000000000..2d1556db6 --- /dev/null +++ b/docs/zh-CN/handbook/ui/menus/index.md @@ -0,0 +1,52 @@ +# 菜单 + +菜单用来组织页面和外部链接。在 NocoBase 默认的页面布局模板中,菜单位于顶部和左侧。其中,顶部为一级菜单,左侧为二级和无限层级的子菜单。 + +## 菜单项类型 + +NocoBase 内置三种菜项类型: + +- 分组 +- 页面 +- 链接 + +![](./static/OpdHbIbJ8oZX75x777ycylHxn1Q.png) + +### 分组 + +“分组”用来对菜单项进行分组,它可以位于顶部或左侧。在一个分组内,可以继续建立分组,即菜单可以无限层级。 + +![](./static/LTdGbCxxHopt9ix1Nuncj73VnQb.png) + + +### 页面 + +页面可以作为区块的容器,放置各种各样的区块。(详见 [页面和弹窗](./pages/index.md) ) + +![](./static/SYzbbocHfoNFtsxomWJcUno7nog.png) + +### 链接 + +可以跳转到第三方 URL + +![](./static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png) + +## 配置菜单 + +进入界面配置模式后,在菜单项的右上角有两个图标,分别是: + +- 拖拽移动 +- 菜单项配置 + +![](./static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png) + +### 菜单项配置 + +![](./static/ZLYibDXwToMdqRxMTy4cyTion1f.png) + +- 编辑:包括菜单项的标题、图标等 +- 移动到:除了拖拽移动以外,也可以通过「移动到」快速的移动菜单项,可以将菜单项移动到其他菜单项的前面、后面、内部 +- 在前面插入 +- 在后面插入 +- 在里面插入(仅限于分组类型) +- 删除 diff --git a/docs/zh-CN/handbook/ui/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png b/docs/zh-CN/handbook/ui/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png new file mode 100644 index 000000000..a2751410c Binary files /dev/null and b/docs/zh-CN/handbook/ui/menus/static/Jp3NbdeVBojspWxvcWhcuDTlnOe.png differ diff --git a/docs/zh-CN/handbook/ui/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png b/docs/zh-CN/handbook/ui/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png new file mode 100644 index 000000000..f686eb3de Binary files /dev/null and b/docs/zh-CN/handbook/ui/menus/static/LTdGbCxxHopt9ix1Nuncj73VnQb.png differ diff --git a/docs/zh-CN/handbook/ui/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png b/docs/zh-CN/handbook/ui/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png new file mode 100644 index 000000000..4a609a506 Binary files /dev/null and b/docs/zh-CN/handbook/ui/menus/static/OpdHbIbJ8oZX75x777ycylHxn1Q.png differ diff --git a/docs/zh-CN/handbook/ui/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png b/docs/zh-CN/handbook/ui/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png new file mode 100644 index 000000000..dc01db58a Binary files /dev/null and b/docs/zh-CN/handbook/ui/menus/static/SYzbbocHfoNFtsxomWJcUno7nog.png differ diff --git a/docs/zh-CN/handbook/ui/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png b/docs/zh-CN/handbook/ui/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png new file mode 100644 index 000000000..197266e57 Binary files /dev/null and b/docs/zh-CN/handbook/ui/menus/static/T0LTbjTBEo24UaxU9Btc6xgbnMf.png differ diff --git a/docs/zh-CN/handbook/ui/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png b/docs/zh-CN/handbook/ui/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png new file mode 100644 index 000000000..a89a582a6 Binary files /dev/null and b/docs/zh-CN/handbook/ui/menus/static/ZLYibDXwToMdqRxMTy4cyTion1f.png differ diff --git a/docs/zh-CN/handbook/ui/pages/index.md b/docs/zh-CN/handbook/ui/pages/index.md new file mode 100644 index 000000000..c2c3643c1 --- /dev/null +++ b/docs/zh-CN/handbook/ui/pages/index.md @@ -0,0 +1,55 @@ +# 页面 + +NocoBase 的页面和弹窗(对话框、抽屉)可以作为区块的容器,它们就像一块画布,可以在其中自由放置各种区块。 + +## 页面结构 + +通过 [菜单](./menus/index.md) 创建页面后,可以看到一个空页面由以下两部分组成: + +1. 页眉 + 1. 页面标题 + 2. 标签页 +2. 区块容器 + +![2024-01-20_08-23-10](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_08-23-10.jpg) + +## 页面设置 + +将鼠标悬浮到页面右上方的配置项图标,可以看到页面配置项: + +![2024-01-20_08-24-27](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_08-24-27.jpg) + +可配置的项目包括: + +- 启用页眉:用于控制是否显示页眉; +- 显示页面标题:是否在页眉中显示页面标题; +- 编辑页面标题:默认的页面标题为菜单项标题,可以自定义; +- 启用标签页:默认关闭,启用后可以添加多个标签页。 + +### 启用页眉 + +通常情况下,我们需要启用页眉区域,用于显示页面标题、标签页。也有些情况不希望启用它,比如,当我们建立一个 Dashbodrd 页面,一级菜单就可以很好的体现该页面内容,此时我们可以关闭页眉,只显示页面内的区块。 + +![20240120084618](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/20240120084618.png) + +### 页面标题 + +默认的页面标题为菜单项名称,通过点击“编辑页面标题”,可对其进行修改。同页眉一样,有些时候我们不需要显示页面标题,只需要显示标签页,此时就可以关闭标题。 + +![2024-01-20_08-28-43](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_08-28-43.jpg) + +### 启用标签页 + +当一个页面里的内容过多,或者适合分为几个独立部分来组织的时候,我们可以启用标签页(tab),每个标签页都是独立的区块容器。如下图,我们为订单页面添加了 3 个标签页,分别用来显示全部订单、已完成的订单、已退款的订单。将鼠标移到标签页标题上,右上角可以看到排序和配置项按钮。 + +![2024-01-20_08-47-15](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_08-47-15.jpg) + +## 添加区块 + +点击“新增区块”即可在页面内添加无限数量的区块(查看 [区块](./blocks/index.md) 的介绍)。 + +![2024-01-20_08-48-36](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_08-48-36.jpg) + +在新增多个区块后,可通过区块右上角的移动按钮,对区块任意拖拽排版,调整布局,实现最合适的效果。 + +![page-block](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/page-block.gif) diff --git a/docs/zh-CN/handbook/ui/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png b/docs/zh-CN/handbook/ui/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png new file mode 100644 index 000000000..ff6e6bf2c Binary files /dev/null and b/docs/zh-CN/handbook/ui/pages/static/C3xvb09t4oGOlhxxI5jcy2B7ncc.png differ diff --git a/docs/zh-CN/handbook/ui/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif b/docs/zh-CN/handbook/ui/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif new file mode 100644 index 000000000..a43b0c671 Binary files /dev/null and b/docs/zh-CN/handbook/ui/pages/static/U0kXblh2Yo5S5hx91c2cYggrnYf.gif differ diff --git a/docs/zh-CN/handbook/ui/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png b/docs/zh-CN/handbook/ui/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png new file mode 100644 index 000000000..3a1725bca Binary files /dev/null and b/docs/zh-CN/handbook/ui/pages/static/VpP2bTwhooaxrqxy5gYc4KJFnUc.png differ diff --git a/docs/zh-CN/handbook/ui/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png b/docs/zh-CN/handbook/ui/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png new file mode 100644 index 000000000..933e11052 Binary files /dev/null and b/docs/zh-CN/handbook/ui/pages/static/YPqEb1UEMoNzszxAHeDcNrsjnie.png differ diff --git a/docs/zh-CN/handbook/ui/pop-up.md b/docs/zh-CN/handbook/ui/pop-up.md new file mode 100644 index 000000000..1fc35a0ee --- /dev/null +++ b/docs/zh-CN/handbook/ui/pop-up.md @@ -0,0 +1 @@ +# 弹窗 diff --git a/docs/zh-CN/handbook/ui/ui-editor/index.md b/docs/zh-CN/handbook/ui/ui-editor/index.md new file mode 100644 index 000000000..3549fe109 --- /dev/null +++ b/docs/zh-CN/handbook/ui/ui-editor/index.md @@ -0,0 +1,45 @@ +# 界面配置模式 + +## 所见即所得 + +NocoBase 采用所见即所得的界面配置模式。点击界面配置按钮,可以在配置模式和使用模式之间切换。 + +![2024-01-20_11-42-20](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-42-20.jpg) + +使用模式: + +![2024-01-20_11-28-46](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-28-46.jpg) + +配置模式: + +![2024-01-20_11-29-50](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-29-50.jpg) + +## 布局模板 + +NocoBase 内置一个布局模板,顶部和左侧是导航区域,右侧是内容区域。 + +![2024-01-20_11-36-38](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-36-38.jpg) + +## 配置项 + +进入界面配置模式后,界面上会出现橙色的可配置项。通常,每个可配置元素的配置项入口位于该元素的右上角。几乎所有元素都可以在界面上实时配置和查看效果,以下是几个示例: + +菜单的配置项: + +![2024-01-20_11-30-29](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-30-29.jpg) + +页面的配置项: + +![2024-01-20_11-30-52](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-30-52.jpg) + +区块的配置项: + +![2024-01-20_11-31-20](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-31-20.jpg) + +操作的配置项: + +![2024-01-20_11-31-50](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-31-50.jpg) + +表格列的配置项: + +![2024-01-20_11-32-08](https://nocobase-docs.oss-cn-beijing.aliyuncs.com/2024-01-20_11-32-08.jpg) \ No newline at end of file diff --git a/docs/zh-CN/plugins/users/index.md b/docs/zh-CN/handbook/users/index.md similarity index 100% rename from docs/zh-CN/plugins/users/index.md rename to docs/zh-CN/handbook/users/index.md diff --git a/docs/zh-CN/plugins/verification/index.md b/docs/zh-CN/handbook/verification/index.md similarity index 100% rename from docs/zh-CN/plugins/verification/index.md rename to docs/zh-CN/handbook/verification/index.md diff --git a/docs/zh-CN/plugins/workflow-aggregate/index/0e7c1609-a30b-4071-8f71-ee863bade0d3.png b/docs/zh-CN/handbook/workflow-aggregate/index/0e7c1609-a30b-4071-8f71-ee863bade0d3.png similarity index 100% rename from docs/zh-CN/plugins/workflow-aggregate/index/0e7c1609-a30b-4071-8f71-ee863bade0d3.png rename to docs/zh-CN/handbook/workflow-aggregate/index/0e7c1609-a30b-4071-8f71-ee863bade0d3.png diff --git a/docs/zh-CN/plugins/workflow-aggregate/index/26bd7262-7f98-4651-a8c3-b2a6eb1c7c69.png b/docs/zh-CN/handbook/workflow-aggregate/index/26bd7262-7f98-4651-a8c3-b2a6eb1c7c69.png similarity index 100% rename from docs/zh-CN/plugins/workflow-aggregate/index/26bd7262-7f98-4651-a8c3-b2a6eb1c7c69.png rename to docs/zh-CN/handbook/workflow-aggregate/index/26bd7262-7f98-4651-a8c3-b2a6eb1c7c69.png diff --git a/docs/zh-CN/plugins/workflow-aggregate/index/6c3e8dde-dbfe-4042-91c7-0c2993bbba82.png b/docs/zh-CN/handbook/workflow-aggregate/index/6c3e8dde-dbfe-4042-91c7-0c2993bbba82.png similarity index 100% rename from docs/zh-CN/plugins/workflow-aggregate/index/6c3e8dde-dbfe-4042-91c7-0c2993bbba82.png rename to docs/zh-CN/handbook/workflow-aggregate/index/6c3e8dde-dbfe-4042-91c7-0c2993bbba82.png diff --git a/docs/zh-CN/plugins/workflow-aggregate/index/index.md b/docs/zh-CN/handbook/workflow-aggregate/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-aggregate/index/index.md rename to docs/zh-CN/handbook/workflow-aggregate/index/index.md diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-blocks-assignee-view-processed.png b/docs/zh-CN/handbook/workflow-approval/index/approval-blocks-assignee-view-processed.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-blocks-assignee-view-processed.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-blocks-assignee-view-processed.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-blocks-create.png b/docs/zh-CN/handbook/workflow-approval/index/approval-blocks-create.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-blocks-create.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-blocks-create.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-blocks-initiate.png b/docs/zh-CN/handbook/workflow-approval/index/approval-blocks-initiate.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-blocks-initiate.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-blocks-initiate.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-blocks-initiation-view.png b/docs/zh-CN/handbook/workflow-approval/index/approval-blocks-initiation-view.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-blocks-initiation-view.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-blocks-initiation-view.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-blocks-initiations-list.png b/docs/zh-CN/handbook/workflow-approval/index/approval-blocks-initiations-list.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-blocks-initiations-list.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-blocks-initiations-list.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-initiate-bind-workflow.png b/docs/zh-CN/handbook/workflow-approval/index/approval-initiate-bind-workflow.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-initiate-bind-workflow.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-initiate-bind-workflow.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-assignees.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-assignees.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-assignees.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-assignees.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-branch-mode-branched.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-branch-mode-branched.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-branch-mode-branched.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-branch-mode-branched.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-branch-mode-passthrough.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-branch-mode-passthrough.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-branch-mode-passthrough.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-branch-mode-passthrough.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-create.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-create.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-create.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-create.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-exit-on-rejection.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-exit-on-rejection.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-exit-on-rejection.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-exit-on-rejection.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-blocks-actions.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-blocks-actions.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-blocks-actions.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-blocks-actions.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-blocks-details.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-blocks-details.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-blocks-details.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-blocks-details.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-blocks.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-blocks.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-blocks.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-blocks.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-drawer.png b/docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-drawer.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-node-ui-drawer.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-node-ui-drawer.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-application-content.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-application-content.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-application-content.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-application-content.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-assignee-drawer.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-assignee-drawer.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-assignee-drawer.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-assignee-drawer.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-assignee-view.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-assignee-view.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-assignee-view.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-assignee-view.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-create-approval-block.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-create-approval-block.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-create-approval-block.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-create-approval-block.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-passed.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-passed.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-passed.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-passed.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-returned.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-returned.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-returned.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-returned.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-withdrawn-resubmit.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-withdrawn-resubmit.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-withdrawn-resubmit.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-withdrawn-resubmit.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-withdrawn.png b/docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-withdrawn.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-record-detail-withdrawn.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-record-detail-withdrawn.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-intiator-ui-actions.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-intiator-ui-actions.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-intiator-ui-actions.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-intiator-ui-actions.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-intiator-ui-fields.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-intiator-ui-fields.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-intiator-ui-fields.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-intiator-ui-fields.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-intiator-ui.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-intiator-ui.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-intiator-ui.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-intiator-ui.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-select-collection.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-select-collection.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-select-collection.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-select-collection.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-select-place-to-initiate.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-select-place-to-initiate.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-select-place-to-initiate.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-select-place-to-initiate.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-withdrawable.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-withdrawable.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-configuration-withdrawable.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-configuration-withdrawable.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/approval-trigger-create-workflow.png b/docs/zh-CN/handbook/workflow-approval/index/approval-trigger-create-workflow.png similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/approval-trigger-create-workflow.png rename to docs/zh-CN/handbook/workflow-approval/index/approval-trigger-create-workflow.png diff --git a/docs/zh-CN/plugins/workflow-approval/index/index.md b/docs/zh-CN/handbook/workflow-approval/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-approval/index/index.md rename to docs/zh-CN/handbook/workflow-approval/index/index.md diff --git a/docs/zh-CN/plugins/workflow-delay/index/5f46759c-6796-44c6-a135-84c76c7d5af7.png b/docs/zh-CN/handbook/workflow-delay/index/5f46759c-6796-44c6-a135-84c76c7d5af7.png similarity index 100% rename from docs/zh-CN/plugins/workflow-delay/index/5f46759c-6796-44c6-a135-84c76c7d5af7.png rename to docs/zh-CN/handbook/workflow-delay/index/5f46759c-6796-44c6-a135-84c76c7d5af7.png diff --git a/docs/zh-CN/plugins/workflow-delay/index/a2f1001b-c19c-4aa4-a4a5-84311f9705ec.png b/docs/zh-CN/handbook/workflow-delay/index/a2f1001b-c19c-4aa4-a4a5-84311f9705ec.png similarity index 100% rename from docs/zh-CN/plugins/workflow-delay/index/a2f1001b-c19c-4aa4-a4a5-84311f9705ec.png rename to docs/zh-CN/handbook/workflow-delay/index/a2f1001b-c19c-4aa4-a4a5-84311f9705ec.png diff --git a/docs/zh-CN/plugins/workflow-delay/index/c6c46d94-e03b-45b6-aa20-f4c1bd2c2f0e.png b/docs/zh-CN/handbook/workflow-delay/index/c6c46d94-e03b-45b6-aa20-f4c1bd2c2f0e.png similarity index 100% rename from docs/zh-CN/plugins/workflow-delay/index/c6c46d94-e03b-45b6-aa20-f4c1bd2c2f0e.png rename to docs/zh-CN/handbook/workflow-delay/index/c6c46d94-e03b-45b6-aa20-f4c1bd2c2f0e.png diff --git a/docs/zh-CN/plugins/workflow-delay/index/index.md b/docs/zh-CN/handbook/workflow-delay/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-delay/index/index.md rename to docs/zh-CN/handbook/workflow-delay/index/index.md diff --git a/docs/zh-CN/handbook/workflow-dynamic-calculation/expression.md b/docs/zh-CN/handbook/workflow-dynamic-calculation/expression.md new file mode 100644 index 000000000..f6d703a52 --- /dev/null +++ b/docs/zh-CN/handbook/workflow-dynamic-calculation/expression.md @@ -0,0 +1,6 @@ +# 表达式表 + +:::info +This feature is powered by plugin-workflow-dynamic-calculation. +::: + diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/2da91177-fa8e-473d-9335-7dcae59b3fb6.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/2da91177-fa8e-473d-9335-7dcae59b3fb6.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/2da91177-fa8e-473d-9335-7dcae59b3fb6.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/2da91177-fa8e-473d-9335-7dcae59b3fb6.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/52e5273e-362c-4558-9c61-5dad00dcc2a1.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/52e5273e-362c-4558-9c61-5dad00dcc2a1.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/52e5273e-362c-4558-9c61-5dad00dcc2a1.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/52e5273e-362c-4558-9c61-5dad00dcc2a1.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/72002a76-d3bc-46dc-b355-bc3b5cf0c314.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/72002a76-d3bc-46dc-b355-bc3b5cf0c314.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/72002a76-d3bc-46dc-b355-bc3b5cf0c314.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/72002a76-d3bc-46dc-b355-bc3b5cf0c314.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/748f7a1e-bd21-46e5-bc99-f6d6ccee8eeb.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/748f7a1e-bd21-46e5-bc99-f6d6ccee8eeb.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/748f7a1e-bd21-46e5-bc99-f6d6ccee8eeb.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/748f7a1e-bd21-46e5-bc99-f6d6ccee8eeb.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/7521d0e3-bfad-401e-b3f8-66563c108d05.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/7521d0e3-bfad-401e-b3f8-66563c108d05.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/7521d0e3-bfad-401e-b3f8-66563c108d05.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/7521d0e3-bfad-401e-b3f8-66563c108d05.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/8f73a5cc-9405-465b-aa4b-280a457f9553.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/8f73a5cc-9405-465b-aa4b-280a457f9553.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/8f73a5cc-9405-465b-aa4b-280a457f9553.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/8f73a5cc-9405-465b-aa4b-280a457f9553.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/9964baff-d53d-4f2c-8906-c76e65fe4fe1.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/9964baff-d53d-4f2c-8906-c76e65fe4fe1.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/9964baff-d53d-4f2c-8906-c76e65fe4fe1.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/9964baff-d53d-4f2c-8906-c76e65fe4fe1.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/b79bf191-fd4e-49d6-b492-a03181fc92ca.png b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/b79bf191-fd4e-49d6-b492-a03181fc92ca.png similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/b79bf191-fd4e-49d6-b492-a03181fc92ca.png rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/b79bf191-fd4e-49d6-b492-a03181fc92ca.png diff --git a/docs/zh-CN/plugins/workflow-dynamic-calculation/index/index.md b/docs/zh-CN/handbook/workflow-dynamic-calculation/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-dynamic-calculation/index/index.md rename to docs/zh-CN/handbook/workflow-dynamic-calculation/index/index.md diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/2436d616-578f-43c2-a3db-20ac9b4aef0e.png b/docs/zh-CN/handbook/workflow-form-trigger/index/2436d616-578f-43c2-a3db-20ac9b4aef0e.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/2436d616-578f-43c2-a3db-20ac9b4aef0e.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/2436d616-578f-43c2-a3db-20ac9b4aef0e.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/4a09cbc7-c495-4142-8745-6f8501160257.png b/docs/zh-CN/handbook/workflow-form-trigger/index/4a09cbc7-c495-4142-8745-6f8501160257.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/4a09cbc7-c495-4142-8745-6f8501160257.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/4a09cbc7-c495-4142-8745-6f8501160257.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/6cea4b53-9964-4911-89fe-0ba2b9eeeb9e.png b/docs/zh-CN/handbook/workflow-form-trigger/index/6cea4b53-9964-4911-89fe-0ba2b9eeeb9e.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/6cea4b53-9964-4911-89fe-0ba2b9eeeb9e.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/6cea4b53-9964-4911-89fe-0ba2b9eeeb9e.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/7152a1d1-1842-4378-8253-c4b76bcbe7de.png b/docs/zh-CN/handbook/workflow-form-trigger/index/7152a1d1-1842-4378-8253-c4b76bcbe7de.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/7152a1d1-1842-4378-8253-c4b76bcbe7de.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/7152a1d1-1842-4378-8253-c4b76bcbe7de.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/9de5c7ea-9b38-4069-913e-803a0dca5edb.png b/docs/zh-CN/handbook/workflow-form-trigger/index/9de5c7ea-9b38-4069-913e-803a0dca5edb.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/9de5c7ea-9b38-4069-913e-803a0dca5edb.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/9de5c7ea-9b38-4069-913e-803a0dca5edb.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/b4328ede-50ac-4256-affc-b45273f69461.png b/docs/zh-CN/handbook/workflow-form-trigger/index/b4328ede-50ac-4256-affc-b45273f69461.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/b4328ede-50ac-4256-affc-b45273f69461.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/b4328ede-50ac-4256-affc-b45273f69461.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/e859847b-3f24-4255-bd03-fbff262d0821.png b/docs/zh-CN/handbook/workflow-form-trigger/index/e859847b-3f24-4255-bd03-fbff262d0821.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/e859847b-3f24-4255-bd03-fbff262d0821.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/e859847b-3f24-4255-bd03-fbff262d0821.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/f4ccd609-dd93-4157-8d71-2d5dbbe7803f.png b/docs/zh-CN/handbook/workflow-form-trigger/index/f4ccd609-dd93-4157-8d71-2d5dbbe7803f.png similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/f4ccd609-dd93-4157-8d71-2d5dbbe7803f.png rename to docs/zh-CN/handbook/workflow-form-trigger/index/f4ccd609-dd93-4157-8d71-2d5dbbe7803f.png diff --git a/docs/zh-CN/plugins/workflow-form-trigger/index/index.md b/docs/zh-CN/handbook/workflow-form-trigger/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-form-trigger/index/index.md rename to docs/zh-CN/handbook/workflow-form-trigger/index/index.md diff --git a/docs/zh-CN/plugins/workflow-json-query/index/create-node.png b/docs/zh-CN/handbook/workflow-json-query/index/create-node.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/create-node.png rename to docs/zh-CN/handbook/workflow-json-query/index/create-node.png diff --git a/docs/zh-CN/plugins/workflow-json-query/index/datasource.png b/docs/zh-CN/handbook/workflow-json-query/index/datasource.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/datasource.png rename to docs/zh-CN/handbook/workflow-json-query/index/datasource.png diff --git a/docs/zh-CN/plugins/workflow-json-query/index/example-sql-configuration.png b/docs/zh-CN/handbook/workflow-json-query/index/example-sql-configuration.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/example-sql-configuration.png rename to docs/zh-CN/handbook/workflow-json-query/index/example-sql-configuration.png diff --git a/docs/zh-CN/plugins/workflow-json-query/index/example-sql-update-order-price.png b/docs/zh-CN/handbook/workflow-json-query/index/example-sql-update-order-price.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/example-sql-update-order-price.png rename to docs/zh-CN/handbook/workflow-json-query/index/example-sql-update-order-price.png diff --git a/docs/zh-CN/plugins/workflow-json-query/index/index.md b/docs/zh-CN/handbook/workflow-json-query/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/index.md rename to docs/zh-CN/handbook/workflow-json-query/index/index.md diff --git a/docs/zh-CN/plugins/workflow-json-query/index/properties-mapping.png b/docs/zh-CN/handbook/workflow-json-query/index/properties-mapping.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/properties-mapping.png rename to docs/zh-CN/handbook/workflow-json-query/index/properties-mapping.png diff --git a/docs/zh-CN/plugins/workflow-json-query/index/query-engine.png b/docs/zh-CN/handbook/workflow-json-query/index/query-engine.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/query-engine.png rename to docs/zh-CN/handbook/workflow-json-query/index/query-engine.png diff --git a/docs/zh-CN/plugins/workflow-json-query/index/query-expression.png b/docs/zh-CN/handbook/workflow-json-query/index/query-expression.png similarity index 100% rename from docs/zh-CN/plugins/workflow-json-query/index/query-expression.png rename to docs/zh-CN/handbook/workflow-json-query/index/query-expression.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/5ec4ff91-e3ff-4ee2-91d7-4602b13d605f.png b/docs/zh-CN/handbook/workflow-loop/index/5ec4ff91-e3ff-4ee2-91d7-4602b13d605f.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/5ec4ff91-e3ff-4ee2-91d7-4602b13d605f.png rename to docs/zh-CN/handbook/workflow-loop/index/5ec4ff91-e3ff-4ee2-91d7-4602b13d605f.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/76c97498-bfd6-46f4-99da-9734cb10e400.png b/docs/zh-CN/handbook/workflow-loop/index/76c97498-bfd6-46f4-99da-9734cb10e400.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/76c97498-bfd6-46f4-99da-9734cb10e400.png rename to docs/zh-CN/handbook/workflow-loop/index/76c97498-bfd6-46f4-99da-9734cb10e400.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/7cd2dfe7-6a43-43b8-90d7-9c9c323f888e.png b/docs/zh-CN/handbook/workflow-loop/index/7cd2dfe7-6a43-43b8-90d7-9c9c323f888e.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/7cd2dfe7-6a43-43b8-90d7-9c9c323f888e.png rename to docs/zh-CN/handbook/workflow-loop/index/7cd2dfe7-6a43-43b8-90d7-9c9c323f888e.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/85085520-9287-4353-b978-b47c859972fc.png b/docs/zh-CN/handbook/workflow-loop/index/85085520-9287-4353-b978-b47c859972fc.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/85085520-9287-4353-b978-b47c859972fc.png rename to docs/zh-CN/handbook/workflow-loop/index/85085520-9287-4353-b978-b47c859972fc.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/856f8c35-d35b-4879-81d0-3d334e6d9a42.png b/docs/zh-CN/handbook/workflow-loop/index/856f8c35-d35b-4879-81d0-3d334e6d9a42.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/856f8c35-d35b-4879-81d0-3d334e6d9a42.png rename to docs/zh-CN/handbook/workflow-loop/index/856f8c35-d35b-4879-81d0-3d334e6d9a42.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/85c59e6d-90bb-47bd-b36a-7ecf1744a630.png b/docs/zh-CN/handbook/workflow-loop/index/85c59e6d-90bb-47bd-b36a-7ecf1744a630.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/85c59e6d-90bb-47bd-b36a-7ecf1744a630.png rename to docs/zh-CN/handbook/workflow-loop/index/85c59e6d-90bb-47bd-b36a-7ecf1744a630.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/961c20bb-f1c8-4bba-96b3-79ea74dcc66c.png b/docs/zh-CN/handbook/workflow-loop/index/961c20bb-f1c8-4bba-96b3-79ea74dcc66c.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/961c20bb-f1c8-4bba-96b3-79ea74dcc66c.png rename to docs/zh-CN/handbook/workflow-loop/index/961c20bb-f1c8-4bba-96b3-79ea74dcc66c.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/ca5002e1-75fc-4efd-8b6b-2284d7c2fe8a.png b/docs/zh-CN/handbook/workflow-loop/index/ca5002e1-75fc-4efd-8b6b-2284d7c2fe8a.png similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/ca5002e1-75fc-4efd-8b6b-2284d7c2fe8a.png rename to docs/zh-CN/handbook/workflow-loop/index/ca5002e1-75fc-4efd-8b6b-2284d7c2fe8a.png diff --git a/docs/zh-CN/plugins/workflow-loop/index/index.md b/docs/zh-CN/handbook/workflow-loop/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-loop/index/index.md rename to docs/zh-CN/handbook/workflow-loop/index/index.md diff --git a/docs/zh-CN/plugins/workflow-manual/index/2aca45ec-7e4f-448f-aeec-7e6e80f28a3b.png b/docs/zh-CN/handbook/workflow-manual/index/2aca45ec-7e4f-448f-aeec-7e6e80f28a3b.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/2aca45ec-7e4f-448f-aeec-7e6e80f28a3b.png rename to docs/zh-CN/handbook/workflow-manual/index/2aca45ec-7e4f-448f-aeec-7e6e80f28a3b.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/2e4c8b58-ea55-48f6-9c4c-1ebbc07cc940.png b/docs/zh-CN/handbook/workflow-manual/index/2e4c8b58-ea55-48f6-9c4c-1ebbc07cc940.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/2e4c8b58-ea55-48f6-9c4c-1ebbc07cc940.png rename to docs/zh-CN/handbook/workflow-manual/index/2e4c8b58-ea55-48f6-9c4c-1ebbc07cc940.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/45ff0236-c4bb-4379-af78-a40c782cae6c.png b/docs/zh-CN/handbook/workflow-manual/index/45ff0236-c4bb-4379-af78-a40c782cae6c.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/45ff0236-c4bb-4379-af78-a40c782cae6c.png rename to docs/zh-CN/handbook/workflow-manual/index/45ff0236-c4bb-4379-af78-a40c782cae6c.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/6a08d124-7bef-4064-9f9a-f37db40c3927.png b/docs/zh-CN/handbook/workflow-manual/index/6a08d124-7bef-4064-9f9a-f37db40c3927.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/6a08d124-7bef-4064-9f9a-f37db40c3927.png rename to docs/zh-CN/handbook/workflow-manual/index/6a08d124-7bef-4064-9f9a-f37db40c3927.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/7eebb3f9-042a-46a1-8924-b30f157a6044.png b/docs/zh-CN/handbook/workflow-manual/index/7eebb3f9-042a-46a1-8924-b30f157a6044.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/7eebb3f9-042a-46a1-8924-b30f157a6044.png rename to docs/zh-CN/handbook/workflow-manual/index/7eebb3f9-042a-46a1-8924-b30f157a6044.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/8d3f4852-3ad7-4a10-9e41-3f78e0835d8a.png b/docs/zh-CN/handbook/workflow-manual/index/8d3f4852-3ad7-4a10-9e41-3f78e0835d8a.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/8d3f4852-3ad7-4a10-9e41-3f78e0835d8a.png rename to docs/zh-CN/handbook/workflow-manual/index/8d3f4852-3ad7-4a10-9e41-3f78e0835d8a.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/9d241c64-243c-4da3-89b0-3c4a5538ad5d.png b/docs/zh-CN/handbook/workflow-manual/index/9d241c64-243c-4da3-89b0-3c4a5538ad5d.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/9d241c64-243c-4da3-89b0-3c4a5538ad5d.png rename to docs/zh-CN/handbook/workflow-manual/index/9d241c64-243c-4da3-89b0-3c4a5538ad5d.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/b4f15922-0e63-4668-aa94-dda84fba4a6b.png b/docs/zh-CN/handbook/workflow-manual/index/b4f15922-0e63-4668-aa94-dda84fba4a6b.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/b4f15922-0e63-4668-aa94-dda84fba4a6b.png rename to docs/zh-CN/handbook/workflow-manual/index/b4f15922-0e63-4668-aa94-dda84fba4a6b.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/ba5bc9b6-d8ac-4588-9381-399e247b7efb.png b/docs/zh-CN/handbook/workflow-manual/index/ba5bc9b6-d8ac-4588-9381-399e247b7efb.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/ba5bc9b6-d8ac-4588-9381-399e247b7efb.png rename to docs/zh-CN/handbook/workflow-manual/index/ba5bc9b6-d8ac-4588-9381-399e247b7efb.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/d88cc678-a2ff-4a48-a353-484177886b7a.png b/docs/zh-CN/handbook/workflow-manual/index/d88cc678-a2ff-4a48-a353-484177886b7a.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/d88cc678-a2ff-4a48-a353-484177886b7a.png rename to docs/zh-CN/handbook/workflow-manual/index/d88cc678-a2ff-4a48-a353-484177886b7a.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/e62e86fe-39c3-4bbc-b7b6-6bb5d69c3212.png b/docs/zh-CN/handbook/workflow-manual/index/e62e86fe-39c3-4bbc-b7b6-6bb5d69c3212.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/e62e86fe-39c3-4bbc-b7b6-6bb5d69c3212.png rename to docs/zh-CN/handbook/workflow-manual/index/e62e86fe-39c3-4bbc-b7b6-6bb5d69c3212.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/f861a680-995c-47d5-ad9e-403902eec974.png b/docs/zh-CN/handbook/workflow-manual/index/f861a680-995c-47d5-ad9e-403902eec974.png similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/f861a680-995c-47d5-ad9e-403902eec974.png rename to docs/zh-CN/handbook/workflow-manual/index/f861a680-995c-47d5-ad9e-403902eec974.png diff --git a/docs/zh-CN/plugins/workflow-manual/index/index.md b/docs/zh-CN/handbook/workflow-manual/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-manual/index/index.md rename to docs/zh-CN/handbook/workflow-manual/index/index.md diff --git a/docs/zh-CN/handbook/workflow-manual/workflow-todos-block.md b/docs/zh-CN/handbook/workflow-manual/workflow-todos-block.md new file mode 100644 index 000000000..3babb332e --- /dev/null +++ b/docs/zh-CN/handbook/workflow-manual/workflow-todos-block.md @@ -0,0 +1 @@ +# 工作流待办区块 \ No newline at end of file diff --git a/docs/zh-CN/plugins/workflow-parallel/index/a0f9c6e9-3f6b-441e-a714-fa0f82f46859.png b/docs/zh-CN/handbook/workflow-parallel/index/a0f9c6e9-3f6b-441e-a714-fa0f82f46859.png similarity index 100% rename from docs/zh-CN/plugins/workflow-parallel/index/a0f9c6e9-3f6b-441e-a714-fa0f82f46859.png rename to docs/zh-CN/handbook/workflow-parallel/index/a0f9c6e9-3f6b-441e-a714-fa0f82f46859.png diff --git a/docs/zh-CN/plugins/workflow-parallel/index/db1a4bf9-774e-459a-8354-b93d99ed868a.png b/docs/zh-CN/handbook/workflow-parallel/index/db1a4bf9-774e-459a-8354-b93d99ed868a.png similarity index 100% rename from docs/zh-CN/plugins/workflow-parallel/index/db1a4bf9-774e-459a-8354-b93d99ed868a.png rename to docs/zh-CN/handbook/workflow-parallel/index/db1a4bf9-774e-459a-8354-b93d99ed868a.png diff --git a/docs/zh-CN/plugins/workflow-parallel/index/index.md b/docs/zh-CN/handbook/workflow-parallel/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-parallel/index/index.md rename to docs/zh-CN/handbook/workflow-parallel/index/index.md diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/conditional-interception-flow.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/conditional-interception-flow.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/conditional-interception-flow.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/conditional-interception-flow.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/create-interceptor.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/create-interceptor.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/create-interceptor.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/create-interceptor.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/example_condition_in_loop.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/example_condition_in_loop.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/example_condition_in_loop.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/example_condition_in_loop.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/example_loop_flow.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/example_loop_flow.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/example_loop_flow.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/example_loop_flow.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/example_loop_target.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/example_loop_target.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/example_loop_target.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/example_loop_target.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/example_response_message_after_submitted.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/example_response_message_after_submitted.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/example_response_message_after_submitted.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/example_response_message_after_submitted.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/index.md b/docs/zh-CN/handbook/workflow-request-interceptor/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/index.md rename to docs/zh-CN/handbook/workflow-request-interceptor/index/index.md diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/new-order-bind-workflow.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/new-order-bind-workflow.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/new-order-bind-workflow.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/new-order-bind-workflow.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/response-message-error.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/response-message-error.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/response-message-error.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/response-message-error.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/response-message-in-success-status.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/response-message-in-success-status.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/response-message-in-success-status.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/response-message-in-success-status.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/select-workflow-to-bind.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/select-workflow-to-bind.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/select-workflow-to-bind.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/select-workflow-to-bind.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/trigger-configuration-collection.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/trigger-configuration-collection.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/trigger-configuration-collection.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/trigger-configuration-collection.png diff --git a/docs/zh-CN/plugins/workflow-request-interceptor/index/trigger-configuration-mode.png b/docs/zh-CN/handbook/workflow-request-interceptor/index/trigger-configuration-mode.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request-interceptor/index/trigger-configuration-mode.png rename to docs/zh-CN/handbook/workflow-request-interceptor/index/trigger-configuration-mode.png diff --git a/docs/zh-CN/plugins/workflow-request/index/0bed2560-fe5d-4726-b918-45594248d60b.png b/docs/zh-CN/handbook/workflow-request/index/0bed2560-fe5d-4726-b918-45594248d60b.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request/index/0bed2560-fe5d-4726-b918-45594248d60b.png rename to docs/zh-CN/handbook/workflow-request/index/0bed2560-fe5d-4726-b918-45594248d60b.png diff --git a/docs/zh-CN/plugins/workflow-request/index/d1d73f4d-5a24-4fcc-8fdc-6ee5bb700dd6.png b/docs/zh-CN/handbook/workflow-request/index/d1d73f4d-5a24-4fcc-8fdc-6ee5bb700dd6.png similarity index 100% rename from docs/zh-CN/plugins/workflow-request/index/d1d73f4d-5a24-4fcc-8fdc-6ee5bb700dd6.png rename to docs/zh-CN/handbook/workflow-request/index/d1d73f4d-5a24-4fcc-8fdc-6ee5bb700dd6.png diff --git a/docs/zh-CN/plugins/workflow-request/index/index.md b/docs/zh-CN/handbook/workflow-request/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-request/index/index.md rename to docs/zh-CN/handbook/workflow-request/index/index.md diff --git a/docs/zh-CN/plugins/workflow-response-message/index/add-response-message-node.png b/docs/zh-CN/handbook/workflow-response-message/index/add-response-message-node.png similarity index 100% rename from docs/zh-CN/plugins/workflow-response-message/index/add-response-message-node.png rename to docs/zh-CN/handbook/workflow-response-message/index/add-response-message-node.png diff --git a/docs/zh-CN/plugins/workflow-response-message/index/configuration-message-content.png b/docs/zh-CN/handbook/workflow-response-message/index/configuration-message-content.png similarity index 100% rename from docs/zh-CN/plugins/workflow-response-message/index/configuration-message-content.png rename to docs/zh-CN/handbook/workflow-response-message/index/configuration-message-content.png diff --git a/docs/zh-CN/plugins/workflow-response-message/index/index.md b/docs/zh-CN/handbook/workflow-response-message/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-response-message/index/index.md rename to docs/zh-CN/handbook/workflow-response-message/index/index.md diff --git a/docs/zh-CN/plugins/workflow-response-message/index/response-message-error.png b/docs/zh-CN/handbook/workflow-response-message/index/response-message-error.png similarity index 100% rename from docs/zh-CN/plugins/workflow-response-message/index/response-message-error.png rename to docs/zh-CN/handbook/workflow-response-message/index/response-message-error.png diff --git a/docs/zh-CN/plugins/workflow-sql/index/1d3f21b3-d3f4-4f97-9195-e6a98ccb5289.png b/docs/zh-CN/handbook/workflow-sql/index/1d3f21b3-d3f4-4f97-9195-e6a98ccb5289.png similarity index 100% rename from docs/zh-CN/plugins/workflow-sql/index/1d3f21b3-d3f4-4f97-9195-e6a98ccb5289.png rename to docs/zh-CN/handbook/workflow-sql/index/1d3f21b3-d3f4-4f97-9195-e6a98ccb5289.png diff --git a/docs/zh-CN/plugins/workflow-sql/index/dd4e2f21-acd3-4c14-bbc9-0c28554e2fda.png b/docs/zh-CN/handbook/workflow-sql/index/dd4e2f21-acd3-4c14-bbc9-0c28554e2fda.png similarity index 100% rename from docs/zh-CN/plugins/workflow-sql/index/dd4e2f21-acd3-4c14-bbc9-0c28554e2fda.png rename to docs/zh-CN/handbook/workflow-sql/index/dd4e2f21-acd3-4c14-bbc9-0c28554e2fda.png diff --git a/docs/zh-CN/plugins/workflow-sql/index/index.md b/docs/zh-CN/handbook/workflow-sql/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-sql/index/index.md rename to docs/zh-CN/handbook/workflow-sql/index/index.md diff --git a/docs/zh-CN/plugins/workflow-variable/index/add-node.png b/docs/zh-CN/handbook/workflow-variable/index/add-node.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/add-node.png rename to docs/zh-CN/handbook/workflow-variable/index/add-node.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/assign-new-value-from-trigger-variable.png b/docs/zh-CN/handbook/workflow-variable/index/assign-new-value-from-trigger-variable.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/assign-new-value-from-trigger-variable.png rename to docs/zh-CN/handbook/workflow-variable/index/assign-new-value-from-trigger-variable.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/assign-value-to-existed-variable.png b/docs/zh-CN/handbook/workflow-variable/index/assign-value-to-existed-variable.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/assign-value-to-existed-variable.png rename to docs/zh-CN/handbook/workflow-variable/index/assign-value-to-existed-variable.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/choose-mode.png b/docs/zh-CN/handbook/workflow-variable/index/choose-mode.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/choose-mode.png rename to docs/zh-CN/handbook/workflow-variable/index/choose-mode.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/example-assign-emails-string-to-variable.png b/docs/zh-CN/handbook/workflow-variable/index/example-assign-emails-string-to-variable.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/example-assign-emails-string-to-variable.png rename to docs/zh-CN/handbook/workflow-variable/index/example-assign-emails-string-to-variable.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/example-concat-receivers-string.png b/docs/zh-CN/handbook/workflow-variable/index/example-concat-receivers-string.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/example-concat-receivers-string.png rename to docs/zh-CN/handbook/workflow-variable/index/example-concat-receivers-string.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/example-configure-trigger.png b/docs/zh-CN/handbook/workflow-variable/index/example-configure-trigger.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/example-configure-trigger.png rename to docs/zh-CN/handbook/workflow-variable/index/example-configure-trigger.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/example-loop-authors.png b/docs/zh-CN/handbook/workflow-variable/index/example-loop-authors.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/example-loop-authors.png rename to docs/zh-CN/handbook/workflow-variable/index/example-loop-authors.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/example-receivers-node.png b/docs/zh-CN/handbook/workflow-variable/index/example-receivers-node.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/example-receivers-node.png rename to docs/zh-CN/handbook/workflow-variable/index/example-receivers-node.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/example-send-email-to-receivers-via-request.png b/docs/zh-CN/handbook/workflow-variable/index/example-send-email-to-receivers-via-request.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/example-send-email-to-receivers-via-request.png rename to docs/zh-CN/handbook/workflow-variable/index/example-send-email-to-receivers-via-request.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/index.md b/docs/zh-CN/handbook/workflow-variable/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/index.md rename to docs/zh-CN/handbook/workflow-variable/index/index.md diff --git a/docs/zh-CN/plugins/workflow-variable/index/use-variable-value-as-query-filter.png b/docs/zh-CN/handbook/workflow-variable/index/use-variable-value-as-query-filter.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/use-variable-value-as-query-filter.png rename to docs/zh-CN/handbook/workflow-variable/index/use-variable-value-as-query-filter.png diff --git a/docs/zh-CN/plugins/workflow-variable/index/value-in-declaring.png b/docs/zh-CN/handbook/workflow-variable/index/value-in-declaring.png similarity index 100% rename from docs/zh-CN/plugins/workflow-variable/index/value-in-declaring.png rename to docs/zh-CN/handbook/workflow-variable/index/value-in-declaring.png diff --git a/docs/zh-CN/plugins/workflow/development/api/index.md b/docs/zh-CN/handbook/workflow/development/api/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/development/api/index.md rename to docs/zh-CN/handbook/workflow/development/api/index.md diff --git a/docs/zh-CN/plugins/workflow/development/index/index.md b/docs/zh-CN/handbook/workflow/development/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/development/index/index.md rename to docs/zh-CN/handbook/workflow/development/index/index.md diff --git a/docs/zh-CN/plugins/workflow/development/instruction/index.md b/docs/zh-CN/handbook/workflow/development/instruction/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/development/instruction/index.md rename to docs/zh-CN/handbook/workflow/development/instruction/index.md diff --git a/docs/zh-CN/plugins/workflow/development/trigger/index.md b/docs/zh-CN/handbook/workflow/development/trigger/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/development/trigger/index.md rename to docs/zh-CN/handbook/workflow/development/trigger/index.md diff --git a/docs/zh-CN/plugins/workflow/index/7e17ffc2-8ce2-416a-9798-0d39475d8211.png b/docs/zh-CN/handbook/workflow/index/7e17ffc2-8ce2-416a-9798-0d39475d8211.png similarity index 100% rename from docs/zh-CN/plugins/workflow/index/7e17ffc2-8ce2-416a-9798-0d39475d8211.png rename to docs/zh-CN/handbook/workflow/index/7e17ffc2-8ce2-416a-9798-0d39475d8211.png diff --git a/docs/zh-CN/plugins/workflow/index/index.md b/docs/zh-CN/handbook/workflow/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/index/index.md rename to docs/zh-CN/handbook/workflow/index/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/14c4cb5c-1b5f-4182-a0ba-5311e2cc5d7f.png b/docs/zh-CN/handbook/workflow/manual/advanced/14c4cb5c-1b5f-4182-a0ba-5311e2cc5d7f.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/14c4cb5c-1b5f-4182-a0ba-5311e2cc5d7f.png rename to docs/zh-CN/handbook/workflow/manual/advanced/14c4cb5c-1b5f-4182-a0ba-5311e2cc5d7f.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/a21e8641-e68e-4c87-856e-8b01191d047d.png b/docs/zh-CN/handbook/workflow/manual/advanced/a21e8641-e68e-4c87-856e-8b01191d047d.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/a21e8641-e68e-4c87-856e-8b01191d047d.png rename to docs/zh-CN/handbook/workflow/manual/advanced/a21e8641-e68e-4c87-856e-8b01191d047d.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/afe49575-21cf-4c0c-9d9e-1559eb53e8b6.png b/docs/zh-CN/handbook/workflow/manual/advanced/afe49575-21cf-4c0c-9d9e-1559eb53e8b6.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/afe49575-21cf-4c0c-9d9e-1559eb53e8b6.png rename to docs/zh-CN/handbook/workflow/manual/advanced/afe49575-21cf-4c0c-9d9e-1559eb53e8b6.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/b1138bc7-33b5-4309-a4cc-4de9f59fe529.png b/docs/zh-CN/handbook/workflow/manual/advanced/b1138bc7-33b5-4309-a4cc-4de9f59fe529.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/b1138bc7-33b5-4309-a4cc-4de9f59fe529.png rename to docs/zh-CN/handbook/workflow/manual/advanced/b1138bc7-33b5-4309-a4cc-4de9f59fe529.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/bfce7fdf-e774-46e4-961b-58ca2499cf56.png b/docs/zh-CN/handbook/workflow/manual/advanced/bfce7fdf-e774-46e4-961b-58ca2499cf56.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/bfce7fdf-e774-46e4-961b-58ca2499cf56.png rename to docs/zh-CN/handbook/workflow/manual/advanced/bfce7fdf-e774-46e4-961b-58ca2499cf56.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/c7303e35-c7e9-430b-b391-fc35a468c4cd.png b/docs/zh-CN/handbook/workflow/manual/advanced/c7303e35-c7e9-430b-b391-fc35a468c4cd.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/c7303e35-c7e9-430b-b391-fc35a468c4cd.png rename to docs/zh-CN/handbook/workflow/manual/advanced/c7303e35-c7e9-430b-b391-fc35a468c4cd.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png b/docs/zh-CN/handbook/workflow/manual/advanced/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png rename to docs/zh-CN/handbook/workflow/manual/advanced/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/f7b9e66d-c393-40ab-bba3-ef7265641371.png b/docs/zh-CN/handbook/workflow/manual/advanced/f7b9e66d-c393-40ab-bba3-ef7265641371.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/f7b9e66d-c393-40ab-bba3-ef7265641371.png rename to docs/zh-CN/handbook/workflow/manual/advanced/f7b9e66d-c393-40ab-bba3-ef7265641371.png diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/index.md b/docs/zh-CN/handbook/workflow/manual/advanced/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/index.md rename to docs/zh-CN/handbook/workflow/manual/advanced/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/advanced/sync-create-sync-workflow.png b/docs/zh-CN/handbook/workflow/manual/advanced/sync-create-sync-workflow.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/advanced/sync-create-sync-workflow.png rename to docs/zh-CN/handbook/workflow/manual/advanced/sync-create-sync-workflow.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/03ec7908-72fa-43e9-a761-c3bd1e98a150.png b/docs/zh-CN/handbook/workflow/manual/index/03ec7908-72fa-43e9-a761-c3bd1e98a150.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/03ec7908-72fa-43e9-a761-c3bd1e98a150.png rename to docs/zh-CN/handbook/workflow/manual/index/03ec7908-72fa-43e9-a761-c3bd1e98a150.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/1127f5f2-1dd3-48e6-a0b0-725bdf371368.png b/docs/zh-CN/handbook/workflow/manual/index/1127f5f2-1dd3-48e6-a0b0-725bdf371368.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/1127f5f2-1dd3-48e6-a0b0-725bdf371368.png rename to docs/zh-CN/handbook/workflow/manual/index/1127f5f2-1dd3-48e6-a0b0-725bdf371368.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/1bf3f20b-f983-42c7-a70a-65b6f0e163d7.png b/docs/zh-CN/handbook/workflow/manual/index/1bf3f20b-f983-42c7-a70a-65b6f0e163d7.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/1bf3f20b-f983-42c7-a70a-65b6f0e163d7.png rename to docs/zh-CN/handbook/workflow/manual/index/1bf3f20b-f983-42c7-a70a-65b6f0e163d7.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/567292f7-ce03-461d-b9d7-399eba825a52.png b/docs/zh-CN/handbook/workflow/manual/index/567292f7-ce03-461d-b9d7-399eba825a52.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/567292f7-ce03-461d-b9d7-399eba825a52.png rename to docs/zh-CN/handbook/workflow/manual/index/567292f7-ce03-461d-b9d7-399eba825a52.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/60603a21-f1dc-410d-94dd-f22ad33a4b2f.png b/docs/zh-CN/handbook/workflow/manual/index/60603a21-f1dc-410d-94dd-f22ad33a4b2f.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/60603a21-f1dc-410d-94dd-f22ad33a4b2f.png rename to docs/zh-CN/handbook/workflow/manual/index/60603a21-f1dc-410d-94dd-f22ad33a4b2f.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/63be0410-8b86-4546-a8a2-835ad9bc3584.png b/docs/zh-CN/handbook/workflow/manual/index/63be0410-8b86-4546-a8a2-835ad9bc3584.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/63be0410-8b86-4546-a8a2-835ad9bc3584.png rename to docs/zh-CN/handbook/workflow/manual/index/63be0410-8b86-4546-a8a2-835ad9bc3584.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/683438dc-4da6-465b-a227-7c68db20b78f.png b/docs/zh-CN/handbook/workflow/manual/index/683438dc-4da6-465b-a227-7c68db20b78f.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/683438dc-4da6-465b-a227-7c68db20b78f.png rename to docs/zh-CN/handbook/workflow/manual/index/683438dc-4da6-465b-a227-7c68db20b78f.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/6a38b96b-2504-450e-a5a9-ecd4f826c575.png b/docs/zh-CN/handbook/workflow/manual/index/6a38b96b-2504-450e-a5a9-ecd4f826c575.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/6a38b96b-2504-450e-a5a9-ecd4f826c575.png rename to docs/zh-CN/handbook/workflow/manual/index/6a38b96b-2504-450e-a5a9-ecd4f826c575.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/7a190df6-4c1a-485f-8b2a-a5d1c0a7bb97.png b/docs/zh-CN/handbook/workflow/manual/index/7a190df6-4c1a-485f-8b2a-a5d1c0a7bb97.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/7a190df6-4c1a-485f-8b2a-a5d1c0a7bb97.png rename to docs/zh-CN/handbook/workflow/manual/index/7a190df6-4c1a-485f-8b2a-a5d1c0a7bb97.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/90e6937b-b8cd-4feb-add5-50bce8ffb564.png b/docs/zh-CN/handbook/workflow/manual/index/90e6937b-b8cd-4feb-add5-50bce8ffb564.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/90e6937b-b8cd-4feb-add5-50bce8ffb564.png rename to docs/zh-CN/handbook/workflow/manual/index/90e6937b-b8cd-4feb-add5-50bce8ffb564.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/a3baed5d-060c-4b95-8c99-6e97389100eb.png b/docs/zh-CN/handbook/workflow/manual/index/a3baed5d-060c-4b95-8c99-6e97389100eb.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/a3baed5d-060c-4b95-8c99-6e97389100eb.png rename to docs/zh-CN/handbook/workflow/manual/index/a3baed5d-060c-4b95-8c99-6e97389100eb.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/ad5af5c4-705e-4de9-83b0-c06f54f51711.png b/docs/zh-CN/handbook/workflow/manual/index/ad5af5c4-705e-4de9-83b0-c06f54f51711.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/ad5af5c4-705e-4de9-83b0-c06f54f51711.png rename to docs/zh-CN/handbook/workflow/manual/index/ad5af5c4-705e-4de9-83b0-c06f54f51711.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/c7303e35-c7e9-430b-b391-fc35a468c4cd.png b/docs/zh-CN/handbook/workflow/manual/index/c7303e35-c7e9-430b-b391-fc35a468c4cd.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/c7303e35-c7e9-430b-b391-fc35a468c4cd.png rename to docs/zh-CN/handbook/workflow/manual/index/c7303e35-c7e9-430b-b391-fc35a468c4cd.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png b/docs/zh-CN/handbook/workflow/manual/index/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png rename to docs/zh-CN/handbook/workflow/manual/index/cabf5289-0bfc-4768-b48e-b9c6b66b0434.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/fd20ed59-2b66-4399-a718-aad81b4bd7e8.png b/docs/zh-CN/handbook/workflow/manual/index/fd20ed59-2b66-4399-a718-aad81b4bd7e8.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/fd20ed59-2b66-4399-a718-aad81b4bd7e8.png rename to docs/zh-CN/handbook/workflow/manual/index/fd20ed59-2b66-4399-a718-aad81b4bd7e8.png diff --git a/docs/zh-CN/plugins/workflow/manual/index/index.md b/docs/zh-CN/handbook/workflow/manual/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/index/index.md rename to docs/zh-CN/handbook/workflow/manual/index/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/calculation/3c04dce4-fac5-4b78-980a-5be89c5639f2.png b/docs/zh-CN/handbook/workflow/manual/nodes/calculation/3c04dce4-fac5-4b78-980a-5be89c5639f2.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/calculation/3c04dce4-fac5-4b78-980a-5be89c5639f2.png rename to docs/zh-CN/handbook/workflow/manual/nodes/calculation/3c04dce4-fac5-4b78-980a-5be89c5639f2.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/calculation/56a98294-3e28-4587-993e-4c04f76ecc69.png b/docs/zh-CN/handbook/workflow/manual/nodes/calculation/56a98294-3e28-4587-993e-4c04f76ecc69.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/calculation/56a98294-3e28-4587-993e-4c04f76ecc69.png rename to docs/zh-CN/handbook/workflow/manual/nodes/calculation/56a98294-3e28-4587-993e-4c04f76ecc69.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/calculation/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/calculation/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/calculation/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/calculation/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/condition/2b791162-bfcc-4079-be41-4dfdf18cf782.png b/docs/zh-CN/handbook/workflow/manual/nodes/condition/2b791162-bfcc-4079-be41-4dfdf18cf782.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/condition/2b791162-bfcc-4079-be41-4dfdf18cf782.png rename to docs/zh-CN/handbook/workflow/manual/nodes/condition/2b791162-bfcc-4079-be41-4dfdf18cf782.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/condition/d4046c6c-d44c-4d31-8b94-6231459a1415.png b/docs/zh-CN/handbook/workflow/manual/nodes/condition/d4046c6c-d44c-4d31-8b94-6231459a1415.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/condition/d4046c6c-d44c-4d31-8b94-6231459a1415.png rename to docs/zh-CN/handbook/workflow/manual/nodes/condition/d4046c6c-d44c-4d31-8b94-6231459a1415.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/condition/dac253b8-4b45-414c-abd5-e3f6908a60cd.png b/docs/zh-CN/handbook/workflow/manual/nodes/condition/dac253b8-4b45-414c-abd5-e3f6908a60cd.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/condition/dac253b8-4b45-414c-abd5-e3f6908a60cd.png rename to docs/zh-CN/handbook/workflow/manual/nodes/condition/dac253b8-4b45-414c-abd5-e3f6908a60cd.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/condition/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/condition/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/condition/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/condition/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/create/00acac15-8a4a-426e-96d8-f45c0bf57634.png b/docs/zh-CN/handbook/workflow/manual/nodes/create/00acac15-8a4a-426e-96d8-f45c0bf57634.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/create/00acac15-8a4a-426e-96d8-f45c0bf57634.png rename to docs/zh-CN/handbook/workflow/manual/nodes/create/00acac15-8a4a-426e-96d8-f45c0bf57634.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/create/6c751857-6973-4fb8-b59b-d3ce39423539.png b/docs/zh-CN/handbook/workflow/manual/nodes/create/6c751857-6973-4fb8-b59b-d3ce39423539.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/create/6c751857-6973-4fb8-b59b-d3ce39423539.png rename to docs/zh-CN/handbook/workflow/manual/nodes/create/6c751857-6973-4fb8-b59b-d3ce39423539.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/create/81b1aa3a-3001-480d-a6a2-5c15cdb2c92f.png b/docs/zh-CN/handbook/workflow/manual/nodes/create/81b1aa3a-3001-480d-a6a2-5c15cdb2c92f.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/create/81b1aa3a-3001-480d-a6a2-5c15cdb2c92f.png rename to docs/zh-CN/handbook/workflow/manual/nodes/create/81b1aa3a-3001-480d-a6a2-5c15cdb2c92f.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/create/c29fb9e2-cc2e-4ef9-892c-c42bcef53d94.png b/docs/zh-CN/handbook/workflow/manual/nodes/create/c29fb9e2-cc2e-4ef9-892c-c42bcef53d94.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/create/c29fb9e2-cc2e-4ef9-892c-c42bcef53d94.png rename to docs/zh-CN/handbook/workflow/manual/nodes/create/c29fb9e2-cc2e-4ef9-892c-c42bcef53d94.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/create/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/create/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/create/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/create/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/destroy/6cdd0036-3188-43f5-b956-916af6afcb01.png b/docs/zh-CN/handbook/workflow/manual/nodes/destroy/6cdd0036-3188-43f5-b956-916af6afcb01.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/destroy/6cdd0036-3188-43f5-b956-916af6afcb01.png rename to docs/zh-CN/handbook/workflow/manual/nodes/destroy/6cdd0036-3188-43f5-b956-916af6afcb01.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/destroy/ca9d34fb-df6b-4b8a-bd14-9b4473e546c8.png b/docs/zh-CN/handbook/workflow/manual/nodes/destroy/ca9d34fb-df6b-4b8a-bd14-9b4473e546c8.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/destroy/ca9d34fb-df6b-4b8a-bd14-9b4473e546c8.png rename to docs/zh-CN/handbook/workflow/manual/nodes/destroy/ca9d34fb-df6b-4b8a-bd14-9b4473e546c8.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/destroy/ec0e0802-eae1-4201-ac8c-471f3458ee93.png b/docs/zh-CN/handbook/workflow/manual/nodes/destroy/ec0e0802-eae1-4201-ac8c-471f3458ee93.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/destroy/ec0e0802-eae1-4201-ac8c-471f3458ee93.png rename to docs/zh-CN/handbook/workflow/manual/nodes/destroy/ec0e0802-eae1-4201-ac8c-471f3458ee93.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/destroy/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/destroy/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/destroy/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/destroy/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/end/configuration.png b/docs/zh-CN/handbook/workflow/manual/nodes/end/configuration.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/end/configuration.png rename to docs/zh-CN/handbook/workflow/manual/nodes/end/configuration.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/end/create-node.png b/docs/zh-CN/handbook/workflow/manual/nodes/end/create-node.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/end/create-node.png rename to docs/zh-CN/handbook/workflow/manual/nodes/end/create-node.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/end/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/end/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/end/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/end/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/index/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/index/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/index/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/query/40d07623-b1c9-43ce-9513-0d42ac4a5b87.png b/docs/zh-CN/handbook/workflow/manual/nodes/query/40d07623-b1c9-43ce-9513-0d42ac4a5b87.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/query/40d07623-b1c9-43ce-9513-0d42ac4a5b87.png rename to docs/zh-CN/handbook/workflow/manual/nodes/query/40d07623-b1c9-43ce-9513-0d42ac4a5b87.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/query/90d21bdb-426a-4f41-8bbe-2d095a6f9d3e.png b/docs/zh-CN/handbook/workflow/manual/nodes/query/90d21bdb-426a-4f41-8bbe-2d095a6f9d3e.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/query/90d21bdb-426a-4f41-8bbe-2d095a6f9d3e.png rename to docs/zh-CN/handbook/workflow/manual/nodes/query/90d21bdb-426a-4f41-8bbe-2d095a6f9d3e.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/query/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/query/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/query/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/query/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/update/9d29da49-3950-45af-854d-0347eee07d41.png b/docs/zh-CN/handbook/workflow/manual/nodes/update/9d29da49-3950-45af-854d-0347eee07d41.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/update/9d29da49-3950-45af-854d-0347eee07d41.png rename to docs/zh-CN/handbook/workflow/manual/nodes/update/9d29da49-3950-45af-854d-0347eee07d41.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/update/e4bf1fea-d343-4976-99d4-26724221ca16.png b/docs/zh-CN/handbook/workflow/manual/nodes/update/e4bf1fea-d343-4976-99d4-26724221ca16.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/update/e4bf1fea-d343-4976-99d4-26724221ca16.png rename to docs/zh-CN/handbook/workflow/manual/nodes/update/e4bf1fea-d343-4976-99d4-26724221ca16.png diff --git a/docs/zh-CN/plugins/workflow/manual/nodes/update/index.md b/docs/zh-CN/handbook/workflow/manual/nodes/update/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/nodes/update/index.md rename to docs/zh-CN/handbook/workflow/manual/nodes/update/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/111ea483-7e8f-4665-aaba-b2ade7a91772.png b/docs/zh-CN/handbook/workflow/manual/triggers/collection/111ea483-7e8f-4665-aaba-b2ade7a91772.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/111ea483-7e8f-4665-aaba-b2ade7a91772.png rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/111ea483-7e8f-4665-aaba-b2ade7a91772.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/65b30fb6-1f92-4093-83fa-7b7fbbba2aeb.png b/docs/zh-CN/handbook/workflow/manual/triggers/collection/65b30fb6-1f92-4093-83fa-7b7fbbba2aeb.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/65b30fb6-1f92-4093-83fa-7b7fbbba2aeb.png rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/65b30fb6-1f92-4093-83fa-7b7fbbba2aeb.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/74ff83ec-466b-4f8d-a87c-ee57095be99e.png b/docs/zh-CN/handbook/workflow/manual/triggers/collection/74ff83ec-466b-4f8d-a87c-ee57095be99e.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/74ff83ec-466b-4f8d-a87c-ee57095be99e.png rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/74ff83ec-466b-4f8d-a87c-ee57095be99e.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/b7ce1e40-f0a3-4afa-82d9-05b00c9a6b63.png b/docs/zh-CN/handbook/workflow/manual/triggers/collection/b7ce1e40-f0a3-4afa-82d9-05b00c9a6b63.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/b7ce1e40-f0a3-4afa-82d9-05b00c9a6b63.png rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/b7ce1e40-f0a3-4afa-82d9-05b00c9a6b63.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/c53e9d34-b898-4983-9c9b-41998798c0dc.png b/docs/zh-CN/handbook/workflow/manual/triggers/collection/c53e9d34-b898-4983-9c9b-41998798c0dc.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/c53e9d34-b898-4983-9c9b-41998798c0dc.png rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/c53e9d34-b898-4983-9c9b-41998798c0dc.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/feaa247e-8f1f-47f9-b5d1-940f44214a56.png b/docs/zh-CN/handbook/workflow/manual/triggers/collection/feaa247e-8f1f-47f9-b5d1-940f44214a56.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/feaa247e-8f1f-47f9-b5d1-940f44214a56.png rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/feaa247e-8f1f-47f9-b5d1-940f44214a56.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/collection/index.md b/docs/zh-CN/handbook/workflow/manual/triggers/collection/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/collection/index.md rename to docs/zh-CN/handbook/workflow/manual/triggers/collection/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/index/6823e074-683d-44b2-9f88-e7102667cd34.png b/docs/zh-CN/handbook/workflow/manual/triggers/index/6823e074-683d-44b2-9f88-e7102667cd34.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/index/6823e074-683d-44b2-9f88-e7102667cd34.png rename to docs/zh-CN/handbook/workflow/manual/triggers/index/6823e074-683d-44b2-9f88-e7102667cd34.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/index/index.md b/docs/zh-CN/handbook/workflow/manual/triggers/index/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/index/index.md rename to docs/zh-CN/handbook/workflow/manual/triggers/index/index.md diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/schedule/1f9a345f-da81-4692-9be2-d298b33157a7.png b/docs/zh-CN/handbook/workflow/manual/triggers/schedule/1f9a345f-da81-4692-9be2-d298b33157a7.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/schedule/1f9a345f-da81-4692-9be2-d298b33157a7.png rename to docs/zh-CN/handbook/workflow/manual/triggers/schedule/1f9a345f-da81-4692-9be2-d298b33157a7.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/schedule/26d37b50-b9d6-407e-ab98-08f930234925.png b/docs/zh-CN/handbook/workflow/manual/triggers/schedule/26d37b50-b9d6-407e-ab98-08f930234925.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/schedule/26d37b50-b9d6-407e-ab98-08f930234925.png rename to docs/zh-CN/handbook/workflow/manual/triggers/schedule/26d37b50-b9d6-407e-ab98-08f930234925.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/schedule/4fca2b90-9f84-4574-9428-02d30aab62a5.png b/docs/zh-CN/handbook/workflow/manual/triggers/schedule/4fca2b90-9f84-4574-9428-02d30aab62a5.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/schedule/4fca2b90-9f84-4574-9428-02d30aab62a5.png rename to docs/zh-CN/handbook/workflow/manual/triggers/schedule/4fca2b90-9f84-4574-9428-02d30aab62a5.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/schedule/5391ae23-1122-4599-bdb5-b155a7ba7f3e.png b/docs/zh-CN/handbook/workflow/manual/triggers/schedule/5391ae23-1122-4599-bdb5-b155a7ba7f3e.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/schedule/5391ae23-1122-4599-bdb5-b155a7ba7f3e.png rename to docs/zh-CN/handbook/workflow/manual/triggers/schedule/5391ae23-1122-4599-bdb5-b155a7ba7f3e.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/schedule/d6c3b91f-2eba-4cc2-a905-79b8968addce.png b/docs/zh-CN/handbook/workflow/manual/triggers/schedule/d6c3b91f-2eba-4cc2-a905-79b8968addce.png similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/schedule/d6c3b91f-2eba-4cc2-a905-79b8968addce.png rename to docs/zh-CN/handbook/workflow/manual/triggers/schedule/d6c3b91f-2eba-4cc2-a905-79b8968addce.png diff --git a/docs/zh-CN/plugins/workflow/manual/triggers/schedule/index.md b/docs/zh-CN/handbook/workflow/manual/triggers/schedule/index.md similarity index 100% rename from docs/zh-CN/plugins/workflow/manual/triggers/schedule/index.md rename to docs/zh-CN/handbook/workflow/manual/triggers/schedule/index.md diff --git a/docs/zh-CN/manual/backup-restore/index.md b/docs/zh-CN/manual/backup-restore/index.md index c469deefd..6366fda5a 100644 --- a/docs/zh-CN/manual/backup-restore/index.md +++ b/docs/zh-CN/manual/backup-restore/index.md @@ -1,3 +1,2 @@ # Backup & Restore - diff --git a/docs/zh-CN/manual/collection/collection-templates/expression/index.md b/docs/zh-CN/manual/collection/collection-templates/expression/index.md index d49b36e78..19f233202 100644 --- a/docs/zh-CN/manual/collection/collection-templates/expression/index.md +++ b/docs/zh-CN/manual/collection/collection-templates/expression/index.md @@ -1,4 +1,4 @@ -# 表达式表使用 +# 表达式表 ## 基本概念 diff --git a/docs/zh-CN/manual/workflow/advanced.md b/docs/zh-CN/manual/workflow/advanced.md deleted file mode 100644 index 9385188f1..000000000 --- a/docs/zh-CN/manual/workflow/advanced.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/zh-CN/manual/workflow/image.png b/docs/zh-CN/manual/workflow/image.png deleted file mode 100644 index 4e03c288d..000000000 Binary files a/docs/zh-CN/manual/workflow/image.png and /dev/null differ diff --git a/docs/zh-CN/manual/workflow/index.md b/docs/zh-CN/manual/workflow/index.md deleted file mode 100644 index d90173b15..000000000 --- a/docs/zh-CN/manual/workflow/index.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/zh-CN/manual/workflow/nodes/aggregate.md b/docs/zh-CN/manual/workflow/nodes/aggregate.md deleted file mode 100644 index ba6ffb13a..000000000 --- a/docs/zh-CN/manual/workflow/nodes/aggregate.md +++ /dev/null @@ -1,55 +0,0 @@ -# 聚合查询 - -用于对某个数据表的满足条件的数据进行聚合函数查询,并返回对应的统计结果。常用于处理报表相关的统计数据。 - -节点的实现上基于数据库的聚合函数,目前仅支持对一个数据表的单字段进行统计,统计结果的数值会保存在节点的结果中供后续其他节点使用。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“聚合查询”节点: - -![创建聚合查询节点](https://github.com/nocobase/nocobase/assets/525658/0e7c1609-a30b-4071-8f71-ee863bade0d3) - -## 节点配置 - -![聚合查询节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/26bd7262-7f98-4651-a8c3-b2a6eb1c7c69) - -### 聚合函数 - -支持 SQL 中的 `COUNT`、`SUM`、`AVG`、`MIN` 和 `MAX` 共 5 种聚合函数,选择其中一种对数据进行聚合查询。 - -### 目标类型 - -聚合查询的目标可以通过两种模式选择,一种是直接选择目标数据表和其中的一个字段,另一种是通过流程上下文已有的数据对象,选择其对多的关系数据表及字段,进行聚合查询。 - -### 去重 - -即 SQL 中的 `DISTINCT`,去重的字段与选择的数据表字段相同,暂时不支持两者选不同的字段。 - -### 筛选条件 - -与普通的数据表查询时的筛选条件类似,可以使用流程的上下文变量。 - -## 示例 - -聚合目标为“数据表数据”比较容易理解,这里以“统计新增文章后该文章分类的总文章数”为例,介绍聚合目标为“关联数据表数据”的用法。 - -首先,创建两张数据表:“文章”和“分类”,其中文章有一个多对一关系字段指向分类表,同时创建反向关系字段分类一对多文章: - -| 字段名 | 类型 | -| -------- | -------------- | -| 标题 | 单行文本 | -| 所属分类 | 多对一(分类) | - -| 字段名 | 类型 | -| -------- | -------------- | -| 分类名称 | 单行文本 | -| 包含文章 | 一对多(文章) | - -接下来创建一个数据表事件触发的工作流,选择文章表新增数据后触发。 - -之后增加一个聚合查询节点,配置如下: - -![聚合查询节点_示例_节点配置](https://github.com/nocobase/nocobase/assets/525658/6c3e8dde-dbfe-4042-91c7-0c2993bbba82) - -这样在工作流被触发后,聚合查询节点中将会统计新增文章的分类下所有文章的数量,并保存为节点的结果。 diff --git a/docs/zh-CN/manual/workflow/nodes/calculation.md b/docs/zh-CN/manual/workflow/nodes/calculation.md deleted file mode 100644 index 182d040c9..000000000 --- a/docs/zh-CN/manual/workflow/nodes/calculation.md +++ /dev/null @@ -1,39 +0,0 @@ -# 运算 - -运算节点虽然不对流程进行控制,但是流程中一种重要的功能,运算节点可以对一个表达式进行计算,运算结果会保存在对应节点的结果中,以供后续其他节点使用。是一种用于计算、处理和转换数据的工具,一定程度上,可以代替编程语言中对一个值计算函数调用并赋值给变量的功能。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“运算”节点: - -![运算节点_添加](https://github.com/nocobase/nocobase/assets/525658/3c04dce4-fac5-4b78-980a-5be89c5639f2) - -## 节点配置 - -![运算节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/56a98294-3e28-4587-993e-4c04f76ecc69) - -### 运算引擎 - -运算引擎规定了表达式支持的语法,目前支持的运算引擎有 [Math.js](https://mathjs.org/) 和 [Formula.js](https://formulajs.info/),引擎各自都内置了大量的常用函数和数据操作的方法,具体的用法可以参考其官方文档。 - -:::info{title=提示} -需要注意的是,两者在数组下标访问上有所区别,Math.js 的索引是从 `1` 开始,而 Formula.js 是从 `0` 开始。 -::: - -### 表达式 - -表达式即一个运算公式的字符串表达,可以由变量、常量、运算符和支持的函数等组成。可以使用流程上下文的变量,例如运算节点的前置节点的结果,或者是循环的局部变量等。 - -表达式输入不符合语法时会在节点配置中提示错误,如果在具体执行时变量不存在或者类型不匹配,又或者使用了不存在的函数,运算节点会以出错的状态提前终止。 - -## 示例 - -### 计算订单总价 - -通常一个订单内可能有多个商品,每个商品的价格和数量都不同,订单的总价需要计算所有商品的价格和数量的乘积之和。可以在加载订单明细列表(对多关系数据集)之后使用运算节点来计算订单的总价: - -
- 运算节点_示例_节点配置 -
- -其中 Formula.js 的 `SUMPRODUCT` 函数可以计算两个相同长度数组每行的乘积之和,加总就可以得到订单的总价。 diff --git a/docs/zh-CN/manual/workflow/nodes/condition.md b/docs/zh-CN/manual/workflow/nodes/condition.md deleted file mode 100644 index dc26aba19..000000000 --- a/docs/zh-CN/manual/workflow/nodes/condition.md +++ /dev/null @@ -1,43 +0,0 @@ -# 条件判断 - -类型于编程语言中的 `if` 语句,根据配置条件判断的结果,决定后续流程的走向。 - -## 创建节点 - -条件判断有两种模式,分别是“‘是’则继续”和“‘是’和‘否’分别继续”,在创建节点时需要选择其中一种模式,之后在节点的配置中不能修改。 - -![条件判断_模式选择](https://github.com/nocobase/nocobase/assets/525658/dac253b8-4b45-414c-abd5-e3f6908a60cd) - -“‘是’则继续”的模式下,当条件判断的结果为“是”时,流程将继续执行后续节点,否则流程将终止,并以失败的状态提前退出。 - -![“是”则继续模式](https://github.com/nocobase/nocobase/assets/525658/d4046c6c-d44c-4d31-8b94-6231459a1415) - -这种模式适合于不满足条件的情况下,流程不再继续的场景,例如使用“提交至工作流”表单按钮配置了提交订单的表单,但在订单对应商品库存不足的情况下,不继续生成订单,而是失败退出。 - -“‘是’和‘否’分别继续”的模式下,条件节点后续会产生两条分支流程,分别对应条件判断的结果为“是”和“否”时的流程,两条分支流程可以分别配置后续节点,在任意分支执行完毕后,再自动汇合到条件节点所在的上级分支,继续执行之后的节点。 - -![“是”和“否”分别继续模式](https://github.com/nocobase/nocobase/assets/525658/2b791162-bfcc-4079-be41-4dfdf18cf782) - -这种模式适合于满足条件和不满足条件的情况下,流程需要分别执行不同的操作的场景,例如查询某条数据是否存在,不存在的时候新增,存在的时候更新。 - -## 节点配置 - -### 运算引擎 - -目前支持三种引擎: - -- **基础**:通过简单的双目计算和“与”、“或”分组,得到逻辑结果。 -- **Math.js**:计算 [Math.js](https://mathjs.org/) 引擎支持的表达式得到逻辑结果。 -- **Formula.js**:计算 [Formula.js](https://formulajs.info/) 引擎支持的表达式得到逻辑结果。 - -三种计算中均可以使用流程上下文的变量,用作计算的操作数。 - -## 示例 - -### “‘是’则继续”模式 - - - -### “‘是’和‘否’分别继续”模式 - - diff --git a/docs/zh-CN/manual/workflow/nodes/create.md b/docs/zh-CN/manual/workflow/nodes/create.md deleted file mode 100644 index 72a6271ac..000000000 --- a/docs/zh-CN/manual/workflow/nodes/create.md +++ /dev/null @@ -1,39 +0,0 @@ -# 新增数据 - -用于对某个数据表新增一行数据。 - -新增数据行的字段值可以使用流程上下文的变量,对关系字段的赋值可以直接引用上下文中的对应数据变量,可以是对象,也可以是外键的值。如果不使用变量,则需要手动填写外键的值,对多关系的多个外键值需要使用英文逗号分隔的形式。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“新增数据”节点: - -![创建新增数据节点](https://github.com/nocobase/nocobase/assets/525658/81b1aa3a-3001-480d-a6a2-5c15cdb2c92f) - -## 节点配置 - -![新增节点_示例_节点配置](https://github.com/nocobase/nocobase/assets/525658/00acac15-8a4a-426e-96d8-f45c0bf57634) - -### 数据表 - -选择要新增数据的数据表。 - -### 字段值 - -针对数据表的字段进行赋值,可以使用流程上下文的变量,也可以手动填写静态值。 - -注:工作流中新增节点新增的数据不会自动处理“创建人”、“最后修改人”等用户数据,需要根据情况自行配置这两个字段的值。 - -### 预加载关系数据 - -如果新增数据的字段中包含关系字段,且希望后续流程中使用相应的关系数据时,可以在预加载配置中勾选相应的关系字段,这样在新增数据完成后,会自动加载相应的关系数据一并储存在节点的结果数据中。 - -## 示例 - -例如当“文章”表的数据新增或更新后,需要自动新增一条“文章版本”数据,记录文章的一次变更历史,可以使用新增节点来实现: - -![新增节点_示例_流程配置](https://github.com/nocobase/nocobase/assets/525658/c29fb9e2-cc2e-4ef9-892c-c42bcef53d94) - -![新增节点_示例_节点配置](https://github.com/nocobase/nocobase/assets/525658/6c751857-6973-4fb8-b59b-d3ce39423539) - -按此配置启用工作流后,当“文章”表的数据变更时,会自动新增一条“文章版本”数据,记录文章的变更历史。 diff --git a/docs/zh-CN/manual/workflow/nodes/delay.md b/docs/zh-CN/manual/workflow/nodes/delay.md deleted file mode 100644 index 258d86936..000000000 --- a/docs/zh-CN/manual/workflow/nodes/delay.md +++ /dev/null @@ -1,29 +0,0 @@ -# 延时 - -延时节点可以在流程中增加一个延时,延时结束后,可根据配置是继续执行延时结束后的节点或是提前终止流程。 - -通常配合并行分支节点一起使用,可以在其中一个分支中增加延时节点,以达到超时后相关处理的目的。例如并行分支中其中一个分支包含人工处理,另一个分支包含延时节点,当人工处理超时后,如果设置的是超时失败,则代表人工处理必须在限定时间内完成,如果设置的是超时继续,则代表到时间后可以忽略该人工处理。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“延时”节点: - -![创建延时节点](https://github.com/nocobase/nocobase/assets/525658/c6c46d94-e03b-45b6-aa20-f4c1bd2c2f0e) - -## 节点配置 - -![延时节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/5f46759c-6796-44c6-a135-84c76c7d5af7) - -### 延时时间 - -延时时间可以填写一个数字,并选择时间单位,支持的时间单位有:秒、分钟、小时、天和周。 - -### 到时状态 - -到时状态可以选择“通过并继续”和“失败并退出”,前者代表延时结束后,流程会继续执行延时结束后的节点,后者代表延时结束后,流程会以失败状态提前终止。 - -## 示例 - -以工单发起后需要在限时内答复的场景为例,我们需要在并行的两个分支中其一添加一个人工节点,另一个分支添加延时节点,如果人工处理未在 10 分钟内答复,则更新工单状态为超时未处理。 - -![延时节点_示例_流程组织](https://github.com/nocobase/nocobase/assets/525658/a2f1001b-c19c-4aa4-a4a5-84311f9705ec) diff --git a/docs/zh-CN/manual/workflow/nodes/destroy.md b/docs/zh-CN/manual/workflow/nodes/destroy.md deleted file mode 100644 index f737e9b36..000000000 --- a/docs/zh-CN/manual/workflow/nodes/destroy.md +++ /dev/null @@ -1,35 +0,0 @@ -# 删除数据 - -用于对某个数据表的满足条件的数据进行删除。 - -删除节点的基本使用与更新节点类似,只是删除节点不需要字段赋值,只需要选择数据表和筛选条件即可。删除节点的结果会返回删除成功数据的行数,只在执行历史里可查看,不可作为变量在后续节点使用。 - -:::info{title=注意} -目前删除节点不支持逐条删除,均为批量删除,因此不会触发每条数据删除的其他事件。 -::: - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“删除数据”节点: - -![创建删除数据节点](https://github.com/nocobase/nocobase/assets/525658/ca9d34fb-df6b-4b8a-bd14-9b4473e546c8) - -## 节点配置 - -![删除节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/6cdd0036-3188-43f5-b956-916af6afcb01) - -### 数据表 - -选择要删除数据的数据表。 - -### 筛选条件 - -与普通的数据表查询时的筛选条件类似,可以使用流程的上下文变量。 - -## 示例 - -例如定时清理已取消的无效历史订单数据,可以使用删除节点来实现: - -![删除节点_示例_节点配置](https://github.com/nocobase/nocobase/assets/525658/ec0e0802-eae1-4201-ac8c-471f3458ee93) - -工作流将定时触发,并执行删除所有已取消的无效历史订单数据。 diff --git a/docs/zh-CN/manual/workflow/nodes/dynamic-calculation.md b/docs/zh-CN/manual/workflow/nodes/dynamic-calculation.md deleted file mode 100644 index bb1fda994..000000000 --- a/docs/zh-CN/manual/workflow/nodes/dynamic-calculation.md +++ /dev/null @@ -1,108 +0,0 @@ -# 动态表达式运算 - -区别于普通的运算节点只执行固定的表达式计算,动态表达式节点可以基于数据关联的表达式进行不同的计算。其解决的核心问题是由于普通的公式字段针对数据表所有数据行都只能使用同一个固定公式进行计算,而动态表达式可以针对数据行不同计算方式时,在工作流中进行处理以达成动态计算的目标。 - -例如订单数据在所属不同产品分类下使用不同的统计公式来计算特定的报表数据。 - -## 准备 - -动态表达式节点的使用与工作流其他较为简单的节点不同,有几个需要前置完成的步骤: - -1. 创建“表达式”模板表。 -2. 录入表达式数据。 -3. 将业务数据与表达式数据建立关联。 -4. 通过查询节点或者数据触发时的预加载关系数据加载特定业务数据关联的表达式数据。 - -以上步骤完成后,再对工作流配置动态表达式节点。 - -### 创建“表达式”模板表 - -在工作流内使用动态表达式运算节点之前,需要先在数据表管理工具中创建一张“表达式”模板表,用于存放不同的表达式: - -![创建表达式模板表](https://github.com/nocobase/nocobase/assets/525658/9964baff-d53d-4f2c-8906-c76e65fe4fe1) - -### 录入表达式数据 - -然后创建一个表格区块对该模板表添加几条公式数据,“表达式”模板表中每行数据都可以被理解为针对特定表数据模型的一个计算规则。每行公式数据可使用不同数据表的数据模型中的字段值作为变量,编写不同的表达式作为计算规则,当然,也可以使用不同的计算引擎。 - -### 将业务数据与表达式数据建立关联 - -创建好公式以后还需要将业务数据与公式进行关联,将每行业务数据直接关联公式数据行会比较繁琐,所以通常我们会使用类似分类的元数据表与公式表进行多对一(或一对一)关联,再将业务数据与分类元数据进行多对一的关联,那么在创建业务数据时只需指定特定的分类元数据,即可在后续使用中通过这个关联路径找到对应的公式数据进行使用。 - -### 流程中加载相应的数据 - -## 创建节点 - -## 节点配置 - -最后我们需要在特定业务的工作流中加入动态表达式节点,其将在流程触发时执行对应的计算。 - -
- 运算节点_节点配置 -
- -### 动态表达式 - -与普通运算节点的表达式选项不同,动态表达式需要根据已经查询出来的数据进行选择,而不是直接录入表达式。 - -### 变量数据源 - -同时还需要选择表达式中变量所需要使用的数据表数据行对象,可以从流程的上下文中选择已经提前加载(或查询)出来的结果对象。 - -## 示例 - -以商品下单过程中根据不同商品进行不同优惠规则的最终价格计算举例。 - -1. 建立商品表: - - | 字段名 | 类型 | - | -------- | ------------------------- | - | 商品名 | 文本 | - | 商品原价 | 数字 | - | 优惠规则 | `belongsTo`(优惠规则表) | - -2. 建立优惠规则表(使用表达式表模板创建): - - | 字段名 | 类型 | - | -------- | ------------------------ | - | 规则名称 | 文本 | - | 数据表 | 单选(数据表) | - | 计算引擎 | 单选(mathjs/formulajs) | - | 表达式 | 文本 | - -3. 录入优惠规则: - - | ID | 名称 | 数据表 | 计算引擎 | 表达式 | - | --- | -------- | ------ | ---------- | --------------------- | - | 1 | 八折商品 | 商品 | formula.js | `{{商品.价格}} * 0.8` | - | 2 | 九折商品 | 商品 | formula.js | `{{商品.价格}} * 0.9` | - -4. 创建商品,并关联优惠规则: - - | ID | 商品名称 | 价格 | 优惠规则 | - | --- | ------------- | ---- | -------- | - | 1 | iPhone 14 Pro | 7999 | 2 | - | 2 | iPhone 13 Pro | 6999 | 1 | - -5. 创建工作流,订单创建时触发: - - ![]() - -6. 创建一个运算节点,配置动态表达式为触发数据/商品/优惠规则: - - 配置变量数据源为触发数据中的商品: - - ![]() - -7. 增加一个更新数据节点,配置更新订单总价为计算节点的结果: - - ![]() - -8. 创建订单触发工作流,再查看订单列表,核对价格: - - ![]() - - | 订单商品 | 订单商品 / 原价 | 优惠规则 | 总价 | - | ------------- | --------------- | -------- | -------------------- | - | iPhone 14 Pro | 7999 | 九折 | 7999 \* 0.9 = 7199.1 | - | iPhone 13 Pro | 6999 | 八折 | 6999 \* 0.8 = 5599.2 | diff --git a/docs/zh-CN/manual/workflow/nodes/index.md b/docs/zh-CN/manual/workflow/nodes/index.md deleted file mode 100644 index 604307b04..000000000 --- a/docs/zh-CN/manual/workflow/nodes/index.md +++ /dev/null @@ -1,28 +0,0 @@ -# 概述 - -节点是工作流中逻辑编排的基本单元,一个工作流可以配置任意多个节点,每个节点的类型代表一个指令,决定了节点的行为。节点的配置即对应指令的参数,参数决定其行为的操作数据对象或其他内容。 - -:::info{title=提示} -工作流的触发器不属于节点,只是以入口节点的形式展示在流程图中,但与节点是不同的概念,详情请参考[触发器](../triggers)的内容。 -::: - -从功能角度,目前已实现的节点可以分为四大类(共 14 种节点): - -- 流程控制类 - - [条件判断](./condition) - - [运算](./calculation) - - [动态表达式运算](./dynamic-calculation) - - [循环](./loop) - - [并行分支](./parallel) - - [延时](./delay) -- 数据表操作 - - [新增数据](./create) - - [更新数据](./update) - - [删除数据](./destroy) - - [查询数据](./query) - - [聚合查询](./aggregate) - - [SQL 操作](./sql) -- 人工处理 - - [人工处理](./manual) -- 外部调用 - - [HTTP 请求](./request) diff --git a/docs/zh-CN/manual/workflow/nodes/loop.md b/docs/zh-CN/manual/workflow/nodes/loop.md deleted file mode 100644 index 84f0c8915..000000000 --- a/docs/zh-CN/manual/workflow/nodes/loop.md +++ /dev/null @@ -1,77 +0,0 @@ -# 循环 - -循环相当编程语言中的 `for`/`while`/`forEach` 等语法结构,当需要一定次数或针对某个数据集合(数组)重复执行一些操作时,可以使用循环节点。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“循环”节点: - -![创建循环节点](https://github.com/nocobase/nocobase/assets/525658/ca5002e1-75fc-4efd-8b6b-2284d7c2fe8a) - -创建循环节点后,会生成一个循环内部的分支,可以在分支中增加任意多个节点,这些节点除了可以使用流程上下文的变量,还可以使用循环上下文的局部变量,例如循环集合中每次循环到的数据对象,或者是循环次数的索引(索引从 `0` 开始计数)。局部变量的作用域仅限于循环内部,如果有多层循环嵌套,可以按层使用具体循环的局部变量。 - -## 节点配置 - -### 循环对象 - -循环会以循环对象不同数据类型做不同的处理: - -1. **数组**:最常见的情况,通常是可以选择流程上下文的变量,比如查询节点的多条数据结果,或者预加载的对多关系数据。如果选择的是数组,循环节点会遍历数组中的每个元素,每次循环都会将当前元素赋值给循环上下文的局部变量。 - -2. **数字**:当选择的变量是一个数字是,会以该数字为循环次数,局域变量中的循环次数的索引也即循环对象的值。 - -3. **字符串**:当选择的变量是一个字符串时,会以该字符串的长度为循环次数,每次按索引处理字符串中的每一个字符。 - -4. **其他**:其他类型的值(包括对象类型)都仅作为单次处理的循环对象,也只会循环一次,通常这种情况不需要使用循环。 - -除了选择变量,针对数字和字符串类型也可以直接输入常量,例如输入 `5`(数字类型),循环节点会循环 5 次,输入 `abc`(字符串类型),循环节点会循环 3 次,分别处理 `a`、`b`、`c` 三个字符。在选择变量的工具中选择希望使用常量的类型。 - -## 示例 - -例如在订单下单时,需要对订单中的每个商品进行库存检查,如果库存充足则扣减库存,否则订单明细内的商品更新为无效。 - -1. 创建三张表,商品表 <-(1:m)-- 订单明细表 --(m:1)-> 订单表,数据模型如下: - - | 字段名称 | 字段类型 | - | ------------ | -------------- | - | 订单商品明细 | 多对一(明细) | - | 订单总价 | 数字 | - - | 字段名称 | 字段类型 | - | -------- | -------------- | - | 商品 | 一对多(商品) | - | 数量 | 数字 | - - | 字段名称 | 字段类型 | - | -------- | -------- | - | 商品名称 | 单行文本 | - | 价格 | 数字 | - | 库存 | 整数 | - -2. 创建工作流,触发器选择“数据表事件”,选择“订单”表“新增数据时”触发,并且需要配置上预加载“订单明细”表和明细下的商品表的关系数据: - - ![循环节点_示例_触发器配置](https://github.com/nocobase/nocobase/assets/525658/76c97498-bfd6-46f4-99da-9734cb10e400) - -3. 创建循环节点,选择循环对象为“触发数据 / 订单明细”,即对订单明细表中的每一条数据: - - ![循环节点_示例_循环节点配置](https://github.com/nocobase/nocobase/assets/525658/961c20bb-f1c8-4bba-96b3-79ea74dcc66c) - -4. 循环节点内部创建一个“条件判断”节点,判断商品的库存是否充足: - - ![循环节点_示例_条件判断节点配置](https://github.com/nocobase/nocobase/assets/525658/85085520-9287-4353-b978-b47c859972fc) - -5. 如果充足则在“是”的分支中创建一个“计算节点”和一个“更新数据”节点,将计算完扣减的库存更新至对应商品的记录: - - ![循环节点_示例_计算节点配置](https://github.com/nocobase/nocobase/assets/525658/5ec4ff91-e3ff-4ee2-91d7-4602b13d605f) - - ![循环节点_示例_更新库存节点配置](https://github.com/nocobase/nocobase/assets/525658/85c59e6d-90bb-47bd-b36a-7ecf1744a630) - -6. 否则在“否”的分支中创建一个“更新数据”节点,更新订单明细的状态为“无效”: - - ![循环节点_示例_更新订单明细节点配置](https://github.com/nocobase/nocobase/assets/525658/856f8c35-d35b-4879-81d0-3d334e6d9a42) - -总的流程结构如下图: - -![循环节点_示例_流程结构](https://github.com/nocobase/nocobase/assets/525658/7cd2dfe7-6a43-43b8-90d7-9c9c323f888e) - -配置完成并激活该流程后,当创建新订单时,会自动检查订单明细中的商品库存,如果库存充足则扣减库存,否则订单明细内的商品更新为无效(以便计算有效的订单总价)。 diff --git a/docs/zh-CN/manual/workflow/nodes/manual.md b/docs/zh-CN/manual/workflow/nodes/manual.md deleted file mode 100644 index 9b8e8e16a..000000000 --- a/docs/zh-CN/manual/workflow/nodes/manual.md +++ /dev/null @@ -1,183 +0,0 @@ -# 人工处理 - -当业务流程不能完全自动化决策时,可以通过人工节点,将部分决策权交给人工处理。 - -人工节点在执行到时会先中断整个流程的执行,生成对应用户的待办任务,在用户提交后根据所选的状态决定继续流程、继续等待还是终止流程。在需要进行流程审批等场景会非常有用。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“人工处理”节点: - -![创建人工节点](https://github.com/nocobase/nocobase/assets/525658/6a08d124-7bef-4064-9f9a-f37db40c3927) - -## 配置节点 - -### 负责人 - -人工节点需要指定一个用户,作为待办任务的执行者。待办任务的列表可以在页面添加区块时添加,每个节点的任务弹窗内容需要在节点中进行界面配置。 - -选定一个用户,或者通过变量选择上下文中的用户数据的主键或外键。 - -![人工节点_配置_负责人_选择变量](https://github.com/nocobase/nocobase/assets/525658/9d241c64-243c-4da3-89b0-3c4a5538ad5d) - -:::info{title=提示} -目前人工节点的负责人选项暂不支持针对多人处理,会在未来的版本中支持。 -::: - -### 配置用户界面 - -待办事项的界面配置是人工节点的核心内容,可以通过点击“配置用户界面”按钮弹窗打开独立配置,和普通页面一样,可以所见即所得地配置: - -![人工节点_节点配置_界面配置](https://github.com/nocobase/nocobase/assets/525658/45ff0236-c4bb-4379-af78-a40c782cae6c) - -#### 标签页 - -标签页可以用于区分不同的内容,例如一个标签页用于通过的表单提交,另一个标签页用于拒绝的表单提交,或者用于展示相关数据的详情等,可自由配置。 - -#### 区块 - -支持的区块类型主要有两大类,数据区块和表单区块,另外的 Markdown 主要用于提示信息等静态内容。 - -##### 数据区块 - -数据区块可选择触发器数据或任意的节点处理结果,用于提供给待办负责人相关的上下文信息。例如工作流是表单事件触发的,即可以创建一个触发数据的详情区块,与普通页面的详情配置一致,可任选触发数据内有的字段进行数据展示: - -![人工节点_节点配置_界面配置_数据区块_触发器](https://github.com/nocobase/nocobase/assets/525658/2aca45ec-7e4f-448f-aeec-7e6e80f28a3b) - -节点数据区块类似,可以选择上游节点中的数据结果作为详情展示。例如上游一个计算节点的结果,作为负责人待办的上下文参考信息: - -![人工节点_节点配置_界面配置_数据区块_节点数据](https://github.com/nocobase/nocobase/assets/525658/f861a680-995c-47d5-ad9e-403902eec974) - -:::info{title=提示} -由于配置界面时工作流都处于未执行的状态,所以数据区块中都是没有具体数据显示的,只有当工作流被触发执行后,在待办弹窗界面中才可看到具体流程的相关数据。 -::: - -##### 表单区块 - -待办界面中至少需要配置一个表单区块,作为工作流是否继续执行的最终决策处理,不配置表单会导致流程中断后无法继续。表单区块有三种类型,分别是: - -- 自定义表单 -- 新增数据表单 -- 更新数据表单 - -![人工节点_节点配置_界面配置_表单类型](https://github.com/nocobase/nocobase/assets/525658/2e4c8b58-ea55-48f6-9c4c-1ebbc07cc940) - -新增数据表单和更新数据表单需要选择基于的数据表,待办用户提交后会使用表单内的值新增或更新特定数据表的数据。自定义表单则可以自由定义一个数据表无关的临时表单,待办用户提交后的字段值可以在后续节点中使用。 - -表单的提交按钮可以配置三种类型,分别是: - -- 提交后继续流程 -- 提交后终止流程 -- 仅暂存表单值 - -![人工节点_节点配置_界面配置_表单按钮](https://github.com/nocobase/nocobase/assets/525658/8d3f4852-3ad7-4a10-9e41-3f78e0835d8a) - -三个按钮代表流程处理中三种节点状态,提交后该节点的状态修改为“完成”、“拒绝”或继续处于“等待”的状态,一个表单至少要配置前两者之一,以决定整个流程的后续处理流向。 - -在“继续流程”按钮上可以配置对表单字段的赋值: - -![人工节点_节点配置_界面配置_表单按钮_设置表单值](https://github.com/nocobase/nocobase/assets/525658/e62e86fe-39c3-4bbc-b7b6-6bb5d69c3212) - -![人工节点_节点配置_界面配置_表单按钮_设置表单值弹窗](https://github.com/nocobase/nocobase/assets/525658/ba5bc9b6-d8ac-4588-9381-399e247b7efb) - -打开弹窗后可以对表单任意字段进行赋值,表单提交后将会以该值作为字段的终值。通常在对一些数据进行审核时比较有用,可以在表单中使用多个不同的“继续流程”按钮,每个按钮对类似状态的字段设置不同的枚举值,以达到继续后续流程执行且使用不同数据值的效果。 - -## 配置待办区块 - -对于人工处理来说,还需要在页面中添加待办列表,用于展示待办任务,相关人员才可以通过该列表进入人工节点的具体任务处理。可以从页面中的区块中选择“工作流待办”,添加待办列表的区块: - -![人工节点_添加待办区块](https://github.com/nocobase/nocobase/assets/525658/d88cc678-a2ff-4a48-a353-484177886b7a) - -待办列表区块示例: - -![人工节点_待办列表](https://github.com/nocobase/nocobase/assets/525658/b4f15922-0e63-4668-aa94-dda84fba4a6b) - -之后相关人员可以点击对应的待办任务,进入待办弹窗,进行人工处理: - -![人工节点_待办详情](https://github.com/nocobase/nocobase/assets/525658/7eebb3f9-042a-46a1-8924-b30f157a6044) - -## 示例 - -### 文章审核 - -假设普通用户提交的文章,需要管理员审核通过后才能更新为已发布状态,否则如果拒绝该流程,文章将保持草稿状态(不公开),这一流程可以使用人工节点中的更新表单来实现。 - -创建一个由“新增文章”触发的工作流,并增加一个人工节点: - -
- 人工节点_示例_文章审核_流程编排 -
- -在人工节点中配置负责人为管理员,配置界面中增加一个基于触发数据的区块,用于展示新增文章的详情: - -
- 人工节点_示例_文章审核_节点配置_详情区块 -
- -在配置界面中增加一个基于更新数据表单的区块,选择文章表,用于管理员决定是否通过审核,通过审核后会根据后面的其他配置更新对应文章。添加表单后,默认会有一个“继续流程”的按钮,可以将其视为点击后通过,再增加一个“终止流程”的按钮,用作审核不通过的情况: - -
- 人工节点_示例_文章审核_节点配置_表单和操作 -
- -针对继续流程时,我们需要更新文章的状态,这里有两种配置方式,一种是直接在表单中展示文章状态的字段,供操作者选择,这种方式更适合于一些需要主动填写表单的情况,例如反馈意见等: - -
- 人工节点_示例_文章审核_节点配置_表单字段 -
- -为了简化操作者的操作,另一种方式是在“继续流程”按钮上配置表单赋值,赋值中增加一个“状态”字段,值为“已发布”,则代表操作者点击按钮后,文章将会更新为已发布状态: - -
- 人工节点_示例_文章审核_节点配置_表单赋值 -
- -然后从表单区块的右上角配置菜单中选择要更新的数据的筛选条件,这里选择“文章”表,筛选条件为“ID `等于` 触发器变量 / 触发数据 / ID”: - -
- 人工节点_示例_文章审核_节点配置_表单条件 -
- -最后,可以修改各个区块的标题和相关按钮的文本,以及表单字段的提示文本,使界面更加友好: - -
- 人工节点_示例_文章审核_节点配置_最终表单 -
- -关闭配置面板,点击提交按钮保存节点配置后,工作流就配置完成了。启用该工作流以后,在新增文章时,会自动触发该工作流,管理员可以从待办任务列表中看到该工作流需要处理,点击查看后可以看到待办任务的详情: - -
- 人工节点_示例_文章审核_待办列表 -
- -
- 人工节点_示例_文章审核_待办详情 -
- -管理员可以根据文章详情进行人工判断,该文章是否可以发布,如果可以的话,点击“通过”按钮,文章将会更新为已发布状态,如果不可以的话,点击“拒绝”按钮,文章将会保持草稿状态。 - -### 请假审批 - -假设员工需要请假,需要经过主管审批通过后才能生效,并核销对应员工的假期数据。而且不管通过或拒绝,都将会通过请求节点调用短信接口,发送相关的的通知短信给员工(见 [HTTP 请求](#_HTTP_请求) 部分)。这个场景可以使用人工节点中的自定义表单来实现。 - -创建一个由“新增请假”触发的工作流,并增加一个人工节点,与之前的文章审核流程类似,只是这里的负责人是主管,配置界面中增加一个基于触发数据的区块,用于展示新增请假的详情,再增加一个基于自定义表单的区块,用于主管决定是否通过审核,自定义表单中增加一个是否通过的字段,以及一个拒绝理由的字段: - -
- 人工节点_示例_请假审批_节点配置 -
- -与文章审核流程不同,由于我们需要根据主管审批的结果继续后续的流程,所以这里我们只配置一个“继续流程”按钮,作为提交使用,而不使用“终止流程”按钮。 - -同时在人工节点之后,我们可以通过一个条件判断节点来判断主管是否通过了该请假申请,通过的分支中增加核销假期的数据处理,并在分支结束后增加一个请求节点,用于发送短信通知员工,就得到以下完整的流程: - -
- 人工节点_示例_请假审批_流程编排 -
- -其中条件判断节点的中的条件配置为“人工节点 / 自定义表单数据 / 是否通过字段的值是否为‘通过’”: - -
- 人工节点_示例_请假审批_条件判断 -
- -发送请求节点里的数据也可以使用人工节点中相应的表单变量,以区分通过和拒绝的短信内容。这样就完成了整个流程的配置,在开启工作流后,当员工提交请假申请的表单后,主管即可在待办任务中进行审批处理,操作基本与文章审核流程类似。 diff --git a/docs/zh-CN/manual/workflow/nodes/parallel.md b/docs/zh-CN/manual/workflow/nodes/parallel.md deleted file mode 100644 index b88584645..000000000 --- a/docs/zh-CN/manual/workflow/nodes/parallel.md +++ /dev/null @@ -1,29 +0,0 @@ -# 并行分支 - -并行分支节点可以将流程分为多个分支,每个分支可以配置不同的节点,根据分支的模式不同,分支的执行方式也不同。在需要在同时执行多个操作的场景下,可以使用并行分支节点。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“并行分支”节点: - -![并行分支_添加](https://github.com/nocobase/nocobase/assets/525658/a0f9c6e9-3f6b-441e-a714-fa0f82f46859) - -在流程中增加并行分支节点后,会默认增加两个子分支,同时也可以点击增加分支的按钮增加任意多个分支,每个分支都可以增加任意的节点,不需要的分支可以点击分支开始处的删除按钮删除。 - -![并行分支_分支管理](https://github.com/nocobase/nocobase/assets/525658/db1a4bf9-774e-459a-8354-b93d99ed868a) - -## 节点配置 - -### 分支模式 - -并行分支节点有以下三种模式: - -- **全部成功**:所有分支都执行成功,流程才会继续执行分支结束后的节点。否则任意分支提前终止,无论是失败、出错还是其他非成功状态,都导致整个并行分支节点以该状态提前终止,也称作“All 模式”。 -- **任意成功**:任意分支执行成功,流程就会继续执行分支结束后的节点。除非所有分支都提前终止,无论是失败、出错还是其他非成功状态,才会导致整个并行分支节点以该状态提前终止,也称作“Any 模式”。 -- **任意成功和失败**:任意分支执行成功后流程就会继续执行分支结束后的节点,但任意节点失败后,会导致整个并行以该状态提前终止,也称作“Race 模式”。 - -不论哪种模式,都会从左到右依次尝试执行每个分支,直到满足分支预设模式的相关条件后,继续执行后续节点或提前退出。 - -## 示例 - -参考 [延时节点](./delay#示例) 中的例子。 diff --git a/docs/zh-CN/manual/workflow/nodes/query.md b/docs/zh-CN/manual/workflow/nodes/query.md deleted file mode 100644 index 48bfa9446..000000000 --- a/docs/zh-CN/manual/workflow/nodes/query.md +++ /dev/null @@ -1,43 +0,0 @@ -# 查询数据 - -用于对某个数据表的满足条件的数据进行查询并获取数据记录。 - -可以配置查询单条数据或多条数据,查询结果可以作为变量在后续节点使用。当查询多条数据时,查询结果为一个数组。当查询结果为空时,可以选择是否继续执行后续节点。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“查询数据”节点: - -![查询数据_添加](https://github.com/nocobase/nocobase/assets/525658/40d07623-b1c9-43ce-9513-0d42ac4a5b87) - -## 节点配置 - -![查询节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/90d21bdb-426a-4f41-8bbe-2d095a6f9d3e) - -### 数据表 - -选择要查询数据的数据表。 - -### 查询模式 - -勾选“允许结果是多条数据”后,将会查询出满足条件的所有数据,否则只会查询出满足条件的第一条数据。如果勾选了“允许结果是多条数据”,则查询节点的结果会是一个数组类型。 - -### 筛选条件 - -与普通的数据表查询时的筛选条件类似,可以使用流程的上下文变量。 - -### 排序 - -查询一条或多条数据时均可通过排序规则来控制需要的结果。例如查询最新的一条数据,可以通过“创建时间”字段降序排序。 - -### 分页 - -当结果集可能会很大时,可以使用分页来控制查询结果的数量。例如查询最新的 10 条数据,可以通过“创建时间”字段降序排序,然后设置分页为 1 页 10 条数据。 - -### 结果为空的处理 - -在单条结果模式下,没有符合条件的数据的话查询结果会是 `null`,多条结果的模式下是空数组(`[]`)。可以根据需要是否勾选“查询结果为空是,退出流程”,勾选后,如果查询结果为空,则不会执行后续节点,以失败的状态提前退出。 - -## 示例 - -TODO diff --git a/docs/zh-CN/manual/workflow/nodes/request.md b/docs/zh-CN/manual/workflow/nodes/request.md deleted file mode 100644 index 39a5ff403..000000000 --- a/docs/zh-CN/manual/workflow/nodes/request.md +++ /dev/null @@ -1,63 +0,0 @@ -# HTTP 请求 - -当需要与另一个 web 系统进行交互时,可以使用 HTTP 请求节点。该节点在执行时会根据配置向对应的地址发出一个 HTTP 请求,可以携带 JSON 格式的数据,完成与外部系统的数据交互。 - -如果对 Postman 这类请求发送工具比较熟悉,那么可以很快掌握 HTTP 请求节点的用法。与这些工具不同的是,HTTP 请求节点中各项参数均可使用当前流程中的上下文变量,可以与当前系统的业务处理有机结合起来。 - -:::info{title=提示} -HTTP 请求节点暂不支持请求响应的结果进行使用,可能会在未来支持。 -::: - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“HTTP 请求”节点: - -![HTTP 请求_添加](https://github.com/nocobase/nocobase/assets/525658/d1d73f4d-5a24-4fcc-8fdc-6ee5bb700dd6) - -## 节点配置 - -![HTTP请求节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/0bed2560-fe5d-4726-b918-45594248d60b) - -### 请求方法 - -可选的 HTTP 请求方法:`GET`、`POST`、`PUT`、`PATCH` 和 `DELETE`。 - -### 请求地址 - -HTTP 服务的 URL,需要包含协议部分(`http://` 或 `https://`),推荐使用 `https://`。 - -### 请求头配置 - -请求 Header 部分的键值对,相关值可以使用流程上下文的变量。 - -:::info{title=提示} -对 `Content-Type` 请求头,目前仅支持 `application/json` 的格式,且已默认内置,无需填写,覆盖无效。 -::: - -### 请求参数 - -请求 query 部分的键值对,相关值可以使用流程上下文的变量。 - -### 请求体 - -请求的 Body 部分,目前仅支持标准的 JSON 格式,可以通过文本编辑框右上角的变量按钮插入流程上下文中的变量。 - -:::info{title=提示} -注:变量必须在 JSON 的字符串中使用,例如:`"a": "{{$context.data.a}}"`。 -::: - -### 超时设置 - -当请求长时间未响应时,通过超时设置取消该请求的执行。请求超时后会以失败状态提前终止当前流程。 - -### 忽略失败 - -请求节点会以标准 HTTP 状态码的 `200`~`299` 之间(含)的状态认为是成功状态,其他的均认为是失败。如勾选了“忽略失败的请求并继续工作流”选项,则当请求失败后仍继续执行后续的其他流程节点。 - -## 示例 - -例如我们可以使用请求节点来对接云平台发送通知短信,以阿里云发送短信接口为例配置如下(相关参数需自行查阅文档适配): - -![HTTP请求节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/0bed2560-fe5d-4726-b918-45594248d60b) - -工作流触发该节点执行时会以配置的内容调用阿里云的短信接口,请求成功的话将通过短信云服务发送一条短信。 diff --git a/docs/zh-CN/manual/workflow/nodes/sql.md b/docs/zh-CN/manual/workflow/nodes/sql.md deleted file mode 100644 index 192388164..000000000 --- a/docs/zh-CN/manual/workflow/nodes/sql.md +++ /dev/null @@ -1,21 +0,0 @@ -# SQL 操作 - -在一些特殊场景里,上面简单的数据表操作节点可能无法复杂的操作,则可以直接使用 SQL 节点,使数据库直接执行复杂的 SQL 语句进行数据操作。 - -与在应用外部直接连接数据库进行 SQL 操作的区别是,在工作流内可以使用流程上下文的变量,作为 SQL 语句中的部分参数。 - -:::info{title=提示} -目前 SQL 节点还不支持 `SELECT` 语句的结果作为节点结果使用,可能会在未来支持。 -::: - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“SQL 操作”节点: - -![SQL 操作_添加](https://github.com/nocobase/nocobase/assets/525658/1d3f21b3-d3f4-4f97-9195-e6a98ccb5289) - -## 节点配置 - -通过编辑框右上角的变量按钮插入需要的变量,会在执行前通过文本替换为对应变量的值: - -![SQL节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/dd4e2f21-acd3-4c14-bbc9-0c28554e2fda) diff --git a/docs/zh-CN/manual/workflow/nodes/update.md b/docs/zh-CN/manual/workflow/nodes/update.md deleted file mode 100644 index 16f45be01..000000000 --- a/docs/zh-CN/manual/workflow/nodes/update.md +++ /dev/null @@ -1,47 +0,0 @@ -# 更新数据 - -用于对某个数据表的满足条件的数据进行更新。 - -数据表和字段赋值部分与新增节点相同,更新节点的区别主要是增加了筛选条件,而且需要选择更新模式。另外,更新节点的结果会返回更新成功数据的行数,只在执行历史里可查看,不可作为变量在后续节点使用。 - -## 创建节点 - -在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“更新数据”节点: - -![更新数据_添加](https://github.com/nocobase/nocobase/assets/525658/9d29da49-3950-45af-854d-0347eee07d41) - -## 节点配置 - -![更新节点_节点配置](https://github.com/nocobase/nocobase/assets/525658/e4bf1fea-d343-4976-99d4-26724221ca16) - -### 数据表 - -选择要更新数据的数据表。 - -### 更新模式 - -更新模式有“批量”和“逐条”的模式,批量模式下,不会再触发每条更新数据的数据表事件,而逐条更新的话会触发每条更新数据的数据表事件,但在大数据量下会有性能问题,需要谨慎使用。通常根据更新的目标数据和是否要触发其他工作流事件来选择,如果是根据主键更新单条数据的,建议使用逐条更新,如果是根据条件更新多条数据的,建议使用批量更新。 - -:::info{title=提示} -使用批量更新模式时,更新数据的字段只能选择当前表的字段(含多对一的外键),不能选择关联表的字段。 -::: - -### 筛选条件 - -与普通的数据表查询时的筛选条件类似,可以使用流程的上下文变量。 - -### 字段值 - -与新增节点的字段赋值类似,可以使用流程上下文的变量,也可以手动填写静态值。 - -:::info{title=提示} -工作流中更新节点更新的数据不会自动处理“最后修改人”数据,需要根据情况自行配置这个字段的值。 -::: - -## 示例 - -例如当新增“文章”时,需要自动更新“文章分类”表的“文章数量”字段,可以使用更新节点来实现: - -![更新节点_示例_节点配置](https://github.com/nocobase/nocobase/assets/525658/e4bf1fea-d343-4976-99d4-26724221ca16) - -当工作流触发后,会自动更新“文章分类”表的“文章数量”字段为当前文章数量 +1。 diff --git a/docs/zh-CN/manual/workflow/start.md b/docs/zh-CN/manual/workflow/start.md deleted file mode 100644 index f2808677e..000000000 --- a/docs/zh-CN/manual/workflow/start.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/zh-CN/manual/workflow/triggers/collection.md b/docs/zh-CN/manual/workflow/triggers/collection.md deleted file mode 100644 index a7c2e87e9..000000000 --- a/docs/zh-CN/manual/workflow/triggers/collection.md +++ /dev/null @@ -1,92 +0,0 @@ -# 数据表事件 - -数据表事件类型的触发器将监听数据表的增删改查事件,当发生对该表的数据操作且满足配置的条件时,触发对应工作流。例如新增订单后扣减商品的库存,新增一条评论后等待人工审核等场景。 - -## 基本使用 - -数据表的变动有几种情况: - -1. 新增数据后。 -2. 更新数据后。 -3. 新增或更新数据后。 -4. 删除数据后。 - -
- 数据表事件_触发时机选择 -
- -可以根据业务的不同需要选择触发的时机。当选择变动情况中包含更新数据表的情况时,还可以对发生变动的字段进行限定,只有选中字段发生变动时,才满足触发条件,不选择则代表所有字段发生变动都可以触发。 - -
- 数据表事件_发生变动的字段选择 -
- -更细节地,可以对触发的数据行的各个字段配置条件规则,当其中的字段满足相应条件,才进行触发。 - -
- 数据表事件_配置数据满足的条件 -
- -数据表事件触发后会在执行计划中注入产生事件的数据行作为触发上下文数据,以供后续流程中的节点作为变量调用。但当后续节点中希望使用该数据的关系字段时,需要先配置对关系数据的预加载,选中的关系数据将会在触发后一并注入到上下文中,且可被按层级进行选择使用。 - -## 相关提示 - -### 暂不支持批量数据操作触发 - -数据表事件事件暂不支持批量数据操作的触发,例如新增文章数据时同时新增的该文章的多个标签数据(对多关系数据),将仅能触发对文章新增的工作流,而同时新增的多个标签将不会触发新增标签的工作流。多对多关系数据的关联和新增时,也不会触发中间表的工作流。 - -### 非应用内的数据操作不会触发 - -另外,通过 HTTP API 调用应用接口对数据表的操作也可以触发相应事件,但如果不通过 NodoBase 应用,而是直接通过数据库操作产生的数据变动,就无法触发相应事件。比如数据库中本身的触发器不会与应用中的工作流产生关联。 - -## 示例 - -以新增一个订单后计算总价并扣减库存的场景举例。 - -首先,我们创建商品表和订单表,数据模型如下: - -| 字段名称 | 字段类型 | -| -------- | -------- | -| 商品名称 | 单行文本 | -| 价格 | 数字 | -| 库存 | 整数 | - -| 字段名称 | 字段类型 | -| -------- | -------------- | -| 订单号 | 自动编号 | -| 订单商品 | 多对一(商品) | -| 订单总价 | 数字 | - -并添加基础的商品数据: - -| 商品名称 | 价格 | 库存 | -| ------------- | ---- | ---- | -| iPhone 14 Pro | 7999 | 10 | -| iPhone 13 Pro | 5999 | 0 | - -然后创建一个基于订单数据表事件的工作流: - -
- 数据表事件_示例_新增订单触发 -
- -其中的几个配置项: - -- 数据表:选择“订单”表。 -- 触发时机:选择“新增数据后”触发。 -- 触发条件:留空。 -- 预加载关系数据:勾选“商品”。 - -之后根据流程的逻辑配置其他节点,检查商品库存是否大于 0,大于 0 的扣减库存,否则订单无效删除订单: - -
- 数据表事件_示例_新增订单流程编排 -
- -节点的配置会在具体类型的介绍文档中详细说明。 - -启用该工作流,并通过界面新增订单来测试。对“iPhone 14 Pro”下单后,对应商品的库存会扣减为 9,而如果对“iPhone 13 Pro”下单,由于库存不足,订单将被删除。 - -
- 数据表事件_示例_新增订单执行结果 -
diff --git a/docs/zh-CN/manual/workflow/triggers/form.md b/docs/zh-CN/manual/workflow/triggers/form.md deleted file mode 100644 index e38a5a2ca..000000000 --- a/docs/zh-CN/manual/workflow/triggers/form.md +++ /dev/null @@ -1,82 +0,0 @@ -# 表单事件 - -表单提交事件针对 UI 界面中新增和更新数据的表单操作按钮,在表单中点击对应已绑定工作流的按钮后,将触发对应绑定的工作流执行。例如对某个活动发起报名的表单,报名(表单提交)成功后触发相应的流程处理。 - -## 基本使用 - -针对“提交”按钮(含“保存数据”按钮)配置的工作流,将在用户提交对应表单且数据操作完成后被触发。 - -
- 表单事件_提交按钮 -
- -针对自定义的“提交至工作流”按钮配置的工作流,将在用户点击对应按钮时,直接将已配置的表单数据提交到对应工作流进行处理。 - -
- 表单事件_提交至工作流按钮 -
- -从按钮配置的菜单中选择“绑定工作流”,即可打开绑定配置弹窗。弹窗中可以配置任意多个要触发的工作流,如果一个都不配置,则代表无需触发。针对每一个工作流,需要先限定触发的数据是整个表单的数据还是表单中的某个关系字段的数据,之后再根据所选的数据模型对应的数据表,选择已配置了匹配该表模型的表单工作流。 - -
- 表单事件_绑定工作流配置_上下文选择 -
- -
- 表单事件_绑定工作流配置_工作流选择 -
- -## 相关提示 - -### 与数据表事件的区别 - -表单提交事件与数据表事件不同的地方在于,表单事件只在配置了绑定工作流的按钮点击后才触发,而如果针对一个数据表有多个不同的新增或更新表单(如针对不同角色的不同界面上),未配置绑定工作流按钮的表单提交时,不会触发。而如果配置了针对数据表事件的工作流,则在任意对应表单提交后,都会触发该工作流。 - -### “提交至工作流”按钮的区别 - -而且针对“提交至工作流”的自定义按钮点击时,提交的数据不会被直接保存到数据表中,而是交给对应的工作流作为上下文数据,由已定义的流程进行特定的处理。上下文中除了表单数据,还会包含提交表单的“当前用户”对象,可以在后续流程中使用。后续处理过程中可以根据提交数据的条件,选择保存到对应数据表,也可以不保存。这种直接交给工作流的表单提交事件,在一定程度上,可以配置为提交申请和审批场景中的流程。 - - - -## 示例 - -普通的“提交”触发与数据表事件类似,这里主要针对“提交至工作流”的方式进行演示。 - -假设一个“报销申请”的场景,我们需要在员工提交费用报销后,进行额度的自动审核和超出额度的人工审核,审核成功的才通过申请,并在之后交由财务处理。 - -首先,我们可以先创建一张“费用报销”数据表,有以下字段: - -- 项目名称:单行文本 -- 申请人:多对一(用户) -- 金额:数字 -- 状态:单选(“审核通过”、“处理完成”) - -之后先创建一个“表单事件”类型的工作流,并且把触发器中的数据表模型配置为“费用报销”表: - -
- 配置表单事件工作流的数据模型 -
- -将工作流设置为启用状态后,流程的具体处理节点稍后再回来配置。 - -然后我们在界面上创建“费用报销”数据表的表格区块,并且在工具栏增加一个“添加”按钮,配置对应的表单字段。这里我们不使用默认的“提交”按钮,而是移除后重新添加一个“提交至工作流”的按钮: - -
- 配置提交表单 -
- -并打开按钮的“绑定工作流”配置对话框,选择整个表单数据作为上下文,以及工作流为我们之前创建的工作流: - -
- 配置绑定工作流 -
- -表单配置完成后,再回到工作流的逻辑编排。比如我们需要金额大于 500 元时要求管理员进行人工审核,否则直接通过,审核通过后才创建报销记录,并由财务进一步处理(略)。 - -
- 配置绑定工作流 -
- -忽略后续财务的处理的话,这样就完成了申请报销流程的配置,当员工填写报销申请并提交后,会触发对应的工作流,如果费用金额小于 500,会自动创建记录并等待财务进一步处理,否则会由主管审核,审核通过后也是一样创建记录并交给财务处理。 - -该示例的流程也可以配置在普通“提交”按钮上,可以根据具体的业务场景决定是否需要先创建记录再执行后续的流程。 diff --git a/docs/zh-CN/manual/workflow/triggers/index.md b/docs/zh-CN/manual/workflow/triggers/index.md deleted file mode 100644 index f078bf527..000000000 --- a/docs/zh-CN/manual/workflow/triggers/index.md +++ /dev/null @@ -1,17 +0,0 @@ -# 概述 - -触发器是工作流的执行入口,当应用运行过程中满足触发器条件的事件产生时,工作流将会被触发执行。触发器的类型也就是工作流的类型,在创建工作流时选择,创建后不可修改。目前内置的触发器类型如下: - -- 表单事件 -- 数据表事件 -- 定时任务 - -比如用户提交一个表单,或者数据表中的数据由于用户操作或程序调用发生变化,或者定时任务到达执行时间,都会触发对应的工作流执行。 - -与数据有关的触发器(如表单、数据表事件)通常会携带触发上下文数据,这些数据可以在工作流的节点中被引用,用以实现数据的自动化处理。例如当用户提交一个绑定了工作流的表单时,表单提交的数据会被注入到执行计划的上下文环境中,以供后续节点作为变量使用。 - -创建工作流以后,在工作流查看页面中,触发器会以入口节点的样式显示在流程的开始位置,点击该卡片即可打开配置弹窗。根据触发器的类型不同,可以配置触发器的相关条件。 - -
- 触发器_入口节点 -
diff --git a/docs/zh-CN/manual/workflow/triggers/schedule.md b/docs/zh-CN/manual/workflow/triggers/schedule.md deleted file mode 100644 index ca6138b0e..000000000 --- a/docs/zh-CN/manual/workflow/triggers/schedule.md +++ /dev/null @@ -1,75 +0,0 @@ -# 定时任务 - -定时任务是以时间为触发条件的事件,分为两种模式: - -- 自定义时间:常规类似 cron 的按系统时间计划触发 -- 数据表时间字段:按数据表中时间字段的值到时触发 - -系统运行到满足所配置的触发条件的时间点(精度到秒)时,会触发相应的工作流。 - -## 基本使用 - -### 自定义时间模式 - -针对常规的模式,首先需要配置开始时间为任意时间点(精度到秒)。开始时间可以配置为未来的时间,也可以配置为过去的时间。当配置为过去的时间时,会根据配置的重复条件检查是否到时,如果没有配置重复条件,开始时间如果是过去的时间,则工作流不再会被触发。 - -重复规则有两种配置方式: - -- 按间隔时间:开始时间后每固定间隔时间触发,如每一小时,每 30 分钟等。 -- 高级模式:即按 cron 规则,可配置为到达固定规则日期时间的周期。 - -配置了重复规则后,还可以配置结束条件,可以通过固定时间点结束,也可以通过已执行过的次数限制。 - -### 数据表时间字段模式 - -通过数据表的时间字段来确定开始时间,是一种将普通定时任务和数据表时间字段结合的触发模式,使用这个模式可以简化一些特定流程的中的节点,从配置上也更加直观。例如,需要将超时未支付的订单修改为已取消的状态,可以仅配置一个数据表时间字段模式的定时任务,选择开始时间为订单创建后 30 分钟, - -## 相关提示 - -### 未启动或停机状态下的定时任务 - -如果配置的时间条件满足时,但整个 NocoBase 应用服务处在未启动或停机状态,则对应时间点应该触发的定时任务会被错过,且在服务重新启动后,已经错过的任务不会再被触发。所以在使用时可能需要考虑对应情况的处理,或候补措施。 - -### 重复次数 - -配置了结束条件中的按重复次数时,计算的是同一个工作流所有版本执行过的总次数,例如一个定时任务在版本 1 的时候执行过 10 次,如果重复次数也设置了 10 次,该工作流将不再会被触发,即使复制到新版本,也不会被触发,除非将重复次数修改为大于 10 的数字。但如果是复制为新的工作流,已执行的次数将会重新从 0 开始计算,不修改相关配置的情况下,新的工作流将可以再被触发 10 次。 - -### 重复规则中间隔时间与高级模式的区别 - -重复规则中的间隔时间是相对于上一次触发(开始时间)的时间点,而高级模式是按固定的时间点触发,例如,配置了每 30 分钟触发一次,如果上一次触发是 2021-09-01 12:01:23,那么下一次触发时间是 2021-09-01 12:31:23。而高级模式即 cron 模式,配置的规则均为固定的时间点触发,例如,可以配置在每小时的 01 分和 31 分触发。 - -## 示例 - -假设每分钟检查创建后超过 30 分钟未完成支付的订单,并自动修改为已取消状态。分别使用两种模式来实现。 - -### 自定义时间模式 - -创建一个基于定时任务的工作流,触发器配置中选择“自定义时间”模式,开始时间选择任意不晚于当前时间的时间点,重复规则选择“每分钟”,结束条件留空: - -
- 定时任务_触发器配置_自定义时间模式 -
- -之后根据流程的逻辑配置其他节点,计算出 30 分钟,如果超时未支付则修改为已取消状态: - -
- 定时任务_触发器配置_自定义时间模式 -
- -工作流启用后,从开始时间起每分钟会触发一次,计算 30 分钟前的时间,用于更新创建时间早于该时间点的订单状态为取消。 - -### 数据表时间字段模式 - -创建一个基于定时任务的工作流,触发器配置中选择“数据表时间字段”模式,数据表选择“订单”表,开始时间选择订单的创建时间之后 30 分钟,重复规则选择“不重复”: - -
- 定时任务_触发器配置_数据表时间字段模式_触发器 -
- -之后根据流程的逻辑配置其他节点,更新 ID 为触发数据 ID 且状态是“未支付”的订单为取消状态: - -
- 定时任务_触发器配置_数据表时间字段模式_更新节点 -
- -与自定义时间模式不同的是,这里不需要计算 30 分钟前的时间,因为工作流触发数据上下文中即包含对应符合时间条件的数据行,所以可以直接更新对应订单的状态。 diff --git a/docs/zh-CN/plugins/collection-manager/index.md b/docs/zh-CN/plugins/collection-manager/index.md deleted file mode 100644 index 08deab7cc..000000000 --- a/docs/zh-CN/plugins/collection-manager/index.md +++ /dev/null @@ -1,9 +0,0 @@ -# 数据表管理 - -## 介绍 - -提供便捷的数据表管理能力 - -## 安装 - -内置插件,无需单独安装。 diff --git a/docs/zh-CN/welcome/release/v0200-changelog.md b/docs/zh-CN/welcome/release/v0200-changelog.md deleted file mode 100644 index b9ecca1a5..000000000 --- a/docs/zh-CN/welcome/release/v0200-changelog.md +++ /dev/null @@ -1,23 +0,0 @@ -# v0.20:2024-xx-xx - -## 新特性 - -### 特性1 - -特性介绍,可以配截图 - -- 开发文档:https://docs-cn.nocobase.com/development/server/telemetry -- 内核 API:https://docs-cn.nocobase.com/api/telemetry/telemetry -- Prometheus 插件:https://docs-cn.nocobase.com/plugins/telemetry-prometheus - -### 特性2 - -特性介绍,可以配截图 - -- 插件文档:https://docs-cn.nocobase.com/plugins/backup-restore - -## 优化 - -## 修复 - -## 不兼容的变化 diff --git a/docs/zh-CN/welcome/release/v0200-changelog/20240303170947_rec_.gif b/docs/zh-CN/welcome/release/v0200-changelog/20240303170947_rec_.gif new file mode 100644 index 000000000..597aafc8f Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/20240303170947_rec_.gif differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/20240303172205_rec_.gif b/docs/zh-CN/welcome/release/v0200-changelog/20240303172205_rec_.gif new file mode 100644 index 000000000..f2713b5a3 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/20240303172205_rec_.gif differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-1.png b/docs/zh-CN/welcome/release/v0200-changelog/image-1.png new file mode 100644 index 000000000..75b48b6ce Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-1.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-10.png b/docs/zh-CN/welcome/release/v0200-changelog/image-10.png new file mode 100644 index 000000000..c4c9ca82d Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-10.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-11.png b/docs/zh-CN/welcome/release/v0200-changelog/image-11.png new file mode 100644 index 000000000..762ea21ee Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-11.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-12.png b/docs/zh-CN/welcome/release/v0200-changelog/image-12.png new file mode 100644 index 000000000..9a83fb1be Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-12.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-13.png b/docs/zh-CN/welcome/release/v0200-changelog/image-13.png new file mode 100644 index 000000000..ff459608d Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-13.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-14.png b/docs/zh-CN/welcome/release/v0200-changelog/image-14.png new file mode 100644 index 000000000..f7f8b7082 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-14.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-15.png b/docs/zh-CN/welcome/release/v0200-changelog/image-15.png new file mode 100644 index 000000000..1aa59c4d9 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-15.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-16.png b/docs/zh-CN/welcome/release/v0200-changelog/image-16.png new file mode 100644 index 000000000..2313fccba Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-16.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-17.png b/docs/zh-CN/welcome/release/v0200-changelog/image-17.png new file mode 100644 index 000000000..88aa7ddf6 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-17.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-2.png b/docs/zh-CN/welcome/release/v0200-changelog/image-2.png new file mode 100644 index 000000000..7498245c0 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-2.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-3.png b/docs/zh-CN/welcome/release/v0200-changelog/image-3.png new file mode 100644 index 000000000..acd326aa9 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-3.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-4.png b/docs/zh-CN/welcome/release/v0200-changelog/image-4.png new file mode 100644 index 000000000..95e4985ee Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-4.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-5.png b/docs/zh-CN/welcome/release/v0200-changelog/image-5.png new file mode 100644 index 000000000..c4cd97426 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-5.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-6.png b/docs/zh-CN/welcome/release/v0200-changelog/image-6.png new file mode 100644 index 000000000..ad2cd8af5 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-6.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-7.png b/docs/zh-CN/welcome/release/v0200-changelog/image-7.png new file mode 100644 index 000000000..5fbfd54d0 Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-7.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-8.png b/docs/zh-CN/welcome/release/v0200-changelog/image-8.png new file mode 100644 index 000000000..aa70bb33f Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-8.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image-9.png b/docs/zh-CN/welcome/release/v0200-changelog/image-9.png new file mode 100644 index 000000000..2716b6a3f Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image-9.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/image.png b/docs/zh-CN/welcome/release/v0200-changelog/image.png new file mode 100644 index 000000000..1e9a56c9e Binary files /dev/null and b/docs/zh-CN/welcome/release/v0200-changelog/image.png differ diff --git a/docs/zh-CN/welcome/release/v0200-changelog/index.md b/docs/zh-CN/welcome/release/v0200-changelog/index.md new file mode 100644 index 000000000..98114e50b --- /dev/null +++ b/docs/zh-CN/welcome/release/v0200-changelog/index.md @@ -0,0 +1,361 @@ +# v0.20:2024-03-03 + +## 新特性 + +### 支持多数据源 + +新增「[数据源管理](/handbook/data-source-manager)」插件,用于管理所有数据源的数据表和字段,数据源管理插件只是提供中心化的数据源管理界面,并不提供接入数据源的能力,需要和各种数据源插件搭配使用,目前支持的数据源包括: + +- [主数据库 Main](/handbook/data-source-main):NocoBase 主数据库,支持 MySQL、PostgreSQL、SQLite 等关系型数据库。 +- [外部 MySQL 数据源](/handbook/data-source-external-mysql):接入已有的 MySQL 数据库作为数据源。 +- [外部 MariaDB 数据源](/handbook/data-source-external-mariadb):接入已有的 MariaDB 数据库作为数据源。 +- [外部 PostgreSQL 数据源](/handbook/data-source-external-postgres):接入已有的 PostgreSQL 数据库作为数据源。 + +除此之外,也可以扩展更多数据源,可以是常见的各类数据库,也可以是提供 API(SDK)的平台。 + +![数据源管理](./image.png) + +### 调整数据表的管理方式 + +将原来的「数据表管理」移至「数据源 > 主数据库 > 配置」 + +![Main 数据库配置](./20240303172205_rec_.gif) + +### 支持非 ID 字段作为主键和关系约束 + +建表时,可以不选择创建 ID 字段 + +![预置字段](./image-1.png) + +整数字段可以作为主键 + +![整数字段可以作为主键](./image-3.png) + +单行文本字段也可以作为主键 + +![单行文本字段也可以作为主键](./image-2.png) + +关系约束支持选择其他设置了 Unique 索引的非主键字段 + +![](./image-17.png) + +### 调整拖拽排序 + +新增「排序」类型字段,建表时不再自动生成排序字段,需要自己手动创建 + +![](./image-4.png) + +当选了某个字段作为分组时,将先分组再排序 + +![](./image-5.png) + +表格拖拽排序时,需要选择排序字段 + +![](./image-7.png) + +创建看板区块时,需要选择排序字段 + +![](./image-6.png) + +### 调整用户和权限界面 + +新增用户管理界面,并将用户、角色的管理统一到一个菜单内 + +![](./image-8.png) + +调整角色管理的界面,便于管理角色关联的用户、权限、部门等数据 + +![](./image-9.png) + +将原来的「操作权限」移至「数据源」标签页 + +![](./20240303170947_rec_.gif) + +### 部门插件 + +### 工作流:审批 + +审批插件提供了专用的工作流类型(触发器)“发起审批”和专用于该流程的“审批”节点,结合 NocoBase 特有的自定义数据表和自定义区块,可以快速且灵活地创建与管理各类审批场景。 + +审批配置 + +![审批配置](./image-10.png) + +审批处理 + +![审批处理](./image-11.png) + +进一步可通过文档了解:https://docs-cn.nocobase.com/plugins/workflow-approval + +### 工作流:结束流程节点 + +该节点执行时将立即结束当前执行的工作流,并以节点配置的状态结束。通常用于特定逻辑的流程控制,在满足某些逻辑条件后,跳出当前工作流,不再继续执行后续流程的处理。可类比编程语言中的 return 指令,用于退出当前执行的函数。 + +![](./image-16.png) + +进一步可通过文档了解:https://docs-cn.nocobase.com/plugins/workflow/manual/nodes/end + +### 工作流:自定义变量节点 + +可在流程中声明变量,或为已声明的变量赋值,通常用于在流程中保存一些临时数据。适用于一些需要在分支内将计算结果储存到分支外使用的场景(如循环、并行等)。 + +![](./image-12.png) + +进一步可通过文档了解:https://docs-cn.nocobase.com/plugins/workflow-variable + +### 工作流:请求拦截器 + +请求拦截器插件提供了一种可以对表单的操作请求进行拦截的机制,拦截事件会在对应的表单操作提交后且被处理之前触发。如果在触发后的流程中有“结束流程”节点被执行,或者其他节点执行失败(出错或其他未能执行完成的情况),则该表单操作将被拦截,否则预定操作将被正常执行。 +搭配使用“响应消息”节点可以为该流程配置返回客户端的响应消息,以对客户端给出相应的提示信息。 +请求拦截器可用于进行业务验证或逻辑检查,以通过或拦截客户端提交的创建、更新和删除等操作请求。 + +![](./image-13.png) + +进一步可通过文档了解:https://docs-cn.nocobase.com/plugins/workflow-request-interceptor + +### 工作流:响应消息节点 + +响应消息节点用于在特定类型的流程中(如请求拦截和表单事件)向提交操作的客户端反馈流程中自定义的消息。 + +节点配置 + +![](./image-14.png) + +提示信息 + +![](./image-15.png) + +进一步可通过文档了解:https://docs-cn.nocobase.com/plugins/workflow-response-message + +## 不兼容的变化 + +### 命名相同但有冲突的 API + +这一次的内核变更,有些新版 API 与旧版命名存在冲突,这些有冲突的旧版 API 在这一版里还会保留,但是会统一加上 `_deprecated ` 后缀。 + +| 原来的 API | 废弃的 API | 新 API | +| -------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| CollectionProvider | CollectionProvider_deprecated | [CollectionProvider](https://pr-3418.client.docs-cn.nocobase.com/core/data-source/collection-provider) | +| useCollection | useCollection_deprecated | [useCollection](https://pr-3418.client.docs-cn.nocobase.com/core/data-source/collection-provider#hooks) | +| useCollectionField | useCollectionField_deprecated | [useCollectionField](https://pr-3418.client.docs-cn.nocobase.com/core/data-source/collection-field#hooks) | +| useCollectionManager | useCollectionManager_deprecated | [useCollectionManager](https://pr-3418.client.docs-cn.nocobase.com/core/data-source/collection-manager-provider#hooks) | +| useContext(CollectionManagerContext) | useCollectionManager_deprecated | [useCollectionManager](https://pr-3418.client.docs-cn.nocobase.com/core/data-source/collection-manager-provider#hooks) | + +如果用到以上相关 API,你可以有两种更改方式: + +- 简单替换:将原来的 API 替换为带 `_deprecated`,例如将 `useCollection()` 替换为 `useRecord_deprecated()` +- 按照新文档使用新 API:虽然新 API 的名称和老 API 相同,但是参数和返回值存在差异,需要参考新文档调整相应代码 + +### 其他需要调整的 API + +- `registerTemplate()` 变更为 `app.dataSourceManager.addCollectionTemplates()` +- `registerField()` 变更为 `app.dataSourceManager.addFeildInterfaces()` +- `registerGroup()` 变更为 `app.dataSourceManager.addFieldInterfaceGroups()` +- `useContext(CollectionManagerContext)` 变更为 `useCollectionManager_deprecated()` +- 使用 `ExtendCollectionsProvider` 扩展 collections +- `RecordProvider` 需要 parent 参数时,必须显式传入 + +## 变更示例说明 + +### Collection Template 扩展 + +#### 定义 + +之前是对象定义的方式,现在需要改为类的方式。 例如: + +之前 + +```typescript +import { ICollectionTemplate } from '@nocobase/client'; + +const calendar: ICollectionTemplate = { + name: 'calendar', + title: 'Calendar collection', + order: 2, + color: 'orange', + // ... +} +``` + +现在 + +```typescript +import { CollectionTemplate } from '@nocobase/client'; + +class CalendarCollectionTemplate extends CollectionTemplate { + name = 'calendar'; + title = 'Calendar collection'; + order = 2; + color = 'orange'; +} +``` + +原来的对象属性变为类的成员。 + +#### 注册 + +之前是通过 `registerTemplate` 注册的,现在需要通过插件的 `dataSourceManager.addCollectionTemplates` 注册。例如: + +之前 + +```typescript +import { registerTemplate } from '@nocobase/client'; +import { calendar } from './calendar' + +registerTemplate('calendar', calendar); +``` + +现在 + +```typescript +import { Plugin } from '@nocobase/client'; +import { CalendarCollectionTemplate } from './calendar' + +export class CalendarPluginClient extends Plugin { + async load() { + this.app.dataSourceManager.addCollectionTemplates([CalendarCollectionTemplate]); + } +} +``` + +### Field Interface 扩展 + +#### 定义 + +之前是对象定义的方式,现在需要改为类的方式。 例如: + +之前 + +```typescript +import { IField } from '@nocobase/client'; + +const attachment: IField = { + name: 'attachment', + type: 'object', + group: 'media', + title: 'Attachment', + // ... +} +``` + +现在 + +```typescript +import { CollectionFieldInterface } from '@nocobase/client'; + +class AttachmentFieldInterface extends CollectionFieldInterface { + name = 'attachment'; + type = 'object'; + group = 'media'; + title = 'Attachment'; + // ... +} +``` + +原来的对象属性变为类的成员。 + +#### 注册 + +之前是通过 `registerField` 注册的,现在需要通过插件的 `dataSourceManager.addFieldInterfaces` 注册,并且不需要 `CollectionManagerProvider` 再次传递。例如: + +之前 + +```diff +import { registerField } from '@nocobase/client'; +import { attachment } from './attachment' + +- registerField(attachment.group, 'attachment', attachment); + +export const FileManagerProvider: FC = (props) => { + return ( +- + + {props.children} + +- + ); +}; +``` + +现在 + +```typescript +import { Plugin } from '@nocobase/client'; +import { AttachmentFieldInterface } from './attachment' + +export class FilPlugin extends Plugin { + async load() { + this.app.dataSourceManager.addFeildInterfaces([AttachmentFieldInterface]); + } +} +``` + +### Field Interface Group 扩展 + +之前是通过 `registerGroup` 注册的,现在需要通过插件的 `dataSourceManager.addFieldInterfaceGroups` 注册。例如: + +```diff +- import { registerGroup, Plugin } from '@nocobase/client'; ++ import { Plugin } from '@nocobase/client'; + +- registerGroup('map', { +- label: 'Map-based geometry', +- order: 10 +- }) + +export class MapPlugin extends Plugin { + async load() { ++ this.app.dataSourceManager.addFieldInterfaceGroups({ ++ map: { ++ label: generateNTemplate('Map-based geometry'), ++ order: 51, ++ }, ++ }); + } +} +``` + +### `useContext(CollectionManagerContext)` 改为 `useCollectionManager_deprecated()` + +```diff +- const ctx = useContext(CollectionManagerContext); ++ const ctx = useCollectionManager_deprecated(); +``` + +### 扩展 collections,使用 `ExtendCollectionsProvider` 代替 `CollectionManagerProvider` + +```diff +const Demo = () => { +- ++ +... +- ++ +} +``` + +### RecordProvider 的变更 + +之前在不传入 parent 属性的时候,会自动获取上一级的 RecordProvider 的值作为 parent。现在则需要显式的传入 parent,当不传 parent 的时候,parent 的值将是 undefined。 + +```diff +- ++ +... + +``` + +如果没有历史包袱,也可以直接使用 CollectionRecordProvider 替换 + +```diff +- ++ +... +- ++ +``` + +:::warning{title="RecordProvider 和 CollectionRecordProvider 的区别"} +- RecordProvider 已废弃,未来会被移除 +- RecordProvider 带了旧的 RecordContext,CollectionRecordProvider 没有 +::: \ No newline at end of file