通知类开发文档
通知消息分为两种,一种是实时消息,一种是定时消息,实时消息一般使用TriggerAction进行触发生成消息TriggerMessage ,定时消息一般直接增加TriggerMessage加上发送时间即可。
一、定时消息,消息内容和接收人直接赋值,并加上发送时间,一般在定时job中定触发,到对应时间自动发送。

二、即时消息,即时消息生成 分两种,通用通知(仅CommonAction)和专用通知(如ProjectCreateAction等)。
1.通用通知适用所有通知消息,内容和接收人在代码中写死,即用即配。一般对通知内容和接收人无变化的情况使用此模式。

2专用通知,此模式只为某个动作发送消息,如ProjectCreateAction只在项目创建时发送通知,此模式可在后台通知管理中配置接收人,查看消息模板,必要时可到App_Data\System\TriggerTemplates 修改模板,下面已ProjectCreateAction为例,配置消息通知。
2.1 在PowerProject.Trigger类库下TriggerActions文件夹中新建ProjectCreateAction 继承 TriggerAction<T>。
2.2 在TriggerReceivers文件夹中新建 ProjectRoleTypeReceiver继承UsersBasedReceiver。(若接收人是单个则继承UserBasedReceiver),需要的接收人对象已存在则不需要新加,直接复用即可。
2.3 在TriggerPlaceHolders文件中增加相应的关键字获取逻辑(在消息生成时会替换成业务数据),如【项目名称】。
2.4 在PowerProject.Web下的App_Data\TriggerRules\RealTimeTriggerRules.json 文件中增加消息配置项(如下图),Condition 填ProjectCreateAction,To填ProjectRoleTypeReceiver(参数为项目角色类型),在App_Data\System\TriggerTemplates下增加相应的模板文件,Long中存放邮件消息模板,Short中存放办功通讯平台消息模板(飞书、钉钉、企微等)


2.1其中的Condition是通知TriggerAction的专用类型,需要我们在新建我们的通知类,以对象+操作+Action方式命名(如ProjectCreateAction),继承TriggerAction<TObject>, 在需要触发的位置new T() TriggerCentralHandlerWrapper.HandleRealTimeActionAsync() 传参执行;

2.2 To 是接收人,需要我们在TriggerReceivers文件夹下增加相应的接收人获取方式(如已存在不需要增加),接收人是单个继承UserBasedReceiver,接收人是多个继承UsersBasedReceiver。

然后在TriggerRuleConfigHelper类中增加相应配置,以使其可以在后台通知规则中被配置和查看

2.3【关键字】 是关键字写法,比如【项目名称】 在发送消息时会替换成 关联项目的名称。
如有新关键字需求(所有关键字是通用的,请先查看是否存在),添加到TriggerPlaceHolders文件夹下,1.继承TriggerPlaceHolderForObject<TObject> 需要满足 Utilities.TriggerObjectFetcher.GetObject 获取对象,没有的需要自己添加业务逻辑。

2. 继承TriggerPlaceHolderForAction<TTriggerAction> 适用在new TriggerAction时传参的通知

总结:通知消息分两种,定时消息和及时消息,定时消息一般是在hangfire job中添加triggerMessage对象 赋上时间和接收人 可参考JobOfAdministratorToExpir。及时消息中分两种通用和专用,通用消息在要触发的地方new CommonAction 赋上相应的内容和接收人 调用TriggerCentralHandlerWrapper.HandleSystemActionAsync(commonAction)发送 ,专用通知在RealTimeTriggerRules.Json 文件中增加通知配置项,然后在TriggerTemplates下增加模板文件

浙公网安备 33010602011771号