`
jacky6024
  • 浏览: 81125 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

《深入浅出jBPM》一书中第7章与第9章相关工程的源码

阅读更多
《深入浅出jBPM》一书中第7章与第9章相关工程的源码。本书由人民邮电出版社出版。

第7章介绍的报销及采购流程的完整工程及其源代码: jbpm-web-test.rar

第9章企业级应用里涉及到的工程及相关EJB的源代码:jbpm-ent-test.ear.rar
分享到:
评论
31 楼 zhangyg 2009-08-02  
高老师:

我看了您的书,在两个具体的流程实例中,所有的节点的都是用的TaskNode节点,State没有使用过,那我有一个问题,State节点如何使用,由谁驱动流程向下流转,谢谢答复。
30 楼 跟我一起拽 2009-07-31  
跟我一起拽 写道
高老师你好!
我是一个初学者有个疑惑的地方!
您在该书的第22页的第4段中说采用servlet来获得JbpmContext对象的方法是用getCurrentJbpmContext()但是在代码清单2-4中还是使用的createJbpmContext()请问是笔误还是什么呢?

不好意思不好意思,是我自己搞错了。呵呵!
29 楼 跟我一起拽 2009-07-31  
高老师你好!
我是一个初学者有个疑惑的地方!
您在该书的第22页的第4段中说采用servlet来获得JbpmContext对象的方法是用getCurrentJbpmContext()但是在代码清单2-4中还是使用的createJbpmContext()请问是笔误还是什么呢?
28 楼 jacky6024 2009-07-31  
忘记贴源码了,打开jBPM源码org.jbpm.mail包下的Mail.java文件,查看其中的public static void send(Properties mailServerProperties, String fromAddress, List recipients, List bccRecipients, String subject, String text) 方法,在该方法当中没有发送邮件时没有考虑到smtp服务需要验证的情形,所以如果我们的smtp服务器需要验证,那么需要重写该类,修改这里的public static void send(Properties mailServerProperties, String fromAddress, List recipients, List bccRecipients, String subject, String text) 方法。


  public static void send(Properties mailServerProperties, String fromAddress, List recipients, List bccRecipients, String subject, String text) {
    if ( (recipients==null)
         || (recipients.isEmpty())
       ) {
      log.debug("skipping mail because there are no recipients");
      return;
    }
    log.debug("sending email to '"+recipients+"' about '"+subject+"'");
   
   
    Session session=null;
    String auth=JbpmConfiguration.Configs.getString("jbpm.mail.from.address");
    if(auth!=null && auth.equals("true")){
    session = Session.getInstance(mailServerProperties, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(JbpmConfiguration.Configs.getString("mail.smtp.user"), JbpmConfiguration.Configs.getString("mail.smtp.password"));
}
});
    }else{
    session = Session.getDefaultInstance(mailServerProperties, null);
    }

   
   
    MimeMessage message = new MimeMessage(session);
    try {
      if (fromAddress!=null) {
        message.setFrom(new InternetAddress(fromAddress));
      }
      Iterator iter = recipients.iterator();
      while (iter.hasNext()) {
        InternetAddress recipient = new InternetAddress((String) iter.next());
        message.addRecipient(Message.RecipientType.TO, recipient);
      }
      if (bccRecipients!=null) {
        iter = bccRecipients.iterator();
        while (iter.hasNext()) {
          InternetAddress recipient = new InternetAddress((String) iter.next());
          message.addRecipient(Message.RecipientType.BCC, recipient);
        }       
      }
      if (subject!=null) {
        message.setSubject(subject);
      }
      if (text!=null) {
        message.setText(text);
      }
      message.setSentDate(new Date());

      Transport.send(message);
    } catch (Exception e) {
      throw new JbpmException("couldn't send email", e);
    }
  }


上面的代码是我手写的,没有经过测试,红色部分就是要更改的部分,供大家参考。
27 楼 rongzhi_li 2009-07-30  
高哥,试了好像不行呀,jbpm.mail.user 和bpm.mail.password好像根本没有读取,能多指点一下吗? 
26 楼 jacky6024 2009-07-30  
大家在练习邮件发送 出现 553 authentication is required 错误时,要采用以下方法解决:

jbpm.cfg.xml文件中关于mail配置请参考以下配置:

<string name="jbpm.mail.smtp.host" value="smtp.gmail.com" />
<!-- 配置邮件来源地址 -->
<string name="jbpm.mail.from.address" value="aaa@gmail.com" />
    <!-- 邮件安全验证 -->
<string name="jbpm.mail.smtp.auth" value="true" />
<!-- 用户名 -->
<string name="jbpm.mail.user" value="aaa@gmail.com" />
<!-- 密码 -->
<string name="jbpm.mail.password" value="****" />
25 楼 jacky6024 2009-07-28  
我的失误,感谢您的提醒!
24 楼 qinzy 2009-07-28  
您好!
我看过第二章后,有疑问
1,创建流程实例 代码,执行虽然OK,但是感觉没有持久化到jbpm_taskinstance表中,
是否应该加上如下
jbpmContext.save(processInstance);
jbpmContext.close();
那样在
// 加载流程实例
public static void loadProcessInstance(long id) {
ProcessInstance processInstance = jbpmContext.loadProcessInstance(id);
Token token = processInstance.getRootToken();
System.out.println("1:" + token.getNode().getName());
token.signal();

}
才能获取建立好的流程实例
2,加载任务实例
TaskInstance task = jbpmContext.loadTaskInstance(id);
之前代码是没有说明,哪里持久化进入任务实例表的,这样加载显然会出现异常,那如何持久化进入此表
3,获取待办任务
List<Task> list = jbpmContext.getTaskList(actorId);
这里也说的不详细,仅提供如何加载,实际发现需要在流程模板中设置参数.可是我插入Task表后,发现使用jbpm_task的NAME_配合上面jbpmContext.getTaskList(actorId);
也无法检索,检索数据集合长度是0
23 楼 jacky6024 2009-07-26  
没有错误呀,您是不是关心这里的jbpmContext对象哪里来的对吧?

这里的jbpmContext对象要可以采用前面的章节里介绍的方法实例化的。
22 楼 lepoke 2009-07-25  
高老师,第二章(P37)的代码清单2-17 是不是印刷有误?
21 楼 jacky6024 2009-07-23  
crabboy  您好,

第九章是本书比较难的一章,个人觉得也是比较重要的一章,如果可以的话尽量花点时间先了解EJB,然后再去学习这一章。

也许您在项目中不会用到jBPM的独立模式,但了解jBPM的独立模式可以帮助您从整体上把握所有的流程引擎的运行原理。

1、jbpm的独立模式必须要ejb?
答:不一定,可以使用web-service代替,但其中的任务调度就要采用嵌入式模式的运行方式了。

2、jbpm提供的异步和jms有什么区别?
答:异步是jBPM处理工作的一种方法,如果采用jms那么就给这种方法提供了一种实现的途径。

3、jbpm提供的任务调度和ejb 的timer有什么区别?
答:timer是用来实现周期性调度任务的。
20 楼 crabboy 2009-07-23  
高杰老师,第九章已阅读完毕,但云里雾里啊。主要是对ejb不熟。
这里问个问题:
1、jbpm的独立模式必须要ejb?
2、jbpm提供的异步和jms有什么区别?
3、jbpm提供的任务调度和ejb 的timer有什么区别?
19 楼 jacky6024 2009-07-19  
很抱歉,前面一些零星的源码我这里没保存下来,如果您在书中有什么问题或出错的地方您可以给我发邮件,把您遇到的问题及所在书的位置描述清楚,我来帮您解答,我的邮件:gaojied@gmail.com
18 楼 pzpyp 2009-07-19  
首先说下我的情况,我在当当买的书,买了后才知道书中没带光盘的,
看了几天,自己也动手印证了,可没源码,老出错。

再提个小小请求: 高老师,能否把所有章节的代码都公布一下
17 楼 jacky6024 2009-07-18  
谢谢您的提醒,
16 楼 nenusoul 2009-07-16  
    问题解决了,需要添加javamail包,就OK了,希望作者能将这些细节问题在第二版中加入,
15 楼 nenusoul 2009-07-16  
    发送邮件部分是不是提前需要搭设邮件服务器啊,要不凭借那个配置文件就能发邮件感觉不可思议呢,我没有发送成功。
14 楼 jacky6024 2009-07-16  
我们公司有很多个子小的,呵呵!
13 楼 jfxllove 2009-07-15  
认识你们公司的那个个子小小的.
12 楼 jacky6024 2009-07-15  
感谢两位的意见。

相关推荐

    深入浅出JBPM最新源码第七章-报销实例

    【深入浅出JBPM最新源码第七章-报销实例】是一个关于企业流程管理(Business Process Management,简称BPM)的实战教程,主要聚焦在JBPM框架的使用上,结合了myeclipse集成开发环境、SQL数据库、Tomcat6.0应用服务器...

    深入浅出jBPM 5,6章

    《深入浅出jBPM 5,6章》是一本专为理解jBPM这一流程管理系统而精心编写的书籍。jBPM是一个开源的工作流管理系统,它提供了业务流程建模、执行、监控和优化的全面解决方案。这本书的第5章和第6章尤其关键,它们涵盖...

    jbpm深入浅出第7章实例代码

    本资源“jbpm深入浅出第7章实例代码”聚焦于通过jbpm实现工作流的实战演练,旨在帮助读者更深入地理解和掌握jbpm的使用。 jbpm的工作流程管理包括了流程定义、流程执行、流程监控等多个方面。第7章可能涉及的内容...

    深入浅出 jBPM 电子书, ,综合大量例子和资料

    深入浅出jBPM 电子文档,内容包括:面向图的程序设计,流程建模,节点——Node 职责,task-node节点,state节点类型,decision节点类型.等等,.还 综合大量例子和资料 , 是 学习 JBPM 必读首选! 希望这部书,大家能...

    《深入浅出jBPM》第3章

    《深入浅出jBPM》中文版由jBPM方面的专家高杰根据自己的经验编写,是一本实用的jBPM教程。全书分两个部分,第一部分详细讲 解jBPM 3.2,第二部分介绍jBPM 4。作者从初学者的角度由浅入深地介绍jBPM的基本知识、使用...

    深入浅出_jBPM_电子书

    深入浅出 jBPM 电子书,很适合初学者学习的一个开发文档

    《深入浅出jBPM》第2章(2)

    《深入浅出jBPM》中文版由jBPM方面的专家高杰根据自己的经验编写,是一本实用的jBPM教程。全书分两个部分,第一部分详细讲 解jBPM 3.2,第二部分介绍jBPM 4。作者从初学者的角度由浅入深地介绍jBPM的基本知识、使用...

    《深入浅出jBPM》第2章(1)

    《深入浅出jBPM》中文版由jBPM方面的专家高杰根据自己的经验编写,是一本实用的jBPM教程。全书分两个部分,第一部分详细讲 解jBPM 3.2,第二部分介绍jBPM 4。作者从初学者的角度由浅入深地介绍jBPM的基本知识、使用...

    深入浅出jBPM.1-6章测试代码_jbpm-test.rar

    《深入浅出jBPM:1-6章测试代码详解》 jBPM,全称为Java Business Process Management,是一款开源的工作流管理系统,用于处理业务流程的建模、部署、执行和监控。它提供了灵活的工作流定义,支持BPMN 2.0标准,...

    深入浅出JBPM

    **深入浅出JBPM** JBPM,全称Java Business Process Management,是一款开源的工作流管理系统,由JBoss组织开发,现在是Red Hat公司的产品。它提供了一整套解决方案,用于设计、执行、监控和优化业务流程。JBPM的...

    深入浅出jBPM完整版part1

    第 1 章 helloworld..............................................2 1.1 下载开发套件.............................................2 1.2 安装流程设计器 .........................................7 1.3 jBPM...

    深入浅出jBPM完整版.part4

    《深入浅出jBPM》深入浅出,示例丰富,实用性强,适合有一定Java基础的读者阅读。

    深入浅出jBPM电子书

    深入浅出jBPM电子书,JBOSS jBPM是一个灵活的、可扩展的工作流管理系统。JBOSS jBPM拥有直观的流程语言,用任务、异步的等待状态、定时器、自动化动作…等来表示业务流程图,把这些操作绑定在一起,JBOSS jBPM就拥有...

    深入浅出JBPM 采购实例

    【深入浅出JBPM 采购实例】是一个基于Myeclipse8.5、Tomcat6.0和JBPM3.2.3的实践教程,旨在帮助读者理解并掌握工作流管理系统JBPM在采购流程中的应用。在这个实例中,作者省略了邮件功能,因为JBPM3.2.3版本不包含...

    深入浅出jbpm系统开发

    【深入浅出jbpm系统开发】是一本专为jbpm工作流引擎初学者设计的入门指南,旨在帮助读者快速理解和掌握这一强大的开源工作流引擎。jbpm作为一个流行且功能丰富的工具,广泛应用于企业流程自动化、任务管理和决策支持...

    jbpm源码阅读之一

    压缩包中的文件 "Java23种设计模式(总结).doc" 显然是一个关于Java设计模式的文档,这与jbpm源码阅读紧密相关。设计模式是软件工程中的最佳实践,对于理解任何复杂系统的源码都是非常有帮助的。jbpm作为一个成熟的...

Global site tag (gtag.js) - Google Analytics