iBizModeling Studio 内置AI建模助手 --- 用户使用手册
1. 概述
iBizModeling Studio 建模助手是一个智能建模辅助工具,集成于 iBizModeling Studio 中。它能够帮助您完成以下工作:
- 查询模型信息 --- 检索系统中已建立的模型数据
- 获取模型架构定义 --- 了解 iBizModel 各模型对象的属性、枚举、关系
- 生成 DSL 代码 --- 根据业务需求生成合规的 iBizModelDSL 代码
- 编译与构建模型 --- 编译 DSL 代码并构建到系统中
- 运行时校验 --- 获取运行时模型,进行完整校验
- 模型变更(更新/补丁/删除) --- 对现有模型进行修改
点击开启建模助手:

2. 核心概念
2.1 iBizModel 模型体系
iBizModel 模型名称固定以 PS 前缀开头。模型分为两类:
| 类型 | 说明 | 示例 |
|---|---|---|
| 主模型 | 独立定义、可检索、有独立生命周期 | PSDATAENTITY(实体)、PSDEFIELD(属性)、PSDER(关系)、PSDEFORM(表单) |
| 嵌套模型 | 必须定义在主模型内部 | PSDEFORMDETAIL(表单成员)、PSCODEITEM(代码表项) |
dsl_id 是模型的唯一标记,格式为 parent.dsl_id + "." + self.id,如 Base.DICTIONARY。系统根模型 PSSYSTEM 的 dsl_id 为 ""。
2.2 模型组织体系
#mermaid-svg-sVxD5vh8XPx1xHV4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-sVxD5vh8XPx1xHV4 .error-icon{fill:#552222;}#mermaid-svg-sVxD5vh8XPx1xHV4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sVxD5vh8XPx1xHV4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .marker.cross{stroke:#333333;}#mermaid-svg-sVxD5vh8XPx1xHV4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sVxD5vh8XPx1xHV4 p{margin:0;}#mermaid-svg-sVxD5vh8XPx1xHV4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .cluster-label text{fill:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .cluster-label span{color:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .cluster-label span p{background-color:transparent;}#mermaid-svg-sVxD5vh8XPx1xHV4 .label text,#mermaid-svg-sVxD5vh8XPx1xHV4 span{fill:#333;color:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .node rect,#mermaid-svg-sVxD5vh8XPx1xHV4 .node circle,#mermaid-svg-sVxD5vh8XPx1xHV4 .node ellipse,#mermaid-svg-sVxD5vh8XPx1xHV4 .node polygon,#mermaid-svg-sVxD5vh8XPx1xHV4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .rough-node .label text,#mermaid-svg-sVxD5vh8XPx1xHV4 .node .label text,#mermaid-svg-sVxD5vh8XPx1xHV4 .image-shape .label,#mermaid-svg-sVxD5vh8XPx1xHV4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-sVxD5vh8XPx1xHV4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .rough-node .label,#mermaid-svg-sVxD5vh8XPx1xHV4 .node .label,#mermaid-svg-sVxD5vh8XPx1xHV4 .image-shape .label,#mermaid-svg-sVxD5vh8XPx1xHV4 .icon-shape .label{text-align:center;}#mermaid-svg-sVxD5vh8XPx1xHV4 .node.clickable{cursor:pointer;}#mermaid-svg-sVxD5vh8XPx1xHV4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .arrowheadPath{fill:#333333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-sVxD5vh8XPx1xHV4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-sVxD5vh8XPx1xHV4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-sVxD5vh8XPx1xHV4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-sVxD5vh8XPx1xHV4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .cluster text{fill:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 .cluster span{color:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sVxD5vh8XPx1xHV4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-sVxD5vh8XPx1xHV4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-sVxD5vh8XPx1xHV4 .icon-shape,#mermaid-svg-sVxD5vh8XPx1xHV4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-sVxD5vh8XPx1xHV4 .icon-shape p,#mermaid-svg-sVxD5vh8XPx1xHV4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-sVxD5vh8XPx1xHV4 .icon-shape .label rect,#mermaid-svg-sVxD5vh8XPx1xHV4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-sVxD5vh8XPx1xHV4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-sVxD5vh8XPx1xHV4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-sVxD5vh8XPx1xHV4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} PSSYSTEM
模型组
模块
子系统引用
实体
代码表
...
属性
关系
处理逻辑
表单
表格
列表
3. 应用场景与操作指南
场景 1:查询系统基本信息
💡 提问示例:
- "帮我看看当前系统有哪些模块?"
- "查询系统中所有模块的信息"
- "系统有哪些模型组?"
- "当前系统有几个模块?分别是什么?"
目标:了解当前系统的模块、实体、代码表等基础信息。
操作示例:查询当前系统的所有模块
fetch_model_info --model PSMODULE --cond_file "modules.json" --desc "查询系统模块"
真实系统返回示例(当前系统共有 9 个模块):
| 模块名称 | dsl_id | 说明 |
|---|---|---|
| 系统管理 | ibizsysmgr.ibizsysmgr | 部门及人员业务实体映射 |
| ebsx系统管理 | ebsx.ebsx | ebsx部门及人员业务实体映射 |
| 智能 | ai | AI相关业务 |
| 模型扩展 | extension | 模型扩展类实体 |
| 全文检索 | FTR | 全文检索相关业务实体 |
| 知识管理 | Wiki | 知识空间相关业务实体 |
| 效能度量 | Insight | 效能度量相关业务实体 |
| meta | meta | 元数据管理 |
| 基础管理 | Base | 基础类、通用类业务实体 |
场景 2:查询实体信息
💡 提问示例:
- "帮我看看Base模块下有哪些实体?"
- "查询基础管理模块的所有实体信息"
- "系统中有哪些和用户相关的实体?"
- "帮我查一下名称包含'DICT'的实体"
- "Base模块下有没有叫DICTIONARY的实体?"
目标:了解指定模块下的所有实体。
操作示例:查询基础管理模块(Base)下的所有实体
fetch_model_info --model PSDATAENTITY --cond_file "entities.json" --desc "查询Base模块实体"
条件文件内容:
json
{
"searchconds": [{
"condtype": "DEFIELD",
"fieldname": "psmoduleid",
"condop": "eq",
"value": "Base"
}]
}
真实系统返回示例(Base 模块共 33 个实体,部分列出):
| 实体名称 | dsl_id | 说明 |
|---|---|---|
| DICTIONARY | Base.DICTIONARY | 数据字典,用于记录基础数据字典 |
| USER | Base.USER | 企业用户,记录使用系统的用户信息 |
| DEPARTMENT | Base.DEPARTMENT | 部门,管理企业部门信息 |
| ORGANIZATION | Base.ORGANIZATION | 组织,管理企业组织信息 |
| ATTENTION | Base.ATTENTION | 关注,允许用户标记重要项目 |
| COMMENT | Base.COMMENT | 评论,存储用户发布的评论 |
| CATEGORY | Base.CATEGORY | 类别,分类存储其他实体的容器 |
| MEMBER | Base.MEMBER | 成员,公共成员实体 |
| ROLE | Base.ROLE | 角色,系统角色管理 |
| ATTACHMENT | Base.ATTACHMENT | 附件,关联文件提供额外信息 |
场景 3:查看模型详细 DSL 定义
💡 提问示例:
- "帮我看看实体 Base.DICTIONARY 的完整建模代码"
- "查询 DICTIONARY 实体的 DSL 定义,包括所有属性"
- "我想看 Base.USER 实体的完整定义"
- "获取 Base.DICTIONARY 实体的建模DSL代码"
目标:获取某个模型的完整 DSL 代码,包括其成员模型。
操作示例:查看数据字典实体(Base.DICTIONARY)的完整 DSL,包括属性
get_model_dsl --id "PSDATAENTITY|Base.DICTIONARY" --subtype PSDEFIELD --desc "查询数据字典实体建模代码"
返回结果示例(部分 DSL 代码):
groovy
psdataentity(name: "DICTIONARY", codename: "dictionary_data", detype: 1, ...){
psdefield(name: "ID", codename: "id", ...)
psdefield(name: "NAME", codename: "name", ...)
psdefield(name: "TYPE", codename: "type", ...)
psdefield(name: "VAL", codename: "val", ...)
psdefield(name: "CATALOG", codename: "catalog", ...)
// ... 更多属性
}
场景 4:查询模型架构定义
💡 提问示例:
- "PSDATAENTITY 模型是怎么定义的?有哪些属性?"
- "实体模型有哪些属性是必填的?"
- "我想了解 PSMODULE 的架构定义"
- "PSDEFIELD 属性模型有哪些枚举值?"
- "帮我查一下 PSDER 关系模型的属性定义"
目标:了解某个模型类型的属性、枚举值、成员模型等信息,为编写 DSL 做准备。
操作示例:查询实体(PSDATAENTITY)的架构定义
get_psmodel_info --id "PSDATAENTITY" --desc "获取实体模型定义模板"
返回内容包含:
- 所有可用的属性及其控制标志(M=必填创建,C=可创建,U=可更新)
- 枚举值定义(如实体类型、存储类型等)
- 父模型引用关系
- 成员模型列表
- DSL 编写示例
场景 5:新建模块和实体
💡 提问示例:
- "帮我在Base模块下新建一个叫TAG的实体,包含ID、NAME、COLOR三个属性"
- "我想创建一个新的业务模块,应该怎么做?"
- "请帮我生成一个'产品'实体的DSL代码"
- "在系统中新建一个'订单'实体,包含订单号、客户名称、金额等字段"
目标:在系统中创建新的业务模块和实体。
流程:
- 查询 PSMODULE、PSDATAENTITY 架构定义
- 检查是否已存在同名模型
- 生成 DSL 代码
- 编译验证
- 构建模型
示例:在基础管理模块下新建一个"标签"实体
groovy
//iBizModelDSL建模指令,目标:在Base模块下建立标签实体
psdataentity(
name: "TAG"
,codename: "tag"
,logicname: "标签"
,detype: 1
,psmoduleid: "Base"
){
psdefield(
name: "ID"
,codename: "id"
,logicname: "标识"
,pkey: 1
,psdatatypeid: "GUID"
)
psdefield(
name: "NAME"
,codename: "name"
,logicname: "名称"
,majorfield: 1
,psdatatypeid: "TEXT"
,length: 100
,allowempty: 0
)
psdefield(
name: "COLOR"
,codename: "color"
,logicname: "颜色"
,psdatatypeid: "TEXT"
,length: 50
)
}
场景 6:建立实体关系(1:N)
💡 提问示例:
- "帮我给TAG实体建立一个到DICTIONARY实体的1:N关系"
- "如何为两个实体建立一对多关系?"
- "我想让ORDER实体关联到CUSTOMER实体,该怎么做?"
- "请生成一个DER1N关系的DSL代码示例"
目标:为实体建立一对多关系。
示例:为 TAG 实体建立与 DICTIONARY 实体的 1:N 关系
groovy
psdataentity(
name: "TAG"
,codename: "tag"
,logicname: "标签"
,detype: 1
,psmoduleid: "Base"
){
// 关系定义必须在连接属性前面
psder(
codename: "dictionary"
,dertype: "DER1N"
,majorpsdeid: "Base.DICTIONARY"
,derfieldname: "DICTIONARYID"
)
// 外键值属性
psdefield(
name: "DICTIONARY_ID"
,codename: "dictionary_id"
,logicname: "数据字典标识"
,deftype: 1
,psdatatypeid: "PICKUP"
,psderid: "Base.TAG.dictionary"
,derpsdefid: "Base.DICTIONARY.ID"
)
// 外键值显示文本
psdefield(
name: "DICTIONARY_NAME"
,codename: "dictionary_name"
,logicname: "数据字典名称"
,deftype: 3
,psdatatypeid: "PICKUPTEXT"
,psderid: "Base.TAG.dictionary"
,derpsdefid: "Base.DICTIONARY.NAME"
)
}
场景 7:创建代码表
💡 提问示例:
- "帮我在Base模块下创建一个'订单状态'的静态代码表"
- "我想建一个代码表,包含'待审核、已通过、已驳回'三个枚举项"
- "如何创建一个动态代码表?"
- "查询Base模块下有哪些代码表"
- "帮我生成一个性别代码表的DSL代码"
目标:定义静态或动态的枚举/数据字典。
操作示例:创建一个标签颜色的静态代码表
groovy
//iBizModelDSL建模指令,目标:在Base模块下建立标签颜色代码表
pscodelist(
name: "标签颜色"
,codename: "tag_color"
,cltype: "STATIC"
,numberitem: 0
,psmoduleid: "Base"
){
pscodeitem(id: "RED", name: "红色", codename: "RED", codeitemvalue: "red", defaultflag: 0)
pscodeitem(id: "BLUE", name: "蓝色", codename: "BLUE", codeitemvalue: "blue", defaultflag: 0)
pscodeitem(id: "GREEN", name: "绿色", codename: "GREEN", codeitemvalue: "green", defaultflag: 1)
pscodeitem(id: "YELLOW", name: "黄色", codename: "YELLOW", codeitemvalue: "yellow", defaultflag: 0)
}
真实系统参考:当前系统 Base 模块下有 21 个代码表,如:
Base.dictionary_type(字典项类型,静态)Base.background_style(背景样式,静态)Base.position(职位,动态)Base.dept(部门,动态)
场景 8:创建处理逻辑
💡 提问示例:
- "帮我在DICTIONARY实体上创建一个处理逻辑"
- "我想为ORDER实体创建一个'订单审核'处理逻辑"
- "处理逻辑有哪些类型?DELOGIC和VIEWLOGIC有什么区别?"
- "请生成一个包含开始节点、结束节点和参数的处理逻辑DSL"
目标:为实体定义业务处理逻辑。
操作示例:为 DICTIONARY 实体创建一个简单的处理逻辑
groovy
//iBizModelDSL建模指令,目标:为数据字典实体创建处理逻辑
psdelogic(
logictype: "DELOGIC"
,codename: "check_dict_usage"
,name: "检查字典使用情况"
,psdeid: "Base.DICTIONARY"
){
psdelogicparam(globalparam: 0, name: "Default", defaultparam: 1, id: "default", parampsdeid: "Base.DICTIONARY", logicname: "传入变量")
psdelogicparam(globalparam: 0, name: "dict", id: "dict", parampsdeid: "Base.DICTIONARY", logicname: "字典对象")
psdelogicnode(leftpos: 100, codename: "Begin", name: "开始", id: "Begin", logicnodetype: "BEGIN", toppos: 200)
psdelogicnode(leftpos: 100, codename: "END_01", name: "结束", id: "END_01", logicnodetype: "END", toppos: 300)
psdelogiclink(ordervalue: 100, name: "开始到结束", srcpsdelogicnodeid: "Begin", dstpsdelogicnodeid: "END_01")
}
真实系统参考:当前系统 DICTIONARY 实体已有两个处理逻辑:
Base.DICTIONARY.judge_column_state--- 判断操作列是否禁用(视图逻辑)Base.DICTIONARY.nothing--- 无操作逻辑(实体处理逻辑)
场景 9:变更模型(更新)
💡 提问示例:
- "帮我更新 DICTIONARY 实体的逻辑名称和备注"
- "我想修改 Base.USER 实体的描述信息"
- "如何更新一个已存在的实体模型?"
- "请帮我将 ORDER 实体的逻辑名称改为'订单主表'"
目标:对现有模型进行更新操作。
操作方式 :在主模型节点设置 srf_model_action: "update",仅需指定要更新的属性。
示例:更新 DICTIONARY 实体的描述和逻辑名称
groovy
//iBizModelDSL建模指令,系统ID`xxx`,目标:更新数据字典实体
psdataentity(
dsl_id: "Base.DICTIONARY"
,srf_model_action: "update"
,logicname: "数据字典(更新)"
,memo: "用于记录基础数据字典,包含类型、颜色、样式等配置信息"
)
场景 10:变更模型(补丁/局部更新)
💡 提问示例:
- "帮我在 DICTIONARY 实体的处理逻辑中附加一个新参数"
- "我想给 ORDER 实体的处理逻辑删除一个已有参数"
- "如何替换处理逻辑中的某个节点?"
- "请帮我更新处理逻辑中某个节点的名称"
- "我想在逻辑参数列表的第一个位置插入一个新参数"
目标:对现有模型的嵌套成员进行局部增删改。
操作方式 :在主模型设置 srf_model_action: "patch",嵌套成员使用 srf_patch_action。
srf_patch_action 支持的操作:
| 操作 | 说明 |
|---|---|
append |
附加新成员,支持 srf_append_pos 指定位置 |
replace |
整体替换指定成员(含子成员) |
delete |
删除指定成员 |
update |
更新指定成员属性 |
好的,继续完成剩余的内容:
示例:为 DICTIONARY 实体的处理逻辑附加一个新参数
groovy
//iBizModelDSL建模指令,目标:为处理逻辑附加参数
psdelogic(
name: "检查字典使用情况"
,codename: "check_dict_usage"
,psdeid: "Base.DICTIONARY"
,srf_model_action: "patch"
){
psdelogicparam(
srf_patch_action: "append"
,srf_append_pos: "last"
,id: "usageCount"
,name: "usageCount"
,defaultparam: 0
,globalparam: 10
,logicname: "使用次数"
,stddatatype: 9
)
}
场景 11:删除模型
💡 提问示例:
- "帮我把 Base.TAG 实体删除掉"
- "我想删除一个不再需要的代码表"
- "如何删除一个实体模型?"
- "请帮我删除 ORDER 实体的某个处理逻辑"
- "我想删除 Base 模块下的某个实体,该怎么做?"
目标:删除系统中不再需要的模型。
注意事项:删除模型必须经过用户确认!
操作方式 :在主模型节点设置 srf_model_action: "delete"
groovy
//iBizModelDSL建模指令,目标:删除指定实体
psdataentity(
dsl_id: "Base.TAG"
,srf_model_action: "delete"
)
场景 12:编译与构建模型
💡 提问示例:
- "帮我编译刚才生成的 DSL 代码"
- "编译一下 TAG 实体的 DSL,看看有没有错误"
- "DSL 编译通过了,帮我构建到系统中"
- "构建完成后帮我确认一下实体是否生效"
- "帮我编译并构建这段 DSL 代码"
目标:将编写的 DSL 代码编译并构建到系统中。
流程:
- 先编译验证(
--build False) - 编译无错误后构建(
--build True) - 调用
get_model_dsl确认生效
操作示例:
bash
# 第一步:仅编译验证
compile_model_dsl --dsl_file "modeling/tag_entity.dsl" --build False
# 第二步:编译通过后构建
compile_model_dsl --dsl_file "modeling/tag_entity.dsl" --build True
# 第三步:确认生效
get_model_dsl --id "PSDATAENTITY|Base.TAG" --desc "确认实体建模DSL是否生效"
场景 13:运行时模型校验
💡 提问示例:
- "帮我做一次运行时模型校验"
- "获取运行时模型,检查是否有错误"
- "运行一下 get_model_runtime,看看系统模型有没有问题"
- "帮我做一次完整的模型校验"
目标:触发系统模型的完整校验,检查运行时模型是否正确。
操作:
bash
get_model_runtime
说明:DSL 编译通过不代表运行时模型没有问题。运行时模型发布是一个最终过程,会产生更多模型、更多校验规则。建议每隔一段时间执行一次运行时校验。
场景 14:查询示例辅助设计
💡 提问示例:
- "有没有虚拟实体的建模示例?"
- "我想参考一下处理逻辑的示例代码"
- "帮我查一下实体关系的建模示例"
- "有没有关于代码表的示例可以参考?"
- "如何定义一个虚拟实体?有示例吗?"
目标:在编写 DSL 前参考建模示例。
操作示例:查询虚拟实体的建模示例
fetch_psmodel_samples --query "虚拟实体"
4. 工作流程总结
4.1 新建模型的标准流程
#mermaid-svg-ai387yNSw0qBJBrt{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ai387yNSw0qBJBrt .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ai387yNSw0qBJBrt .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ai387yNSw0qBJBrt .error-icon{fill:#552222;}#mermaid-svg-ai387yNSw0qBJBrt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ai387yNSw0qBJBrt .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ai387yNSw0qBJBrt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ai387yNSw0qBJBrt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ai387yNSw0qBJBrt .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ai387yNSw0qBJBrt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ai387yNSw0qBJBrt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ai387yNSw0qBJBrt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ai387yNSw0qBJBrt .marker.cross{stroke:#333333;}#mermaid-svg-ai387yNSw0qBJBrt svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ai387yNSw0qBJBrt p{margin:0;}#mermaid-svg-ai387yNSw0qBJBrt .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ai387yNSw0qBJBrt .cluster-label text{fill:#333;}#mermaid-svg-ai387yNSw0qBJBrt .cluster-label span{color:#333;}#mermaid-svg-ai387yNSw0qBJBrt .cluster-label span p{background-color:transparent;}#mermaid-svg-ai387yNSw0qBJBrt .label text,#mermaid-svg-ai387yNSw0qBJBrt span{fill:#333;color:#333;}#mermaid-svg-ai387yNSw0qBJBrt .node rect,#mermaid-svg-ai387yNSw0qBJBrt .node circle,#mermaid-svg-ai387yNSw0qBJBrt .node ellipse,#mermaid-svg-ai387yNSw0qBJBrt .node polygon,#mermaid-svg-ai387yNSw0qBJBrt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ai387yNSw0qBJBrt .rough-node .label text,#mermaid-svg-ai387yNSw0qBJBrt .node .label text,#mermaid-svg-ai387yNSw0qBJBrt .image-shape .label,#mermaid-svg-ai387yNSw0qBJBrt .icon-shape .label{text-anchor:middle;}#mermaid-svg-ai387yNSw0qBJBrt .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ai387yNSw0qBJBrt .rough-node .label,#mermaid-svg-ai387yNSw0qBJBrt .node .label,#mermaid-svg-ai387yNSw0qBJBrt .image-shape .label,#mermaid-svg-ai387yNSw0qBJBrt .icon-shape .label{text-align:center;}#mermaid-svg-ai387yNSw0qBJBrt .node.clickable{cursor:pointer;}#mermaid-svg-ai387yNSw0qBJBrt .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ai387yNSw0qBJBrt .arrowheadPath{fill:#333333;}#mermaid-svg-ai387yNSw0qBJBrt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ai387yNSw0qBJBrt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ai387yNSw0qBJBrt .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ai387yNSw0qBJBrt .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ai387yNSw0qBJBrt .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ai387yNSw0qBJBrt .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ai387yNSw0qBJBrt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ai387yNSw0qBJBrt .cluster text{fill:#333;}#mermaid-svg-ai387yNSw0qBJBrt .cluster span{color:#333;}#mermaid-svg-ai387yNSw0qBJBrt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ai387yNSw0qBJBrt .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ai387yNSw0qBJBrt rect.text{fill:none;stroke-width:0;}#mermaid-svg-ai387yNSw0qBJBrt .icon-shape,#mermaid-svg-ai387yNSw0qBJBrt .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ai387yNSw0qBJBrt .icon-shape p,#mermaid-svg-ai387yNSw0qBJBrt .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ai387yNSw0qBJBrt .icon-shape .label rect,#mermaid-svg-ai387yNSw0qBJBrt .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ai387yNSw0qBJBrt .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ai387yNSw0qBJBrt .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ai387yNSw0qBJBrt :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
需求分析
查询架构定义
get_psmodel_info
检查是否已存在
fetch_model_info
查询示例
fetch_psmodel_samples
生成DSL代码
编译验证
compile_model_dsl
有错误?
修复DSL
构建模型
compile_model_dsl --build True
确认生效
get_model_dsl
💡 提问示例:
- "我想新建一个实体,完整的流程是怎样的?"
- "帮我在系统中新建一个'产品'实体,按标准流程走一遍"
- "新建模块需要哪些步骤?"
4.2 变更模型的标准流程
#mermaid-svg-HySsbB5ObkzrHQd3{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-HySsbB5ObkzrHQd3 .error-icon{fill:#552222;}#mermaid-svg-HySsbB5ObkzrHQd3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HySsbB5ObkzrHQd3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HySsbB5ObkzrHQd3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HySsbB5ObkzrHQd3 .marker.cross{stroke:#333333;}#mermaid-svg-HySsbB5ObkzrHQd3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HySsbB5ObkzrHQd3 p{margin:0;}#mermaid-svg-HySsbB5ObkzrHQd3 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 .cluster-label text{fill:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 .cluster-label span{color:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 .cluster-label span p{background-color:transparent;}#mermaid-svg-HySsbB5ObkzrHQd3 .label text,#mermaid-svg-HySsbB5ObkzrHQd3 span{fill:#333;color:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 .node rect,#mermaid-svg-HySsbB5ObkzrHQd3 .node circle,#mermaid-svg-HySsbB5ObkzrHQd3 .node ellipse,#mermaid-svg-HySsbB5ObkzrHQd3 .node polygon,#mermaid-svg-HySsbB5ObkzrHQd3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-HySsbB5ObkzrHQd3 .rough-node .label text,#mermaid-svg-HySsbB5ObkzrHQd3 .node .label text,#mermaid-svg-HySsbB5ObkzrHQd3 .image-shape .label,#mermaid-svg-HySsbB5ObkzrHQd3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-HySsbB5ObkzrHQd3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-HySsbB5ObkzrHQd3 .rough-node .label,#mermaid-svg-HySsbB5ObkzrHQd3 .node .label,#mermaid-svg-HySsbB5ObkzrHQd3 .image-shape .label,#mermaid-svg-HySsbB5ObkzrHQd3 .icon-shape .label{text-align:center;}#mermaid-svg-HySsbB5ObkzrHQd3 .node.clickable{cursor:pointer;}#mermaid-svg-HySsbB5ObkzrHQd3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-HySsbB5ObkzrHQd3 .arrowheadPath{fill:#333333;}#mermaid-svg-HySsbB5ObkzrHQd3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-HySsbB5ObkzrHQd3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-HySsbB5ObkzrHQd3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-HySsbB5ObkzrHQd3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-HySsbB5ObkzrHQd3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-HySsbB5ObkzrHQd3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-HySsbB5ObkzrHQd3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-HySsbB5ObkzrHQd3 .cluster text{fill:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 .cluster span{color:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-HySsbB5ObkzrHQd3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-HySsbB5ObkzrHQd3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-HySsbB5ObkzrHQd3 .icon-shape,#mermaid-svg-HySsbB5ObkzrHQd3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-HySsbB5ObkzrHQd3 .icon-shape p,#mermaid-svg-HySsbB5ObkzrHQd3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-HySsbB5ObkzrHQd3 .icon-shape .label rect,#mermaid-svg-HySsbB5ObkzrHQd3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-HySsbB5ObkzrHQd3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-HySsbB5ObkzrHQd3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-HySsbB5ObkzrHQd3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 更新主模型
局部补丁
删除
获取现有DSL
get_model_dsl
确定变更内容
变更类型
srf_model_action: update
srf_model_action: patch
srf_model_action: delete
编译验证
构建
确认生效
💡 提问示例:
- "我想修改一个已存在的实体,流程是什么?"
- "如何更新实体的属性?"
- "变更模型后怎么确认是否生效?"
5 常用速查
| 你想做什么 | 提问方式 |
|---|---|
| 查系统模块 | "系统有哪些模块?" |
| 查模块实体 | "Base模块下有哪些实体?" |
| 查实体详情 | "帮我看看 Base.DICTIONARY 的建模代码" |
| 查架构定义 | "PSDATAENTITY 是怎么定义的?" |
| 新建实体 | "帮我在Base模块下新建一个TAG实体" |
| 新建代码表 | "帮我创建一个订单状态的静态代码表" |
| 建实体关系 | "给TAG实体建立到DICTIONARY的关系" |
| 创建处理逻辑 | "为ORDER实体创建一个审核处理逻辑" |
| 更新模型 | "帮我更新DICTIONARY实体的描述" |
| 补丁更新 | "给处理逻辑附加一个新参数" |
| 删除模型 | "帮我把Base.TAG实体删除" |
| 编译构建 | "帮我编译并构建这段DSL代码" |
| 运行时校验 | "帮我做一次运行时模型校验" |
| 查示例 | "有没有虚拟实体的建模示例?" |
以上示例数据来自iBizAIFactory开源项目,可直接访问Modeling尝试AI助手