用MDeamon作为本地的邮件服务器,发送邮件测试
mySendEmail.jpdl.xml
<?xml version="1.0" encoding="UTF-8"?>
<process name="mySendEmail" xmlns="http://jbpm.org/4.4/jpdl">
<start g="57,45,48,48" name="start1">
<transition g="-57,-27" name="to send rectify note" to="发信" />
</start>
<mail g="281,50,115,45" language="juel" name="发信">
<to addresses="lu@test.com" />
<cc groups="innerparty" users="#{cc_user}" />
<bcc groups="thinkpol" />
<subject>rectify ${newspaper}</subject>
<text>${newspaper} ${date} reporting bb dayorder doubleplusungood
refs unpersons 中文信件 fullwise upsub antefiling</text>
<attachments>
<attachment url='http://www.george-orwell.org/1984/3.html' />
<attachment resource='test.html' />
<attachment file='d:\\AppConfig.xml' />
</attachments>
</mail>
</process>
public class SendMailMain {
// protected static String deploymentId;
protected static ProcessEngine processEngine = null;
protected static RepositoryService repositoryService = null;
protected static ExecutionService executionService;
protected static ManagementService managementService;
protected static TaskService taskService;
protected static HistoryService historyService;
protected static IdentityService identityService;
public ProcessInstance processInstance = null;
private static String processDefinitionKey = "mySendEmail";
private static String processDefinitionVersion = "1";
private static String processDefinitionId = processDefinitionKey + "-" + processDefinitionVersion;
private static Map<String, String> processSessionParams = new HashMap<String, String>();
/**
* 以请假流程为例,进行工作流实例
*
* @param args
*/
public static void main(String[] args) {
SendMailMain demo = new SendMailMain();
// 1 初始化工作流环境
initialize();
// 2 部署工作流
demo.deployProcess(true, "mySendEmail.jpdl.xml");
// 3 预设流程参数
demo.preDef4Process();
// 4 工作流定义实例化
demo.startProcess(processDefinitionKey, processSessionParams);
}
/**
* 初始化流程引擎
*/
protected static synchronized void initialize() {
if (processEngine == null) {
processEngine = Configuration.getProcessEngine();
repositoryService = processEngine.get(RepositoryService.class);
executionService = processEngine.getExecutionService();
historyService = processEngine.getHistoryService();
managementService = processEngine.getManagementService();
taskService = processEngine.getTaskService();
identityService = processEngine.getIdentityService();
}
}
/**
* 部署流程文件
*
* @param isRebulid
* 是否重建流程定义
* @param pdlFile
*/
public void deployProcess(boolean isRebulid, String pdlFile) {
URL url = this.getClass().getResource(pdlFile);
if (url == null) {
System.err.println("未找到流程定义文件【" + pdlFile + "】");
} else {
if (isRebulid) {
// 首次建立流程时获取流程ID,以便以后重复使用
repositoryService.createDeployment().addResourceFromUrl(url).deploy();
} else {
// 重用流程: 使用processDefinitionId初始化repositoryService
repositoryService.getStartActivityNames(processDefinitionId);
}
}
}
/**
* 由流程定义生成流程实例,保存在processInstance 变量中。
*
* @param pdKey
* 流程定义标识
* @param envParams
* 流程启动参数
*/
protected void startProcess(String pdKey, Map<String, ?> envParams) {
// 待环境参数,启动流程实例:启动对指定流程图的升级
processInstance = executionService.startProcessInstanceByKey(pdKey, envParams);
}
/**
* 预设流程中将使用的参数
*/
public void preDef4Process() {
// 创建jbpm用户
identityService.createUser("qian", "钱", null, "qian@test.com");
identityService.createUser("zhu", null, "朱", "zhu@test.com");
identityService.createUser("wang", null, "王", "wang@test.com");
identityService.createGroup("thinkpol");
identityService.createGroup("innerparty");
identityService.createMembership("qian", "innerparty");
identityService.createMembership("zhu", "thinkpol");
identityService.createMembership("wang", "thinkpol");
// ----------- 启动流程前的会话参数准备 -------------
// cc_user 变量填入参数
processSessionParams.put("cc_user", "qian");
processSessionParams.put("newspaper", "newspap新闻er111");
processSessionParams.put("date", "2010-2-2");
}
}
----- 关键步骤 ----
在MDeamon中需要设置RFC不检查,否则将出现如下错误
15:39:32,046 INF | [DefaultCommandService] exception while executing command org.jbpm.pvm.internal.cmd.StartProcessInstanceInLatestCmd@196bac4
org.jbpm.api.JbpmException: could not send email: javax.mail.internet.MimeMessage@15d8d75
at org.jbpm.pvm.internal.email.impl.MailSessionImpl.send(MailSessionImpl.java:60)
at org.jbpm.jpdl.internal.activity.MailActivity.perform(MailActivity.java:46)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 554 Message is not RFC compliant
导致邮件发送失败
MDeamon→菜单→设置(S)→默认域/服务器→服务器
checbox:拒绝不符合RFC的邮件 (不选择此功能)
分享到:
相关推荐
jBPM4.4入门开发实例
jbpm4实例代码。。。。。。。。。。。。。
内含jbpm4.4的会签实例,使用customactivity实现,并且内含有使用的丰富工具类,有兴趣的朋友下载学习~
struts2+spring+hibernate+jbpm工作流实例 描述的是公文审批流转过程.
利用jbpm5实现请假流程 1、注意数据库配置文件的修改 2、用户数据库的邮件字段里内容修改,否则可能会出现权限问题
JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上 JBPM的工程文件,大家可以到...
jbpm4 的 实例 jbpm初学者入门的捷径
jbpm实例详解,这是一个有关jbpm的例子以及解释,详细介绍了jbpm的基础开发实现。
spring3.2+jBPM6整合实例
我自己写的一个邮件发送的小demo,虽然不是很好,但是让我知道了很多知识点,自己一步一步研究的。
这是一个jbpm员工请假实例PDF文档,里面写得很详细,有图有代码,有文字描述,非常不错!
jbpm4实例源码,可直接运行
jbpm教程和实例,并详细讲述了相关配置,是新手上手的最好资料。
jBPM 4.2 HelloWorld实例,jBPM 4.2 HelloWorld实例
我写的一个jbpm实例
经典的配置好的jbpm实例,可以直接部署到tomcat,直接导入到myeclipse即可。
开源的流程开发框架jbpm,正被越来越多的人使用,一个简单的jbpm工程实例,可以带你快速入门!
Jbpm实例代码,供学习参考。里面包含源代码!
Jbpm开发流程实例演示.ppt jpg是一个工作流平台,它实现了一系列的基础类,提供了面向图形编程的方式来定义流程,方便用户在此基础上专注业务流程逻辑的实现;他依赖很少的库文件,能很好地嵌入到已有的Java Project...
现在JBPM做工作流已经普遍了,这是一个JBMP4的开发实例,拿出来给大家分享...