JBPM数据库中取得这个流程实例,如果有没有完成的流程,就让它进入下一步

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

// 这里的代码可以放在消息驱动Bean里面。

// 让我们开始一个session

JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();

// 在持久化session上开始一个事务的时候,这里有可使用WEB应用中的DataSource来取得一个数据库session.

jbpmSession.beginTransaction();

GraphSession graphSession = jbpmSession.getGraphSession();

// 首先,我们需要在数据库中把流程提取出来.

// 这里有很多方法可以用来取得我们需要的流程实例。

// 一个最简单方法就是在流程的实例列表里面查询。

ProcessDefinition processDefinition = graphSession

.findLatestProcessDefinition("hello world");

// 现在查询所有的流程实例。

List<ProcessInstance> processInstances = graphSession

.findProcessInstances(processDefinition.getId());

// 我们知道在这里单元测试里面只有一个执行,所以下面我们直接get(0)。

// 而在实际工作中,我们这里需要通过ID来确定我们所需要的流程实例。

ProcessInstance processInstance = null;

for (ProcessInstance pi : processInstances) {

if (!pi.hasEnded()) {

pi.signal();

//AssertJUnit.assertTrue(pi.hasEnded());

}

}

// 好了,现在我们可以继续执行。注意,这里processInstance

// processInstance.signal();

// 完成signal以后,我们的流程就到达end-state状态点了。

// AssertJUnit.assertTrue(processInstance.hasEnded());

// 现在可以更新数据库里面流程状态点。

// graphSession.saveProcessInstance(processInstance);

// 事务提交

jbpmSession.commitTransaction();

// 关闭session

jbpmSession.close(); (出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航