JBPM ProcessDefinition은 항상 -1 버전입니다
문제
나는 이상한 행동이 진행되고 있습니다.
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.
그러나 내 프로세스 정의가 이름이없고 템플릿 정화를 디버그 할 때 올바른 이름을 얻습니다. Enkeltanledning , 그래서 나는 그것이로드 된 올바른 JPDL 파일이라는 것을 알고 있습니다.
그래서 내 질문은 왜 내 코드가 항상 버전에서 -1을 반환합니까? 내가 올바른 버전이 필요한 이유는 올바른 버전이 있는지 확인하기 위해 약간의 수표를 작성하고 있기 때문에 Otherwize는 ProcessDefinition을 재배치하고 항상 -1을 얻기 때문에 항상 재배치됩니다.
해결책
나는 대답을 찾았다.
데이터베이스를 쿼리하는 대신 파일에서 ProcessDefinition을 읽고 있기 때문입니다. 코드를 이것으로 변경하면 해결되었습니다
@In
JbpmContext jbpmContext;
ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);
제휴하지 않습니다 StackOverflow