L'analisi di EDIFACT può essere un'impresa scoraggiante. C'è qualche buona libreria open source che può aiutare?Esiste un buon parser EDIFACT open source in Java?
risposta
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.
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.
Edicoder sembra che non ha effettivamente ancora implementato alcun codice di analisi. Sono d'accordo riguardo le trasformazioni di EDIFACT. –
prova: http://bots.sourceforge.net non tanto una biblioteca, ma si traduce EDIFACT nel formato che preferite .... xml .... csv .... ecc
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
x12parser è implementato in .NET, non in Java ... :-) –
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=" " 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. C'è un buon ide xml Open Source?
- 2. Esiste un pastebin Open Source?
- 3. Esiste un'implementazione Java open source di R2RML?
- 4. Qualcuno conosce un buon web crawler open source estendibile?
- 5. Esiste una soluzione cache off-source open source per Java?
- 6. Esiste un motore AI open source?
- 7. Buon progetto open source django per l'apprendimento
- 8. Open source API Telnet Java
- 9. un buon progetto open source che utilizza Dependency Injection Framework?
- 10. C'è qualche buon parser X12 in Java?
- 11. Esiste un buon software open source per scrivere casi di test?
- 12. Esiste un clone psexec open source scritto in Delphi?
- 13. Esiste un motore wiki collaborativo in tempo reale open source?
- 14. Esiste una API Open Source Airline Map?
- 15. Esiste un'implementazione open source di APL?
- 16. Buon codice open source per imparare la programmazione Web
- 17. Esiste un lib di translit gratuito PHP open source?
- 18. Java Swing: libreria di Gantt open source
- 19. Qualsiasi libreria java open source in grado di analizzare un file EDI in entrambi gli standard ANSI x12 e UN/EDIFACT?
- 20. Progetto open source Java per contribuire
- 21. CMS open source (.Net vs Java)
- 22. Esiste un equivalente open source per Amazon SNS?
- 23. Esiste un deposito open source di classi personalizzate per l'Iphone?
- 24. Libreria di riconoscimento vocale Open Source in Java
- 25. Open Source ETL framework
- 26. Implementazione java XSLT 2.0 open source?
- 27. Grandi applicazioni/librerie Java Open Source
- 28. Librerie di ottimizzazione dell'immagine open source Java
- 29. Alternativa open source per "Intellitrace"
- 30. Esiste un parser Java per BER-TLV?
Smooks sembra essere estremamente pesante per XML, ma per il resto sembra maturo e buono. –
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. –