2016-08-23 12 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の機能をMessageQueueJTOpen)に表示します。

+0

お知らせします。 – LppEdd

+0

すべてのMessageQueueでnullを返します。 – LppEdd

+0

何がnullを返しましたか?たぶんあなたはいくつかのコードを投稿する必要があります。 –

4

Davidの正しい...しかし、不足しているカップルの手順は、私はこれを試していませんでしたノートをthink..andのいずれか..

は、ジョブ・ログを取得:
Job.getJobLog()

がキューに入れられたメッセージを取得し
JobLog.getMessages

は、メッセージキュー
QueuedMessage.getQueue()

を取得します0

次に返信
MessageQueue.reply()

+0

明日の仕事では、私はMSGWを手に入れてお知らせします! – LppEdd

+0

すべてのMessageQueueでnullを返します。 – LppEdd

+0

@ LppEdd、質問を編集してコードを挿入するか、新しい質問を投稿してください。 – Charles