2

CRM 2011 レコードから他の DB にレコードを作成するソリューションはありますか? CRM 2011 で「原価」などのレコードが作成された場合、Oracle DB にレコードを作成する必要があります。プラグインを介して行うことはできますか?または、このためにサービスを作成する必要がありますか? これについての参照または解決策を教えてください。どんな助けでも大歓迎です。

4

2 に答える 2

2

プラグインを使用して別のシステムでレコードを作成することもできますが、同期について考え、重複が発生しないようにする必要がありますが、それは確かに可能です。

プラグインのチュートリアルはここにあります。

DBにレコードを作成するには、作成されたエンティティCreateの情報を実行して使用するプラグインを作成する必要があります。CostOracle

例として:

public void Execute(IServiceProvider serviceProvider)
{
    var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

    //get the created entity from CRM
    var theCreatedEntity = context.InputParameters["Target"] as Entity;

    //build up a stored procedure call
    using (OracleConnection objConn = new OracleConnection("connection string"))
    {
        var cmd = new OracleCommand();
        cmd.Connection = objConn;
        cmd.CommandText = "stored procedure name";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("param1", OracleType.Number).Value = theCreatedEntity.GetAttributeValue<int>("Attribute1");
        cmd.Parameters.Add("param2", OracleType.Number).Value = theCreatedEntity.GetAttributeValue<int>("Attribute2");

        //etc
        cmd.ExecuteNonQuery();
    }
}

それはあなたが始めるのに十分なはずです

于 2013-02-17T13:14:10.650 に答える
2

少し前にお客様から同様のご要望をいただきました。彼らは、CRM のデータベースは信頼できないと主張し、SQL Server で作成されたレコードのコピーを安全に保存したいと考えていました。(はい、皮肉なことは理解しています。彼ら理解していませんでした。)

これを解決した方法は、プラグインを作成することでした。ただし、Createのメッセージに単に反応するだけではうまくいかないことに注意してください。3 つの CRUD 操作用にリスナーを設定する必要があります (取得は外部データベースに影響を与えないため、むしろ C_UD 操作になります)。

メインのExecuteメソッドのスケルトンを次に示します。

public void Execute(IServiceProvider serviceProvider)
{
  Context = GetContextFromProvider(serviceProvider);
  Service = GetServiceFromProvider(serviceProvider);

  switch (Context.MessageName)
  {
    case "Create": ExecuteCreate(); break;
    case "Update": ExecuteUpdate(); break;
    case "Delete": ExecuteDelete(); break;
  }
}

このディスパッチャーの後、他のデータベースへの実際の呼び出しを実装できます。頭を上げたい3つの落とし穴があります。

  1. CRM が提供しない場合は、外部 DB に適切な値を提供することを忘れないでください。
  2. 外部リソースと対話するため、プラグインを非同期として登録します。
  3. それらを再帰的に保存するかどうか、エンティティ参照の問題を検討してください。

プラグイン構築のウォークスルー
CRM SDK をお持ちでない場合のリンクプラグ
インの登録に関する情報
それ以外にも、このテーマに関するウォークスルー (コードと構造を含む) をブログに掲載しています。その URL は、自分で把握する必要があります。自己宣伝するつもりはありませんが、私の名前と WP に関係しています。グーグルはあなたの友達です。:)

于 2013-02-17T14:30:53.297 に答える