当前位置: 首页 > news >正文

iBizModel 实体通知(PSDENOTIFY)模型详解

iBizModel实体通知(PSDENOTIFY)模型详解

1. 实体通知模型概述

实体通知模型(PSDENOTIFY)是iBizModel模型体系中连接业务实体与消息系统的桥梁,它定义了当特定业务实体发生状态变化或满足特定条件时,系统如何触发通知机制。作为iBizModel消息系统的重要组成部分,PSDENOTIFY实现了业务逻辑与消息通信的解耦,使系统能够灵活地配置各种场景下的通知策略。

实体通知模型的核心价值在于:

  • 业务事件驱动:将业务实体的状态变化转化为可配置的通知事件
  • 多通道支持:通过消息类型枚举支持多种通知渠道
  • 定时触发能力:支持基于时间条件的自动通知
  • 任务集成:可与待办任务系统无缝集成
  • 灵活配置:通过模板和目标配置实现通知内容和接收者的动态化

在iBizModel架构中,PSDENOTIFY作为PSDATAENTITY(数据实体)的扩展模型,与PSSYSMSGQUEUE(消息队列)、PSSYSMSGTEMPL(消息模板)和PSSYSMSGTARGET(消息目标)等模型紧密协作,共同构建了企业级应用的消息通知基础设施。

2. 关键属性详细说明

2.1 PSDENOTIFY核心属性

2.1.1 基础标识属性
  • codename:代码名称,必填,作为模型的唯一代码标识
  • name:实体通知名称,必填,用于业务识别,需在模型域内唯一
  • psdeid:引用PSDATAENTITY,必填,指定该通知关联的业务实体
2.1.2 消息配置属性
  • pssysmsgqueueid:引用PSSYSMSGQUEUE,必填,指定消息发送的队列
  • pssysmsgtemplid:引用PSSYSMSGTEMPL,必填,指定消息内容模板
  • msgtype:通知消息类型,必填,枚举值(见下文详细说明)
2.1.3 时间相关属性
  • timermode:是否定时发送模式,必填,1表示是,0表示否
  • checktimer:定时通知的检查间隔,以分钟为单位
  • beginpsdefid:引用PSDEFIELD,指定当前实体的开始时间属性
  • endpsdefid:引用PSDEFIELD,指定当前实体的结束时间属性
  • notifystart:实体通知的起始通知时间间隔,以分钟为单位(相对于开始时间)
  • notifyend:实体通知的结束通知时间间隔,以分钟为单位
2.1.4 扩展配置属性
  • psdedsid:引用PSDEDATASET,指定定时发送的检查数据集
  • taskmode:实体通知任务模式,枚举值(见下文详细说明)
  • notifytag/notifytag2:通知标记,用于分类和过滤
  • pssyssfpluginid:引用PSSYSSFPLUGIN,后端扩展插件

2.2 关键枚举值详解

2.2.1 通知消息类型(msgtype)

该枚举定义了通知消息的发送渠道,支持位运算组合(如3=1+2表示同时发送系统消息和电子邮件):

名称说明
1系统消息通过系统内部消息中心发送
2电子邮件通过邮件系统发送
4手机短信通过短信网关发送
8MSN消息通过MSN即时通讯发送(历史遗留)
16内部IM消息通过企业内部即时通讯系统发送
32微信通过微信公众号/小程序发送
64钉钉通过钉钉机器人/应用发送
128企业微信通过企业微信应用发送
256用户自定义自定义消息通道
512用户自定义2第二种自定义消息通道

使用示例

  • msgtype: 1:仅发送系统内部消息
  • msgtype: 3:同时发送系统消息和电子邮件(1+2)
  • msgtype: 97:发送系统消息、钉钉和企业微信(1+64+128)
2.2.2 实体通知任务模式(taskmode)

该枚举定义了通知与任务系统的集成方式:

名称说明
0无任务仅发送通知,不创建任务
1待办任务同时建立通知用户的待办事项

应用场景

  • 审批流程:使用taskmode: 1创建待办任务,确保用户必须处理
  • 系统告警:使用taskmode: 0仅发送通知,无需用户确认

2.3 PSDENOTIFYTARGET关键属性

PSDENOTIFYTARGET是PSDENOTIFY的嵌套成员模型,定义了通知的接收目标:

  • name:通知目标名称,必填
  • targettype:实体通知目标类型,必填,枚举值(见下文)
  • pssysmsgtargetid:引用PSSYSMSGTARGET,系统消息目标
  • targetpsdefid:引用PSDEFIELD,目标标识属性
  • targettypepsdefid:引用PSDEFIELD,目标类型属性
2.3.1 实体通知目标类型(targettype)

该枚举定义了通知接收目标的获取方式:

名称说明
DEFIELD当前实体属性从当前业务实体的属性中获取目标
SYSMSGTARGET系统消息目标引用预定义的系统消息目标配置
USER用户自定义通过自定义逻辑确定目标

使用场景

  • DEFIELD:适用于通知发起人、负责人等固定角色
  • SYSMSGTARGET:适用于需要动态计算的目标,如角色成员、用户组
  • USER:适用于需要复杂逻辑确定目标的场景

3. 模型关系图例

1:N
1:N
1:N
0:1
1:N
1:N
N:1
N:N
0:1
0:1
PSDATAENTITY
业务实体
PSDENOTIFY
实体通知
PSSYSMSGQUEUE
消息队列
PSSYSMSGTEMPL
消息模板
PSSYSSFPLUGIN
后端插件
PSDENOTIFYTARGET
PSSYSMSGTARGET
消息目标
PSDEACTION
实体行为
PSDEACTIONLOGIC
行为附加逻辑
PSDELOGICNODE
逻辑节点

4. DSL建模示例

4.1 基础实体通知配置

//iBizModelDSL建模指令,目标:配置项目任务完成通知// 定义实体标识
def de_project_task = "ProjMgmt.PROJECT_TASK"
def mod_projmgmt = "ProjMgmt"
def mod_base = "Base"
def mod_wiki = "Wiki"// 项目任务完成通知
psdenotify(codename: "task_complete_notify",name: "任务完成通知",psdeid: de_project_task,pssysmsgqueueid: mod_base + ".Default",pssysmsgtemplid: mod_wiki + ".task_complete_template",msgtype: 3,  // 系统消息 + 电子邮件timermode: 0,validflag: 1,notifystart: 0,notifytag: "task",notifytag2: "completion"
) {// 通知目标:任务负责人psdenotifytarget(name: "任务负责人",targettype: "DEFIELD",targetpsdefid: de_project_task + ".ASSIGNEE_ID")// 通知目标:任务关注人psdenotifytarget(name: "任务关注人",targettype: "SYSMSGTARGET",pssysmsgtargetid: "ProjMgmt.task_followers")
}

4.2 定时提醒场景配置

//iBizModelDSL建模指令,目标:配置会议开始前提醒def de_meeting = "Calendar.MEETING"
def mod_calendar = "Calendar"
def mod_base = "Base"
def mod_wiki = "Wiki"// 会议开始前15分钟提醒
psdenotify(codename: "meeting_reminder_15min",name: "会议开始前15分钟提醒",psdeid: de_meeting,pssysmsgqueueid: mod_base + ".Default",pssysmsgtemplid: mod_wiki + ".meeting_reminder_template",msgtype: 97,  // 系统消息 + 钉钉 + 企业微信timermode: 1,  // 定时模式checktimer: 5,  // 每5分钟检查一次beginpsdefid: de_meeting + ".START_TIME",notifystart: 15,  // 提前15分钟validflag: 1,notifytag: "meeting",notifytag2: "reminder"
) {// 通知目标:参会人员psdenotifytarget(name: "参会人员",targettype: "SYSMSGTARGET",pssysmsgtargetid: "Calendar.meeting_participants")
}// 会议开始前1小时提醒
psdenotify(codename: "meeting_reminder_1hour",name: "会议开始前1小时提醒",psdeid: de_meeting,pssysmsgqueueid: mod_base + ".Default",pssysmsgtemplid: mod_wiki + ".meeting_reminder_template",msgtype: 3,  // 系统消息 + 电子邮件timermode: 1,checktimer: 10,beginpsdefid: de_meeting + ".START_TIME",notifystart: 60,validflag: 1
) {psdenotifytarget(name: "参会人员",targettype: "SYSMSGTARGET",pssysmsgtargetid: "Calendar.meeting_participants")
}

4.3 任务集成场景配置

//iBizModelDSL建模指令,目标:配置审批任务通知def de_approval = "Workflow.APPROVAL"
def mod_workflow = "Workflow"
def mod_base = "Base"
def mod_wiki = "Wiki"// 审批任务创建通知
psdenotify(codename: "approval_task_created",name: "审批任务创建通知",psdeid: de_approval,pssysmsgqueueid: mod_base + ".Default",pssysmsgtemplid: mod_wiki + ".approval_task_template",msgtype: 1,  // 仅系统消息timermode: 0,taskmode: 1,  // 创建待办任务validflag: 1,notifytag: "approval",notifytag2: "task"
) {// 通知目标:审批人psdenotifytarget(name: "审批人",targettype: "DEFIELD",targetpsdefid: de_approval + ".APPROVER_ID")
}

4.4 多通道通知配置

//iBizModelDSL建模指令,目标:配置系统告警多通道通知def de_system_alert = "Monitor.SYSTEM_ALERT"
def mod_monitor = "Monitor"
def mod_base = "Base"
def mod_wiki = "Wiki"// 高危系统告警通知
psdenotify(codename: "system_alert_high",name: "高危系统告警通知",psdeid: de_system_alert,pssysmsgqueueid: mod_base + ".AlertQueue",pssysmsgtemplid: mod_wiki + ".system_alert_high_template",msgtype: 103,  // 系统消息 + 短信 + 钉钉 + 企业微信 (1+4+64+128=197)timermode: 0,validflag: 1,notifytag: "alert",notifytag2: "high"
) {// 通知目标:运维团队psdenotifytarget(name: "运维团队",targettype: "SYSMSGTARGET",pssysmsgtargetid: "Monitor.ops_team")// 通知目标:值班经理psdenotifytarget(name: "值班经理",targettype: "SYSMSGTARGET",pssysmsgtargetid: "Monitor.duty_manager")
}// 一般系统告警通知
psdenotify(codename: "system_alert_normal",name: "一般系统告警通知",psdeid: de_system_alert,pssysmsgqueueid: mod_base + ".Default",pssysmsgtemplid: mod_wiki + ".system_alert_normal_template",msgtype: 3,  // 系统消息 + 电子邮件timermode: 0,validflag: 1
) {psdenotifytarget(name: "运维团队",targettype: "SYSMSGTARGET",pssysmsgtargetid: "Monitor.ops_team")
}

5. 总结

iBizModel实体通知模型(PSDENOTIFY)作为连接业务实体与消息系统的桥梁,为企业应用提供了灵活、可配置的通知机制。通过深入理解其关键属性和枚举值,结合实际业务场景进行合理配置,可以实现以下价值:

业务价值

  • 提升用户体验:及时准确的通知增强用户参与度
  • 提高工作效率:关键业务事件的自动提醒减少人工跟踪
  • 加强流程管控:与任务系统的集成确保业务流程的顺利推进
  • 降低运营风险:重要事件的多通道通知确保信息不遗漏

技术优势

  • 模型驱动:基于iBizModelDSL的声明式配置,降低开发复杂度
  • 灵活扩展:支持多种消息渠道和自定义扩展
  • 与业务解耦:通知逻辑与核心业务逻辑分离,提高系统可维护性
  • 丰富的集成点:通过PSDEACTIONLOGIC和PSDELOGICNODE无缝集成业务流程

最佳实践

  1. 分层设计:根据业务重要性设计不同级别的通知策略
  2. 合理使用定时:避免过于频繁的定时检查影响系统性能
  3. 多通道组合:根据场景重要性选择适当的消息渠道组合
  4. 标记分类:善用notifytag和notifytag2进行通知分类管理
  5. 模板复用:设计通用模板并通过参数实现内容定制
http://www.dtcms.com/a/494467.html

相关文章:

  • mysql函数大全及举例
  • 人工智能综合项目开发3-----农业病虫害识别dataclean.py
  • R语言手搓一个计算生存分析C指数(C-index)的函数算法
  • 使用leaflet库加载服务器离线地图瓦片(这边以本地nginx服务器为例)
  • 无状态协议HTTP/HTTPS (笔记)
  • 模式识别与机器学习课程笔记(8):特征提取与选择
  • python+uniapp基于微信美食点餐系统小程序
  • 【邀请函】锐成信息 × Sectigo | CLM - SSL 证书自动化运维解决方案发布会
  • 基于MATLAB实现基于距离的离群点检测算法
  • 冠县网站建设电话wordpress插件 电商
  • 【Android】RecyclerView LayoutManager 重写方法详解
  • 数据流通合规新基建 隐私计算平台的三重安全防线
  • MySQL-2--数据库的查询
  • 微信公众号商城网站开发wordpress 留言板制作
  • 虚幻基础:角色旋转控制角色视角控制
  • 【轨物方案】智慧供暖全景运营物联网解决方案
  • 超越“接收端”:解析视频推拉流EasyDSS在RTMP推流生态中的核心价值与中流砥柱作用
  • 自助建站上建的网站免费吗信息技术网站建设专业
  • 融合SpringBoot3和Vue3工程
  • 怎么学做网站制作商水县住房城乡建设网站
  • 16-机器学习与大模型开发数学教程-第1章 1-8 泰勒展开与高阶近似
  • 【学习系列】SAP RAP 6:行为定义-Concurrency Control
  • docker 运行容器限制 CPU
  • Python自动化从入门到实战(24)如何高效的备份mysql数据库,数据备份datadir目录直接复制可行吗?一篇给小白的完全指南
  • 个人可以备案网站的内容国外直播平台tiktok
  • C语言也能干大事网站开发pdf企业网站管理系统多站多语言版
  • 清理页面缓存
  • YD925输出5V,高性价比的非隔离电源方案详细介绍
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十二)Python编程之常用模块
  • SQL注入完全攻略:从手工注入到自动化工具的渗透实战