JBPM邮件功能,reminder标签

来源:互联网 发布:centos 挂载iso 编辑:程序博客网 时间:2024/05/16 05:20

JBPM邮件功能:


在任务中支持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发送前的延迟时间。

repeat

 

 

可选

在一个序列reminder email发送后延迟的时间

continue

{sync | async | exclusive}

sync

可选

指定在发送提醒邮件后, 是不是产生一个异步执行。

 

示例:

<task name="review"  assignee="#{order.owner}"

     <notification/>

     <reminder duedate="2 days" repeat="1 day"/>

</task>


1、修改jbpm.cfg.xml,修改后内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<jbpm-configuration>

<!--  

  <import resource="jbpm.default.cfg.xml" />

-->  

<import resource="jbpm.customer.cfg.xml" />  <!--替换jbpm.default.cfg.xml,主要功能是这样修改mail-Server相关属性方便-->

  <import resource="jbpm.businesscalendar.cfg.xml" />

  <import resource="jbpm.tx.hibernate.cfg.xml" />

  <import resource="jbpm.jpdl.cfg.xml" />

  <import resource="jbpm.bpmn.cfg.xml" />

  <import resource="jbpm.identity.cfg.xml" />    

  <import resource="jbpm.jobexecutor.cfg.xml" />

</jbpm-configuration>

2、在classpath下建立文件jbpm.customer.cfg.xml

复制jbpm.default.cfg.xml中的内容到新建新建的文件中,修改其中

<mail-session>
      <mail-server>
        <session-properties resource="jbpm.mail.properties" />
        <authenticator class="com.cqs.mail.MyAuthenticator">
         <field name="userName"><string value="cuitsingsh"/></field>
         <field name="password"><string value="cqsztt"/></field>
        </authenticator>
      </mail-server>
    </mail-session>

3、修改jbpm.mail.properties,修改后的内容如下:

 mail.smtp.host=smtp.exmail.qq.com

mail.smtp.port=25

mail.from=server@inventinfotech.com

mail.smtp.auth= true

4、增加验证类MyAuthenticator如下:

package com.cqs.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;


public class MyAuthenticator extends Authenticator{
 
 private String userName;
 private String password;
 
 public MyAuthenticator() {
  System.out.println("myAuthenticator is construct");
 }
 
 @Override
 protected PasswordAuthentication getPasswordAuthentication() {
  // TODO Auto-generated method stub
  return new PasswordAuthentication(userName, password);
 }

 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 } 
}

5、测试

(1)xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<process name="TaskNotification" xmlns="http://jbpm.org/4.4/jpdl">

  <start g="20,20,48,48">

    <transition to="review"/>

  </start>

  <task name="review" assignee="liming" g="96,16,127,52">

     <notification/>

     <transition to="wait"/>

  </task>

  <state name="wait" g="255,16,88,52"/>

</process>

(2) java方法
 deploymentId = repositoryService.createDeployment()
      .addResourceFromClasspath("my/test/deploy/process.jpdl.xml")
      .deploy();  
 identityService.createUser("liming", "明", "li", "123456@qq.com");
 
    ProcessInstance processInstance = executionService.startProcessInstanceByKey("EndProcess");
    
注意:
发送邮件内容在jbpm.mail.templates.xml文件中设置
<?xml version="1.0" encoding="UTF-8"?>

<jbpm-configuration>

  <process-engine-context>

    <mail-template name='task-notification'>
      <to users="${task.assignee}"/>
      <subject>${task.name}</subject>
      <text><![CDATA[Hi ${task.assignee},
Task "${task.name}" has been assigned to you.
${task.description}

Sent by jBPM]]></text>
    </mail-template>

    <mail-template name='task-reminder'>
      <to users="${task.assignee}"/>
      <subject>${task.name}</subject>
      <text><![CDATA[Hey ${task.assignee},
Do not forget about task "${task.name}".
${task.description}

Sent by jBPM]]></text>
    </mail-template>

    <mail-template name="rectify-template">
      <to addresses="${addressee}" />
      <cc users="bb" groups="innerparty" />
      <bcc groups="thinkpol" />
      <subject>rectify ${newspaper}</subject>
      <text>${newspaper} ${date} ${details}</text>
    </mail-template>

  </process-engine-context>

</jbpm-configuration>
 


JBPM邮件中用到的标签:

通过使用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发送前的延迟时间。

repeat

 

 

可选

在一个序列reminder email发送后延迟的时间

continue

{sync | async | exclusive}

sync

可选

指定在发送提醒邮件后, 是不是产生一个异步执行。

 

示例:

<task name="review"  assignee="#{order.owner}"

     <notification/>

     <reminder duedate="2 days" repeat="1 day"/>

</task>

 

ps2:邮件发送时,要自己写一个验证类extends Authenticator,否则报错,需要一个额外的jarsubethasmtp-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类:

[java] view plaincopy
  1. package mail;  
  2.   
  3. import javax.mail.Authenticator;  
  4. import javax.mail.PasswordAuthentication;  
  5.   
  6. public class MyAuthenticator extends Authenticator {  
  7.     String userName=null;        
  8.     String password=null;        
  9.              
  10.     public MyAuthenticator(){        
  11.     }        
  12.     public MyAuthenticator(String username, String password) {         
  13.         this.userName = username;         
  14.         this.password = password;         
  15.     }         
  16.     protected PasswordAuthentication getPasswordAuthentication(){        
  17.         return new PasswordAuthentication("xuhaifeng19890815""******");        
  18.     }        
  19. }  

0 0
原创粉丝点击