7月1号 release。 但貌似到现在还没出来。 mail到是有N多封了。
我以jbpm为工作流引擎实现为基础来开发一个应用系统。现在做原型,所以我有这个勇气用CR1版本。做原型目前就我一个人。
我比较想等RELEASE出来了继续开发。但是现在难道要我停滞? 唉,还是继续写代码吧。
遇到个问题。每个定义好的task如何关联到与之相对应的form去?
我用的struts2。具体说来,就是怎样让用户点击自己任务列表的一项后跳转到相应的Action去?
这个Action可能负责取出已经存在的表单数据,为接下来的用户表单页面准备数据。
开始想到了很奇怪的方法。就是task保存着Execution的实例id,然后通过这个id找到ProcessDefinition。通过ProcessDefinitionKey和task的name就可以限定到具体的某个form了。 我真是聪明啊! 但发现实现起来很困难。
看了看task的hbm,都是延迟加载的。不知道jbpm有OpenSessionInView的模式支持吗?
不知道。我把问题想复杂了?是的。看了Task接口,发现有getForm这个方法。太帅了。可以getForm。然后看了TaskImpl(对应于jbpm4_task表),果然有Form字段。
我猜这个应该就是jbpm4让你去绑定页面地址的吧。于是乎,添加form属性到某个task:
<task assignee="#{ren}" g="120,24,92,52" name="aTask" form="/XXX/x_ni.action">
<transition g="-50,-29" name="to YYY" to="yyy"/>
</task>
发现jpdl-4.0.xsd里没定义这个form。所以咱的jpdl,就有小红点点了。(看这里,看这里:))。
不过不影响最终的效果。发布还是可以的。不信你自己试试。
有了form,咱就可以这样写页面了:
<a href="<%=request.getContextPath()%>${task.form}">查看任务</a>
这样做了以后,用户点击一个具体的task后,就可以导到专为这个task定制的表单(form)去了
那么,我是怎么知道没问题的呢?因为我发现在JpdlParser中,会有parseTaskDefinition这个方法。
这个方法的实现会创建一个TaskDefinitionImpl,然后:
String form = XmlUtil.attribute(element, "form");
taskDefinition.setForm(form);
那么,你肯定会想,这个TaskDefinitionImpl和TaskImpl肯定有某种暧昧的关系了。是的,你答对了。
在JpdlExecution中有:
public TaskImpl createTask(TaskDefinitionImpl taskDefinition) {
DbSession dbSession = Environment.getFromCurrent(DbSession.class);
TaskImpl task = (TaskImpl) dbSession.createTask();
task.setTaskDefinition(taskDefinition);
task.setExecution(this);
task.setProcessInstance(processInstance);
task.setSignalling(true);
// initialize the name
if (taskDefinition.getName()!=null) {
task.setName(taskDefinition.getName());
} else {
task.setName(getActivityName());
}
task.setDescription(taskDefinition.getDescription());
task.setPriority(taskDefinition.getPriority());
task.setForm(taskDefinition.getForm());
// save task so that TaskDbSession.findTaskByExecution works for assign event listeners
dbSession.saveTask(task);
............
}
这就是暧昧的关系。
还有,我是怎么知道这些类之间的关系呢?
我先看到jbpm.task.hbm.xml的。里面会涉及到TaskImpl。TaskImpl会实现Task接口。然后我就在想这些类是什么时候创建的。于是在eclipse右键(点在TaskImpl这个类上),然后Open Call Hierarchy。 然后会在eclipse下方出现一个Call Hierarchy窗口,自己慢慢看,慢慢点吧。(new Task() -> createTask()->createTask(TaskDefinitionImpl))
不知道大家有没有更好的方法来看这些代码?如果我的方法,你能用到。那我真是万分荣幸!
分享到:
相关推荐
jbpm4源码jbpm4源码jbpm4源码
5.1表JBPM4_DEPLOYMENT 7 5.2 表JBPM4_DEPLOYPROP 7 5.3 表JBPM4_EXECUTION 8 5.4 表JBPM4_HIST_ACTINST 9 5.5 表JBPM4_HIST_DETAIL 9 5.6 表JBPM4_HIST_PROCINST 10 5.7 表JBPM4_HIST_TASK 11 5.8 表JBPM4_HIST_VAR...
jboss jbpm4最新开发包 采用了pvm框架
java源代码分包详解JBPM4 java源代码分包详解JBPM4
jBPM4工作流应用开发指南 胡奇写的,十分赞!!
jbpm4。4中表之间的关系,jbpm4 表关系
jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版
JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS 希望对大家有帮助。
风中叶老师讲的JBPM4与Spring整合例子代码 JBPM4 Spring OA工作流系统
这是jbpm4的安装配置介绍文件,详细的介绍了jbpm4与eclipse的集成
JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程
,jbpm4的源码,分支,会签等一些中国特色建立下载《jBPM4工作流应用开发指南.pdf》这本书
JBPM4 表结构概要说明 操作信息变化 各字段详细说明
本示例是jBPM4工作流示例jbpmDemo,详细演示了jBPM4工作流引擎的使用,对工作流采用Canvas动画形象演示,非常实用。也非常先进和有趣。 希望您喜欢。
整理的别人JBPM4 学习资料, 工作流学习文档
jbpm4新手教程
jbpm jbpm4.3.jar DDDDDDDD
jBPM 4 Graphical Designer ,是比较详细介绍了jbpm4
jbpm4表结构模型jbpm4表结构模型jbpm4表结构模型jbpm4表结构模型
jbpm3,jbpm4用户文档,开发指南,jbpm4解读,jbpm学习笔记,jbpm最佳实践全套套