工作流里两节点怎么和同一条业务表里的数据关联上

ttitfly 2008-06-19
最近在弄一个工作流,自己实现的一个非常简单的,有个问题没有想到好的解决办法,想请教下,多谢

比如:
a节点:填写申请报销单
b节点:主管审核

从a节点到b节点。

当用户填写报销单后,向业务表(baoxiao表)里插入一条记录,该记录记录了用户填写的信息,然后流程走到b节点,b节点这时肯定要对a节点填入的信息进行审核,但是关键问题在于b节点是不知道去baoxiao表里取哪条记录,该怎么关联呢?

jbpm好像是通过
ProcessInstance.setVariable(key,value)和TaskInstance.getVariable(key)进行关联的。具体里面细节还不是很清楚。
ttitfly 2008-06-19
我的问题可能没说清楚。补充一下

比如:
菜单结构

--申请
--审核
         ---待审核
         ---已审核


当用户点击”申请“时,到一个申请表单页面,然后用户填写申请信息,保存后会向baoxiao表里插入一条记录,该记录记录了用户填写的信息。同时会操作工作流引擎,流向下一个节点。

这时,如果以“部分负责人”的角色登陆系统后,当点击菜单:“待审核”时,会去执行一个对应的Action类,该类会调用工作流引擎的一个方法,列出对应节点未审核的数据。然后返回到页面(假如为a.jsp)

a.jsp显示内容大致为:

任务名称            进入该节点时间                操作
申请报销             2008-06-16            我来处理
申请报销             2008-06-17            我来处理
申请报销             2008-06-18            我来处理


当部门负责人点击a.jsp里“我来处理”连接时,肯定要去baoxiao表里取出申请人填写的相应的数据,现在有个问题就是,不知道去baoxiao表里取哪一条对应的数据呢?
kencool 2008-06-20
用ProcessInstence ID区分
uncooldog 2008-06-20
用工作流的id作baoxiao表的id

在baoxiao表里加一个字段保存对应工作流的id
sunchaohui_koko 2008-06-20
做一个类型判断,直接保存工作流的全局变量名称。取值直接去全局变量中取得,行不行呢?
上杉t 2008-06-24
将你的业务id保存到流程里 或将流程id保存到业务里.
cnskyline 2008-06-26
我也遇到这个问题,楼主的意思我认为是跟taskInstance有关;每个task都有自己的表单,但是很多变量是公用的;比如:申请节点中填写的信息,在审核当中需要使用,但是审核当中又有自己的其它变量(审核意见等)。
我现在知道的办法是采用全局变量处理,不知道有没有更好的处理方式
cnskyline 2008-06-26
刚查了下文档,发现变量默认是全局的,那这个问题就简单了,每个节点变量的定义在表单UT定义时就确定了

每个执行路线(参看: 令牌) 有它自己的一套流程变量. 变量请求总是在令牌上发生. 流程实例有令牌树 (参看 面向图的程序设计 ). 当请求一个变量没有指明令牌, 那么默认的令牌是根令牌.

下面是文档的内容:
变量查询递归到给定令牌的父母令牌. 这个行为同程序开发语言里的变量范围是相似的.

当在令牌上设置不存在变量,那么变量就在根令牌root-token上被建立 .这就是说每个变量默认就是整个流程范围. 如果想建立一个令牌的局部变量,必须显式的使用API:

ContextInstance.createVariable(String variableName, Token token);