消息模板开发说明?
李小翔
2015-06-30 15:15

内容列表
创建消息模板 	 # 
根据模板生成消息 	 # 

供稿人：刘少林
项目中会有这样的需求，按照固定的格式输出一些信息，比如发送一条短信 “尊敬的用户你好，xxx给你发来一封邮件请登录查看.....”，这句提示信息中，会变化的只有“XXX”（发件人），其他的文字都是不变的。
通常，我们会写一个方法，把“XXX”当成一个参数传过来，并返回拼接好的文字，挺方便也容易理解，但是有个问题，如果文字有变动的话，每次都要手动去改相关的代码。
此时，可以使用“消息模板”功能进行开发，如果模板发生变化，可以由管理员直接在后台维护，并且支持国际化。

创建消息模板
有两种方式创建消息模板，一种是使用管理员登录到后台，在“数据字典/其他/消息模板”中新建消息模板，如下图所示，关键信息包括：
模板代码：用于在程序中调用的模板代码，必须唯一。
可以添加 i18n 后缀以支持国际化，比如消息 FOOBAR，可以分别定义 FOOBAR_zh_CN、FOOBAR_en_US 中、英文模板
是否是HTML：通过API拼装消息时，原样返回的标记
标题：消息标题（如果有的话，如邮件）
内容：消息正文
其中，标题和内容模板支持命名参数或顺序参数，如图例中的 { title}  使用的就是命名参数，还可以使用类似 “待办提醒：{ 0} ” 的传参模式（和 i18n 下的 properties 文件类似），通过不同的 API 调用时，会自动将这些参数替换成实际的值。
另外一种维护方式是在工程启动时（如 BootStrap）调用API自动创建，如下例所示：
import bropen.framework.plugins.message.MessageTemplateService
class BootStrap { 
    MessageTemplateService messageTemplateServices
   ....
    messageTemplateService.createTemplateIfNotExists(”MESSAGE_TEST_CODE”, ”消息模块test”, null, ”尊敬的用户你好，{ name} 给你发来一封邮件请登录查看.....”, false)
   ....
} 
messageTemplateService.createTemplateIfNotExists 详细参数说明请参考 API 手册。

根据模板生成消息
通过 MessageTemplateService.getMessage 来生成消息，返回值是一个 Map，如 [title: “标题”, body: “内容（正文）”, isHTML: ture/false]：
assert messageTemplateService.getMessage(”MESSAGE_TEST_CODE”, [name: ”张三”]) == ”尊敬的用户你好，张三给你发来一封邮件请登录查看.....”
由于上面的示例定义的是命名参数，因此这里调用的是以 Map 为参数的 getMessage 版本，此外，还有以列表为参数的版本，详细参考 API 手册。