`
shusanzhan
  • 浏览: 35061 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JBPM 4.3 Email与Notification例子

阅读更多

第一步:jpdl.xml文件

 

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

<process key="moves" name="moves" xmlns="http://jbpm.org/4/jpdl">
 <start g="372,12,49,73" name="start1">
  <transition to="Request_New_Move"/>
 </start>
 <task assignee="sanshu" form="request_move.xsl" g="312,72,169,52" name="Request_New_Move">
  <notification>
   <to addresses="${toEmail}" />
   <cc addresses="${lmEmail}" />
   <subject>${task.name}</subject>
   <text>
     <![CDATA[Hi ${task.assignee},
     Task "${task.name}" has been assigned to you.
     Sent by JBoss jBPM
     ]]>
   </text>
  </notification>
  <transition g="-43,-5" name="submit" to="Line_Manager_review"/>
 </task>
 <task assignee="${reqLoginName}" g="312,288,169,52" name="Line_Manager_review">
  <transition g="-57,-4" name="approve" to="Send_approval_email"/>
  <transition g="18,-5" name="reject" to="Send_rejection_email"/>
 </task>
 <mail g="240,408,133,40" name="Send_approval_email">
  <to addresses="somebody@office.com"/>
  <cc addresses="nobody@office.com" />
  <subject>Your move request is approved!</subject>
  <text>Employee name ${employeeName} and request details
   ${requestDetails}</text>
  <transition to="end1"/>
 </mail>
 <mail g="432,408,133,37" name="Send_rejection_email">
  <to addresses="somebody@office.com"/>
  <subject>Your move request is rejected!</subject>
  <text>Employee name ${employeeName} and request details ${requestDetails}</text>
  <transition to="end1"/>
 </mail>
 <end g="384,480,48,48" name="end1"/>
</process>

 

 

 

第二步:

jbpm.mial.properties配置文件,配置邮件属性

mail.smtp.host  localhost
mail.smtp.port 2525
mail.from  shusanzhan@163.com

##mail.smtps.starttls.enable=true
##mail.smtps.auth=true
##mail.smtp.port=465
#mail.transport.protocol=smtps
#mail.from=myemail@gmail.com
#mail.user=myemail
##mail.smtp.quitwait=false
#mail.debug=true

 

 

 

第三步:

jbpm.mail.template.example.xml配置邮件模板等

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

<jbpm-configuration>

  <process-engine-context>

    <mail-template name="rectify-template">
      <to addresses="${addresses}" />
      <cc users="shusanzhan2010" groups="home" />
      <bcc groups="friend" />
      <subject>rectify ${newspaper}</subject>
      <text>${newspaper} ${date} ${details}</text>
    </mail-template>
   
    <business-calendar> 
      <monday    hours="9:00-12:00 and 12:30-17:00"/> 
      <tuesday   hours="9:00-12:00 and 12:30-17:00"/> 
      <wednesday hours="9:00-12:00 and 12:30-17:00"/> 
      <thursday  hours="9:00-12:00 and 12:30-17:00"/> 
      <friday    hours="9:00-12:00 and 12:30-17:00"/> 
      <holiday period="01/07/2008 - 31/08/2008"/> 
    </business-calendar>
   
    <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 JBoss 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 JBoss jBPM 
  ]]></text>
   </mail-template>
  
   <transaction-context> 
    <repository-session /> 
    <db-session /> 
 
    <message-session /> 
    <timer-session /> 
    <history-session /> 
    <mail-session> 
      <mail-server> 
        <session-properties resource="jbpm.mail.properties" /> 
      </mail-server> 
    </mail-session> 
  </transaction-context> 

  </process-engine-context>

</jbpm-configuration>

其它配置文件不用修改

 

第四 测试程序java程序:

 

package com.mail.notification;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.jms.MessageEOFException;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage.RecipientType;

import org.jboss.util.platform.PID;
import org.jbpm.api.Execution;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.task.Task;
import org.jbpm.pvm.internal.email.impl.MailSessionImpl;
import org.jbpm.pvm.internal.email.spi.MailSession;
import org.jbpm.pvm.internal.history.events.ProcessInstanceEnd;
import org.jbpm.test.JbpmTestCase;
import org.subethamail.wiser.Wiser;
import org.subethamail.wiser.WiserMessage;

public class NotificationTest extends JbpmTestCase {
 Wiser wiser=new Wiser();
 protected void setUp() throws Exception{
  super.setUp();
  String deploymentId=repositoryService.createDeployment().
  addResourceFromClasspath("com/mail/notification/move.jpdl.xml").deploy();
  registerDeployment(deploymentId);
  
  wiser.setPort(2525);
  wiser.start();
 }
 protected void tearDown()throws Exception {
  wiser.stop();
  
  
  super.tearDown();
 }
 public void testNotificationTest() throws MessageEOFException,IOException, MessagingException{
  Map<String,Object> variables=new HashMap<String, Object>();
  String lmEmail="shusanzhan24@163.com";
  String rqLoginName="shusanzhan";
  String employeeName="zhangsan";
  String requestDetails="Must to do id";
  String toEail="shusanzhan2010@163.com";
  
  variables.put("lmEmail", lmEmail);
  variables.put("reqLoginName", rqLoginName);
  variables.put("employeeName", employeeName);
  variables.put("requestDetails", requestDetails);
  variables.put("toEmail",toEail);
  
  ProcessInstance processInstance=executionService.startProcessInstanceByKey("moves", variables);
  String piId=processInstance.getId();
  
  List<Task> listTasks=taskService.findPersonalTasks("sanshu");
  assertEquals(1, listTasks.size());
  
  List<WiserMessage> listWiserMessages=wiser.getMessages();
  assertEquals(2, listWiserMessages.size());
  processInstance=executionService.findProcessInstanceById(piId);
  assertEquals(true, processInstance.isActive("Request_New_Move"));
  
  if(processInstance.isActive("Request_New_Move")){
   taskService.completeTask(listTasks.get(0).getId());
  }
  assertEquals(true,processInstance.isActive("Request_New_Move"));
  for(WiserMessage wisMessage:listWiserMessages){
   Message message=wisMessage.getMimeMessage();
      
   Address[] from=message.getFrom();
   assertEquals(1, from.length);
   assertEquals("shusanzhan@163.com",from[0].toString());
   
   Address[] to=message.getRecipients(RecipientType.TO);
   assertEquals(1, to.length);
   assertEquals("shusanzhan2010@163.com",to[0].toString());
   
   Address[] cc=message.getRecipients(RecipientType.CC);
   assertEquals(1,cc.length);
   assertEquals("shusanzhan24@163.com",cc[0].toString());
   
   String subject=message.getSubject();
   assertEquals("Request_New_Move", subject);
   
   String text=message.getContent().toString();
   System.out.println("=================>Text content :"+text);
  }
  processInstance=executionService.findProcessInstanceById(piId);
  listTasks=taskService.findPersonalTasks(rqLoginName);
  assertEquals(1, listTasks.size());
  assertEquals(true, processInstance.isActive("Line_Manager_review"));
  if(processInstance.isActive("Line_Manager_review")){
   taskService.completeTask(listTasks.get(0).getId(),"approve");
  }
  
  assertEquals(true,processInstance.isActive("Line_Manager_review"));
  System.out.println("=========>"+processInstance.getExecution("Send_approval_email"));
     listWiserMessages=wiser.getMessages();
     assertEquals(4, listWiserMessages.size());//4是整个流程中所发的信息
     for(int i=2;i<listWiserMessages.size();i++){
      Message message=listWiserMessages.get(i).getMimeMessage();
      Address[] from=message.getFrom();
      assertEquals(1, from.length);
      assertEquals("shusanzhan@163.com", from[0].toString());
      
      
      Address[] all=message.getAllRecipients();
      assertEquals(2, all.length);
      
      
      Address[] to=message.getRecipients(RecipientType.TO);
      assertEquals(1, to.length);
      assertEquals("somebody@office.com",to[0].toString());
      
      Address[] cc=message.getRecipients(RecipientType.CC);
      assertEquals("nobody@office.com", cc[0].toString());
      
      
      String subject=message.getSubject();
      assertEquals("Your move request is approved!", subject);
      
      String text=message.getContentType();
      System.out.println("content text:========>"+text);
     }
   assertEquals(true, processInstance.isActive("Line_Manager_review"));
   //assertEquals(true, processInstance.isEnded());
//     Execution execution=executionService.findExecutionById(listTasks.get(0).getId());
//  if(execution.getProcessInstance().isActive("Request_New_Move")){
//   taskService.completeTask(listTasks.get(0).getId());
//  }
  
 }
}

 

分享到:
评论
2 楼 paomo30000 2010-09-30  
你好博主。请问为什么测试类里可以跑通,但到了实际项目里却得到是javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 2525错误?
是不是测试类里根本就没发邮件?而在实际项目里必须要通过邮件服务器才能发送消息?

1 楼 dml123 2010-05-13  
smtp服务器需要认证的该把认证信息加到哪里呢,我加到properties文件里是不行的。

相关推荐

    jbpm4.3工作流程管理例子

    在这个"jbpm4.3工作流程管理例子"中,我们将深入探讨jbpm4.3的核心特性和如何利用它来构建实际的工作流程应用。 一、jbpm4.3核心特性 1. 工作流引擎:jbpm4.3提供了强大的工作流引擎,可以执行基于流程定义的业务...

    SSH+JBPM4.3的整合 JBPM4.3

    2. **集成Hibernate**:由于JBPM4.3本身是基于Hibernate的,所以通常无需额外配置,只需确保应用的Hibernate配置与JBPM兼容即可。 3. **Struts的整合**:Struts的Action可以通过Spring的依赖注入获取到JBPM的服务,...

    开源工具 jbpm4.3

    通过与规则引擎(如Drools)的集成,jbpm4.3能够处理动态变化的业务规则。当业务规则发生变化时,无需修改代码,只需更新规则库,流程就能够自动适应这些变更。 4. **持久化机制**: jbpm4.3支持持久化存储流程...

    jbpm4.3与spring整合

    ### jbpm4.3与Spring框架的整合指南 在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring...

    JBPM4.3培训学习视频, 包含了JBPM4.3的eclipse插件

    【JBPM4.3培训学习视频】是一套针对初学者设计的教程,旨在帮助学习者掌握JBPM4.3这一企业级工作流管理系统的核心概念和技术。JBPM是Java Business Process Management的缩写,是一个开源的工作流和业务流程管理平台...

    JBPM4.3-例子(简单使用)

    在这个例子中,我们将深入探讨JBPM4.3的简单使用,特别是通过一个名为“leave_web”的Web应用程序来展示其核心功能。 首先,让我们了解JBPM4.3的主要特性。这个版本引入了改进的图形化工作流设计器,使得流程模型的...

    jbpm4.3环境搭建

    2. **集成环境**:jbpm4.3需要与应用服务器如Tomcat或JBoss以及开发工具Eclipse进行集成。这涉及到服务器和工具的选择、下载、安装和配置。 3. **下载与解压**:首先从指定地址下载jbpm-4.4.zip,虽然题目中给出的...

    jBPM4.3.rar_JBPM4.3

    jbPM 4.3 使用JPA(Java Persistence API)作为默认的持久化机制,可以方便地与各种数据库系统(如MySQL、Oracle等)进行交互,确保流程实例和数据在重启后仍然可用。 **10. 社区支持与资源** jbPM 有一个活跃的...

    jbpm4.3视频教程+代码

    2. **安装与配置**:详述如何在开发环境中安装Jbpm4.3,包括所需的Java环境、数据库设置以及Eclipse IDE的集成。 3. **模型设计**:讲解Jbpm流程图的创建,包括任务、事件、决策点等元素,以及如何使用BPMN2.0标准...

    jbpm4.3官方例子及文档

    5. **集成能力(Integration Capabilities)**:jbpm4.3可以与多种系统集成,如EJB、Spring、Hibernate等,使得流程可以与其他企业服务交互。 接下来,我们探讨一下jbpm4.3的实例项目: - **examples目录**:这个...

    jbpm jbpm4 jbpm4.3 工作流

    7. **监控与报表**:jbpm4.3提供了一套监控工具,可以跟踪流程实例的执行情况,生成流程统计报告,帮助管理员优化流程性能。 8. **工作流引擎**:jbpm4.3的核心是一个强大的工作流引擎,它可以执行流程模型,管理...

    jbpm4.3、ssh环境搭建

    ### jBPM4.3与SSH环境搭建详解 #### 一、引言 jBPM (JBoss Business Process Management) 是一个开源的工作流管理系统,它提供了用于定义业务流程的工具和APIs。本文将详细介绍如何在开发环境中安装并配置jBPM4.3...

    jbpm4.3+tomcat6简单例子

    本示例主要实现了流程的基本管理,流程实例的管理,...使用本例子只需要拷贝jbpm4.3的lib的jar包到本实例lib里面即可运行,注意用tomcat6的话必须把juel.jar,juel-engine.jar、juel-impl.jar剪切到tomcat的lib目录下。

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jbpm4.3问题解决

    jbpm4.3是Jboss Business Process Management (BPM)平台的一个版本,它是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本篇主要针对jbpm4.3使用过程中遇到的问题及其解决方法进行详细阐述。 首先,...

    JBPM4.3使用说明.doc

    JBPM4.3 提供了与 Eclipse 和 Tomcat 的集成。用户可以使用 ant get.eclipse 命令下载一个包含流程设计器的 Eclipse JEE,然后使用 ant get.tomcat 命令下载一个配置好了环境的 Tomcat。执行完 ant get.tomcat 后,...

    jbpm4.3所需jar包

    **jbpm4.3所需jar包** JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。在JBPM 4.3版本中,为了实现完整功能,需要一系列的jar包来支持其运行环境。...

    jbpm4.3 - demo

    6. **集成能力**:jbpm4.3可与Spring框架无缝集成,便于在企业级应用环境中使用。此外,还可以与其他技术如JMS、EJB、Web服务等集成。 7. **流程模拟和调试**:jbpm4.3提供了流程模拟功能,允许开发者在不实际执行...

    SSH 与jbpm4.3 整合的资料以及ssh的jar包

    `ssh整合需要的jar包目录.doc`应该列出了整合SSH与jbpm4.3所需的所有依赖库,包括SSH框架的jar包和jbpm4.3的jar包,这对于正确构建项目环境至关重要。 总之,SSH与jbpm4.3的整合是企业级应用中常见的技术实践,它能...

Global site tag (gtag.js) - Google Analytics