我有一种奇怪的行为。
我正在使用Seam和JBPM。 当我说:
ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl());
//This will return Enkeltanledning.jpdl.xml
templateDefinition.getVersion();
它总是返回-1。 但是,当我从数据库中选择时,我得到版本2.
mysql> select * from JBPM_PROCESSDEFINITION; +-----+--------+-----------------------------+--------------+----------+------------------------+-------------+ | ID_ | CLASS_ | NAME_ | DESCRIPTION_ | VERSION_ | ISTERMINATIONIMPLICIT_ | STARTSTATE_ | +-----+--------+-----------------------------+--------------+----------+------------------------+-------------+ | 1 | P | Enkeltanledning | NULL | 1 | | 1 | | 2 | P | Enkeltanledning | NULL | 2 | | 31 |
现在,我找到了这个链接: jpdl 它说:
Unnamed process definitions will always have version number -1.
但是,我的流程定义没有未命名,当我调试templateDefinition时,我得到正确的名称 Enkeltanledning ,所以我知道它是已经加载的正确的jpdl文件。
所以我的问题是,为什么我的代码总是在版本中返回-1? 我之所以需要该版本是正确的,是因为我正在做一些检查以确定我是否有正确的版本,另外我将重新部署ProcessDefinition,因为我总是得到-1,它将始终重新部署。
答案 0 :(得分:1)
我找到了答案。
因为我正在从文件中读取ProcessDefinition而不是查询数据库。将代码更改为此解决了它
@In
JbpmContext jbpmContext;
ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);