2016-08-23 7 views
4

JT400에서 AS400의 MSGW 작업에 회신 할 수 있습니까?
나는 작업 요소를 가지고하고JT400 - MSGW 작업에 회신

예를 Job.MESSAGE_REPLY_WAITING에 의해 MSGW 상태에 있는지 알 수 있습니다 : 일반적으로 내가 실제로 시도하지 않은

답변

0

이것은 작동하는 코드입니다. 나는 그것이 단축되고 최적화 될 수 있다고 생각한다.
더 좋은 방법이 있어야합니다!

public boolean answer(String answer) throws MyOperationException { 
    if (answer == null || answer.length() > 1) { 
     throw new MyOperationException(); 
    } 

    MessageQueue msgq = new MessageQueue(as.getAS400(), QSYSObjectPathName.toPath(MyAS400.LIBRARY_LIST, "QSYSOPR", "MSGQ")); 
    msgq.setSelectMessagesNeedReply(true); 
    msgq.setListDirection(false); 

    try { 
     Enumeration m = msgq.getMessages(); 

     while (m.hasMoreElements()) { 
     QueuedMessage msg = (QueuedMessage) m.nextElement(); 

     if (msg.getFromJobNumber().trim().equals(getNumber())) { 
      msgq.reply(msg.getKey(), answer); 

      return true; 
     } 
     } 
    } catch (AS400SecurityException | ErrorCompletingRequestException | InterruptedException | IOException | ObjectDoesNotExistException ex) { 
     ex.printStackTrace(); 
    } 

    return false; 
} 

메시지 대기열을 모르는 경우 ObjectList를 사용할 수 있습니다.

2

WRKACTJOB를 통해 "C"를 사용하지만, 받아 reply의 기능은 MessageQueue (JTOpen)입니다.

+0

알려 드리겠습니다. – LppEdd

+0

모든 MessageQueue에서 null을 반환합니다. – LppEdd

+0

null을 반환 한 항목은 무엇입니까? 어쩌면 몇 가지 코드를 게시해야합니다. –

4

다윗의 올바른 ...하지만 실종 몇 단계 나는이 시도하지 않은 한 메모를 think..and 중 ..

은 작업 로그 가져 오기 :
Job.getJobLog()

가 대기중인 메시지를 받기를
JobLog.getMessages

메시지 큐
QueuedMessage.getQueue()

에게 가져 0

다음 답장
MessageQueue.reply()

+0

내일 직장에서 나는 MSGW를 받게 될 것이고 나는 당신에게 알릴 것이다! – LppEdd

+0

모든 MessageQueue에서 null을 반환합니다. – LppEdd

+0

@ LppEdd, 질문을 편집하여 코드를 포함 시키거나 새 질문을 게시하십시오. – Charles