实体向导模型(PSDEWIZARD)详细介绍
1. 实体向导模型概述
实体向导模型(PSDEWIZARD)是iBizModel模型体系中的重要组成部分,专门用于定义和管理多步骤数据操作流程。该模型通过将复杂的业务操作分解为多个逻辑步骤,为用户提供清晰的导航和操作指引,显著提升用户体验和操作效率。
实体向导模型适用于需要分步完成的数据录入、业务流程处理、系统配置等场景。它通过可视化的步骤指示、逻辑控制和状态管理,确保用户能够按照预定流程完成操作,同时保证数据的完整性和业务规则的一致性。
2. 应用场景分析
2.1 数据录入与表单填写
在复杂的数据录入场景中,实体向导可以将庞大的表单拆分为多个逻辑相关的步骤。例如:
- 用户注册流程:个人信息→联系方式→偏好设置→确认提交
- 订单创建流程:商品选择→收货信息→支付方式→订单确认
- 项目申报流程:基本信息→项目详情→附件上传→审批流程
2.2 业务流程审批
对于需要多级审批的业务场景,实体向导可以清晰地展示审批流程:
- 请假申请:申请填写→部门审批→人事备案→最终确认
- 采购流程:需求申请→预算审核→采购执行→验收确认
- 合同审批:合同起草→法务审核→财务审核→领导审批
2.3 系统配置与初始化
在系统初始化和配置过程中,实体向导引导用户完成必要的设置:
- 系统安装向导:数据库配置→管理员设置→基础数据导入→完成安装
- 个性化配置:界面主题→权限设置→工作流配置→通知设置
2.4 状态驱动的业务流程
对于需要状态跟踪的业务流程,实体向导提供状态管理功能:
- 项目生命周期管理:立项→执行→监控→验收→归档
- 故障处理流程:报修→分配→处理→验证→关闭
3. 模型架构与关系
3.1 核心模型结构
实体向导模型采用分层架构设计,核心模型包括:
PSDEWIZARD(实体向导):顶层模型,定义向导的基本属性和全局配置
- 标识属性:codename(代码标识)
- 关键属性:name(名称)、psdeid(所属实体)
- 控制属性:statewizardflag(状态向导标志)、wizardstyle(向导样式)
PSDEWIZARDSTEP(向导步骤):定义向导的步骤信息
- 排序属性:ordervalue(显示次序)
- 标识属性:steptag(步骤标记)
- 控制属性:enablelogic(启用逻辑)、visiblelogic(可见逻辑)
PSDEWIZARDFORM(向导表单):关联具体的操作界面
- 关联属性:psdeformid(实体表单引用)
- 行为属性:stepactions(支持的操作步骤)
- 逻辑属性:nextenablelogic(下一步启用逻辑)
PSDEWIZARDLOGIC(向导逻辑):定义向导的业务逻辑
- 触发机制:triggertype(触发类型)
- 执行目标:dstlogictype(目标逻辑类型)
- 扩展支持:customcode(自定义代码)
3.2 模型关系图例
3.3 外部依赖关系
实体向导模型与iBizModel体系中的多个模型存在依赖关系:
- PSDATAENTITY:向导所属的实体,提供数据基础
- PSDEFORM:具体的表单界面定义
- PSDEACTION:向导各步骤的操作行为
- PSDELOGIC:业务逻辑处理
- PSCTRLLOGICGROUP:界面逻辑组控制
- PSSYSCSS:样式定义支持
4. 核心属性详解
4.1 PSDEWIZARD关键属性
标识属性组:
codename:必填,向导的代码标识,在所属实体中必须唯一name:必填,向导的显示名称psdeid:必填,引用所属的PSDATAENTITY实体
行为控制属性:
statewizardflag:是否启用状态向导模式(1-是,0-否)wizardstyle:向导样式枚举(DEFAULT、STYLE2、STYLE3、STYLE4)busyindicator:是否显示处理提示enablemslogic:是否启用主状态逻辑
操作文本属性:
nextcaption:下一步操作标题prevcaption:上一步操作标题finishcaption:完成操作标题
逻辑引用属性:
initpsdeactionid:初始化实体行为引用finishpsdeactionid:完成操作实体行为引用statepsdefid:状态属性引用(状态向导模式使用)
4.2 PSDEWIZARDSTEP步骤属性
步骤定义属性:
steptag:必填,步骤标记,在向导内唯一name:必填,步骤标题ordervalue:必填,显示次序subtitle:步骤子标题
逻辑控制属性:
enablelogic:启用逻辑表达式visiblelogic:可见逻辑表达式stepaction:步骤行为枚举(PREV、NEXT、FINISH)
界面增强属性:
pssyscssid:标题样式引用pssysimageid:标题图片引用
4.3 PSDEWIZARDFORM表单属性
表单关联属性:
psdeformid:必填,引用的实体表单formtag:必填,表单标记,在向导内唯一psdewizardstepid:关联的向导步骤
操作行为属性:
stepactions:必填,支持的操作步骤枚举组合firstform:是否为首个显示表单loadpsdeactionid:加载操作引用savepsdeactionid:保存操作引用
逻辑控制属性:
nextenablelogic:下一步启用逻辑prevenablelogic:上一步启用逻辑finishenablelogic:完成启用逻辑
4.4 PSDEWIZARDLOGIC逻辑属性
触发机制属性:
triggertype:必填,逻辑触发类型枚举timer:定时器间隔(定时器触发时使用)eventnames:事件名称(事件触发时使用)
执行目标属性:
dstlogictype:必填,目标逻辑类型枚举psdelogicid:界面处理逻辑引用pssysviewlogicid:系统界面逻辑引用
扩展支持属性:
customcode:自定义代码pssyspfpluginid:前端扩展插件引用
5. DSL代码详解与示例
5.1 基础向导DSL示例分析
//iBizModelDSL建模指令,目标:创建基础实体向导
def de_master = "mock.MASTER"
psdewizard(codename: "Wizard_base_Wizard", name: "向导_基础_向导", finishpsdeactionid: de_master + ".Get", nextcaption: "下一步", psdeid: de_master, finishcaption: "完成", prevcaption: "上一步") {
// 第一步表单定义
psdewizardform(savepsdeactionid: de_master + ".Get", firstform: 1, stepactions: "NEXT", name: "step1", formtag: "step1", loadpsdeactionid: de_master + ".Get", psdeformid: de_master + ".step1", psdewizardstepid: "step1")
// 第二步表单定义
psdewizardform(savepsdeactionid: de_master + ".Get", firstform: 0, stepactions: "PREV;NEXT", name: "step2", formtag: "step2", loadpsdeactionid: de_master + ".Get", psdeformid: de_master + ".step2", psdewizardstepid: "step2")
// 第三步表单定义
psdewizardform(savepsdeactionid: de_master + ".Get", firstform: 0, stepactions: "PREV;FINISH", name: "step3", formtag: "step3", loadpsdeactionid: de_master + ".Get", psdeformid: de_master + ".step3", psdewizardstepid: "step3")
// 步骤定义 - 第一步
psdewizardstep(ordervalue: 100, name: "step1", id: "step1", steptag: "step1")
// 步骤定义 - 第二步
psdewizardstep(ordervalue: 110, name: "step2", id: "step2", steptag: "step2")
// 步骤定义 - 第三步
psdewizardstep(ordervalue: 120, name: "step3", id: "step3", steptag: "step3")
}
代码解析:
- 创建了一个三步骤的基础向导,每个步骤对应一个表单
firstform: 1标识第一个表单为初始显示表单stepactions定义每个表单支持的操作按钮组合- 步骤通过
ordervalue控制显示顺序
5.2 逻辑控制向导DSL示例
//iBizModelDSL建模指令,目标:创建带逻辑控制的实体向导
def de_master = "mock.MASTER"
psdewizard(codename: "Wizard_logic", name: "向导_启用逻辑", finishpsdeactionid: de_master + ".mock_create", nextcaption: "下一步", initpsdeactionid: de_master + ".CreateTemp", psdeid: de_master, finishcaption: "完成", prevcaption: "上一步") {
// 第一步表单 - 包含下一步启用逻辑
psdewizardform(savepsdeactionid: de_master + ".UpdateTemp", firstform: 1, nextenablelogic: "data.name", stepactions: "NEXT", name: "向导表单1", formtag: "step1", loadpsdeactionid: de_master + ".GetTemp", psdeformid: de_master + ".wizardform4", psdewizardstepid: "step1")
// 第二步表单 - 包含上一步启用逻辑
psdewizardform(savepsdeactionid: de_master + ".UpdateTemp", firstform: 0, stepactions: "PREV;NEXT", name: "向导表单2", prevenablelogic: "!data.quantity", formtag: "step2", loadpsdeactionid: de_master + ".GetTemp", psdeformid: de_master + ".wizardform5", psdewizardstepid: "step2")
// 第三步表单 - 包含完成启用逻辑
psdewizardform(savepsdeactionid: de_master + ".UpdateTemp", firstform: 0, stepactions: "PREV;FINISH", name: "向导表单3", formtag: "step3", loadpsdeactionid: de_master + ".GetTemp", psdeformid: de_master + ".wizardform6", finishenablelogic: "data.description", psdewizardstepid: "step3")
// 步骤定义
psdewizardstep(ordervalue: 100, name: "步骤1", id: "step1", steptag: "step1")
psdewizardstep(ordervalue: 110, name: "步骤2", id: "step2", steptag: "step2")
psdewizardstep(ordervalue: 120, name: "步骤3", id: "step3", steptag: "step3")
}
逻辑控制特性:
nextenablelogic: "data.name":只有当data.name有值时才启用下一步prevenablelogic: "!data.quantity":当data.quantity为空时才启用上一步finishenablelogic: "data.description":根据描述内容控制完成按钮
5.3 状态向导DSL示例
//iBizModelDSL建模指令,目标:创建状态管理的实体向导
def de_master = "mock.MASTER"
psdewizard(statewizardflag: 1, codename: "Wizard_state", name: "向导_状态向导", finishpsdeactionid: de_master + ".mock_create", nextcaption: "下一步", initpsdeactionid: de_master + ".initwizard", psdeid: de_master, finishcaption: "完成", prevcaption: "上一步", statepsdefid: de_master + ".WIZARD_STATE") {
// 第一步表单
psdewizardform(savepsdeactionid: de_master + ".UpdateTemp", firstform: 1, stepactions: "NEXT", name: "向导表单1", formtag: "step1", loadpsdeactionid: de_master + ".GetTemp", psdeformid: de_master + ".wizardform7", psdewizardstepid: "step1")
// 第二步表单
psdewizardform(savepsdeactionid: de_master + ".UpdateTemp", firstform: 0, stepactions: "NEXT", name: "向导表单2", formtag: "step2", loadpsdeactionid: de_master + ".GetTemp", psdeformid: de_master + ".wizardform8", psdewizardstepid: "step2")
// 第三步表单 - 包含特殊的上一步操作
psdewizardform(prevpsdeactionid: de_master + ".back", savepsdeactionid: de_master + ".UpdateTemp", firstform: 0, stepactions: "PREV;FINISH", name: "向导表单3", formtag: "step3", loadpsdeactionid: de_master + ".GetTemp", psdeformid: de_master + ".wizardform9", psdewizardstepid: "step3")
// 步骤定义
psdewizardstep(ordervalue: 100, name: "步骤1", id: "step1", steptag: "step1")
psdewizardstep(ordervalue: 110, name: "步骤2", id: "step2", steptag: "step2")
psdewizardstep(ordervalue: 120, name: "步骤3", id: "step3", steptag: "step3")
}
状态管理特性:
statewizardflag: 1:启用状态向导模式statepsdefid: de_master + ".WIZARD_STATE":引用状态属性prevpsdeactionid: de_master + ".back":自定义的上一步操作行为
5.4 更多示例
更多示例请访问iBizAppHUB示例系统,点击向导面板菜单查看全部向导面板示例

6. 高级功能与最佳实践
6.1 动态步骤控制
通过逻辑表达式实现步骤的动态显示和启用控制:
// 基于业务条件的步骤控制示例
psdewizardstep(ordervalue: 100, name: "基础信息", enablelogic: "true", visiblelogic: "true", steptag: "basic")
psdewizardstep(ordervalue: 200, name: "高级设置", enablelogic: "data.userType == 'ADMIN'", visiblelogic: "data.needAdvanced == true", steptag: "advanced")
psdewizardstep(ordervalue: 300, name: "审批流程", enablelogic: "data.amount > 10000", visiblelogic: "data.requireApproval == true", steptag: "approval")
6.2 表单验证与业务规则
集成值规则和业务逻辑验证:
// 表单级别的验证控制
psdewizardform(
psdeformid: "mock.MASTER.form1",
stepactions: "NEXT",
nextenablelogic: "data.field1 != null && data.field2.length() > 0",
formtag: "form1"
)
7. 总结
实体向导模型(PSDEWIZARD)是iBizModel体系中强大的业务流程建模工具,它通过标准化的模型定义和灵活的配置选项,为复杂业务场景提供了优雅的解决方案。该模型的核心价值在于:
- 用户体验优化:通过分步引导降低用户操作复杂度
- 业务流程标准化:确保操作流程符合业务规范
- 灵活的可配置性:支持动态步骤控制和逻辑表达式
- 强大的扩展能力:与iBizModel其他模型深度集成
- 状态管理支持:适用于需要状态跟踪的业务场景
在实际应用中,开发人员可以根据具体业务需求,通过组合不同的属性和逻辑控制,构建出既符合用户体验要求又能满足业务规则的向导式界面。实体向导模型的标准化设计也确保了项目的一致性和可维护性,是构建企业级应用的重要工具。
浙公网安备 33010602011771号