0

我有一个奇怪的行为。

我正在使用 Seam 和 JBPM。当我说:

ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl()); 
//This will return Enkeltanledning.jpdl.xml
templateDefinition.getVersion();

它总是返回-1。但是,当我从数据库中选择时,我得到了版本 2。

mysql> 从 JBPM_PROCESSDEFINITION 中选择 *;
+-----+--------+-----------------+---- ----------+----------+------------+--- ----------+
| 身份证_ | 类别_ | 姓名_ | 说明_ | 版本_ | ISTERMINATIONIMPLICIT_ | 开始状态_ |
+-----+--------+-----------------+---- ----------+----------+------------+--- ----------+
| 1 | 磷 | Enkeltanleding | 空 | 1 | | 1 |
| 2 | 磷 | Enkeltanleding | 空 | 2 | | 31 |

现在,我找到了这个链接: jpdl 它说:

未命名的流程定义将始终具有版本号 -1。

但是,我的流程定义没有未命名,当我调试 templateDefinition 时,我得到了正确的名称Enkeltanledning,所以我知道它是已加载的正确 jpdl 文件。

所以我的问题是,为什么我的代码总是在版本中返回 -1?我需要版本正确的原因是因为我正在做一些检查以查看我是否有正确的版本,否则我将重新部署 ProcessDefinition,并且由于我总是得到 -1,所以它总是会重新部署。

4

1 回答 1

1

我找到了答案。

这是因为我正在从文件中读取 ProcessDefinition 而不是查询数据库。将代码更改为此解决了它

@In
JbpmContext jbpmContext;

ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);
于 2009-08-20T15:40:41.780 回答