我有一个奇怪的行为。

我正在使用接缝和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.

但是,我的流程定义没有命名,当我调试模板定义时,我会得到正确的名称 Enkeltanledning ,所以我知道这是已加载的正确JPDL文件。

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

有帮助吗?

解决方案

我找到了答案。

它是因为我正在从文件中读取ProcessDefinition,而不是quat qual数据库。将代码更改为解决

@In
JbpmContext jbpmContext;

ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top