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的类是
[color=red]org.jbpm.jpdl.internal.xml.JpdlParser[/color]

找到方法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里面咯

有什么不懂可以问
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值