ADOS Developer's Site - XML Stadium |
Hestiaは、EISとメッセージのやりとりを行う際にビジネスメッセージをJava Objectとして扱います。
下記にビジネスメッセージに対応したJava Objectのクラス図を示します。
HestiaとEIS間でメッセージ連携を行う際は、メッセージの容れ物であるContainerオブジェクトがやりとりされます。実際には、Containerクラスはabstractであり、PayloadContainerまたはStatusContainerがインスタンス化されます。
ビジネスメッセージ本体のServiceContent、および添付ファイルに対応するAttachmentオブジェクトのコンテナです。
RosettaNetのパブリックプロセスにおけるActionメッセージ(RosettaNetのPIP、Chem eStandardsのビジネスメッセージ)本体です。公開APIにおいては、XMLメッセージとServiceContentの相互変換、およびXMLのXPathリストからServiceContentインスタンスを作成する関数群が公開されています。
ビジネスメッセージに添付されたファイルへのインターフェースを提供します。
Attachmentオブジェクト自体は添付ファイルの実体を持っておらず、ファイルの実体はHestiaの内部データベースに格納されていますが、EISはAttachmentオブジェクトが提供するAPI関数を利用しそれを意識せずに透過的にファイル実体のストリームへアクセスできます。
RosettaNetのパブリックプロセスにおけるSignalメッセージ(ReceiptAcknowledgment, Exception等)を示すオブジェクトです。
以下はXML実ファイルからServiceContentオブジェクトへの変換例です。
001: import com.ados.hestia.parser.rnbm.exchange.*; 002: import com.ados.hestia.sdk.rnbm.access.*; 003: import java.io.*; 004: public class MessageUtil { 005: /** 006: * Construct ServiceContent from XML file 007: * 008: * @param filename stored XML file 009: * @param pipid PIP ID (e.g. 3A4) 010: * @param pipver PIP Version (e.g. V02.00.00) 011: * @param isRequest indicate XML file is a request or not. For instance, if XML file is 3A4Configmation, isRequest must be false. 012: * @return created ServiceContent Object 013: * @throws FileNotFoundException 014: * @throws BuilderException 015: */ 016: public static ServiceContent readXML(String filename, String pipid, String pipver, boolean isRequest) throws FileNotFoundException, BuilderException { 017: Reader reader = new BufferedReader(new FileReader(filename)); 018: XMLBuilder builder = new XMLBuilder(reader, pipid, pipver, isRequest); 019: return builder.build(); 020: } 021:}
以下はServiceContentオブジェクト-->実ファイルへの変換例です。
001: import com.ados.hestia.parser.rnbm.exchange.*; 002: import com.ados.hestia.sdk.rnbm.access.*; 003: import java.io.*; 004: public class MessageUtil { 005: /** 006: * Save XML from ServiceContent 007: * @param filename filename to be saved 008: * @param sc ServiceContent Object 009: * @throws IOException 010: * @throws ReaderException 011: */ 012: public static void saveXML(String filename, ServiceContent sc) throws IOException, ReaderException { 013: Writer writer = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(filename))); 014: XMLReader reader = new XMLReader(writer, sc); 015: reader.read(); 016: writer.flush(); 017: writer.close(); 018: } 019: }
以下はPIP0C1 R01.02.00のXPathリストからServiceContentを構築するサンプルです。指定するXPathはルート要素を除いた値を指定します。
001: import com.ados.hestia.parser.rnbm.exchange.*; 002: import com.ados.hestia.sdk.rnbm.access.*; 003: import java.io.*; 004: public class MessageUtil { 005: /** 006: * Construct ServiceContent from XPath sample 007: * @return ServiceContent instance 008: */ 009: public static ServiceContent constructServiceContent() throws BuilderException, ValidateException { 010: String[][] values0C1 = { 011: {"fromRole/PartnerRoleDescription/ContactInformation/contactName/FreeFormText","FromSomeone"}, 012: {"fromRole/PartnerRoleDescription/ContactInformation/EmailAddress","foo@bar.com"}, 013: {"fromRole/PartnerRoleDescription/ContactInformation/facsimileNumber/CommunicationsNumber","000000"}, 014: {"fromRole/PartnerRoleDescription/ContactInformation/telephoneNumber/CommunicationsNumber","111111"}, 015: {"fromRole/PartnerRoleDescription/GlobalPartnerRoleClassificationCode","Initiator"}, 016: {"fromRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier","987654321"}, 017: {"fromRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalSupplyChainCode","Information Technology"}, 018: {"fromRole/PartnerRoleDescription/PartnerDescription/GlobalPartnerClassificationCode","Distribution Center"}, 019: {"GlobalDocumentFunctionCode","Request"}, 020: {"thisDocumentGenerationDateTime/DateTimeStamp","20060207T054242.786Z"}, 021: {"thisDocumentIdentifier/ProprietaryDocumentIdentifier","01da6112.00000108b3217628.8011"}, 022: {"toRole/PartnerRoleDescription/ContactInformation/contactName/FreeFormText","ToSomeone"}, 023: {"toRole/PartnerRoleDescription/ContactInformation/EmailAddress","bar@baz.com"}, 024: {"toRole/PartnerRoleDescription/ContactInformation/facsimileNumber/CommunicationsNumber","222222"}, 025: {"toRole/PartnerRoleDescription/ContactInformation/telephoneNumber/CommunicationsNumber","333333"}, 026: {"toRole/PartnerRoleDescription/GlobalPartnerRoleClassificationCode","Responder"}, 027: {"toRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier","123456789"}, 028: {"toRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalSupplyChainCode","Electronic Components"}, 029: {"toRole/PartnerRoleDescription/PartnerDescription/GlobalPartnerClassificationCode","Authorized Service Provider"}, 030: {"AsynchronousTest/Attachment/GlobalAttachmentDescriptionCode","Assembly drawings"}, 031: {"AsynchronousTest/Attachment/GlobalMimeTypeQualifierCode","application/pdf"}, 032: {"AsynchronousTest/Attachment/UniversalResourceIdentifier","DUMMY"} 033: }; 034: Map<String,String> pathmap = new HashMap<String,String>(); 035: for (String[] value : values0C1) { 036: pathmap.put(value[0], value[1]); 037: } 038: XPathBuilder builder = new MapBuilder(pathmap, null, "0C1", "R01.02.00", true); 039: ServiceContent sc = builder.build(); 040: sc.validate(); 041: return sc; 042: }
001: import com.ados.hestia.parser.rnbm.exchange.*; 002: import com.ados.hestia.sdk.rnbm.access.*; 003: import java.io.*; 004: import org.apache.commons.io.CopyUtils; 005: public class MessageUtil { 006: /** 007: * Retrieve Attachment 008: * @param filename filename to be saved 009: * @param att Attachment Object 010: * @throws IOException 011: */ 012: public static void saveAttachment(String filename, Attachment att) throws IOException { 013: InputStream in = att.openSharedStream(); 014: OutputStream out = new BufferedOutputStream(new FileOutputStream(filename)); 015: CopyUtils.copy(in, out); 016: out.flush(); 017: out.close(); 018: in.close(); 019: } 020:}
Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved. |