专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 行业应用

jbpm4.4 task实业属性扩展

发布时间:2010-06-06 18:51:43 文章来源:www.iduyao.cn 采编人员:星星草
jbpm4.4 task实体属性扩展
研究jbpm4.4也比较久了,但由于学习得比较分散,也没过太过深入,今天突然想jbpm4.4的最简单的扩展---实体属性扩展,google一下,资料太少了,大多都是api方面的问题

本着前人挖井,后人喝水的原则,前面喝了太多水,今天是时候挖口井了

下面用最简单的例子说明实体属性扩展的大概:

在流程定义文件里增加一个属性,然后解释,接着创建任务的时候把这个属性set进去

<task form="open.jsp" g="395,103,92,52" name="省市场部" role_id="195">
    <assignment-handler class="com.zhizhao.assignmentHandler.AssignSingle"/>
    <transition g="442,233:12,-46" name="同意" to="省客服服务部"/>
</task>


如上面代码,在task节点里面增加一个role_id="195"的属性
这时xml一般会报错,因为原来的验证xsd文件根本没这个属性

可以修改jbpm包目录下jpdl-4.4.xsd,定位到 <element name="task">
添加一行(中间那行attribute name="role_id"....)
<attribute name="swimlane" type="string" />
<!-- 自定义-->
<attribute name="role_id" type="string" />
<attribute name="form" type="string">


在myeclipse定义好引用,这时不会报错了

找到org.jbpm.pvm.internal.task.TaskDefinitionImpl和org.jbpm.pvm.internal.task.TaskImpl,在里面添加属性roleId
至于get/set我就不说了

jbpm4.4解释流程定义xml的类是
org.jbpm.jpdl.internal.xml.JpdlParser

找到方法parseTaskDefinition,在里面加入两行
public TaskDefinitionImpl parseTaskDefinition(Element element, Parse parse,
    ScopeElementImpl scopeElement) {
    //....  这里看其他怎么写就怎么写 换个属性名而已
    String role_id = XmlUtil.attribute(element, "role_id");
    taskDefinition.setRoleId(role_id);
    //....
}


接着就是最重要的,就是jbpm创建任务的方法,这个问题我纠结了很久了,没想到在这里...
org.jbpm.jpdl.internal.activity.TaskActivity

public void execute(ExecutionImpl execution) {
    DbSession dbSession = EnvironmentImpl.getFromCurrent(DbSession.class);
    TaskImpl task = dbSession.createTask();
    task.setTaskDefinition(taskDefinition);
    task.setExecution(execution);
    task.setProcessInstance(execution.getProcessInstance());
    task.setSignalling(true);
    ........
    //找个地方写就行
     task.setRoleId(taskDefinition.getRoleId());
}


这个方法是jbpm任务创建的时候都会执行的,至于自己创建任务,你想怎么搞就怎么搞吧。。

扩展了当然就要保存到数据库咯,接着修改jbpm.task.hbm.xml,添加属性映射
 <property name="roleId" column="ROLE_ID"/>


接着定义就可以保存到jbpm4_task里面咯

有什么不懂可以问
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 《松本行弘的程序全世界》之面向对象

    《松本行弘的程序世界》之面向对象 最近读《SICP》把脑细胞搞死大半,还没看完2章,而且看得也是一知半解,实在是受不了了,...

  • GroovyHelp 3.2.7 GA公布

    GroovyHelp 3.2.7 GA发布 GroovyHelp简介   GroovyHelp是一款Javadoc及Groovydoc搜索查阅软件,它能够帮助Java开发人员以...

  • Velocity在Roller中的使用

    Velocity在Roller中的应用 Velocity是java世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。   所...

  • Rpc远程调用框架的设计与兑现(2)

    Rpc远程调用框架的设计与实现(2) 接上: 3   基于Json的前后端数据交互 3.1   轻量级的数据交换形式 3.1.1    什么是Jso...

  • excel 单元格的锁定 以及 JXL的兑现方式

    excel 单元格的锁定 以及 JXL的实现方式 在使用excel表格时,有些列是不希望用户可以修改的,诸如审计日志里面确定的部分,而审计...

  • 仓秤跟散料秤:java连接opc Server

    仓秤和散料秤:java连接opc Server 这三篇都是之前写好的,一直没发。 这次一起发出来吧。   java连接硬件很痛苦,特别是对我这...

  • Rpc远程调用框架的设计与兑现(1)

    Rpc远程调用框架的设计与实现(1) Rpc远程调用框架的设计与实现 1     Rpc远程调用框架设计概述 1.1   研究背景 1.1.1...

  • 集合中的线程安全有关问题

    集合中的线程安全问题 一、why? Java中常用的集合框架推荐使用的三个实现:HashSet\ArrayList\HashMap都是线程不安全的.如...

  • Java定时任务的兑现

    Java定时任务的实现 本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。 MyListener: ...

  • java中log日记的使用

    java中log日志的使用 一、介绍  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控...

热门推荐: