私は最近、EDIプロジェクトを引き継ぎ、多くを獲得しました。実際、私は最初の会社でEDIと連絡を取りました。その時点で、EDIを使用して、主に注文データ送信を実現しました。顧客は注文を当社に配置し、VPNおよびFTPツールを介して指定されたファイルサーバーに合意されたメッセージの形で注文書を配置しました。その後、EDIシステムは定期的にファイルサーバーに移動してメッセージを取得し、最後に販売注文を解析して生成します。これらの年の後、私が最も使用したものはEDI850とEDI855であったことを今でも覚えています。
1。最初に、EDIの概念を紹介しましょう
電子データインターチェンジ、電子データ交換。
EDIは、実際には、FAX/Expressなどの従来の方法からの元の紙の注文/出荷通知およびその他のビジネスドキュメントを使用して、オンラインの電子データを対話してビジネス効率を向上させます。同時に、いくつかのEDIソフトウェアの実装と構成を通じて、対応するドキュメントデータをエンタープライズのビジネスシステムから直接生成し、顧客/サプライヤーに自動的に送信することができ、アプリケーションへのアプリケーションの効果を実現し、紙文書の人間エラー(データエラーなど)を回避できます。したがって、EDIはビジネス担当者に透明であり、ビジネス担当者が日常のビジネスシステムを運営できるため、完全なITシステムを備えた大企業がEDIを好みます。
EDIはいくつかの部分に依存します:
1。EDI伝達経路。一般に、EDIはAS2プロトコル、FTP/sなどを介して直接接続され、サードパーティのバン(付加価値ネットワーク)サービスプロバイダーを介して転送することもできます(これはメールモードと同じです)。ビジネス情報が含まれるため、送信セキュリティ要件は比較的高くなります。
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; public class ftp {private string ipaddr; // IPアドレスプライベート整数ポート; //ポート番号プライベート文字列ユーザー名; //ユーザー名プライベート文字列pwd; //パスワードプライベート文字列パス; //パスパブリック文字列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クラス
パッケージcom.pcmall; java.io.fileをインポートします。 java.io.fileinputStreamをインポートします。 java.io.fileoutputStreamをインポートします。 java.io.ioexceptionをインポートします。 java.io.outputStreamをインポートします。 Import org.apache.commons.net.ftp.ftpclient; org.apache.commons.net.ftp.ftpfileをインポートします。 import org.apache.commons.net.ftp.ftpreply; org.apache.log4j.loggerをインポートします。 public class ftputil {private static logger logger = logger.getLogger(ftputil.class);プライベート静的ftpclient ftp; / ** * FTP接続を取得 * * @param f * @return * @throws例外 */ public static boolean connectftp(ftp f)throws exception {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); Reply = ftp.getReplyCode(); if(!ftpreply.ispositiveCompletion(reply)){ftp.disconnect();フラグを返します。 } ftp.changeworkingdirectory(f.getPath()); flag = true;フラグを返します。 } / *** close ftp connection* / public static void closeftp(){if(ftp!= null && ftp.isconnected()){try {ftp.logout(); ftp.disconnect(); } catch(ioexception e){e.printstacktrace(); }}} / ** * ftpアップロードファイル * * @param f * @throws例外 * / public static void upload(file 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(); }} / ** *ダウンロードリンク構成 * * @param f * @param localbasedir * local directory * @param remotebasedir * remote directory * @throws例外 * / public static void起動(ftp f、string localbasedir、string remotebasedir)スロー例外boolean chandedir = ftp.changeworkingdirectory(remotebasedir); if(shandedir){ftp.setControlencoding( "gbk"); files = ftp.listfiles(); for(int i = 0; i <files.length; i ++){try {downloadfile(files [i]、localbasedir、remotebasedir); } catch(例外e){logger.error(e); logger.error( "<" + files [i] .getname() + ">ダウンロードFailed"); }}}} catch(Exception E){logger.error(e); logger.error( "exception dolowning中に例外が発生しました"); }} else {logger.error( "link failed!"); }} / ** * * ftpファイルをダウンロードftpファイルをダウンロードする必要がある場合は、この方法を呼び出して、ファイル名、ローカルアドレス、および<b> * * @param ftpfile * @param relativelocalpath * @param relativeremotepath * / param relativeremotepath * / private static void download(ftpfile ftpffile、string empative、string empative) {if(ftpfile.isfile()){if(ftpfile.getName()。indexof( "?")== -1){outputStream outputStream = null; try {file locafile = new file(lerativelocalpath + ftpfile.getName()); //ファイルが存在するかどうか、および(locafile.exists()){return; } else {outputStream = new fileoutputStream(relativelocalpath + ftpfile.getName()); ftp.retrievefile(ftpfile.getName()、outputStream); outputStream.flush(); outputStream.close(); }} catch(例外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());ファイルfl = new file(newLocalReLatePath); if(!fl.exists()){fl.mkdir(); } try {newLocalReLatePath = newLocalReLatePath + '/'; newRemote = newRemote + "/"; string currentWorkdir = ftpfile.getName()。toString(); boolean changeir = ftp.changeworkingdir); if(chandedir){ftpfile [] files = null; files = ftp.listfiles(); for(int i = 0; i <files.length; i ++){downloadfile(files [i]、newLocalReLatePath、newRemote); }} if(chandedir){ftp.changetoparentdirectory(); }} catch(例外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 ")にファイルをアップロードします。 system.out.println( "ok"); }}アップロードが成功した後、FTPファイルサーバーファイルの状況は次のとおりです
ダウンロードが成功した後、クライアントファイルが次のように開かれた後、ファイルコンテンツは次のとおりです。 EDIのFTPツールを介してファイルをアップロードおよびダウンロードする方法は、ここに最初に紹介されます。私が個人的にテストした上記のコードで実行できます。
上記はこの記事のすべての内容です。私はそれがすべての人の学習に役立つことを願っています、そして、私は誰もがwulin.comをもっとサポートすることを願っています。