1

使用されているモジュールに基づいて、別のデータベースに接続するにはどうすればよいでしょうか? シナリオは次のとおりです。

特定のサーバーに独自のデータベースを持ち、別のサーバーで OpenERP を実行するスタンドアロン アプリケーションがあります。独自のデータベースで独自のエンティティを作成するのではなく、スタンドアロン アプリケーション サーバーでエンティティを利用できる OpenERP でモジュールを作成したいのですが、これは可能ですか? ORM が独自のデータベースに接続するために使用する接続パラメーターを、別のデータベースを指すように変更するにはどうすればよいでしょうか?

もちろん、1 つの方法は base_synchro モジュールを使用して必要なエンティティを両方のデータベース間で同期することですが、大量のデータを考慮すると、重複は望ましくありません。もう 1 つの方法は、xmlrpc を使用して OpenERP にデータを取得することですが、それでもエンティティが OpenERP データベースに存在する必要があります。

データを複製せずにこの問題を解決するにはどうすればよいでしょうか? 別のデータベースに基づいて OpenERP のモジュールを作成するにはどうすればよいですか?

4

1 に答える 1

1

外部アプリケーションに接続する 1 つの方法は、コネクタモジュールを作成することです。参照できるコネクタ モジュールが既にいくつかあります。

  • Thunderbird および Outlook プラグイン
  • joomla および magento モジュール
  • 「イベントムードル」モジュール

たとえば、joomla コネクタは joomla プラグインを使用して、OpenERP と joomla 間の通信を処理します。使用される通信プロトコルは XML-RPC ですが、任意のプロトコルを選択できます。psycopg2 モジュールを使用して外部データベースに直接接続することも選択できますが (外部データベースが Postgresql を使用している場合)、これはお勧めしません。しかし、この外部アプリケーションに接続 API がない場合、選択の余地はありません。

この外部アプリケーションに接続するための利用可能な方法を把握し、その中から 1 つを選択する必要があります。適切なプロトコルを選択したら、OpenERP モジュールを作成できます。

osv.TransientModel オブジェクト (以前は osv メモリと呼ばれていました) を使用して、外部アプリケーションに格納されたエンティティをマップできます。これらのオブジェクトに関連するテーブルは引き続き OpenERP データベースに作成されますが、データは揮発性です (しばらくすると削除されます)。

于 2013-02-10T10:13:56.763 に答える