iBizModel 视图消息(PSVIEWMSG)及视图消息组(PSVIEWMSGGROUP)模型详解
本文详细介绍了iBizModel中的视图消息管理系统,包含三个核心模型:PSVIEWMSG(视图消息)、PSVIEWMSGGROUP(视图消息组)及其成员模型PSVIEWMSGGRPDETAIL。视图消息支持静态/动态内容展示,提供多种消息类型、显示位置和触发机制;消息组用于聚合管理多个消息,支持统一样式配置;成员模型则定义消息在组内的具体配置。系统通过模块化设计实现消息的智能触发、动态更新和权限
iBizModel 视图消息(PSVIEWMSG)及视图消息组(PSVIEWMSGGROUP)模型详解
下文是对iBizModel中视图消息(PSVIEWMSG)、视图消息组(PSVIEWMSGGROUP)及其成员模型(PSVIEWMSGGRPDETAIL)的全面介绍。内容涵盖模型定义、核心属性、应用场景、模型关系图例及完整DSL示例,旨在为系统建模提供详细指导。
下图是视图消息示例界面,访问iBizAppHUB示例系统,点击视图消息
可看到相关的示例。注意:右侧的调试工具栏可以进入对应的视图,查看具体的模型配置
一、视图消息模型(PSVIEWMSG)详解
1.1 模型定义与核心功能
视图消息模型(PSVIEWMSG)是iBizModel中用于管理用户界面消息的核心组件,支持静态内容与动态数据驱动的消息展示。它允许开发者在系统视图的不同位置(如顶部、底部、内容区或弹出窗口)显示各类信息(如常规信息、警告、错误或自定义类型),并具备灵活的启用、缓存和关闭机制。该模型通过集成实体数据集(PSDEDATASET)、操作标识(PSDEOPPRIV)和业务逻辑(PSDELOGIC),实现消息的智能化触发与内容动态更新。
1.2 属性与枚举详解
-
关键属性:
codename
与name
:唯一标识与名称,确保在模型域内唯一。dynamicmode
:动态模式(0-静态内容;1-实体数据集),决定消息内容来源。msgpos
:消息位置(TOP-视图上方;BOTTOM-视图下方;BODY-内容区;POPUP-弹出;CUSTOM-自定义)。msgtype
:消息类型(INFO-常规;WARN-警告;ERROR-错误;CUSTOM-自定义)。enablemode
:启用模式(ALL-全部启用;DEOPPRIV-基于操作标识;DELOGIC-基于实体逻辑;SCRIPT-脚本控制)。enableremove
:关闭模式(0-无关闭;1-默认关闭;2-本次关闭)。timeout
:显示时长(毫秒,-1为永久)。- 数据源属性(如
psdedsid
引用实体数据集)和样式属性(如pssyscssid
引用样式表)。
-
枚举类型:
- 内容类型:
TEXT
(纯文本)、HTML
(网页)、MARKDOWN
(标记语言)、USER
(用户自定义),适应多样化内容需求。 - 动态模式:静态内容直接定义,动态模式从实体数据集实时拉取。
- 启用与关闭逻辑:通过操作标识或业务逻辑精确控制消息显示条件。
- 内容类型:
1.3 应用场景
- 静态消息通知:用于固定提示,如系统公告、操作指南(例如,“欢迎使用本系统,请先阅读用户手册”)。
- 动态数据驱动消息:基于实体数据变化触发消息,如库存预警(当库存低于阈值时自动显示警告)。
- 权限相关消息:结合
PSDEOPPRIV
,仅对具备特定操作权限的用户显示消息(如管理员专属提示)。 - 交互式消息:通过
POPUP
位置实现模态弹窗,用于关键操作确认或错误反馈。 - 多语言支持:集成语言资源属性(如
titlelanrestagpsdefid
),实现消息内容国际化。
1.4 模型关系
- 父模型:
PSMODULE
(系统模块),通过psmoduleid
关联,实现模块化消息管理。 - 外部引用:
PSVIEWMSGGRPDETAIL
通过psviewmsgid
引用视图消息,将其纳入消息组。 - 依赖模型:
PSDEDATASET
:提供动态消息数据源。PSSYSCSS
与PSSYSIMAGE
:定义消息样式与图标。PSDELOGIC
:用于启用条件判断。
1.5 消息视图自定义面板
视图消息可指定布局面板pssysviewpandlid
,下面的布局面板放入了属性项:name
,fieldname
。
pssysviewpanel(codename: "LayoutPanel", name: "视图消息_布局面板", viewlayoutflag: 1, publicflag: 1, mobflag: 1, bodyonlyflag: 0, psdeid: de_master){
pssysviewpanelitem(showcaption: 0, flexvalign: "center", itemtype: "CONTAINER", layoutmode: "FLEX", name: "CONTAINER", caption: "容器", flexdir: "row", id: "CONTAINER", flexalign: "flex-start"){
pssysviewpanelitem(itemtype: "RAWITEM", rawcontent: "名称:", predefinedtype: "STATIC_TEXT", name: "STATIC_TEXT", caption: "文本", id: "STATIC_TEXT", rendermode: "TEXT", contenttype: "RAW")
pssysviewpanelitem(fieldname: "name", itemtype: "FIELD", rawcontent: "文本(动态)", predefinedtype: "FIELD_TEXT_DYNAMIC", name: "FIELD_TEXT_DYNAMIC", editortypename: "标签", caption: "文本(动态)", id: "FIELD_TEXT_DYNAMIC", editortype: "SPAN", rendermode: "TEXT_DYNAMIC")
}
pssysviewpanelitem(showcaption: 0, flexvalign: "center", itemtype: "CONTAINER", layoutmode: "FLEX", name: "CONTAINER1", caption: "容器", flexdir: "row", id: "CONTAINER1", flexalign: "flex-start"){
pssysviewpanelitem(itemtype: "RAWITEM", rawcontent: "描述:", predefinedtype: "STATIC_TEXT", name: "STATIC_TEXT1", caption: "文本", id: "STATIC_TEXT1", rendermode: "TEXT", contenttype: "RAW")
pssysviewpanelitem(fieldname: "description", itemtype: "FIELD", rawcontent: "文本(动态)", predefinedtype: "FIELD_TEXT_DYNAMIC", name: "FIELD_TEXT_DYNAMIC1", editortypename: "标签", caption: "文本(动态)", id: "FIELD_TEXT_DYNAMIC1", editortype: "SPAN", rendermode: "TEXT_DYNAMIC")
}
}
二、视图消息组模型(PSVIEWMSGGROUP)详解
2.1 模型定义与核心功能
视图消息组模型(PSVIEWMSGGROUP)用于聚合多个视图消息,提供统一的管理和显示控制。它支持静态或动态模式,允许对组内消息进行整体样式配置(如头部、内容区、尾部的显示模式),并广泛应用于系统视图、应用菜单、图表等UI组件。通过动态模式,消息组可以基于实体数据或业务逻辑实时更新成员消息。
2.2 属性与枚举详解
-
关键属性:
codename
与name
:组标识与名称,确保唯一性。dynamicmode
:动态模式(1-启用;0-禁用),控制组内消息是否动态加载。- 样式属性:
topmsgstyle
、bodymsgstyle
、bottommsgstyle
分别定义头部、内容区、尾部消息的显示模式,并引用PSSYSCSS
样式表。 - 关联属性:
psdeid
(相关实体)、psmoduleid
(所属模块)。
-
枚举类型:
- 视图消息显示模式:
LIST
(列表显示)、MARQUEE
(横向滚动)、MARQUEE2
(纵向滚动)、USER
(用户自定义),适应不同布局需求。
- 视图消息显示模式:
2.3 应用场景
- 统一消息管理:在复杂视图中(如仪表板或表单),将多个消息组合并显示,避免界面混乱。
- 动态消息聚合:例如,在销售看板中,动态组合库存预警、订单状态更新等消息。
- 样式一致性:通过组级样式配置,确保消息在多个视图中的显示风格统一。
- 权限集成:结合引用模型(如
PSAPPVIEW
),实现基于用户角色的消息组显示。
2.4 模型关系
- 父模型:
PSMODULE
(系统模块),通过psmoduleid
关联。 - 成员模型:
PSVIEWMSGGRPDETAIL
作为嵌套成员,定义组内消息列表。 - 外部引用:被超过20个核心模型引用,包括:
- UI组件:
PSDEGRID
(实体表格)、PSDEFORM
(实体表单)、PSDETREEVIEW
(实体树部件)。 - 应用结构:
PSSYSAPP
(应用程序)、PSAPPVIEW
(应用视图)。 - 智能报表:
PSSYSBIREPORT
。 - 系统部件:
PSSYSDASHBOARD
(数据看板)、PSSYSCALENDAR
(日历部件)。
- UI组件:
三、视图消息组成员模型(PSVIEWMSGGRPDETAIL)
3.1 模型定义
视图消息组成员模型(PSVIEWMSGGRPDETAIL)是连接视图消息与消息组的桥梁,定义消息在组内的具体配置。每个视图消息只能被加入一个消息组一次,确保管理的唯一性。关键属性包括:
psviewmsgid
:必填,引用PSVIEWMSG
。msgpos
:可覆盖消息的默认显示位置。ordervalue
:指定组内排序,控制消息显示顺序。
3.2 应用场景
- 消息优先级控制:通过
ordervalue
调整关键消息的显示顺序(如错误消息优先)。 - 位置重写:在特定组中覆盖消息的默认位置(例如,将原本在顶部的消息改为在内容区显示)。
四、模型关系图例
以下Mermaid图展示了视图消息相关模型的层级关系与外部引用:
- 说明:
PSMODULE
作为父模型,管理PSVIEWMSG
和PSVIEWMSGGROUP
。PSVIEWMSGGROUP
通过PSVIEWMSGGRPDETAIL
聚合PSVIEWMSG
。PSVIEWMSGGROUP
被多个UI和应用模型引用,体现其广泛集成性。PSVIEWMSG
依赖数据集、操作标识等模型实现动态功能。
五、完整DSL示例
以下示例展示如何定义视图消息、消息组及其成员,涵盖静态与动态场景。代码严格遵循iBizModelDSL规范,确保可执行性。
//iBizModelDSL建模指令,目标:定义系统视图消息及消息组
def mod_example = "example_module"
def de_inventory = "example.INVENTORY"
def ds_alert = "example.INVENTORY.ALERT_DATA"
// 定义静态视图消息:库存操作指南
psviewmsg(
psmoduleid: mod_example,
dynamicmode: 0,
msgpos: "TOP",
codename: "inventory_guide",
name: "库存管理指南",
msgtype: "INFO",
content: "请定期检查库存水平,避免缺货。",
timeout: 5000,
enableremove: 2
)
// 定义动态视图消息:库存预警(从数据集获取)
psviewmsg(
psmoduleid: mod_example,
dynamicmode: 1,
msgpos: "BODY",
codename: "low_stock_alert",
name: "低库存预警",
msgtype: "WARN",
psdedsid: ds_alert,
psdeid: de_inventory,
enablecache: 1,
cachetimeout: 300000,
enablemode: "DELOGIC",
testpsdelogicid: "example.INVENTORY.CHECK_STOCK"
)
// 定义视图消息组:库存监控面板
psviewmsggroup(
psmoduleid: mod_example,
dynamicmode: 1,
codename: "inventory_monitor_group",
name: "库存监控消息组",
topmsgstyle: "MARQUEE",
bodymsgstyle: "LIST",
bottommsgstyle: "USER"
) {
// 添加静态指南消息
psviewmsggrpdetail(
ordervalue: 10,
msgpos: "TOP",
psviewmsgid: "example_module.inventory_guide"
)
// 添加动态预警消息
psviewmsggrpdetail(
ordervalue: 20,
msgpos: "BODY",
psviewmsgid: "example_module.low_stock_alert"
)
}
// 关联消息组到实体表格(示例)
psdegrid(
psmoduleid: mod_example,
codename: "inventory_grid",
name: "库存表格",
psviewmsggroupid: "example_module.inventory_monitor_group"
)
- 示例解析:
- 静态消息:
inventory_guide
显示在视图顶部,内容固定,5秒后自动关闭,支持本次关闭模式。 - 动态消息:
low_stock_alert
从实体数据集ALERT_DATA
获取内容,启用缓存(5分钟失效),并通过业务逻辑CHECK_STOCK
控制启用条件。 - 消息组:
inventory_monitor_group
动态模式启用,头部消息横向滚动,内容区列表显示,尾部自定义。 - 集成应用:消息组被关联到库存表格(
PSDEGRID
),实现消息在UI中的自动展示。
- 静态消息:
六、总结
视图消息与视图消息组模型是iBizModel中UI交互层的核心设计,通过静态与动态结合、权限与逻辑集成,提升了系统消息的灵活性与用户体验。应用场景覆盖从简单提示到复杂业务预警,模型关系确保与系统模块、实体、UI组件的无缝衔接。开发者可通过DSL示例快速实现消息管理,遵循规范避免常见错误。在实际建模中,建议结合具体业务需求调整属性配置,充分利用缓存和动态特性优化性能。
更多推荐
所有评论(0)