問題タブ [edifact]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - Maven パッケージは、mvn アセンブリのファット jar の間違ったフォルダーの下にある edifact モデルをスモークします。
他の多くの依存関係と同様に、Smooks といくつかの org.milyn.edi.unedifact マッピングを含む Maven を使用して、fat-JAR を構築しています。マッピング モデルは 1 つしか許可されていないため、次のようにメイン内で使用するモデルを選択します。
例えばのようにediFileModelUrn
見える"urn:org.milyn.edi.unedifact:d95a-mapping:1.4"
テストは正常に実行され、実行すると期待どおりに脂肪の入った jar ファイルが生成されますmvn package assembly:assembly
。
org.milyn.edi.unedifact:d95a-mapping:1.4
ただし、その jar を使用してマッピングをロードしようとすると、クラスパスの下 (および他のいくつかのマッピング) で検索されるため、マッピングが失敗します。
私は得る
だから私は構築された瓶を見ました。マッピングを除いて、それとその中のすべてのクラスですべて問題ありません。そのjar内の他の各クラスは、パッケージの命名に関して、それが属する場所にうまくパックされています。
de.somecompany.someproject.SomeClass
=> de/somecompany/someproject/SomeClass.class
) edifact マッピングは like という名前のフォルダーに配置されますorg_milyn_edi_unedifact/d95b-mapping/1_4
。
すべてがその太い瓶に詰め込まれる前に、すべて.
が置き換えられるパスのように見えます。_
この問題は、マッピングでのみ発生します。他のすべての依存関係は本来あるべきようにパックされているため、milyn パッケージングのバグだと思います。
私のPOMは次のようになります。
パスが正しく生成され、マッピングが見つかるように、どうすればその問題を解決できますか? または、マッピングを初期化する方法で何かを変更する必要がありますか? しかし、なぜテストが適切に実行されるのでしょうか?
mule - Mule の data waever コンポーネントで edifact ファイルを作成する方法
xml ファイルを受け取りました。私の要件は、その xml から edifact ファイルを作成することです。ただし、mule の dataweaver コンポーネントでは、edifact ファイル形式はサポートされていません。データウィーバーまたはその他のコンポーネントからラバでエディファクトを生成する方法はありますか。
xml - XSD の X-Path 2.0 (アサート): "count(//elem/text() = 'test') > 0" は、文字列が一致しない場合でも常に true
XSD1.1 assert 機能を使用して、要素をコンテンツ レベルで検証したいと考えています。(正確には、XMLで表現されたEDIFACTにcontent-combinationsの存在を確認したいのですが、それは本題ではありません...)
XPath をテストするために、次のミニ テスト シナリオを作成しました。
XML
要件は次のとおりです。test1 + test2 文字列の組み合わせと、something1 と something2 文字列の組み合わせがあることを確認したいです。other1 + other2 グループのようなグループが存在する可能性がありますが、私は気にしません。ここでの 3 つのグループの順序も影響しないはずです。
テストする必要がある XSD は次のとおりです。
興味深い点は次のとおりです。
またはそれを分解するには:
私の問題は次のとおりです。式(より具体的にはカウント)は、文字列が一致しなくてもtrueを返します。たとえば、「test1」に対してテストしますが、文字列は「test」です。
その中で自己動作します。true または false を正しく返します。しかし、count on it を使用しても機能しません。(常にtrueを返すようです)
カウントはここでは正しい解決策ではないと思います。問題は、各グループを「正確に」テストしたくないのですが、すべてのグループがすべての繰り返しの中で「これとこの特定の組み合わせが少なくとも 1 回発生する」ことです。グループの。
私はこれを Saxon 9 EE でテストしていますが、XPath は他の XPath 実装でも同じ動作をします。
どんな助けでも大歓迎です。
ありがとう、えぇ
編集:
Mads Hansen と Michael Kay の助けを借りてこれを機能させた後 (ありがとう!)、最後のハードルが 1 つありました。
このケースを考えてみましょう:
このXPathで
count(group[elem1/text() = 'test1' and elem2/text() = 'test2']) > 0)
これにより、上記の例は有効ではなくなりますが (私が望むように)、元の XPath は 内でチェックしなかったため、上記を検証しました。
java - Edifact d96a .txt ファイルから納期を読み取るにはどうすればよいですか?
EDI で送信された .txt ファイルから配達日を取得できません。
私の顧客は、.txt ファイルに次の行を設定する機会が必要です。
'DTM+76: 20160702 :102
将来の配達のために配達日を設定するためにウェブサイトから何かを注文するとき。
日付 (この場合は 2016-07-02) を取得し、それを deliveryDate 変数に設定します (そしてデータベースに設定します)。
ファイルにテキスト「DTM:76」が含まれているかどうかを確認するために Java で Scanner を使用し、 Find a string (or a line) in a txt File Java のような行の日付部分を読み取ることを考えています。EDIで可能/効果的ですか、またはそれを行うより良い方法はありますか?
私にとって最良の解決策は、次のようなものです。
EDI と納期に関する情報: http://www.gs1.org/sites/default/files/docs/eancom/ean02s4/part2/insdes/053.htm https://www.stylusstudio.com/edifact/D96A/ ORDERS.htm
助言がありますか?
edi - EDIFACT でフィールド CPS が必須なのはなぜですか?
EDIFACT の仕様によると、DESADV では CPS が必須です。 https://www.stylusstudio.com/edifact/D97A/CPS_.htm しかし、CPS セグメントで送信するデータがありません。CPS セグメントなしで、セグメント グループ #15 に LIN および QTY セグメントを含む DESADV メッセージを作成できますか? https://www.stylusstudio.com/edifact/D97A/DESADV.htm#SG15
java - EDI ストリームから Java オブジェクトへの変換での例外
EDI メッセージを読み取って Java オブジェクトに変換しようとしていますが、以下の例外で終了します。
スレッド「メイン」org.milyn.SmooksException の例外: ソースのフィルタリングに失敗しました。org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:97) org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:64) org.milyn.Smooks._filter(Smooks.java) :526) org.milyn.Smooks.filterSource(Smooks.java:482) で org.milyn.Smooks.filterSource(Smooks.java:456) で org.milyn.edi.unedifact.d97a.D97AInterchangeFactory.fromUNEDifact(D97AInterchangeFactory. java:58) org.milyn.edi.unedifact.d97a.D97AInterchangeFactory.fromUNEdifact(D97AInterchangeFactory.java:40) で com.ibm.gpohub.edi.common.SmooksSample.main(SmooksSample.java:18) で 原因: org .milyn.edisax.EDIParseException: EDI メッセージの処理に失敗しました [ORDRSP][D:97A:UN]。セグメント [FTX]、フィールド 4 (TEXT_LITERAL)、コンポーネント 1 (Free_text_-_-1) には値が含まれていると予想されます。現在、セグメント番号 6 にあります。 (EDIParser.java:606) org.milyn.edisax.EDIParser.mapSegment(EDIParser.java:564) org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:535) org.milyn.edisax.EDIParser. mapSegments(EDIParser.java:453) org.milyn.edisax.EDIParser.parse(EDIParser.java:428) org.milyn.edisax.EDIParser.parse(EDIParser.java:410) org.milyn.edisax.unedifact .handlers.UNHHandler.process(UNHHandler.java:97) at org.milyn.edisax.unedifact.handlers.UNGHandler.process(UNGHandler.java:58) at org.milyn.edisax.unedifact.handlers.UNBHandler.process(UNBHandler) .java:
コード スニペットは次のとおりです。
EDIメッセージ:
ウナ:+.? UNB+UNOC:3+662424795TEST:16+IBMEDIID:ZZ+160330:1416+IG-62779496 UNG+ORDRSP+662424795TEST:16+IBMEDIID:ZZ+160330:1420+FG-34160863+UN+D:97A UNH+80534414+ ORDRSP:D:97A:UN BGM+231+20160330+4 DTM+69:20150501150000UTC?+12:304 FTX+SSR+++:ブランク FTX+AAR++ST FTX+COI+++CLW FTX+PRI++8 FTX+ DEL++06 FTX+CUR+++すべての商品を 1 つの箱に梱包する FTX+DIN+++配達前に顧客に電話する FTX+PRD+++1:1:PC01 FTX+AAP+++900:RFF を受け入れる+PC:20AMS67000 RFF+SE:PC01K33E RFF+SZ:ND RFF+ABO:Y RFF+CO:IBM1234501 DTM+4:20150501010101UTC?+12:304 RFF+ACW:CASE_12345 RFF+ADG:Y RFF+ACH:Y RFF +ZOD:order_desk01 RFF+ZSD:IBM RFF+ZPD:30006672 RFF+ZCS:ブランク RFF+ZZZ NAD+SE+30001234++IBM NAD+BY+US00000001++Coca Cola:CA+9/F:841 WEBSTER ST:ストレス 3:ブランク+サンフランシスコ++94117+US CTA+PD+:ジョーダン・サージン COM+Minako@DHL.com:EM COM+6508624654:
私が間違っているところを教えてもらえますか?前もって感謝します。
biztalk - BizTalk EDIFACT サブ ドキュメントの分割
パートナーは、いくつかのカスタム セグメントを含む EDIFACT を送信します。これらのカスタム セグメントを持つように、既存の edifact スキーマの 1 つを更新しました。幸せな日のシナリオは機能しています。私たちは現在、ネガティブなシナリオを実装しようとしています。ビジネスでは、BizTalk がインターチェンジ内で成功したメッセージを処理し、失敗したメッセージに対してエラーを発生させたいと考えています。パートナー契約を使用していません。EDIFACT フォールバック設定で、インターチェンジをトランザクション セットとして分割するインバウンド バッチ処理オプションを設定しました - エラー時にトランザクション セットを一時停止します。
問題: 私のパートナーは、同じトランザクション セット内、つまり UNH-UNT 内で複数のデータ (この場合は複数の S01Loop) を送信します。上記のロジックを適用すると、インターチェンジ全体が失敗します。
要件: 特定のループ データが失敗し、残りの肯定的なデータがパスする必要があります。
私が試したこと: HIPAA ベースの edifact ファイルには、subdocument_break という概念があります。これらの注釈を XSD に適用しました。残念ながら、うまくいきませんでした。
すぐに使用できるソリューションがない場合は、複数のデータを個別のインスタンスに分割するカスタム フラット ファイル逆アセンブラー コンポーネントとなる EDI スプリッター パイプライン コンポーネントを作成する予定です。次に、EDI 逆アセンブラーを使用してデータを解析します。
これを行うために BizTalk ですぐに使用できる機能を誰かが持っているかどうか教えてください。