2016-08-23 47 views
4

是否可以從JT400回覆AS400中的MSGW作業?
我已經找到了工作要素,我可以知道,如果它在MSGW地位Job.MESSAGE_REPLY_WAITINGJT400 - 回覆MSGW工作

例如:通常我用「C」通過WRKACTJOB

回答

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

我還沒有真正嘗試過這一點,但取請看MessageQueueJTOpen)中的reply函數。

+0

我會告訴你的! – LppEdd

+0

它在每個MessageQueue上返回null。 – LppEdd

+0

什麼返回null?也許你應該發佈一些代碼。 –

4

大衛的正確...但缺少了幾個步驟,我think..and注意到我還沒有嘗試這兩種..

獲取joblog:
Job.getJobLog()

獲取排隊的消息
JobLog.getMessages

獲取消息隊列
QueuedMessage.getQueue()

然後回覆
MessageQueue.reply()

+0

明天在工作我會得到一個MSGW,我會讓你知道! – LppEdd

+0

嗯,它在每個MessageQueue上都返回null! – LppEdd

+0

@LppEdd,編輯你的問題以包含你的代碼......或者發佈一個新問題。 – Charles