2010-05-08 12 views

risposta

10

www.smooks.org - Un parser di testo basato su modello. Hanno esempi EDI adatti che stavo cercando di utilizzare per implementare per Walmart 810 prima di scaricare i miei prodotti.

+2

Smooks sembra essere estremamente pesante per XML, ma per il resto sembra maturo e buono. –

+0

Lo è. Mi piacerebbe vedere qualcosa come Commons-Digester per EDIFACT, onestamente. Prima di interrompere completamente l'EDI, stavo pensando di usare Smooks per fare qualcosa di simile, direttamente EDI-text a POJO. –

2

L'analisi di EDIFACT è semplice. Puoi trovare molte librerie per farlo. Ad esempio,

http://code.google.com/p/edicoder/

Tutte queste librerie semplicemente rompono i messaggi in segmenti.

La parte difficile con EDIFACT è trasformare il messaggio in oggetti significativi. Questo è molto specifico per l'applicazione e dubito che troverai tutte le librerie. Anche se ne trovi uno, sarà specifico per un campo ristretto, come la prenotazione di un hotel.

+7

Edicoder sembra che non ha effettivamente ancora implementato alcun codice di analisi. Sono d'accordo riguardo le trasformazioni di EDIFACT. –

0

C'è una buona uno a http://x12parser.codeplex.com. Produrrà qualsiasi 810 come xml, html o tornerà al testo con spazi bianchi per un'ispezione più semplice. I test unitari includono un campione di Walmart 810 dal sito: http://www.jobisez.com/edi/tp/guide.aspx?doc=/edi-igs/Walmart/810Invoice5010.pdf.

Il testo formattato sarebbe simile a questa:

ISA*00*   *00*   *16*102096559TEST *14*PARTNERTEST *071214*1406*U*00040*810000263*1*T*> 
    GS*IN*102096559TEST*PARTNER*20071214*1406*810000263*X*004010 
    ST*810*0001 
     BIG*20050205*6463367*20050202*3376103367 
     REF*IA*123456170 
     REF*DP*00017 
     REF*MR*0020 
     N1*SU*SUPPLIER NAME 
     N1*ST*WAL-MART 100*UL*0078742000992 
     N3*406 SOUTH WALTON BLVD 
     N4*BENTONVILLE*AR*72712 
     ITD*05*15*****45 
     DTM*011*20050205 
     FOB*CC 
     IT1**1080*EA*3.61**IN*001719653*UP*022108955228*UK*00221089552284 
     PID*F****ITEM DESCRIPTION 
     SAC*A*I410***2350*******02 
     TDS*387530 
     CAD*T***RDWT*ROADWAY**BM*123456789 
     ISS*1080*EA*100*LB 
     CTT*1 
    SE*19*0001 
    GE*1*810000263 
IEA*1*810000263 
+1

x12parser è implementato in .NET, non in Java ... :-) –

1

Abbiamo implementato 834 EDI a XML utilizzando Java + Smooks 1.6. È meraviglioso!

<?xml version="1.0" encoding="UTF-8"?> 

<medi:description name="834 EDI TO XML" version="1.0" /> 

<medi:delimiters segment="&#10;" field="*" component="^" 
    sub-component="#" escape="~"/> 

<medi:segments xmltag="FILE"> 

    <medi:segment segcode="ISA" xmltag="ISAHeader"> 
     <medi:field xmltag="AuthorziationInformationQualifier" /> 
     <medi:field xmltag="AuthorziationInformation" /> 
     <medi:field xmltag="SecurityInformationQualifier" /> 
     <medi:field xmltag="InterchangeIDQualifier" /> 
     <medi:field xmltag="InterchangeSenderID" /> 
     <medi:field xmltag="InterchangeIDQualifier" /> 
     <medi:field xmltag="InterchangeReceiverID" /> 
     <medi:field xmltag="InterchangeDate" /> 
     <medi:field xmltag="InterchangeTime" /> 
     <medi:field xmltag="RepetitionSeparator" /> 
     <medi:field xmltag="InterchangeControlVersionNumber" /> 
     <medi:field xmltag="InterchangeControlNumber" /> 
     <medi:field xmltag="AcknowledgmentRequested" /> 
     <medi:field xmltag="InterchangeUsageIndicator" /> 
     <medi:field xmltag="ComponentElementSeparator" /> 
    </medi:segment> 

    <medi:segmentGroup xmltag="BenefitEnrollmentRequest" maxOccurs="-1"> 
     <medi:segment minOccurs="0" maxOccurs="-1" segcode="GS" xmltag="BenefitEnrollmentRequestHeader"> 
      <medi:field xmltag="FunctionalIDCode" /> 
      <medi:field xmltag="ApplicationSendsCode" /> 
      <medi:field xmltag="ApplicationRecsCode" /> 
      <medi:field xmltag="Date" /> 
      <medi:field xmltag="Time" /> 
      <medi:field xmltag="GroupCtrlNumber" /> 
      <medi:field xmltag="ResponsibleAgencyCode" /> 
      <medi:field xmltag="ReleaseIDCode" /> 
      </medi:segment> 

     <medi:segmentGroup xmltag="BenefitEnrollmentMaintenance" maxOccurs="-1"> 
       <medi:segment minOccurs="0" maxOccurs="-1" segcode="ST" xmltag="BenefitEnrollmentMaintenanceHeader"> 
         <medi:field xmltag="TransactionSetIdentifierCode" /> 
         <medi:field xmltag="TransactionSetControlNumber" /> 
         <medi:field xmltag="ImplementationConventionReference" /> 
       </medi:segment> 
      <medi:segment minOccurs="0" segcode="BGN" xmltag="Begin" ignoreUnmappedFields="true"> 
        <medi:field xmltag="TSPurposeCode" /> 
        <medi:field xmltag="ReferenceIdent" /> 
        <medi:field xmltag="Date" /> 
        <medi:field xmltag="Time" /> 
        <medi:field xmltag="TimeCode" /> 
        <medi:field xmltag="ReferenceIdent" /> 
        <medi:field xmltag="TransactionTypeCode" /> 
        <medi:field xmltag="ActionCode" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="REF" xmltag="Ref_38" ignoreUnmappedFields="true"> 
        <medi:field xmltag="ReferenceIdentQual" /> 
        <medi:field xmltag="ReferenceIdent" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="DTP" xmltag="Dtp_007" ignoreUnmappedFields="true"> 
        <medi:field xmltag="DateTimeQualifier" /> 
        <medi:field xmltag="DateTimePeriodFormatQualifier" /> 
        <medi:field xmltag="DateTimePeriod" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="QTY" xmltag="To" ignoreUnmappedFields="true"> 
        <medi:field xmltag="QuantityQualifier" /> 
        <medi:field xmltag="Quantity" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="N1" xmltag="Sponsor" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="N1" xmltag="Issuer" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="N1" xmltag="Agent" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:segment minOccurs="0" segcode="ACT" xmltag="Act" ignoreUnmappedFields="true"> 
        <medi:field xmltag="AccountNumber" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:field xmltag="AcctNumberQualifier" /> 
        <medi:field xmltag="AccountNumber" /> 
      </medi:segment> 
      </medi:segment> 
      <medi:segment minOccurs="0" segcode="N1" xmltag="Broker" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:segment minOccurs="0" segcode="ACT" xmltag="Act" ignoreUnmappedFields="true"> 
        <medi:field xmltag="AccountNumber" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:field xmltag="AcctNumberQualifier" /> 
        <medi:field xmltag="AccountNumber" /> 
      </medi:segment> 
      </medi:segment> 

      <!-- 
      <medi:segment minOccurs="0" segcode="N1" xmltag="Sponsor"> 
        <medi:field xmltag="Name" /> 
      </medi:segment> 
      <medi:segmentGroup xmltag="Member" maxOccurs="-1"> 
       <medi:segment minOccurs="0" maxOccurs="-1" segcode="INS" xmltag="MemberHeader"> 
         <medi:field xmltag="HeaderName" /> 
         </medi:segment> 

       <medi:segment minOccurs="0" segcode="DTP" xmltag="DOB"> 
        <medi:field xmltag="Month" /> 
      </medi:segment> 
       <medi:segment minOccurs="0" maxOccurs="-1" segcode="LE" xmltag="MemberFooter" ignoreUnmappedFields="true"> 
         <medi:field xmltag="FooterName"/> 
         </medi:segment> 
      </medi:segmentGroup>--> 

      <medi:segment minOccurs="0" segcode="SE" xmltag="BenefitEnrollmentMaintenanceFooter"> 
      <medi:field xmltag="TransactionSetIdentifierCode" /> 
         <medi:field xmltag="TransactionSetControlNumber" /> 
      </medi:segment> 
     </medi:segmentGroup> 

     <medi:segment minOccurs="0" segcode="GE" xmltag="BenefitEnrollmentRequestFooter"> 
      <medi:field xmltag="ZFA" /> 
      </medi:segment> 
    </medi:segmentGroup> 

    <medi:segment segcode="IEA" xmltag="ISAFooter"> 
     <medi:field xmltag="CCC" /> 
     </medi:segment> 
</medi:segments> 

Problemi correlati