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代码
- protected
?
void
?createProcessInstance(String?user){ ??
- ??????
//生成实例
??
- ???pi?=?pdf.createProcessInstance(); ??
- ???
//设置流程发起人
??
- ???pi.getContextInstance().createVariable(
"initiator"
,?user); ??
- ???
//触发流程转向
??
- ???pi.signal();?
//进入流程的第一个节点,会触发第一个Transision。
??
- ???????????????????
//新建一个ProcessInstance,会自动触发这步,但是,因为系统升级的过程中,有的流程是正在退款的过程中,所以,对这种流程要判断,并且要赋给它一个初始的状态。
??
- ??}??
protected void createProcessInstance(String user){
//生成实例
pi = pdf.createProcessInstance();
//设置流程发起人
pi.getContextInstance().createVariable("initiator", user);
//触发流程转向
pi.signal(); //进入流程的第一个节点,会触发第一个Transision。
//新建一个ProcessInstance,会自动触发这步,但是,因为系统升级的过程中,有的流程是正在退款的过程中,所以,对这种流程要判断,并且要赋给它一个初始的状态。
}
?
??? 当用户提交借款申请。
??? 当经理审批通过,是经理在界面点击通过或不通过的按钮,业务层调用:
Java代码
- TaskInstance?ti?=?pi.getTaskMgmtInstance().getInstance().iterator().next(); ??
- ti.end(
"部门经理审批通过"
);??
TaskInstance ti = pi.getTaskMgmtInstance().getInstance().iterator().next();
ti.end("部门经理审批通过");
???? 如果如果点击不通过。
??
Java代码
- ti.end(
"部门经理审批不通过"
);??
ti.end("部门经理审批不通过");
???? 打印出TaskInstance所有的向下的支路.
Java代码
- List<transistion>?transitions?=?ti.getToken.getNode().getLeavingTransitions(); ??
- ??
for
(Transition?t?:?transitions){ ??
- ??????sysout(t.getName()); ??
- ??}??
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代码
- /*
?
- ?*?这句别漏了,否则流程不会向下走哒
?
- ?*/
??
- 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代码
- InputStream?is?=?java.util.Date.
class
.getResourceAsStream(
"Collection.class"
);??
InputStream is = java.util.Date.class.getResourceAsStream("Collection.class");
?得到了InputStream就可以用ClassLoad将类重新载入内存了。
19 怎么得到ClassPath的路径,实际上,需要的是类路径上的配置文件。
Java代码
- Class.getResourceAsStream(
"/log4j.properties"
); ??
- 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文件,这些是开发基于JBPM的应用程序所必需的资源。 首先,我们要了解JBPM的核心概念。JBPM提供了流程定义语言BPMN 2.0(Business ...
**JBPM工作流程表结构关系解析** JBPM(Java Business Process Management)是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了一个全面的框架,允许开发者和业务分析师协同工作,构建灵活且可...
jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程自动化提供了一套强大的框架。本项目是一个jbpm工作流程的小例子,通过一个实际的工程项目和PPT,全面展示了jbpm的运用和相关...
【工作流程JBPM工作流管理】是企业信息化建设中至关重要的一环,它涉及到组织内部的任务自动化、业务流程优化以及跨部门协作效率的提升。JBPM(JBoss Business Process Management)是Red Hat公司推出的一款开源的...
jbpm工作流整合是一个关键的主题,它涉及到企业级业务流程管理(BPM)系统的实施与集成。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和框架,用于设计、执行、监控和优化业务流程。这个压缩包可能包含...
jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成了Java服务、事件处理...
jbpm工作流是一款开源的工作流程管理系统,主要用于设计、执行和管理业务流程。它结合了Java技术和BPMN(Business Process Model and Notation)标准,提供了一种强大的方式来定义和执行复杂的业务流程。在本教程中...
jbpm工作流是一款开源的工作流程管理系统,主要用于设计、执行和管理业务流程。它结合了Java技术和BPM(Business Process Management)理念,为开发者提供了一套强大的工具,使得企业能够更有效地自动化和优化业务...
JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了强大的业务流程建模、执行和监控能力。本文将深入探讨JBPM的工作原理、表结构及其在实际操作中的应用。 1. **JBPM特色** - **灵活...
总的来说,JBPM工作流DEMO提供了一个实践工作流管理系统的起点,通过学习和研究这个DEMO,开发者能够掌握如何在Java环境中使用JBPM来设计、实现和管理复杂的业务流程,并结合`SimpleDateFormat`等基本Java类处理流程...
jbpm(Java Business Process Management)是一款开源的工作流引擎,它为业务流程自动化提供了一套强大的框架。jbpm致力于实现业务流程的建模、部署、执行和监控,是基于Java技术的,因此它天然地适用于Java开发环境...
JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个压缩包包含了丰富的材料,帮助用户深入理解并掌握JBPM的工作原理和应用。 首先,JBPM的核心...
其中,**Jbpm** 是一款非常流行的开源工作流引擎,特别适合于Java环境下的业务流程管理。 #### 三、Jbpm 4.4 简介 **Jbpm** 即 Java Business Process Management,是一款基于Java的业务流程管理系统。Jbpm 4.4 的...
JBPM工作流技术是Java业务流程管理的简称,是一种用于管理业务流程的开源框架。JBPM遵循业务流程管理(BPM)的标准,通过定义和管理工作流的活动(即任务点或活动点)来实现业务流程的自动化。JBPM提供了一套完整的...
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...
【JBPM工作流实战_程序自动选择流程的走向视频 06】 JBPM(Java Business Process Management)是一款开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。在这个实战视频系列中,我们将深入理解如何在...
【jbpm工作流详解】 工作流(Workflow)是业务过程在计算机环境下的自动化体现,旨在使多参与者间按照预定义规则传递文档、信息或任务,以达成特定的业务目标。工作流管理系统(WfMS)是实现这一目标的关键,它负责...