50のサプラむダヌずのやり取りを䜜成し、倢䞭にならない方法

サプラむダヌは異なりたす。 私たちのフォヌマットに適応する準備ができおいる人もいれば、そうでない人もいたす。 いく぀かはSOAP'omを亀換し、他はREST'omを亀換したす。 補品コヌドを扱うものもあれば、オファヌ識別子を扱うものもありたす。 リク゚ストに応じおステヌタスを提䟛する準備ができおいるものもあれば、そうでないものもありたす。 いく぀かのディレクトリにはディレクトリがありたすが、その芁玠は自分のものず䞀臎させる必芁がありたすが、他のものにはありたせん。 䞀般的に、非垞に異なっおいたす。









サプラむダヌずのコミュニケヌションを自動化する必芁がありたす。 21䞖玀の庭。 理想的な䞖界では、この業界のサプラむダヌず消費者の䌚議私の堎合は自動車郚品を開催する必芁があるこずは明らかです。そこでは、情報亀換のための単䞀のフォヌマットに同意する必芁がありたす。 薬剀垫はこれを持っおいたす。 しかし、私たちは䞍完党な䞖界に䜏んでいたす。



誰もが最初のアむデアを持っおいたす。サプラむダは、ディレクトリの芁玠を提䟛する準備ができおおり、泚文を受け入れる準備ができおいたす。 しかし、すべおのサプラむダ、ビゞネスプロセスには独自の特性があり、これによりサプラむダAPIに異なる初期芁件が課せられ、それらを実装するさたざたなプログラマは、異なるサプラむダのAPIには初期のアむデア以倖の共通の機胜がないずいう状況をもたらしたす。



50のフォヌマットで取匕所を曞く方法は 50件の亀換を䜜成したすか 最良のケヌスでは、1぀のサプラむダずの亀換を1週間蚘述し、テストする必芁があり、プログラマのレヌトは3000r /時間であるず仮定したしょう。 乗算 そしお、私はただこのすべおの動物園のサポヌトず管理を芚えおいたせんでした。



他のオプションはありたすか 私の答え亀換を1぀曞いおください



51番目のサプラむダを芋぀けお、圌ずのやり取りを曞かなければなりたせん。 私たちにずっお、そしお私たちのプロセスにずっお理想的なサプラむダヌでなければなりたせん。 このサプラむダには、詳现が異なるすべおのサプラむダに共通の機胜が必芁です。



画像



「サプラむダヌから」ではなく、「私たちから」ず考え始めなければなりたせん。そしお、状況はすぐに単玔化されたす。 ビゞネスプロセスもプログラマも1぀あり、私たちの意芋で合理的な範囲を超えるものはすべお、特に興味深いものではありたせん。 そのようなアプロヌチは必然的に論理の「粗倧化」に぀ながり、ある皮の「薄い」機胜がナむフの䞋に行くこずは明らかですが、これは単玔さの代䟡です。



このような粗面化には、3぀のタむプがありたす。





理想的なサプラむダを発明するにあたり、サプラむダのAPIに関するサプラむダのドキュメントを䜜成し、理想的なサプラむダのAPIを開発する4぀の基本的な方法を開発したした。



方法1䞀般化



䞀般化は、あらゆる皮類の機胜を開発する基本原則です。 サプラむダヌずの亀換も䟋倖ではありたせん。



たずえば、あるサプラむダは、泚文のステヌタスを「受け入れ枈み」、「皌働䞭」、「出荷枈み」、「拒吊枈み」ずしお䜿甚できたす。 別の「管理者の䜜業䞭」、「倉庫の䜜業䞭」、「運送䌚瀟の䜜業䞭」、「正垞に閉鎖」、「キャンセル」。 たた、別のサプラむダヌずの27の異なるステヌタスを芋たした。 真剣に、私はそれらを具䜓的に数えたした。 私たちのシステムでは、この動物園党䜓が必芁ないこずは明らかです。 ステヌタスを、「新芏」、「仕入先の䜜業䞭」、「仕入先から出荷枈み」、「問題」など、圓瀟に必芁な最小限のセットにたずめたす。



次に、各サプラむダのディレクトリの各芁玠をディレクトリの芁玠ず比范するだけです。



方法2分離



すべおを䞀般化するこずはできたせん。 時々あなたは分離する必芁がありたす。



たずえば、1぀のサプラむダが泚文党䜓1぀のXMLのすべおの泚文明现を受け入れ、もう1぀がオンラむンストアバスケットの原則に埓っおバスケットに商品を远加する-バスケットに商品を远加する-バスケットを泚文する堎合、これを䜕らかの「䞀般的な」方法で曞くこずはできたせんうたくいきたす。



この堎合、理想的な51番目のサプラむダヌずの亀換は分割されるべきです。 ぀たり 必芁に応じお、どちらかの方法で泚文を送信できる必芁がありたす。 私にずっおこれは「泚文の送信方法」ず呌ばれ、「完党に泚文する」ず「行ごずに」ずいう2぀の意味がありたす。

たた、「ステヌタスチェック方法」の蚭定もあり、「泚文によるリク゚スト-泚文による返品」、「泚文によるリク゚スト-行による返品」、「行によるリク゚スト-行による返品」の3぀のオプションが既にありたす。



しかし、個々の断片化はシステムの耇雑化に぀ながるため、分離に関䞎するこずはあたり䟡倀がありたせん。 そしお、絶察にすべきでないこずは、ツリヌのような分離を蚱可するこずです。 すべおをフラットな蚭定に枛らすようにしおください。 機胜の断片化が別の基盀の断片化に䟝存する堎合、蚭定を掘り䞋げ、゚レガントなシンプルさの代わりに蚭定の地獄を取埗したす。



方法3クリッピング



クリッピング方法は盎感的であり、プロバむダヌの機胜が必芁な機胜を超える堎合に適甚されたす。



たずえば、サプラむダは、特定のポむントたでたずえば、セットに転送される前に泚文を線集する機胜を提䟛できたす。



しかし、これは私たちにずっお特に興味深いものではなく、他のすべおのサプラむダヌにはそのような機䌚がないので、この機䌚を利甚しないず蚀う必芁がありたす。

自動化の境界を明確に定矩する必芁がありたす。 それらの範囲を超えるものは考慮から陀倖されるべきです。 「これは远加の利䟿性です」ずいう議論は無芖しおください。残りのサプラむダを省くこずができれば、これを行うこずができたす。



方法4デフォルト



デフォルトの方法は、クリッピング方法の逆極端です。 この堎合、問題は自動化フロンティアにプロバむダヌがサポヌトしおいない機胜が含たれおいるこずです。 たずえば、泚文のステヌタスを返す。 䞀郚のベンダヌはこれをサポヌトしおいない堎合がありたす。



この堎合、サプラむダは返品方法を知らないため、埌続のすべおのアルゎリズムで泚文のステヌタスが最新であるず芋なされるか無芖されるかを確認する䟡倀はありたせん。 そのような泚文を最埌に成功したステヌタスに倉換する「スタブ」を配眮する方がはるかに簡単です。



したがっお、ニヌズず機胜を分析するこずにより、自動化の境界を描くこずができたす。 これにより、理想的な51番目のプロバむダヌのAPIの蚭蚈段階が完了したす。 ぀たり、テクノロゞヌを䜿甚する堎合、システムにはただ50のサプラむダヌが存圚したすが、デヌタのアップロヌド/ダりンロヌドコヌドは同じであり、50のサプラむダヌすべおに察しお51番目のプロバむダヌ圢匏でXMLを生成したす。



そのため、この蚘事では、取匕所の最も可倉で耇雑な郚分少なくずも私にずっおのように泚文のアンロヌドに焊点を圓おたしたが、曞かれたものはすべお、泚文デヌタずマスタヌデヌタの䞡方のロヌドずアンロヌドに適甚できたす。他のもの。



次に、理想的な51番目のプロバむダヌ甚にアップロヌドファむルを最適に配眮する方法を怜蚎する必芁がありたす。





したがっお、サプラむダが泚文を受け入れるために必芁なすべおのデヌタを含むファむルを取埗する必芁がありたすが、わずかに無効な圢匏です



それでは、どのように機胜したすか



理論からビゞネスぞ、理想的なサプラむダから実際のサプラむダぞず移行する時です。 興味のある人なら誰でも、私たちが手に入れたXMLは、1぀の圢匏から50を埗るために巧劙な方法で倉換されるずすでに掚枬しおいるず思いたす。





たず、デヌタ構造自䜓を䜜成する必芁がありたす。 XMLは、XMLドキュメントをあるビュヌから別のビュヌに倉換できる匷力なXMLドキュメント倉換蚀語XSLT-eXtensible Stylesheet Language Transformationsを備えおいるため、これに最適です。



蚀語は耇雑ではなく、数日で基本的なレベルで習埗でき、私のXSLTの99がvalue-ofおよびfor-eachの2぀の呜什のみを必芁ずしたす。



さらに、䜜成された構造は、XML以倖の圢匏に倉換する必芁がある堎合がありたす。 この意味で、XML <-> JSON倉換は最も難しいようです。そのような倉換の䟋をレむアりトしたした。 ただし、UFOがInfostartぞのリンクをここに挿入するこずを犁じおいるため、ここでは衚瀺したせんXMLからGETリク゚ストパラメヌタぞの倉換もありたす。 次のような行にitem = 12345qty = 4price = 19.50ですが、すでに非垞に簡単です。 このステップの結果ずしお、特定のサプラむダヌに有効な亀換テキストが衚瀺されるはずです。



亀換甚の有効なテキストを受信した埌、送信するだけです。 このタスクには、条件付きでナニバヌサルダむダラヌず呌ぶ機胜が関䞎しおいたす。 圌女は、蚭定SOAPたたはRESTサヌビスを呌び出しお、コンバヌタヌの結果を転送できたす。 ダむダラヌは非垞に異なるシナリオを提䟛する必芁がありたす。デヌタをパラメヌタヌずしお、芁求本䜓、POSTメ゜ッドおよびGETメ゜ッドずしお、基本的な暩限ずそれほど暩限のない暩限で送信する準備ができおいる必芁がありたす。



理論的には、少なくずもExcelの読み取り/曞き蟌みをダむダラに結び付け、ニヌズに合わせお特定の「コネクタ」を遞択できたす。



原則ずしお、理想的な51番目のプロバむダヌのフォヌマットでデヌタを取埗する機胜、XSL倉換、フォヌマットコンバヌタヌ、ダむダラヌは、この機胜を既存のシステムにリンクせずに、別のむンスタンスに取り出すこずができたす。 これをInterface Converterず呌びたす。



Interface Converterコヌドは300行に収たりたす。 基本蚭定XSLTテキスト、倉換および呌び出し蚭定はデヌタずしお保存されたす。 その結果、サプラむダに泚文を送信するプロセスは次のずおりです。









これはすべお「オンザフラむ」で発生したす。 同期的に、すなわち ERPは、䜕かが間違っおいるこずに気付かずに、䟿利な1぀の圢匏ですべおのサプラむダヌず亀換しおいるず考えおいたす。 もちろん、このアプロヌチは、比范的小さなデヌタパケットの送信にのみ適甚できたす。 1 GBの䟡栌衚がある堎合、このストヌリヌ党䜓に非同期を固定する方法を怜蚎する必芁がありたす。



濃瞮チップ



ほずんどすべおの亀換には、単にハヌドコヌディングされた倀がありたす。 これは、䞀郚にはサプラむダの機胜が倚すぎるためである可胜性がありたす。たずえば、パラメヌタヌ「远加の調敎なしで商品の䟡栌を匕き䞊げるこずができる割合」などです。䞀郚は、これらは「for you it always always」のような倀です。 4000ずは䜕ですか なぜ4000 わずか4000ずそれだけです。 このような「デッド」倀をERPに保存しないようにするために、コンバヌタヌは他のXMLでERPデヌタを匷化する機胜を備えおいたす。 ぀たり むンタヌフェむスコンバヌタヌデヌタベヌスに栌玍されるのは、任意のXMLです。



各むンタヌフェむスプロバむダヌには独自のXMLがありたす。 共通タグ内のラッパヌを䜿甚した単玔な接着の原則に埓っお、远加の匷化が行われたす。次に䟋を瀺したす。



<body>   <ERPData>     ...<i>  ERP</i>...   </ERPData>   <AdditionalData>     ...<i>  </i>...   </AdditionalData> </body>
      
      





さらに、このような匷化されたXMLは、XSLT゚ンゞンの入力に送られ、ERPから送信されたデヌタず静的デヌタの䞡方が利甚可胜になりたす。



その結果、䜕が埗られたすか



理由もなくこの庭党䜓をフェンスで囲み始めたのではなく、サプラむダヌずの接続時間を短瞮したかったからです。 新しいプロバむダヌ接続は次のずおりです。





実際には、これらすべおのアクションには最倧3時間かかりたす。 サプラむダが䜕かを「ある皮」考えおいるこずは明らかですが、95のケヌスで2〜3時間以内に䌚うこずができたす。 この文章を間違えお、「サプラむダヌ」の代わりに「代理」ず曞いた。偶然か..



圓然、詳现ずニュアンスはただたくさんありたすが、レビュヌ蚘事のフレヌムワヌクでは語るこずはできたせんが、蚘事の目的は、マルチフォヌマット亀換アヌキテクチャの蚭蚈に察する可胜なアプロヌチの1぀を瀺すこずであるず思いたす。



All Articles