`

学习Jbmp笔记

阅读更多
 InputStream is = java.util.Date.class.getResourceAsStream("Collection.class");

  

1  JBPM的子流程是怎么工作的?

没有做

2 B2C也是担保交易,支付宝压款是完全可以接受的。

3 在退款协议期可能会有死循环,所以要介入人工处理阶段。人工处理应该是数据库定时JOB,将超时的任务导出到到后台小二的job list,子流程处理也要返回两个结果,退或不退,来判断是否退款是否结束

4 JBPM的任务节点(task-node)
任务节点是一个需要人工参与的节点,当流程进入节点,会生成相应的任务实例(task instance),并通过实现某个委派接口AssignHandler或jBPM表达式将任务委派给参与者,在界面上,需要根据参与者角色生成某个按钮,参与者按了后,节点才会进入下一个流程。节点进入等待状态,知道任务被参与者完成或跳过,过程才会继续。
判定节点(decision)
判定节点的设计目标是根据上下文环境和程序逻辑来判定流程转向。通过指定的DecisionHandler接口的实现类或jBPM表达式,返回transition字符串名称。来决定流程的方向。
普通节点(node)
普通节点也可以处理定义的相应的处理任务,通过实现的ActionHandler的类。同任务节点不同的是,普通节点定义的任务是自动执行的,而不需要人工来点,比如通知消息。
 可以定义成一个Node节点,在时间发生后,发Email或wangwang消息。或退款成功,通知支付宝按退款协议给双方打款,也可以做成一个Node节点。
5 Node,TaskNode,Decision上都可以挂接EventNode,
三种结点都可定义结点事件(event): 
 node-enter,该事件在流程进入结点时触发 
 node-leave,该事件在流程离开节点是触发 
 可以在事件上挂接ActioinHandler接口的实现类来完成一些特定的功能。 
 在EventNode中,写ActionHandler的实现类,从而自动完成一些任务,比如发邮件等任务。


6 NodeTask的具体定义,几个参数是什么意思? 
比如General,Detail,Assignment,Controller,Reminder分别代表什么意思。

 

7 JPML中最常用的几个程序回调接口
动作处理接口ActionHandler,在需要evnet,antion的地方回调
interface ActionHandler{
    void execute(ExecutionContext executionContext) throws Exception;
}
该接口通过执行上下文ExecutionContext来了解当前的状态,比如节点处的位置,买卖双方的信息等。

判定接口(DecisionHandler)
public interface DecisionHandler extends Serializable {
  String decide(ExecutionContext executionContext) throws Exception;
}
会返回一个字符串,在这个节点,根据字符串,决定往哪个transision分支走。

委派处理接口(AssignmentHandler)

接口方法:void assign(Assignable assignable, ExecutionContext executionContext) throws Exception;

适用于TaskNode中新增的Task节点,对应的是Assignment的Tab,他的作用是将Task委派给指定的人员或角色。

委派处理接口被用户任务元素(task)的委派(assignment)子元素中,它的职责很明确,就是将任务分配给指定的人员或角色。
 在AssignmentHandler接口的方法中,Assignable变量通常指任务实例(TaskInstance)。通过将ExecutionContext和TaskInstance两个变量都暴露给接口方法,用户就可以根据流程上下文情况,来决定要将指定的任务分配个谁。

作用于Node和作用于transision的handler虽然都是继承自同一个接口ActionHandler,但是Node的execute的方法内,必须执行executionContext.leaveNode来保证流程的向下执行,而transition不用使用这个方法。

8 一个TradeProcessConstans类,来包装所有字符串常量。

我们对Jbpm的封装

9 当流程开始的时候,创建流程常量。
  

  protected void createProcessInstance(String user){
        //生成实例
     pi = pdf.createProcessInstance();
     //设置流程发起人
     pi.getContextInstance().createVariable("initiator", user);
     //触发流程转向
     pi.signal(); //进入流程的第一个节点,会触发第一个Transision。
                     //新建一个ProcessInstance,会自动触发这步,但是,因为系统升级的过程中,有的流程是正在退款的过程中,所以,对这种流程要判断,并且要赋给它一个初始的状态。
    }

 
    当用户提交借款申请。
    当经理审批通过,是经理在界面点击通过或不通过的按钮,业务层调用:

    TaskInstance ti = pi.getTaskMgmtInstance().getInstance().iterator().next();
    ti.end("部门经理审批通过");

     如果如果点击不通过。
  

  ti.end("部门经理审批不通过");

     打印出TaskInstance所有的向下的支路.

  List<Transistion> transitions = ti.getToken.getNode().getLeavingTransitions();
    for(Transition t : transitions){
        sysout(t.getName());
    }

     进入TaskNode节点,会自动回调TaskNode的Task节点的AssignHandler和ControllerHandler,决定流程如何向下一个节点流转。  
 
10 executionContext.getContextInstance.getVarable();
可以把OrderID或外部ID,用户ID等放到varable中去,并持久化到数据库。

11 超时是应用层考虑还是数据库层考虑,这里放到一边。
设计的结果是应用层考虑超时。

12 借款的流程顺序。

第一个Transision,StartProcessActionHander
第二个回调:在提交支款申请里面,DepartmentManagerHandler
第三个回调:AssignmentHandler,进入部门经理审批流程,将这个审批任务分配给一个或一群人。调用这个Handler来调用:DepartmentManagerApproveAssignmentHandler来进行分配。
第4个回掉:ActionHandler的回调,在审批同意的Transition里回调
ManagerApprovedAction
第5个回调,在部门经理审批同意后,看金额是否大于6000,决定是否上调给总经理审批。
如果小于5000,自动执行小于5000的Transition,在DecideNode,不需要等待,直接执行。执行"<5000 财务拨款"Transition,进入下一个Node"财务拨款"。

问题,在这个过程中,如果保证事务,如果一个节点失败了,是否要进行回滚,和如何进行回滚,JBPM有机制来保证这个过程吗?

第6个回调,流转到"财务拨款",财务拨款是个Node,系统自动调用,而不需要人工参与。
Node和TaskNode中的Action不同的是,NodeAction的execute最后必须调用

  /*
   * 这句别漏了,否则流程不会向下走哒
   */
  executionContext.leaveNode();

 不然,流程不会向走。
第7个回调,Trasition流转到邮件通知这步,流转调用SendMailActionHandler,,其实邮件通知可以在BenforeNode和LeaveNode里面用Event来做,也是一种方法。

 

13 ProcessDefinition
   --ProcessInstance
   ----TaskInstance
   ------Token
   --------Node
   ----------Transition

 

14 JbpmContext的用处。

 

15 怎么在Jbpm中使用单元测试。

 

 

 

16  怎么在mysql指定的数据库上创建一个用户名密码,并且把所有或部分的权限赋给他。

 

17 部署Jbpm

调用ProcessDefinition,将其在内存中生成,并部署到MySql中去。

                                                    

18 class.getResourceAsStream 是以当前目录为基础,得到InputStream.           
可以用

 InputStream is = java.util.Date.class.getResourceAsStream("Collection.class");

 得到了InputStream就可以用ClassLoad将类重新载入内存了。

19 怎么得到ClassPath的路径,实际上,需要的是类路径上的配置文件。

Class.getResourceAsStream("/log4j.properties");
Class.getClassLoader.getResourceAsStream("log4j.properties");

20 使用EmEditor的技巧。
怎么在每一行某位加一个";",比如在数据库脚本?
查找(^[^--]*$)  表示所有不以--开头的行,用()将他们括起来,是为了back reference(向后引用),将他们替换成\0;表示将前面查到的所有都替换,并且在末尾加一个;
怎么删除空行?
查找^[ \t]*$\r\n,并将他们替换为空.

分享到:
评论

相关推荐

    jbmp3.2学习笔记

    在jPDL中,与流程设计相关的文件有三个:processdefinition.xml、gdp.xml、processimage.jpg。其中processdefinition.xml是流程定义的描述文件;gpd.xml是对图形界面呈现的XML描述;而 processimage.jpg则是对图形...

    jbmp3.0.13

    【jbmp3.0.13】是一款基于Java的工作流管理插件,它在实际应用中表现出优秀的稳定性和...同时,通过持续学习和实践,掌握jbmp的工作原理和最佳实践,将能更好地利用这一强大的工作流工具,提升企业的业务流程管理效率。

    jbmp用户指南(工作流)

    jbmp用户指南(工作流) ...总之,jbmp作为一款强大的工作流引擎,为企业提供了便捷的业务流程管理手段,通过学习和掌握jbmp,开发者可以构建出更加灵活、智能的业务系统,提升企业的运营效率和管理水平。

    JBMP入门讲解附带实例一个

    学习并实践这个入门实例,你将能够掌握JBMP的基本用法,为进一步深入研究和应用业务流程管理打下坚实的基础。通过不断地练习和应用,你将能够灵活地利用JBMP解决实际工作中的流程自动化问题,提升企业的业务效率。

    jbmp开发入门指南

    jbpm作为一款强大的工作流引擎,不仅简化了业务流程的管理,还提供了丰富的开发工具和示例,降低了学习曲线。通过理解其核心概念和实践开发,开发者可以构建出符合业务需求的高效工作流系统。在实际项目中,应根据...

    jboss+jbmp5.3开发手册.rar

    JBMP 5.3 版本是JBoss工作流管理系统的一个重要里程碑,它带来了许多增强功能和优化。这个开发手册将帮助开发者深入了解如何在JBoss环境中集成和使用JBM进行业务流程的管理和实现。 1. **JBM5.3.chm** - 这个CHM...

    jbmp入门教程,jBPM流程定义语言,业务日历,流程建模

    本教程将深入探讨jBMP的核心概念,包括流程定义语言、业务日历以及流程建模,帮助初学者快速入门。 一、jBPM流程定义语言 jBPM采用的是BPMN 2.0(Business Process Model and Notation)标准,这是一种图形化的流程...

    jbmp学习文档

    JBMP(Java Business Management Process)是Java业务流程管理的一种实现,它提供了一套框架用于定义、执行和监控业务流程。本文档将深入介绍JBPM5.1版本,帮助读者从入门到掌握其核心功能。 1. 简介 JBPM是开源的 ...

    myeclipse6.0的jbmp插件

    8. **优点**:使用插件的好处在于集成开发环境中的一站式服务,避免了在不同工具间切换的麻烦,提升了开发效率,同时通过图形化的界面,降低了学习和使用EJB及JBMP的难度。 综上所述,"myeclipse6.0的jbmp插件"是一...

    oa.rar_OA文档_SSH JBMP_jbmp oa_oa_oa ssh

    标题中的"oa.rar_OA文档_SSH JBMP_jbmp oa_oa_oa ssh"表明这是一个与OA...学习和研究这个压缩包,不仅可以深入了解SSH和JBMP在OA系统中的应用,还能掌握Java Web开发的实践技巧,以及如何管理和优化企业的工作流程。

    JBPM工作流笔记

    JBPM工作流笔记,自己做的一些笔记,JBMP初学

    JBoss JBMP用户开发手册

    关于JBoss JBMP-java工作流用户开发手册

    jbpm-demo.rar_DEMO_jar_jbmp demo_jbpm struts_jbpm-web tomcat

    这是web-jbpm的开发框架,布署到tomcat里面用,只要生成一个mysql的jbpm数据库执行mysql.create.sql, 实现了上传流程定义文件.可以数据库中查看 里面的架包是jbpm-starters-kit-3.1.4\jbpm.3\lib下面的所有包;...

    chen-jbpm_websale.zip_jbmp_jbmp java_jbpm_jbpm_websale_网上销售系统

    【标题】"chen-jbpm_websale.zip_jbmp_jbmp_java_jbpm_jbpm_websale_网上销售系统" 提供的是一个基于JBPM(Java Business Process Management)技术的网上销售系统的示例项目。JBPM是一个开源的工作流管理系统,它...

    jbmp4整合SSH的请假例子

    【SSH整合与JBMP4详解】 SSH(Spring、Struts、Hibernate)是Java Web开发中的经典框架组合,用于构建高效、可维护的企业级应用程序。在这个整合中,Spring作为整体架构的控制层,负责依赖注入和业务流程管理;...

    jbmp part 1 total 108

    jbmp part 3 total 108 for java develop tools

    jbmp part 2 total 108

    jbmp part 2 total 108 for java develop tools

    jbpm学习资料

    jbPM,全称Java Business Process Management,是一种开源的工作流和业务流程管理(BPM)框架,广泛应用于构建可扩展和灵活的业务应用。该框架支持BPMN2.0标准,提供了丰富的功能来帮助开发者设计、执行和监控业务...

    jbmp开发指南(OO)

    通过本文档的学习,相信读者已经对jBPM有了较为全面的认识。jBPM不仅提供了强大的工作流管理功能,还支持灵活的定制化需求。对于希望改善内部业务流程的企业来说,jBPM无疑是一个值得考虑的选择。未来随着技术的不断...

    工作流初介绍EOS+JBMP入门

    学习工作流和JBMP,你需要理解如何设计和定义业务流程,例如使用流程图表示活动、决策和流程分支;了解如何使用JBPM的工具创建和部署流程定义;熟悉任务分配和审批机制;并掌握监控和分析流程执行情况的方法,以便...

Global site tag (gtag.js) - Google Analytics