`
grandsea
  • 浏览: 54130 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaMail-JBPM4

阅读更多
Java发邮件的用户名有时候不能使用带后缀的用户名。

使用jbpm时jbpm.mail.preperties有以下几组配置

#Gmail
#mail.smtp.host=smtp.gmail.com
#mail.smtp.port=25
#mail.from=herosea &at gmail &dot com
#mail.debug=true
#mail.smtp.starttls.enable=true
#mail.smtp.auth=true


如果设置了mail.smtp.user不设mail.from则发送的地址设为 ${mail.smtp.user}@机器名。
mail.from不是可以验证的邮件地址时会报错。
mail.debug=true在调试时可以看到准确的原因。


jbpm.default.cfg.xml中添加如下段
<mail-session>
<mail-server>
      	<!-- address-filter>
      		<include>.+@.company.com.cn</include>
      	</address-filter-->
        <session-properties resource="jbpm.mail.properties" />
        <authenticator class="com.impl.TestAuthenticator">
	      <field name="userName"><string value="yourname"/></field>
	      <field name="password"><string value="*****"/></field>
	    </authenticator>
      </mail-server>
</mail-session>


TestAuthenticator.java文件
package com.service.impl;

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

/**
 * @author test
 * 简单的实现认证接口
 */
public class TestAuthenticator extends Authenticator {
	
	private String userName;

	private String password;
	
	private PasswordAuthentication passwordAuthentication;
	
	public TestAuthenticator() {
		super();
		// TODO Auto-generated constructor stub
	}

	public TestAuthenticator(String userName, String password) {
		setUserName(userName);
		setPassword(password);
	}

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

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

	protected PasswordAuthentication getPasswordAuthentication() {
		if(passwordAuthentication == null){
			passwordAuthentication = new PasswordAuthentication(userName, password);
		}
		return passwordAuthentication;
	}
}


配置的工作流
<mail g='200,98,90,50' name='测试邮件节点'>
    <to addresses='grandsea2010@gmail.com'/>
    <subject>Hello</subject>
    <html>没有什么原因啊!html</html>
    <transition g='306,123;306,59:0,-1' to='人工 1'/>
  </mail>

发出的邮件正文为乱码。
可以修改jbpm的源码
org.jbpm.pvm.internal.email.impl.MailProducerImpl
将 htmlPart.setContent(html, "text/html"); 改为 htmlPart.setContent(html, "text/html;charset=gbk");

<mail-session>貌似不能出现在两个jbpm配置文件中

jbpm4的流程文件没有定义格式是因为可以完全自定义,在解析的时候可以复用JpdlParser中的邮件解析,定时器解析等等。

jbpm4的事件模型还看不明白。
自定义MailProducer很麻烦,mailTemplate尤其是inline的不会自动注入到MailProducer中。

TaskRemind
这个每隔一段时间提醒一次的事件原理是这样的。
在ObservableElementImpl上获得remind事件 event,
新建一个MailListener叫eventListener,并将其和remind事件关联event.createEventListenerReference(eventListener)。
scopeElement.createTimerDefinition()创建一个定时器timerDefinition,从xml中获取定时器的详细配置。
timerDefinition.setEventName(Event.REMIND)定时触发remind事件。

正则表达式的上下文由多个上下文组成
ExecutionContext是默认最高优先级的上下文,可以自定义一个放在其前面。MailListener就定义了TaskContext至于其前面。

jbpm内部定义的很多接口是给其他流程定义语言准备的,要换的话可能需要整套都换掉。(猜测)

可能正则表达式的Context也是jbpm的context。(猜测)

发短信接口实现(猜想):
仿照org.jbpm.pvm.internal.wire.binding.MailTemplateBinding解析一个短信模板。
仿照邮件包org.jbpm.pvm.internal.email.spi中的接口定义发短信的3个接口。

自定义binding要注意的两个方面:
jbpm.user.wire.binding.xml文件在src目录下,不在任何包内。
集成WireDescriptorBinding的类需要一个没有参数的构造函数。
我为发短信定义了mobile-template标签,他的name属性的取值不能和mail-template的一样,否则会出错。说是上下文中找不到我模板的注册类。
分享到:
评论
3 楼 slayerliu001 2012-06-14  
博主你好~
<field name="userName"><string value="yourname"/></field> 
  <field name="password"><string value="*****"/></field> 

这两行里面的value =后面的是什么的用户名和密码啊?
2 楼 grandsea 2012-03-20  
蓝色飞扬 写道
hundsun搞工作流的?

暴露了,修改下。
1 楼 蓝色飞扬 2012-03-09  
hundsun搞工作流的?

相关推荐

    jbpm4整合struts2+spring2.5+hibernate3.3

    jbpm4的核心jar包包括jbpm.jar和jbpm-spring.jar,以及lib目录下的其他相关jar包,这些库文件需根据项目的具体需求进行选择性导入。 配置文件是整合的关键部分,例如jbpm.cfg.xml是jbpm的主要配置文件,通常需要...

    JBPM4.4所需要的包.rar

    4. **mail.jar**: 此文件是JavaMail API的一个实现,通常用于发送电子邮件。在JBPM中,这可能用于触发基于邮件的通知或工作流步骤,比如当某个任务完成或者需要用户介入时发送提醒。 这些JAR文件的组合表明,这个...

    jbpm3.2 .jar

    jbpm-jpdl-update.jar文件可能是jbpm3.2的一个更新版本或者补丁包,旨在修复原版jbpm-jpdl.jar中的问题或添加新功能。在软件开发中,发布这样的更新包是常见的做法,以保持软件的稳定性和兼容性。如果你遇到了使用...

    jbpm4.4 邮件发送demo

    为了调试和测试,开发者可能还使用了jbpm的控制台(jbpm-console),这是一个基于Web的界面,可以查看流程实例、任务列表以及执行其他管理操作。开发者可能通过控制台启动流程实例,观察邮件发送功能是否正常工作。 ...

    完整工作流JBPM项目实战全过程教程2---项目详细讲解

    9. **mailapi_1_3_1.jar** - 可能是JavaMail API的实现,用于发送和接收电子邮件。 10. **wsdl4j-1.5.1.jar** - WSDL4J是一个用于处理WSDL(Web服务描述语言)的Java库,用于解析和生成WSDL文档。 综上所述,这个...

    开源框架jar包(百度云盘)

     · jbpm-jpdl-suite-3.2.3.zip  · activiti-5.15.1.zip 其它  · spring-modules-0.9.zip  · poi-src-3.5-FINAL-20090928.zip  · poi-bin-3.5-FINAL-20090928.zip  · slf4j-1.6.1.zip  · pinyin4j-...

    基于jbpm与activiti的工作流平台技术架构介绍

    ### 基于jbpm与activiti的工作流平台技术架构介绍 #### 一、宏天BPM X3软件平台概述 宏天BPM X3软件平台是一款基于J2EE技术的开源、轻量级的企业业务开发平台。该平台旨在帮助用户以最快的速度梳理、设计、执行、...

    java程序员面试简历&#40;列子&#41;.doc.doc

    - 功能模块:系统管理、人力资源档案、薪酬管理、调动管理等,通过RBAC1实现权限控制,用JBPM4处理工作流。 - 技术要点: - 使用Struts2作为前端控制器,Hibernate处理数据持久化,Spring管理依赖。 - dom4j用于...

    JAVA邮件DEMO+邮件服务器.zip

    JBPM是一个开源的业务流程管理系统,它可以与JavaMail结合,当业务流程中有邮件通知的步骤时,自动发送邮件。 总的来说,这个ZIP文件包含了一个使用JavaMail API发送邮件的DEMO,可能还涉及了通过邮件进行业务流程...

    宏天软件J2EE应用快速开发平台技术简介

    整合了EXT3、Ajax、Spring、Struts、SpringSecurity、SpringAOP、Hibernate、JBPM、JasperReport、JAVAMail等先进开源技术,形成了强大而灵活的开发平台,易于升级和扩展,兼顾了系统的柔性和开放性。 #### 二、EST...

    Java项目开发实践---网络篇

    Java中的工作流框架如Activiti、jBPM等,提供了图形化的流程设计工具和强大的执行引擎。Section7_Workflow会介绍如何使用这些框架来定义和执行复杂的工作流程,以及如何集成到Java应用程序中,实现灵活的业务规则...

    JAVA技术体系

    - **JavaMail**:发送和接收电子邮件的功能。 #### Java EE 高级工程师 - **分布式开发技术**:使用 JBoss、WebLogic、WebSphere 等应用服务器。 - **工作流引擎**:如 JBPM。 - **规则引擎**:如 Drools。 - **...

    Java个人简历模板8.doc

    4. **前端技术**:掌握了JSP、XML、HTML、Ajax和jQuery等用于构建用户界面的技术,同时了解jbpm,这可能涉及到工作流管理。 5. **开发工具与服务器**:求职者能熟练使用开发工具MyEclipse,并能配置和部署Web服务器...

    java程序员简历模板

    6. **开发模式与工具**:熟悉MVC(模型-视图-控制器)开发模式,以及Lucene全文搜索引擎、jbpm工作流和Webservice技术。同时,能熟练使用Tomcat服务器、Linux服务器搭建、SVN版本控制和Junit调试工具。 7. **其他...

    JAVA办公自动化系统(源代码+论文+外文翻译).rar

    4. 通知与提醒:通过邮件、短信等方式及时通知用户处理待办事项,可以集成JavaMail API或第三方服务,如SendGrid。 5. 组件化设计:使用MVC(Model-View-Controller)设计模式,将业务逻辑、数据模型和用户界面分离...

    java程序员面试简历(列子).docx

    技术要点包括MVC设计模式、Hibernate对象持久化、Spring管理控制层、AOP日志维护、DWR和JQuery增强交互、RBAC1权限控制以及JBPM工作流。在该项目中,程序员主要负责绩效考核和培训模块。 客户关系管理系统则用于...

    JAVA+SQL办公自动化系统(源代码++外文翻译).rar

    4. 通知公告:发布和接收公司内部的通知,利用JavaMail API发送邮件,或者使用WebSocket进行实时推送。 5. 报表统计:通过SQL查询生成各种业务报表,可能结合了JFreeChart或Apache POI等库来呈现数据。 6. 外文...

Global site tag (gtag.js) - Google Analytics