java 代码
- public ProcessDefinition getProcessDefinitionByInstance(final long processInstanceId) {
- return (ProcessDefinition) execute(new JbpmCallback() {
- public Object doInJbpm(JbpmContext context) throws JbpmException {
- return context.getProcessInstance(processInstanceId).getProcessDefinition();
- }
- });
- }
代码如上,根据流程实例ID,获得其所对应的流程定义对象。在调用此方法时,不能正确获得ProcessDefinition对象,抛出org.hibernate.LazyInitializationException异常。因为在execute方法中已经将JbpmContext对象关闭(同时关闭了Session对象),而Hibernate3中默认延迟加载,所以当使用获得的ProcessDefinition对象时才会去数据库取数据再实际生成对象。郁闷,总不能让我手动把所有mapping类的延迟加载都取消掉吧.....