Anywhere는 거래를 그룹화하고 순서화하여 부모 거래 (즉, 작업 주문)가 먼저 전송 된 다음 하위 레코드 거래 [예 : ]Anywhere는 거래 순서를 재 순서화합니다
시나리오 : 1 단계와 3 단계는 다음과 같다 1 단계 알터 2. 사양 3 단계 변경 값 입력 단계 WO상의 설명 상태 WO
결과 트랜잭션 전송을 COMP하기 그룹화하여 Maximo에 보냄 성공시우리는 아이가있는 경우 확인 :3210 2 단계 우리는 메시지가 일어난 것과 같은 순서로 전송하고, 그 이유는 우리가 MAXIMO
등의 장소에있는 검증입니다 원하는 MAXIMO
로 전송됩니다 우리가 완료하기 전에 테이블에 레코드가있는 경우 [우리의 경우, 사양이 채워 졌는지 확인] WO
이벤트 재주문으로 인해 거래가 디바이스에서 자식 트랜잭션 자식 데이터 누락으로 인해 부모 트랜잭션이 실패하기 때문에 Maximo에 도달하지 못함 [catch 22]
우리는이 재정렬을 수행하는 [/MaximoAnywhere/apps/WorkExecution/common/js/platform/model/PushingCoordinatorService.js] JS 파일의 코드 조각을 발견하고 우리는 재정렬
//if (!transaction.json[PlatformConstants.TRANSACTION_LOCK_FORUPDATE])
//{
// Logger.trace("[PUSHING] Trying to shrink/merge transactions and lock transactions");
// var self = this;
// var promise = this._shrinkSubTransactions(metadata, transaction);
//
// Logger.trace("[PUSHING] going to perform async operations");
// promise.then(function() {
// self._pushSubTransactions(transaction, deferred);
// });
//}
//else
//{
Logger.trace("[PUSHING] going to perform async operations");
this._pushSubTransactions(transaction, deferred);
//}
에서 주석 이 작업이 완료되면 우리는 이벤트/트랜잭션이 발생한 순서와 동일한 순서로 보내 지므로 장치에서 WO를 COMP 할 수 있습니다.
그러나이 문제로 인해 다른 오류가 발생하는 것으로 나타났습니다. 기기가 오류가있는 작업 주문과 Maximo에서 다시 가져온 작업 주문으로 끝납니다.
시나리오 : WO에서 실행중인 활성 타이머와 시계를 클릭합니다. 그러면 타이머보기가 멈추고 [작업 완료]를 선택합니다.
두 가지 일이 발생하므로 타이머를 중지하고 상태를 변경해야합니다. Maximo의 유효성 검증 오류로 인해이 트랜잭션이 실패합니다. 결과적으로 새로운 상태와 오류 메시지가있는 두 번째 동일한 주문과 Maximo에서 다시 가져 오는 오류 메시지가 하나가됩니다.
일단 오류가있는 레코드로 가서 변경 사항을 취소하면
외에도 위의 문제에서 장치에 두 개의 동일한 WOS로, (응용 프로그램