题
我有一个奇怪的行为。
我正在使用接缝和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);
不隶属于 StackOverflow