Appearance
表单模块研发说明
适用对象
维护表单设计器、表单运行时、统一数据源和字段元数据的开发人员。
能力边界
架构与能力细节见 表单引擎导读 与 monorepo L1 docs/form-designer-architecture.md;与流程协作见 表单 × 流程协作。开放项见 L1 §17。
本页保留:入口路径、表、API、实现锚点。
入口路径
前端入口:
/form-template/form-template/data/form-template/instance/new/form-template/instance/:id/form-designer
后端入口:
/form/template/form/instance/form/attachment/form/component/form/data-source/system/data-source/system/field-metadata
核心数据和接口
核心表:
frm_templatefrm_field_metafrm_instancefrm_attachment_bindsys_data_sourcesys_data_source_paramsys_field_metadata
接口清单:
POST /form/template/saveGET /form/template/listGET /form/template/versions/{templateKey}GET /form/template/allGET /form/template/{id}GET /form/template/{id}/fieldsPOST /form/instance/saveGET /form/instance/data/{flowInstanceId}GET /form/instance/listGET /form/instance/{id}POST /form/instance/draftPUT /form/instance/{id}POST /form/instance/{id}/submitPOST /form/instance/{id}/archivePOST /form/instance/{id}/unarchivePOST /form/instance/submitDELETE /form/instance/{id}POST /form/instance/triggers/executePOST /form/data-source/{code}/optionsGET/POST/PUT/DELETE /system/data-sourceGET/POST/PUT/DELETE /system/field-metadata
数据源和字段元数据
数据源类型:
dictionary:读取sourceConfigJson.options/items。business:读取组织、岗位、角色、用户。external_api、internal_api:调用 HTTP 接口并按resultMappingJson提取选项。external_sql:通过sys_database连接执行具名参数 SQL 并映射选项。
字段元数据:
code建议为object.field。fieldType用于组件推荐。optionSourceCode可自动填充字段默认选项源。recommendedComponentsJson、validationConfigJson、defaultConfigJson已建模;运行时默认/校验应用见主文档 §17 E4。
权限或预留能力
已落地:
form:templatesys:data-sourcesys:field-metadata
预留:
frm_field_meta.isCondition和字段配置isCondition用于流程条件。biz_runtime_module.formTemplateId用于运行时模块绑定表单模板。
字段行为规则
字段行为规则存储在字段 config 中,随 frm_template.schemaJson 版本化。
visibleConditionGroups、readonlyConditionGroups、requiredConditionGroups:字段状态条件,配合*WhenMode表示 AND / OR。actionRules:字段值变化后执行的动作。动作类型包括setValue、copyValue、clearValue。eventHandlers:字段值变化后执行的 JS 脚本。运行时注入value、oldValue、field、formValues、getValue、setValue、clearValue。
运行时由 FormPreview 统一解释字段行为规则。独立表单实例、表单数据页新增弹窗和流程表单渲染共用该组件,因此字段行为不需要在各业务页重复实现。
字段行为规则用于前端交互,不替代后端校验。保存、提交、归档、删除、列表查询、导入导出等实例级逻辑应使用 instanceConfig.triggers 配置表单触发器,并通过 runBeforeFormTrigger / runAfterFormTrigger 接入。
相关实现位置
- 表单设计器:
oars-web/apps/web-antd/src/views/form/designer - 表单预览渲染:
oars-web/apps/web-antd/src/views/form/designer/FormPreview.vue - 字段行为规则编辑器:
oars-web/apps/web-antd/src/views/form/designer/componentConfig/FieldBehaviorRuleEditor.vue - 预览弹窗:
oars-web/apps/web-antd/src/views/form/designer/composables/usePreview.ts - 功能配置抽屉:
oars-web/apps/web-antd/src/views/form/designer/InstanceConfigDrawer.vue - 实例编号规则工具:
oars-web/apps/web-antd/src/utils/formInstanceNoRule.ts - 实例编号生成:
oars-java/oars-form/src/main/java/com/oars/form/sequence/FormInstanceNoGenerator.java - 字段注册表:
oars-web/apps/web-antd/src/views/form/designer/fieldRegistry.ts - 选项源:
oars-web/apps/web-antd/src/views/form/designer/optionSource.ts - 选项源编辑器:
oars-web/apps/web-antd/src/views/form/designer/componentConfig/OptionSourceEditor.vue - 引用子表配置:
oars-web/apps/web-antd/src/views/form/designer/componentConfig/ReferencedSubtableConfigEditor.vue - 表单运行时:
oars-web/apps/web-antd/src/views/form/instance/index.vue - 流程表单渲染:
oars-web/apps/web-antd/src/views/flowInstance/components/FormRenderer.vue - 后端表单:
oars-java/oars-form/src/main/java/com/oars/form - 后端数据源运行时:
oars-java/oars-app/src/main/java/com/oars/app/service/form - 系统数据源和字段元数据:
oars-java/oars-system/src/main/java/com/oars/system
架构文档
| 类型 | 路径 |
|---|---|
| oars-docs 导读 | 表单引擎导读、协作页 |
| L1 内核 | docs/form-designer-architecture.md(开放项 §17) |
待确认事项
- 表单 schema 版本升级策略(产品向说明)。
- 表单与运行时 DSL 模块的自动生成/绑定策略。
- 数据源对外开放的安全策略摘要(实现见主文档 §14.5、§17 E3)。
