как добавить заголовок UNH в объект UNEdifactInterchange41 в smooks

Я должен создать mscons экспорт значений энергии. Я создал немного кода из нескольких найденных примеров, но теперь застрял. MSCONS требует заголовка UNB и UNH. Я могу добавить заголовок UNB в объект UNEdifactInterchange41, но не могу найти способ прикрепить заголовок UNH.

Вот мой код:

import org.milyn.SmooksException;
import org.milyn.edi.unedifact.d16b.D16BInterchangeFactory;
import org.milyn.edi.unedifact.d16b.MSCONS.*;
import org.milyn.smooks.edi.unedifact.model.r41.*;
import org.xml.sax.SAXException;

import java.io.IOException;
import java.io.StringWriter;
import org.milyn.smooks.edi.unedifact.model.r41.types.MessageIdentifier;
import org.milyn.smooks.edi.unedifact.model.r41.types.Party;
import org.milyn.smooks.edi.unedifact.model.r41.types.SyntaxIdentifier;

public class EDI {

    public static void main(String[] args) throws IOException, SAXException, SmooksException {

        D16BInterchangeFactory factory = D16BInterchangeFactory.getInstance();
        UNEdifactInterchange41 edi = new UNEdifactInterchange41();       
        Mscons mscons = new Mscons();

        /*UNB*/
        UNB41 unb = new UNB41();
        unb.setSender(null);
        Party sender = new Party();
        sender.setInternalId(getSenderInternalId());
        sender.setCodeQualifier(getSenderCodeQualifier());
        sender.setId(getSenderId());
        SyntaxIdentifier si=new SyntaxIdentifier();
        si.setVersionNum("3");
        si.setId("UNOC");
        unb.setSyntaxIdentifier(si);
        unb.setSender(sender);
        edi.setInterchangeHeader(unb);
        /*UNH*/
        UNH41 unh = new UNH41();
        MessageIdentifier mi=new MessageIdentifier();
        mi.setTypeSubFunctionId("MSCONS");
        mi.setControllingAgencyCode("UN");
        mi.setAssociationAssignedCode("2.2h");

        String refno=createRefNo();
        unh.setMessageIdentifier(mi);


        /* How to attach UNH? */


    }
}

person Markus    schedule 27.04.2018    source источник


Ответы (1)


Похоже, вы поняли почти правильно, вам нужно прикрепить UNH к сообщению, а не наоборот:

mi.setMessageIdentifier(unh);

У вас есть пример, если вам нужно: https://github.com/ClaudePlos/VOrders/blob/master/src/main/java/pl/vo/integration/edifact/EdifactExportPricat.java

person Luc    schedule 30.04.2018
comment
большое спасибо, Люк! У меня не было UNEdifactMessage41.. Не уверен, что нашел бы его без вашей помощи. - person Markus; 02.05.2018