第一步: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());
// }
}
}
分享到:
相关推荐
在这个"jbpm4.3工作流程管理例子"中,我们将深入探讨jbpm4.3的核心特性和如何利用它来构建实际的工作流程应用。 一、jbpm4.3核心特性 1. 工作流引擎:jbpm4.3提供了强大的工作流引擎,可以执行基于流程定义的业务...
2. **集成Hibernate**:由于JBPM4.3本身是基于Hibernate的,所以通常无需额外配置,只需确保应用的Hibernate配置与JBPM兼容即可。 3. **Struts的整合**:Struts的Action可以通过Spring的依赖注入获取到JBPM的服务,...
通过与规则引擎(如Drools)的集成,jbpm4.3能够处理动态变化的业务规则。当业务规则发生变化时,无需修改代码,只需更新规则库,流程就能够自动适应这些变更。 4. **持久化机制**: jbpm4.3支持持久化存储流程...
### jbpm4.3与Spring框架的整合指南 在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring...
【JBPM4.3培训学习视频】是一套针对初学者设计的教程,旨在帮助学习者掌握JBPM4.3这一企业级工作流管理系统的核心概念和技术。JBPM是Java Business Process Management的缩写,是一个开源的工作流和业务流程管理平台...
在这个例子中,我们将深入探讨JBPM4.3的简单使用,特别是通过一个名为“leave_web”的Web应用程序来展示其核心功能。 首先,让我们了解JBPM4.3的主要特性。这个版本引入了改进的图形化工作流设计器,使得流程模型的...
2. **集成环境**:jbpm4.3需要与应用服务器如Tomcat或JBoss以及开发工具Eclipse进行集成。这涉及到服务器和工具的选择、下载、安装和配置。 3. **下载与解压**:首先从指定地址下载jbpm-4.4.zip,虽然题目中给出的...
jbPM 4.3 使用JPA(Java Persistence API)作为默认的持久化机制,可以方便地与各种数据库系统(如MySQL、Oracle等)进行交互,确保流程实例和数据在重启后仍然可用。 **10. 社区支持与资源** jbPM 有一个活跃的...
2. **安装与配置**:详述如何在开发环境中安装Jbpm4.3,包括所需的Java环境、数据库设置以及Eclipse IDE的集成。 3. **模型设计**:讲解Jbpm流程图的创建,包括任务、事件、决策点等元素,以及如何使用BPMN2.0标准...
5. **集成能力(Integration Capabilities)**:jbpm4.3可以与多种系统集成,如EJB、Spring、Hibernate等,使得流程可以与其他企业服务交互。 接下来,我们探讨一下jbpm4.3的实例项目: - **examples目录**:这个...
7. **监控与报表**:jbpm4.3提供了一套监控工具,可以跟踪流程实例的执行情况,生成流程统计报告,帮助管理员优化流程性能。 8. **工作流引擎**:jbpm4.3的核心是一个强大的工作流引擎,它可以执行流程模型,管理...
### jBPM4.3与SSH环境搭建详解 #### 一、引言 jBPM (JBoss Business Process Management) 是一个开源的工作流管理系统,它提供了用于定义业务流程的工具和APIs。本文将详细介绍如何在开发环境中安装并配置jBPM4.3...
本示例主要实现了流程的基本管理,流程实例的管理,...使用本例子只需要拷贝jbpm4.3的lib的jar包到本实例lib里面即可运行,注意用tomcat6的话必须把juel.jar,juel-engine.jar、juel-impl.jar剪切到tomcat的lib目录下。
jbpm jbpm4.3.jar DDDDDDDD
jbpm4.3是Jboss Business Process Management (BPM)平台的一个版本,它是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本篇主要针对jbpm4.3使用过程中遇到的问题及其解决方法进行详细阐述。 首先,...
JBPM4.3 提供了与 Eclipse 和 Tomcat 的集成。用户可以使用 ant get.eclipse 命令下载一个包含流程设计器的 Eclipse JEE,然后使用 ant get.tomcat 命令下载一个配置好了环境的 Tomcat。执行完 ant get.tomcat 后,...
**jbpm4.3所需jar包** JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。在JBPM 4.3版本中,为了实现完整功能,需要一系列的jar包来支持其运行环境。...
6. **集成能力**:jbpm4.3可与Spring框架无缝集成,便于在企业级应用环境中使用。此外,还可以与其他技术如JMS、EJB、Web服务等集成。 7. **流程模拟和调试**:jbpm4.3提供了流程模拟功能,允许开发者在不实际执行...
`ssh整合需要的jar包目录.doc`应该列出了整合SSH与jbpm4.3所需的所有依赖库,包括SSH框架的jar包和jbpm4.3的jar包,这对于正确构建项目环境至关重要。 总之,SSH与jbpm4.3的整合是企业级应用中常见的技术实践,它能...