1

賞金を稼ごう!

この質問は私にタンブルウィードバッジ(7日間で7ビュー!)を獲得しました。これは、Navisionの市場シェアが非常に限られていることの強力な確認です。 ..。。

しかしねえ...それは私たちがバックエンドとして得たものなので、私はこれと戦う準備ができています。:-O

これに光を当てることができる大胆なnavision開発者がいる場合...賞金はあなたのためにあります!:)


元の投稿

私は最近、Navision 5に基づくレガシーバックエンドと相互作用するかなり複雑なeコマースシステムを実装しました。これまでのところ、2つのプラットフォーム間のデータ交換はXMLファイルを介して行われていますが、この方法は非常に扱いにくく、非常に傾向があります。事故に。

私たちのニーズは次のとおりです。

  1. 各プラットフォームのビジネスロジックの特定の要素を他のプラットフォームに公開するため(たとえば、「この顧客がこれまでに購入した合計金額は?」、「現在提供されている製品は何ですか?」、「新規顧客の登録数は?」ウェブサイトで?」など)。
  2. さまざまなトランザクションのフィードバック/検証のメカニズムを使用するため(例:「顧客Xからの新しい注文です」...「了解しました。注文の処理が開始されます」...「わかりました、それをコピーして、さようなら!」)。
  3. 可能であれば、ファイルをいじくり回すことは避けてください。ただし、呼び出し/ポート/サービスの観点から、これらすべてを維持してください...

私が考えることができる最も自然な方法は、Webサービスを介して2つのシステムを統合することですが、Navision5はこれをネイティブにサポートしていません。それで、私は「デューデリジェンス」を行い、MSDNでこの記事他の記事を含むいくつかのことを見つけました。

これらの記事によると、Navision 5でWebサービスを作成することはそれほど難しいことではありませんが、レガシーシステムを担当するチームにこのソリューションを提案したとき、彼らはそれが「純粋な理論」であり、これまでに実装した人は誰でも。

私は彼らの言葉を疑う理由はありませんが、マイレージは変わる可能性があります...そしておそらくSOコミュニティには、実際に同様のことを実装し、彼らの経験を共有できる他の国の専門家がいると思いました。

したがって、私の質問は2つあります。

  1. 自宅でこれを試し、最終結果が信頼できる場合、結果が努力する価値があると思う場合など、最大の困難であったことについて少し共有できる人はいますか?
  2. 同様の問題に直面したが、別のアプローチで解決し、解決策を提示できる人はいますか(「自分でやったことはありませんが、やらなければならない場合は、このようにします...」タイプ回答も大歓迎です)?

よろしくお願いします!:)

4

5 に答える 5

4

私もNav6についてあまり役に立たない答えでチャイムを鳴らします:)

Nav 6を使用してプロジェクトを完了しました。驚くべきことに、Webサービスは非常に簡単に公開および利用できます。Webサービスインターフェイスでオブジェクトを見つけて、ボックスにチェックマークを付けて、それ自体を公開するように指示するのは、本当に簡単なことです。

当然のことながら、Webサービスは期待どおりに機能しません。保存とオブジェクト化に使用するイベントのシーケンスに関しては非常に扱いにくいため、オブジェクトとプロパティを永続化するには、試行錯誤を繰り返す必要があります。また、各オブジェクトの動作は少し異なるようです。例:顧客を作成するには、空白の顧客を作成して保存し、この新しいレコードをコードユニットでマッサージしてから、レコードをフェッチしてから、顧客の属性を書き込んで再度保存する必要があることがわかりました。新しいcustomer()を作成し、属性を設定して、一挙に保存することを期待していました。

Nav6へのアップグレードにはあまり熱心ではないと思いますが、頭から離れて、Webサービスをシミュレートする方法を次に示します。

SharepointはすでにWebサービスを消費および公開できるため、階層は問題になりません。Nav 5には「自然に」それらがありませんが、Webサービスの「ブローカー」として機能する独自のプログラムを作成することができます。ほとんどの場合XMLを介して、すでにnavに情報を出し入れしています。このブローカーを構築して、入力をxmlファイルとして受け取り、それらをマッサージしてWebサービス呼び出しで使用することができます。とにかくすべてのナビゲーション情報がそこに保存されているので、XMLを放棄して、Dbから直接書き込みおよび読み取りを行うこともできます。これが私が考えていることです:

NAV <-> SQLSERVER<->新しい「ブローカー」Webサービス<->Sharepoint

または、すでにNAV APIをダウンパットしていて、XMLを再利用したい場合:

NAV<->XMLファイル<->新しい「ブローカー」Webサービス<->Sharepoint

XMLを使用していて、ファイルウォッチャーを使用している場合、レイテンシーはそれほど悪くないはずです。通常、ファイルウォッチャーはミリ秒単位でドロップまたは変更を検出します。

うーん、でも、おそらく次のようなものにBizTalkを使用することになっていると思います:NAV <-> BizTalk <-> Sharepoint

しかし、Navと通信するためにBizTalkをセットアップするのがどれほど簡単かはわかりません。通信を機能させるのはかなり簡単だと思いますが、これは推測です。

いずれにせよ、この投稿がどれほど役立つかはわかりませんが、いくつかのアイデアが得られるかもしれません。

乾杯、ランス

于 2009-12-04T16:38:06.540 に答える
1

私が働いている場所では、NAV 6のWebサービスの1つを使用してSharePointと統合することができたので、顧客を検索したり、SharePointのWebパーツに記録して表示したりできます。あなたの質問は特にNAV5についてですが、これがNAV 6で機能しているのを見ただけです。私はこれに取り組んだ開発者ではなかったので、これ以上具体的なことはありません。

mibuso.comで質問してみましたか?彼らははるかにNavisionに焦点を当てています。

于 2009-12-02T17:44:29.143 に答える
1

ビジネスロジックを公開すると言うとき、これにはALコード(CodeUnitなど)の実行が含まれますか?データベースに対してクエリを実行するだけでよい場合は、NODBC&System.Data.OdbcまたはCFront.NETAPIを使用できます。これらのいずれかは、.NET Webサービスを使用して簡単にラップでき、どちらもネイティブNAVデータベースをサポートします。メッセージを返すには、最初に言及した記事で説明されているように、COMを使用する必要があります。

上記のいずれも完全に可能であり、.NET、COM、およびNAVの習熟度に応じて比較的簡単です。

リンクした2番目の記事では、NASの使用について説明しています。私はこれについての専門家ではありませんが、これには特別なライセンスの細目が必要になるかもしれません。何かを実装する前に、ライセンスにNAS、CFront、またはNODBCが含まれているかどうかを確認する価値があります。

于 2009-12-09T18:18:46.933 に答える
1

実際には、NAV5からNAV2009への「技術的なアップグレード」を実行してから、ネイティブWebサービスを使用できます。exeファイルとアプリケーション全体(ただし、オブジェクトではなく、バージョン5のまま)を置き換えること、およびその他のいくつかのトリックを意味します。しかし、それは機能するので、NAV5に2009-webservice-機能があります:-)

于 2012-02-07T21:24:24.603 に答える
0

これをグーグルで検索する人のために、ネイティブデータベースを使用してNavision 6を使用している場合は、Windowsメッセージキューを使用して接続することをお勧めします。

XML要求をキューに入れ、応答がポップアップするのを待つ独自のWebサービスを作成できます。Navision側には、キューをプルして応答キューに回答を入れるクライアントが1つあります。そのためにNASと呼ばれる特別な非GUIクライアントがあります。

私はこのアプローチを15年間使用して、予約エンジンをNavisionバックエンドに接続しています。これは非常にうまく機能し、Navisionに到達する前にリクエストを確認できるという利点があるため、バックエンドを多すぎるリクエストや誤ったリクエストから保護できます。

このアプローチの唯一の問題は、Navision内のCOMMITコマンドが非常に高価であるということです。大量のリクエストを処理することは困難です。バックエンドがコミットする必要があるとすぐに、1秒あたりわずか数リクエストになります。これは、少量の場合は問題ない場合があります。

大量の場合は、キャッシュを実装するか、ビジネスロジックの一部を取り出す必要があります。私にとっては価格比較Webサイトに見舞われていたので、ここでの解決策はPythonで記述されたWebサービスからのサービスを提供し、誰かが何かを購入した場合にのみリクエストを渡すことです...

于 2017-09-27T14:07:46.340 に答える