本記事では金蝶コネクタをCDataSyncへ追加する手順と、利用方法について解説します。
対応エンドポイントについて
今回対応したエンドポイント数は13、テーブル数は20です。
以下は金蝶(Kingdee)で使用しているSQLServer上のテーブル、エンドポイント、CDataで表現されるテーブル名をそれぞれマッピングしたものになります。
Kingdee Table | Endpoint | CData Table | CData Sub-Table |
---|---|---|---|
t_Account | Account.asmx | Account | AccountItemClass |
t_Currency | Currency.asmx | Currency | |
t_Orgnization | Customer.asmx | Customer | CustomerBarCodes |
t_Department | Department.asmx | Department | DepartmentBarCodes |
t_ICItem | Material.asmx | Material | MaterialBarCodes |
t_MeasureUnit | MeasureUnit.asmx | MeasureUnit | |
SEOrder | InduSaleOrder.asmx | SaleOrder | SaleOrderEntry |
t_Stock | Stock.asmx | Stock | StockBarCodes |
ICStockBIll | InStcokBill.asmx | StockBill | StockBillEntry |
t_Supplier | Supplier.asmx | Supplier | SupplierBarCodes |
t_WorkCenter | WorkCenter.asmx | WorkCenter | WorkCenterBarCodes |
CDataSync での利用手順
金蝶コネクタの追加
この章では CData Sync へ金蝶コネクタを手動で追加する手順をご紹介します。
通常のコネクタアップロードで追加する方法についても順次対応していく予定です。
※2021年3月29日現在、金蝶コネクタをダウンロードすることが可能となりました。
金蝶コネクタの追加方法
CData Sync のコネクタ追加画面より「kingdee」と入力しますと、金蝶コネクタが表示されます。
あとはそのまま進んでいただくことで、金蝶コネクタを CData Sync に追加することができます。
金蝶コネクタの追加方法(アップロード偏)
こちらは CData サポートから直接コネクタを受けとった際のアップデート方法になります。
CData Sync にローカルにある金蝶コネクタをアップロードしてアップデートすることが可能になっております。
www.cdatablog.jp
金蝶コネクタのダウンロード(古い手順)
連絡済みのリンクより金蝶コネクタのダウンロードを行います。
ダウンロードしたzipファイルの中に以下赤枠のdll が入っています。
CDataSync へ金蝶コネクタを追加(古い手順)
CDataSync を停止後、以下のパスに先ほどのdll を格納します。
C:\Program Files\CData\CData Sync\www\bin
次に以下パスにある Web.config に金蝶コネクタの情報を追記します。 C:\Program Files\CData\CData Sync\www\Web.Config
以下内容をDbProviderFactoriesの中に入れてください。
<remove invariant="System.Data.CData.Kingdee" /> <add invariant="System.Data.CData.Kingdee" type="System.Data.CData.Kingdee.KingdeeProviderFactory, System.Data.CData.Kingdee" name="CData ADO.NET Provider for Kingdee" description="CData ADO.NET Provider for Kingdee" />
追加作業は以上です。あとはCDataSync を起動してください。
金蝶への接続設定
接続設定画面に"Kingdee" と表示されているアイコンが金蝶コネクタになります。現時点では金蝶のロゴは未設定なので歯車のアイコンになっています。
接続設定内容は以下のように全ての項目に入力します。
ちなみにCData では日商様と同様に中国にある金蝶のデータを、日本の環境のCDataSyncからアクセスしております。 (今回はローカル端末にて検証)
金蝶のURL がローカルとなっていますが、裏でteraterm を起動しSSHポートフォワーディングしているため接続できております。
ジョブの作成
ジョブ画面にて「テーブルを追加」ボタンをクリックして対象テーブルを選択します。
差分更新について
今回開発対象のテーブルでは更新日時を保持していないため、差分更新は行われずに毎回洗替のジョブとなります。
ただし、いくつかのテーブル(Supplierなど)で日付項目を持っていますので、この項目を利用することで差分更新のような制御をかけることができます。
REPLICATE [Supplier_0310] SELECT * FROM [Supplier] WHERE [LastTradeDate] > '2021-03-01'
自動的に日時を指定する場合は以下の関数を使用することで対応可能です。
REPLICATE [Supplier_0310] SELECT * FROM [Supplier] WHERE [LastTradeDate] > FORMAT(DATEADD('DD', -10, CURRENT_TIMESTAMP()),'yyyy-MM-dd')
上記のような指定を行うことで、金蝶側でフィルタリングされたデータが返ってきます。なお、レプリケート先のSQLServer 側ではMARGE文が実行されるので、Keyが重複してもエラーにはなりません。
また、金蝶へのリクエストはほとんどのテーブルでwhere句の項目がフィルター項目として扱われます。
※補足:InStcokBill.asmxとInduSaleOrder.asmxでは金蝶の仕様によりフィルター項目を受け付けてなく、クライアント側でのフィルタリングとなります。
データ量が多いテーブルではこのような日付指定、もしくはWhere句で条件指定を行うことでパフォーマンスが向上できますのでご検討ください。
以上となります。