salesforce、sap、oracle などの複数のアプリケーションからほぼすべてのデータをプログラムで取得する必要があります。これらのアプリケーションのほとんどは、Web サービスを介して SOAP ベースの API を提供します。連絡先などの 1 つのエンティティ (テーブル) からレコードをフェッチするために、Apache Axis (wsdl2java) を使用してクライアント コードを少し書きました。ほとんどのアプリケーションには、数十または数百のエンティティがあります。すべてのデータを取得するには、多くのコードを作成する必要があると思います。これについてもっと良い方法はありますか?
3 に答える
定期的にデータを抽出する場合は、Talend Open Studio (オープンソース) を使用してすべてのデータを抽出できます。いくつかの SF プロジェクトで Talend を使用してそれを行っています。Java を実行している任意のサーバーにデプロイし、cron をスケジューラとして使用できる Java コードを生成します。
また、メタデータを使用してすべての SF カスタム オブジェクトを動的にフェッチし、毎日の (増分) バックアップのために各オブジェクトから毎日の変更を自動的に抽出する Java ベースのアプリも作成しました。
クラウス
プログラムでデータにアクセスする必要があるとおっしゃいましたが、セールスフォースのデータ エクスポート機能をご覧ください。
SOAP API を使用したプログラムによるエクスポートの場合、サポートするエンティティ リストを大まかに型付けし、ハード コーディングしたくない場合は、おそらくPartner APIを使用することをお勧めします。サポートされているエンティティ (別名オブジェクト) のリストを取得するには、 describeGlobal()を実行します。次に、describeSObjects()を実行して、オブジェクトのフィールドのリストを取得できます。その時点で、そのオブジェクトからクエリを実行し、レコードを取得できます。
大規模なデータ セットを処理するために設計されたBulk APIも参照してください。ペイロードは CSV であり、扱いやすいかもしれません。
Ok。これは私自身の質問に答えようとする試みです。アイデアが浮かびました: すべてのオブジェクトと、Axis または jax-ws が生成する対応するラッパー クラスとの間のマッピングを把握し、メタデータ (object_type、class_name、method_name、 data_types など)、すべてのレコードを取得するためのメタデータ ドリブン コードを使用します。それは良いアプローチだと思いますか?
コミュニティからより多くのアイデアやコメントを得ることができれば、本当に感謝しています。どうもありがとう。