一)
通过使用mail活动节点,流程作者可以指定一个邮件信息的内容,一次发送给多个收件人,每个email信息都是从一个模板产生,当然里面可以设置一些时变的变量如${person},然后在流程启动之前将给这个变量赋值,并且放到variables集中,模板可能在流程定义jpdl中,也可以是引用外部模板,如果没有,则默认使用jbpm-default-cfg.xml的<process-engine-context>部分指定的模板,下面针对mail节点说明其各属性:
元素 | 个数 | 描述 |
from | 0-1 | 发件者列表 |
to | 1 | 主要收件人列表 |
cc | 0-1 | 抄送收件人列表 |
bcc | 0-1 | 密送收件人列表 |
subject | 1 | 邮件主题 |
text | 0-1 | 邮件文字内容 |
html | 0-1 | 邮件的html内容 |
attachments | 0-1 | 附件可以指定url,classpath资源或本地文件 |
示例:
<task g="134,311,92,52" name="review" assignee="${owner}">
<transition g="-47,-17" name="to end" to="end"/>
</task>
<mail g="0,0,80,40" name="send rectify note">
<to addresses="${toEmail}"/>
<subject>通知${person}</subject>
<text>一个新通知</text>
<transition to="end"></transition>
</mail>
<end g="131,479,48,48" name="end"/>
Ps:在默认安装配置下的src目录下有一个jbpm.mail.properties文件,它是用来指定邮件服务器信息的,如果不想使用本地邮件服务器localhost,想要使用其他邮件服务器,可以使用比如:smtp.163.com,则可以修改mail.smtp.host=smtp.163.com;
二)
在任务中支持e-mail
可以为分配人提供一个提醒,当一个任务被加入到他们的任务列表,以及在特定的时间间隔进行提醒,每个email信息也是根据模板产生得,模板设置同上。
在task元素下提供两个email提醒子元素:
元素名 | 个数 | 描述 |
Notification | 0-1 | 让一个任务被分配的时候发送一个提醒消息。 如果没有引用模板,也没有提供内部的模板, mail会使用task-notification名字的模板。 |
reminder | 0-1 | 根据指定的时间间隔发送提醒信息。 如果没有引用模板,也没有提供内部模板, mail会使用task-reminder名字的模板。 |
Notification属性:
属性 | 类型 | 默认值 | 是否必填 | 描述 |
Continue | {sync|async|exclusive} | Sync | 可选 | 指定在发送提醒邮件后, 是不是产生一个异步执行。 |
Reminder属性:
属性 | 类型 | 默认值 | 是否必填 | 描述 |
duedate | 持续时间(纯字符串或包含表达式) |
| 必填 | 在reminder email发送前的延迟时间。 |
|
|
| 可选 | 在一个序列reminder email发送后延迟的时间 |
| {sync | async | exclusive} | sync | 可选 | 指定在发送提醒邮件后, 是不是产生一个异步执行。 |
示例:
<task name="review" assignee="#{order.owner}"
<notification/>
<reminder duedate="2 days" repeat="1 day"/>
</task>
ps2:邮件发送时,要自己写一个验证类extends Authenticator,否则报错,需要一个额外的jar包subethasmtp-smtp-1.2.jar,由于该类是我们自己添加的,所以我们必须在配置文件中加注一下,找到jbpm-default-cfg.xml:
<mail-session>
<mail-server>
<session-properties resource="jbpm.mail.properties" />
<authenticator class="mail.MyAuthenticator" />
</mail-server>
贴上我的MyAuthenticator类: