`
legend9999
  • 浏览: 32002 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jbpm工作流程

阅读更多

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?当流程开始的时候,创建流程常量。
??

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

        //生成实例

     pi = pdf.createProcessInstance();

     //设置流程发起人

     pi.getContextInstance().createVariable("initiator", user);

     //触发流程转向

     pi.signal(); //进入流程的第一个节点,会触发第一个Transision。

                     //新建一个ProcessInstance,会自动触发这步,但是,因为系统升级的过程中,有的流程是正在退款的过程中,所以,对这种流程要判断,并且要赋给它一个初始的状态。

    }

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

Java代码 复制代码
  1. TaskInstance?ti?=?pi.getTaskMgmtInstance().getInstance().iterator().next(); ??
  2. ti.end( "部门经理审批通过" );??
    TaskInstance ti = pi.getTaskMgmtInstance().getInstance().iterator().next();

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

???? 如果如果点击不通过。
??

Java代码 复制代码
  1. ti.end( "部门经理审批不通过" );??
  ti.end("部门经理审批不通过");

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

Java代码 复制代码
  1. List<transistion>?transitions?=?ti.getToken.getNode().getLeavingTransitions(); ??
  2. ?? for (Transition?t?:?transitions){ ??
  3. ??????sysout(t.getName()); ??
  4. ??}??
  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最后必须调用

Java代码 复制代码
  1. /* ?
  2. ?*?这句别漏了,否则流程不会向下走哒 ?
  3. ?*/ ??
  4. executionContext.leaveNode();??
  /*

   * 这句别漏了,否则流程不会向下走哒

   */

  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. ???????????
可以用

Java代码 复制代码
  1. InputStream?is?=?java.util.Date. class .getResourceAsStream( "Collection.class" );??
 InputStream is = java.util.Date.class.getResourceAsStream("Collection.class");

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

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

Java代码 复制代码
  1. Class.getResourceAsStream( "/log4j.properties" ); ??
  2. Class.getClassLoader.getResourceAsStream( "log4j.properties" );??
Class.getResourceAsStream("/log4j.properties");

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

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

分享到:
评论

相关推荐

    JBPM工作流程API和Jar.zip

    这个压缩包“JBPM工作流程API和Jar.zip”包含的是JBPM的相关API文档和必要的JAR文件,这些是开发基于JBPM的应用程序所必需的资源。 首先,我们要了解JBPM的核心概念。JBPM提供了流程定义语言BPMN 2.0(Business ...

    JBPM工作流程表结构关系解析文档下载

    **JBPM工作流程表结构关系解析** JBPM(Java Business Process Management)是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了一个全面的框架,允许开发者和业务分析师协同工作,构建灵活且可...

    jbpm工作流程小例子

    jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程自动化提供了一套强大的框架。本项目是一个jbpm工作流程的小例子,通过一个实际的工程项目和PPT,全面展示了jbpm的运用和相关...

    工作流程JBPM工作流管理

    【工作流程JBPM工作流管理】是企业信息化建设中至关重要的一环,它涉及到组织内部的任务自动化、业务流程优化以及跨部门协作效率的提升。JBPM(JBoss Business Process Management)是Red Hat公司推出的一款开源的...

    jbpm工作流整合

    jbpm工作流整合是一个关键的主题,它涉及到企业级业务流程管理(BPM)系统的实施与集成。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和框架,用于设计、执行、监控和优化业务流程。这个压缩包可能包含...

    jBPM工作流详解

    jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成了Java服务、事件处理...

    jbpm工作流(会签,串签)

    jbpm工作流是一款开源的工作流程管理系统,主要用于设计、执行和管理业务流程。它结合了Java技术和BPMN(Business Process Model and Notation)标准,提供了一种强大的方式来定义和执行复杂的业务流程。在本教程中...

    jbpm工作流 基础视频

    jbpm工作流是一款开源的工作流程管理系统,主要用于设计、执行和管理业务流程。它结合了Java技术和BPM(Business Process Management)理念,为开发者提供了一套强大的工具,使得企业能够更有效地自动化和优化业务...

    JBPM工作原理及表结构详解

    JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了强大的业务流程建模、执行和监控能力。本文将深入探讨JBPM的工作原理、表结构及其在实际操作中的应用。 1. **JBPM特色** - **灵活...

    JBPM工作流DEMO

    总的来说,JBPM工作流DEMO提供了一个实践工作流管理系统的起点,通过学习和研究这个DEMO,开发者能够掌握如何在Java环境中使用JBPM来设计、实现和管理复杂的业务流程,并结合`SimpleDateFormat`等基本Java类处理流程...

    jbpm工作流引擎介绍

    jbpm(Java Business Process Management)是一款开源的工作流引擎,它为业务流程自动化提供了一套强大的框架。jbpm致力于实现业务流程的建模、部署、执行和监控,是基于Java技术的,因此它天然地适用于Java开发环境...

    JBPM工作流全套学习资料

    JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个压缩包包含了丰富的材料,帮助用户深入理解并掌握JBPM的工作原理和应用。 首先,JBPM的核心...

    JBPM工作流详解

    其中,**Jbpm** 是一款非常流行的开源工作流引擎,特别适合于Java环境下的业务流程管理。 #### 三、Jbpm 4.4 简介 **Jbpm** 即 Java Business Process Management,是一款基于Java的业务流程管理系统。Jbpm 4.4 的...

    JBPM工作流

    JBPM工作流技术是Java业务流程管理的简称,是一种用于管理业务流程的开源框架。JBPM遵循业务流程管理(BPM)的标准,通过定义和管理工作流的活动(即任务点或活动点)来实现业务流程的自动化。JBPM提供了一套完整的...

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...

    JBPM采购申请系统——08_JBPM流程节点.7z

    JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...

    JBPM工作流实战_程序自动选择流程的走向视频 06

    【JBPM工作流实战_程序自动选择流程的走向视频 06】 JBPM(Java Business Process Management)是一款开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。在这个实战视频系列中,我们将深入理解如何在...

    jbpm工作流详解

    【jbpm工作流详解】 工作流(Workflow)是业务过程在计算机环境下的自动化体现,旨在使多参与者间按照预定义规则传递文档、信息或任务,以达成特定的业务目标。工作流管理系统(WfMS)是实现这一目标的关键,它负责...

Global site tag (gtag.js) - Google Analytics