2010-05-08 34 views

Respuesta

10

www.smooks.org - Un analizador de texto basado en plantilla. Tienen ejemplos adecuados de EDI que estaba buscando utilizar para implementar Walmart 810 antes de que vieran mis productos.

+2

Smooks parece ser extremadamente pesado en XML, pero por lo demás se ve maduro y bueno. –

+0

Lo es. Me gustaría ver algo como commons-digester para EDIFACT, sinceramente. Antes de dejar de hacer EDI por completo, estaba pensando en usar Smooks para hacer algo similar, texto EDI directo a POJO. –

2

Análisis EDIFACT es fácil. Puedes encontrar muchas bibliotecas para hacerlo. Por ejemplo,

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

Todas estas bibliotecas simplemente se rompen los mensajes en segmentos.

La parte más difícil con EDIFACT es transformar el mensaje en algunos objetos significativos. Esto es muy específico de la aplicación y dudo que encuentre ninguna biblioteca. Incluso si encuentra uno, será específico para un campo restringido, como la reserva de hotel.

+7

Edicoder parece que en realidad no ha implementado ningún código de análisis todavía. Estoy de acuerdo con las transformaciones de EDIFACT. –

0

Hay una buena en http://x12parser.codeplex.com. Imprimirá cualquier 810 como xml, html o volver al texto con espacios en blanco para facilitar la inspección. Las pruebas unitarias incluyen una muestra del Walmart 810 del sitio: http://www.jobisez.com/edi/tp/guide.aspx?doc=/edi-igs/Walmart/810Invoice5010.pdf.

El texto con formato se vería así:

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 está implementado en .NET, no en Java ... :-) –

1

Hemos implementado 834 EDI a XML utilizando Java + Smooks 1.6. ¡Es impresionante!

<?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> 

Cuestiones relacionadas