一)
通過使用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類: