实体向导模型(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 模型关系图例

PSDATAENTITY
实体
PSDEWIZARD
实体向导
PSDEWIZARDSTEP
向导步骤
PSDEWIZARDFORM
向导表单
PSDEWIZARDLOGIC
向导逻辑
PSDEFORM
实体表单
PSDEACTION
实体行为
PSDELOGIC
PSDEUIACTION
PSSYSVIEWLOGIC
PSCTRLLOGICGROUP
PSSYSCSS
PSSYSPFPLUGIN

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示例系统,点击向导面板菜单查看全部向导面板示例
在这里插入图片描述

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/975bd8a9b0164d21b8a691b72e389598.png
通过最右侧的调试工具栏,可查看向导在iBizModeling工具中的详细配置
在这里插入图片描述

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体系中强大的业务流程建模工具,它通过标准化的模型定义和灵活的配置选项,为复杂业务场景提供了优雅的解决方案。该模型的核心价值在于:

  1. 用户体验优化:通过分步引导降低用户操作复杂度
  2. 业务流程标准化:确保操作流程符合业务规范
  3. 灵活的可配置性:支持动态步骤控制和逻辑表达式
  4. 强大的扩展能力:与iBizModel其他模型深度集成
  5. 状态管理支持:适用于需要状态跟踪的业务场景

在实际应用中,开发人员可以根据具体业务需求,通过组合不同的属性和逻辑控制,构建出既符合用户体验要求又能满足业务规则的向导式界面。实体向导模型的标准化设计也确保了项目的一致性和可维护性,是构建企业级应用的重要工具。