Análisis EDIFACT puede ser una tarea desalentadora. ¿Hay alguna buena biblioteca de código abierto que pueda ayudar?¿Hay algún analizador EDIFACT de código abierto bueno en Java?
Respuesta
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.
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.
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. –
intento: http://bots.sourceforge.net no es tanto una biblioteca, pero se traduce edifact al formato XML prefiere .... .... .... etc csv
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
x12parser está implementado en .NET, no en Java ... :-) –
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=" " 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>
- 1. ¿Hay algún analizador JSDoc de código abierto escrito en Javascript?
- 2. ¿Hay algún motor AI de código abierto?
- 3. ¿Hay algún buen analizador X12 en Java?
- 4. ¿Hay algún libro que estudie código abierto de Java?
- 5. ¿Hay algún virus de código abierto?
- 6. ¿Hay algún intérprete de código abierto para JavaScript?
- 7. ¿Hay algún editor HTML de código abierto como stackoverflow?
- 8. Analizador de código abierto OpenGL para Linux
- 9. C# código abierto analizador NMEA
- 10. ¿Hay algún servidor web de código abierto en el iPhone?
- 11. Implementación de analizador ABNF de código abierto para Java?
- 12. ¿Hay algún analizador de respuesta HTTP simple para Java?
- 13. ¿Hay algún software de código abierto como cpanel?
- 14. Código analizador de código abierto para el marcado Mediawiki
- 15. ¿Hay algunas bibliotecas de código abierto de CAD en Java?
- 16. ¿Algún software de código abierto como matlab?
- 17. ¿hay algún paquete de prueba de unidad bueno para Excel
- 18. ¿Hay buenos geoparsers de código abierto disponibles?
- 19. ¿Hay algún lugar que enumere proyectos de código abierto en busca de contribuyentes?
- 20. Analizador de código fuente Java
- 21. ¿Hay algún analizador de cadenas de conexión en C#?
- 22. ¿Hay una implementación de código abierto de Java de R2RML?
- 23. Cualquier biblioteca java de código abierto que pueda analizar un archivo EDI en estándares ANSI x12 y UN/EDIFACT?
- 24. ¿Hay utilidades o jarras de reflexión Java de código abierto?
- 25. ¿Hay soluciones de código abierto CAPTCHA disponibles?
- 26. ¿Hay algún kernel pequeño lo suficientemente bueno para aprender osdev?
- 27. ¿Hay algún analizador ligero de métricas de código Java que pueda ejecutar en eclipse con Maven, Jenkins/Hudson?
- 28. ¿Hay algún analizador multipart/form-data en C# - (NO ASP)
- 29. ¿Hay algún Selector de fecha y hora bueno y gratuito disponible para Java Swing?
- 30. ¿Algún software de código abierto similar a Fortify?
Smooks parece ser extremadamente pesado en XML, pero por lo demás se ve maduro y bueno. –
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. –