2014-10-31 11 views
0

실행중인 프로세스에서 특정 실행을 얻으려고합니다. 필터링에 아무런 문제가 없음을 확인하기 위해 매우 간단한 쿼리를 사용했습니다. 모든 활성 실행 파일을 찾아야합니다. 정확히 1입니다.processInstance가 현재 실행 중일지라도 ExecutionQuery는 0을 반환합니다.

프로세스 인스턴스가 올바르게 시작되면 프로세스가 신호를 기다릴 때까지 2 개의 작업이 실행됩니다. 이것은 예상대로 작동합니다. 하지만 실행 목록이 비어있는 이유는 알 수 없습니다. Historical 인스턴스를 쿼리하면 (예상대로) 하나의 결과가 나타납니다.

HistoryService historyService = mProcessHandler.getProcessEngine().getHistoryService(); 
List<HistoricProcessInstance> allInstances = historyService.createHistoricProcessInstanceQuery().list(); 

어떤 질문에 잘못된 것이 있습니까?


업데이트 나는 실행이 경계 이벤트 신호를 기다리는 경우 (심지어 초 대기 후) 실행 목록이 비어 있음을 알아 냈다. 경계 이벤트가 제거되면 실행 목록은 1을 반환합니다.

답변

0

이것은 단지 야생 추측입니다. 다른 방법으로 RuntimeService를 얻는 이유는, 런타임 서비스가 동일하다는 것입니다. 사용하려고 같은 runSerivice

... 
    Map<String, Object> variableMap = new HashMap<String, Object>(); 
    RuntimeService runService = mProcessEngine.getRuntimeService(); 
    ProcessInstance processInstance = runService.startProcessInstanceByKey(processId, variableMap); 

    List <Execution> executions = runService.createExecutionQuery().list(); 

UPDATE

내가 테스트 엔진을 시도하지 않은, 그냥이 시도하고 내 activti 프로세스 엔진 (사용자 정의 구성)과 내 컴퓨터에서 제대로 작동했다 (createStandaloneInMemProcessEngineConfiguration) . 어쩌면 당신은 너무 일찍 사형을 집행하고 있기 때문에 아직 시작되지 않았습니다. 진행중인 첫 번째 작업에 비동기 플래그가 설정되어 있는지 확인하거나 실행 목록을 가져 오는 작업을 지연 시키십시오.

더 이상 아이디어가 없으므로 아무 것도 도움이되지 않으면 게시물을 삭제하도록 알려주므로 다른 누군가가 더 좋은 아이디어를 가지고있을 수 있습니다.

+0

이것은 내가 이미 수행 한 것입니다. 나는 약간의 코드를 정리했다. – KayJ

+0

Petar는 거의 틀림없이 정확하다. 여기서 경쟁 조건이 발생한다. 실행이 즉시 시작되지 않습니다. –

+0

그러나이 시점에서 역사적인 사례를 얻을 수있는 이유는 무엇입니까? 이것은 잘 작동합니다. 테스트를 위해 다른 프로세스를 사용하려고했는데 예상대로 시작된 인스턴스 목록을 가져옵니다. 아무 작업도 비동기로 설정되지 않습니다. 여전히 이러한 문제가 특정 프로세스에 나타나는 이유를 알아 내려고 노력 중입니다 ... – KayJ