Я недавно взял на себя проект EDI и много получил. На самом деле, у меня был контакт с EDI в моей первой компании. В то время мы использовали EDI, чтобы в основном реализовать передачу данных. Клиенты разместили нам заказы на покупку и разместили заказы на покупку в виде согласованных сообщений на назначенный файловый сервер через инструменты VPN и FTP. Затем наша система EDI будет регулярно перейти на файловый сервер, чтобы получить сообщения, и, наконец, разрабатывать и генерировать наши заказы на продажу. После этих лет я до сих пор помню, что те, которые я использовал больше всего, были EDI850 и EDI855.
1. Во -первых, давайте представим концепцию EDI
Электронный обмен данными, электронный обмен данными.
EDI фактически использует оригинальное уведомление о бумажном заказе/отгрузке и другие деловые документы из традиционных методов, таких как факс/экспресс, для взаимодействия онлайн -электронных данных для повышения эффективности бизнеса. В то же время, посредством реализации и конфигурации некоторого программного обеспечения EDI, соответствующие данные документов часто могут генерироваться непосредственно из бизнес -системы предприятия и автоматически передаваемые клиентам/поставщикам для достижения влияния приложения к применению и избежать ошибок человека (таких как ошибки данных и т. Д.) В бумажных документах. Таким образом, крупные компании с полными ИТ -системами предпочитают EDI, потому что EDI прозрачна для бизнес -персонала, а бизнес -персонал может управлять своими ежедневными бизнес -системами.
EDI зависит от нескольких частей:
1. Эди передачи. Как правило, EDI напрямую подключается через протокол AS2, FTP/S и т. Д., А также может быть передан через сторонние поставщики услуг VAN (сеть с добавленной стоимостью) (это то же самое, что и наш режим электронной почты). Поскольку он включает в себя деловую информацию, требования к безопасности передачи будут относительно высокими;
2. EDI Стандарты, то есть организационная форма бизнес -данных, наиболее часто используемые американские стандарты, ANSI X12 и эмидат Организации Объединенных Наций и Европейского Союза. Конечно, есть много других стандартов. Пока обе стороны EDI следуют одним и тем же стандартам, взаимодействие EDI может быть достигнуто хорошо;
3. Лучший способ реализации программного обеспечения EDI (среда) на обоих концах - автоматически отправлять и получать сообщения EDI (файлы данных) с помощью программного обеспечения EDI и автоматически интегрировать их в предприятий.
В пути передачи мы используем FTP для передачи файла. Здесь я в основном представлю, как Java загружает и загружает файлы с помощью инструментов FTP. Здесь наш FTP -сервер является операционной системой Linux.
2. Справочник по пакетам Java
Среди них «Commons-Net-1.4.1.jar» и «Jakarta-Oro-2,0.8.jar» могут быть загружены непосредственно, нажав на ссылку, и она гарантированно будет использоваться, поэтому каждый может скачать ее с уверенностью.
3. Путь файла <br/> Путь папки «E:/edi/edi850», который клиент должен загружать по умолчанию, загрузить все файлы в этой папке.
Путь загрузки на стороне FTP -сервера "/Home/Test/EDI850". При загрузке в качестве пути FTP -сервер установит соответствующий путь.
4. код Java
FTP класс
пакет com.pcmall; открытый класс ftp {private String iPaddr; // IP -адрес private integer port; // номер порта private string username; // username private string pwd; // password private String path; // path public String getipaddr () {return iPaddr; } public void setipaddr (String iPaddr) {this.ipaddr = ipaddr; } public integer getPort () {return Port; } public void setport (целое число порта) {this.port = port; } public String getUsername () {return username; } public void setUsername (string username) {this.username = username; } public String getPwd () {return pwd; } public void setPwd (String pwd) {this.pwd = pwd; } public String getPath () {return Path; } public void setPath (String Path) {this.path = path; }} Ftputil Class
пакет com.pcmall; Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.fileOutputStream; импортировать java.io.ioexception; импортировать java.io.outputstream; Import org.apache.commons.net.ftp.ftpclient; Import org.apache.commons.net.ftp.ftpfile; Импорт org.apache.commons.net.ftp.ftpreply; Импорт org.apache.log4j.logger; открытый класс ftputil {private Static Logger logger = logger.getLogger (ftputil.class); Частный статический FTPClient FTP; / ** * GET FTP Connection * * @param f * @return * @throhs Exception */ public static boolean connectftp (ftp f) выбрасывает исключение {ftp = new ftpclient (); логический флаг = false; int ответить; if (f.getport () == null) {ftp.connect (f.getipaddr (), 21); } else {ftp.connect (f.getipaddr (), f.getport ()); } ftp.login (f.getusername (), f.getpwd ()); ftp.setFileType (ftpclient.binary_file_type); Ответить = ftp.getReplyCode (); if (! ftpreply.ispositivecoplusion (reply)) {ftp.disconnect (); вернуть флаг; } ftp.ChangeWorkingDirectory (f.getPath ()); flag = true; вернуть флаг; } / *** Закрыть соединение ftp* / public static void newftftp () {if (ftp! = Null && ftp.isconnected ()) {try {ftp.logout (); ftp.disconnect (); } catch (ioException e) {e.printstackTrace (); }}} / ** * ftp ulload file * * @param f * @throhs exception * / public static void upload (файл f) Throws Exception {if (f.isdirectory ()) {ftp.makedirectory (f.getName ()); ftp.changeWorkingDirectory (f.getName ()); String [] files = f.list (); for (String fstr: files) {file file1 = new File (f.getPath () + "/" + fstr); if (file1.isdirectory ()) {upload (file1); ftp.changetoparentDirectory (); } else {file file2 = new File (f.getPath () + "/" + fstr); FileInputStream input = new FileInputStream (file2); ftp.storefile (file2.getName (), input); input.close (); }}} else {file file2 = new File (f.getPath ()); FileInputStream input = new FileInputStream (file2); ftp.storefile (file2.getName (), input); input.close (); } } /** * Download link configuration* * @param f * @param localBaseDir * Local directory* @param remoteBaseDir * Remote directory* @throws Exception */ public static void startDown(Ftp f, String localBaseDir, String remoteBaseDir) throws Exception { if (FtpUtil.connectFtp(f)) { try { FTPFile[] files = null; Boolean mediceIR = ftp.ChangeWorkingDirectory (remoteBasedIR); if (mediceir) {ftp.setControLencoDing ("gbk"); files = ftp.listfiles (); для (int i = 0; i <files.length; i ++) {try {downloadfile (files [i], localbasedir, remotebasedir); } catch (Exception e) {logger.error (e); logger.Error ("<" + files [i] .getName () + "> загрузка не удалась"); }}}} catch (Exception e) {logger.error (e); logger.error («Исключение произошло во время загрузки»); }} else {logger.error ("ссылка не удалась!"); }} / ** * * * Загрузите ftp -файл, когда вам нужно загрузить файл FTP, вызовите этот метод для загрузки на основе имени файла, локального адреса и удаленного адреса, полученного <b> * * @param ftpfile * @param RELATIVELOCALPATH * @Param RELATIVEREMOTEPATH * / private static voidfil RELATIVEREMOTEPATH) {if (ftpfile.isfile ()) {if (ftpfile.getName (). Indexof ("?") == -1) {outputStream outputStream = null; try {file locafile = new File (RELATIVELOCALPATH + ftpfile.getName ()); // определить, существует ли файл, и if (locafile.exists ()) {return; } else {outputStream = new FileOutputStream (RELATIVELOCALPATH + ftpfile.getName ()); ftp.retrievefile (ftpfile.getName (), outputStream); outputStream.flush (); outputStream.close (); }} catch (Exception e) {logger.error (e); } наконец {try {if (outputStream! = null) {outputStream.close (); }} catch (ioException e) {logger.error ("Исключение потока выходного файла"); }}}}} else {string newlocalRelatePath = RelatiVeloCalPath + ftpfile.getName (); String newRemote = new String (RELATIVEREMOTEPATH + ftpfile.getName (). ToString ()); File fl = новый файл (newlocalrelatepath); if (! fl.exists ()) {fl.mkdir (); } try {newlocalRelatePath = newlocalRelatePath + '/'; newRemote = newRemote + "/"; String CurrentWorkDir = ftpfile.getName (). ToString (); Boolean changeir = ftp.ChangeWorkingDir); if (mediceir) {ftpfile [] files = null; files = ftp.listfiles (); for (int i = 0; i <files.length; i ++) {downloadfile (files [i], newlocalrelatePath, newRemote); }} if (mediceir) {ftp.ChangetOparentDirectory (); }} catch (Exception e) {logger.error (e); }}} public static void main (string [] args) бросает исключение {ftp ftp = new ftp (); ftp.setipaddr ("192.168.16.128"); ftp.setusername ("test"); ftp.setpwd ("123456"); Ftputil.connectftp (ftp); File file = new File ("e:/edi/edi850/"); // Если это путь, все файлы под пути будут загружены. Если это файл, файл будет загружен ftputil.upload (file); // загружать файл на ftp ftputil.startdown (ftp, "e:/ftptest/", "/home/test/edi850"); // Загрузить файл ftp. }}После успешной загрузки ситуация с файлом файла FTP выглядит следующим образом
После того, как загрузка будет успешной, после того, как клиент -файл будет открыт следующим образом, содержимое файла следующим образом. Как загрузить и загружать файлы с помощью FTP -инструментов в EDI, сначала будет представлена здесь. Приведенные выше коды я лично проверял и могу запустить.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.