首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于JBPM流程结束的有关问题,麻烦有相关经验的朋友进来帮帮忙,多谢

2012-10-25 
关于JBPM流程结束的问题,麻烦有相关经验的朋友进来帮帮忙,谢谢!该问题我百度、谷歌找遍了,没找到好的解决办

关于JBPM流程结束的问题,麻烦有相关经验的朋友进来帮帮忙,谢谢!
该问题我百度、谷歌找遍了,没找到好的解决办法。请各位看代码


我底层发送流程的代码如下

Java code
public ProcessInstance approvalProcess(final long id, final Map attrs)            throws Exception {        return (ProcessInstance) jbpmTemplate.execute(new JbpmCallback() {            public Object doInJbpm(JbpmContext context) throws JbpmException {                ProcessInstance pi = context.getGraphSession()                        .loadProcessInstance(id);//得到流程实例                String nodeName = "";                String trans = "";                try {                    Node node = pi.getRootToken().getNode();                    nodeName = node.getName();  //得到当前节点名称                    Transition transition = (Transition) node                            .getLeavingTransitions().get(0);                    trans = transition.getName();//得到当前节点对应的发送描述                } catch (Exception e) {                }                //判断流程实例是否结束                if (!pi.hasEnded()) {                    //得到当前实例所有任务                    Iterator<TaskInstance> it = pi.getTaskMgmtInstance()                            .getTaskInstances().iterator();                    for (; it.hasNext();) {                        TaskInstance ti = it.next();                        //遍历所有任务,如果有和当前节点名称相同的任务                        if (nodeName.equals(ti.getName())) {                            //设置任务完成时间                            ti.setEnd(new Date());                            //设置任务完成意见                            ti.addComment(attrs.get("comment").toString());                            //将发送描述放到description备用                            ti.setDescription(trans);                            //得到任务处理人集合                            Set se = ti.getPooledActors();                            Iterator iterator = se.iterator();                            while(iterator.hasNext()){                                PooledActor pl = (PooledActor)iterator.next();                                //attrs.get("author")是当前用户,                                //如果匹配到任务处理人集合里有当前人,则把任务完成者设为当前用户                                if(pl.getActorId().equals(attrs.get("author"))){                                    ti.setActorId(pl.getActorId());                                    break;                                }                            }                            break;                        }                    }                    //发送流程实例                    pi.signal();                    //保存流程实例                    context.save(pi);                } else {                    throw new JbpmException("ProcessInstance " + id + " is end");                }                return pi;            }        });    }

流程步骤是
开始--》拟稿--》审批---》结束

问题如下:

从拟稿发到审批时,通过上面方法,就可以设置拟稿的完成时间以及完成者
当从审批发到结束时,通过上面方法也能设置审批的完成时间和完成者
此时流程走到了结束,再调用上面方法时pi.hasEnded()为true,
所以结束的完成时间就没有。

并且在JBPM_TASKINSTANCE表里面没有结束节点的数据

我该如何设置结束节点的完成时间呢?
如果能附带些你们做的例子那就更好了。

[解决办法]
这不是来人了吗
[解决办法]
楼主用的是jbpm4吗? 跟我最近研究学习的jbpm4.4不一样,没有人做过当然是没有人回答你的问题了。
[解决办法]
既然解决了。就把解决的办法发出来呗。然后结贴。

热点排行