消息通知组件
消息通知组件(Notification)用于在流程中向指定接收人发送消息通知。
概述
消息通知组件基于预先配置好的通知消息模板发送通知。配置时先选择模板,再选择发送人与接收人,并可附加跳转链接与通知场景,便于接收人快速定位业务并归类消息。
配置项
| 配置项 | 说明 |
|---|---|
| 通知消 息模板 | 发送所使用的消息模板,必填,下拉可搜索 |
| 发送人 | 通知的发送人,必填,缺省为「系统」 |
| 接收人类型 | 接收人的确定方式,必填,缺省为「当前登陆人」 |
| 选择接收人 | 接收人类型为「直接选人」时配置,必填 |
| 链接地址 | 通知中附带的跳转链接 |
| 通知场景 | 通知的场景分类,便于按场景筛选或批量关闭通知 |
| 输出到最终结果 | 开启后该组件结果作为接口返回值 |
发送人取值
| 界面名称 | 值(SenderType) | 说明 |
|---|---|---|
| 系统 | System | 以系统身份发送,缺省值 |
| 当前登录人 | CurrentLoginUser | 以当前登录用户身份发送 |
接收人类型取值
| 界面名称 | 值(ReceiverType) | 说明 |
|---|---|---|
| 当前登陆人 | 0 | 发送给当前登录用户,缺省值 |
| 直接选人 | 1 | 手动指定接收人,支持用户、组织、身份、角色等 |
| 上下文参数获取 (NotifyUserIds) | 2 | 从流程上下文的 NotifyUserIds 参数中获取接收人 |
直接选人
接收人类型为「直接选人」时,可通过接收人选择器指定接收范围,支持以下选人方式:
| 选人方式 | 说明 |
|---|---|
| 用户 | 直接选择具体用户 |
| 组织 | 选择组织机构,其成员作为接收人 |
| 身份 | 按身份选择用户 |
| 角色 | 按角色选择用户 |
| 组织负责人 | 选择组织负责人 |
| 动态选人 | 按动态规则选人 |
| 接口选人 | 由指定的平台接口动态返回接收人 |
使用场景
- 审批结果通知
- 任务分派提醒
- 业务事件变更通知
下一步
属性明细
以下内容面向技术实现与 AI 检索,说明消息通知组件的节点元 数据。
节点元数据
消息通知组件由 FlowCmpType.Notification 标识:
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
type | string | 组件类型 | 固定为 "Notification" |
MessageTemplateId | string(GUID) | 通知消息模板 id | 模板 id,必填 |
SenderType | string | 发送人 | "System"(缺省)/ "CurrentLoginUser" |
ReceiverType | string | 接收人类型 | "0"(缺省)/ "1" / "2" |
Receivers | string(JSON) | 接收人配置 | 接收人类型为 "1" 时使用,选人配置 JSON |
Link | string | 链接地址 | 通知附带跳转链接 |
Scene | string | 通知场景 | 场景标识,用于消息归类 |
IsFinalResult | string(bool) | 是否输出到最终结果 | "true" / "false" |
order | string | 同级排序 | 例:"7" |
元数据存储示例
{
"ID": "notify1",
"type": "Notification",
"MessageTemplateId": "9c1f2a34-5b6d-4e7f-8a90-1b2c3d4e5f60",
"SenderType": "System",
"ReceiverType": "1",
"Receivers": "[]",
"Link": "/detail?id=123",
"Scene": "order",
"order": "7"
}
服务端执行逻辑
消息通知组件由 NotificationComponentManager 实现,继承 TriggerComponentManagerBase(再继承 InterfaceComponentManagerBase),组件类型为 FlowComponentTypeEnum.Notification。因继承自触发器基类,在触发器链路中还会额外执行节点级执行追踪。
节点
meta中的所有值均以字符串存储,服务端统一通过SafeGet("Key")读取字符串。
执行时机与场景
流程执行到该节点时,按接收人类型解析出接收人集合,为每位接收人构造一条通知请求并批量发送。
输入参数(meta 键)
| 键 | 读取方式 | 含义 |
|---|---|---|
MessageTemplateId | meta.SafeGet("MessageTemplateId") | 消息模板 Id,必填 |
SenderType | meta.SafeGet("SenderType") | 发送人,必填 |
ReceiverType | meta.SafeGet("ReceiverType") | 接收人类型,必填 |
Receivers | meta.SafeGet("Receivers") | 直接选人配置 JSON |
Link | meta.SafeGet("Link") | 跳转链接 |
Scene | meta.SafeGet("Scene") | 通知场景 |
IsFinalResult | meta.SafeGet("IsFinalResult") | "true" 时写入成功响应 |
IsDisabled | meta.SafeGet("IsDisabled") == "true" | 为 true 时跳过本组件 |
上下文入参(context.DicParam):BizDataIds、MetaObjectId、MetaObjectCode、NotifyUserIds。
执行步骤
- 校验期:
MessageTemplateId、SenderType、ReceiverType依次非空校验;ReceiverType == "1"时Receivers必须能反序列化为非空List<AdvancedSelectItem>。 - 执行期解析发送人:
System→ 系统默认用户,CurrentLoginUser→ 当前登录用户,其它 → 系统默认用户。 - 解析接收人:
"0":当前登录人;"1":IUserInformationService.GetAdvancedUserSelectorResultAsync(new AdvancedUserSelectorRequest { Config = Receivers })解析;"2":取DicParam["NotifyUserIds"],按英文逗号分隔;- 其它:抛「不支持的通知接收人类型」。
- 接收人为空则直接调用
ExecuteNextAsync,不发送通知。 - 为每位接收人构造
NotificationRequest(Sender、Receiver、TemplateId、Parameters = context.DicParam、Link、BizDataId = 首个业务数据 Id、MetaObjectId、MetaObjectCode、Scene)。 - 调用
INotificationService.NotifyAsync(models)批量发送。 IsFinalResult = "true"时context.Result = ResponseResult.Success()。- 调用
ExecuteNextAsync继续下游。
输出与上下文
| 字段 | 说明 |
|---|---|
context.Result | IsFinalResult = "true" 时为 ResponseResult.Success() |
Parameters | 直接使用整个 context.DicParam 作为模板参数 |
权限、安全与限制
- 消息模板须预先配置,模板 Id 必填。
- 接收人类型为
"2"时依赖上游写入DicParam["NotifyUserIds"](建议非空时追加而非覆盖)。 - 继承
TriggerComponentManagerBase:触发器链路中会通过执行收集器记录本节点的成功 / 失败与耗时,接口链路不受影响。
异常与校验
- 模板参数错误、发送人参数错误、接收人类型参数错误、接收人参数错误、接收人类型不支持,均在相应阶段抛出对应异常。