我正在开发一个从 ECC 接收中间文档 (IDocs) 并将 iDocs 传递给 ECC 的 Java 应用程序。
我们的应用程序就像 ECC 和其他系统之间的桥梁,它从 ECC 接收 IDocs,这些 IDocs 由我们的应用程序存储在磁盘中,然后后台进程负责检查文件系统位置,其中包含 IDocs 的文件被保存并稍后发送通过 HTTP 请求到其他目的地。该应用程序还与这些其他系统通信以检索也保存到文件中的信息,然后在后台进程中读取它们并构建要发送到 ECC 的 IDoc。
当应用程序从 ECC 收到 IDoc 时,它会向 ECC 发送确认 IDoc,发送给 ECC 时需要做类似的事情,即当 Java 应用程序向它发送 IDoc 时,我们希望 ECC 向我们的如果 IDoc 发送正确,则应用程序知道已发送的批次可以安全地移动到我们的历史文件夹,如果确认表明存在问题,则应再次尝试发送 IDoc。
我们如何配置 ECC 以向我们的 Java 应用程序发送确认?
我们用来从 Java 发送到 ECC 的代码是这样的:
try {
destination= JCoDestinationManager.getDestination(PROGID);
iDocRepository = JCoIDoc.getIDocRepository(destination);
tid = destination.createTID();
iDocFactory = JCoIDoc.getIDocFactory();
} catch (JCoException e) {
e.printStackTrace();
}
List<Invoic02> invoic02s = new ArrayList<>();
EDI_DC40 edi_dc40 = IdocUtil.generateIdocControlRecordObject(IdocUtil.invoiceIdocType, IdocUtil.invoiceMsgType);
for(InvoiceIdoc invoicIdoc : invoices){
Invoic02 invoic02 = new Invoic02();
invoicIdoc.setBEGIN("1");
invoicIdoc.setEDI_DC40(edi_dc40);
invoic02.getInvoiceIdoc().add(invoicIdoc);
}
String invoicesIdocString = XmlParser.objectToXmlString(invoices, Invoic02.class);
try {
IDocXMLProcessor processor= iDocFactory.getIDocXMLProcessor();
IDocDocumentList iDocList=processor.parse(iDocRepository, invoicesIdocString.toString());
JCoIDoc.send(iDocList, IDocFactory.IDOC_VERSION_DEFAULT, destination, tid);
} catch (JCoException e) {
e.printStackTrace();
} catch (IDocParseException e) {
e.printStackTrace();
}
为了收听传入的 IDOC,我们使用私有库,但它也使用 JCO IDOC 库。
JCO IDOC 库可用于检查已发送 IDOC 的状态吗?或者有没有办法配置 ECC 来发送它收到的每个 IDOC 的确认?