1

定期的にサプライヤに電子メールを送信し、返信がない場合はフォローアップの電話などをスケジュールするために使用するワークフローアクティビティがあります。ただし、私の問題は、メッセージを送信する前に、どういうわけか各サプライヤの電子メールを取得する必要があることです。

CRM 2011の特定のエンティティから特定のフィールドの値を取得するにはどうすればよいですか?

擬似コードは次のとおりです。

For each supplier entity in the system {

     if (sendSalesRequest) {

          Send Initial E-mail
          - wait 21 days
          if (noReply) {
              Send Follow up e-mail
              - wait 7 days
              if (noFollowupReply) {
                 schedule phone call activity everyday until reply
              }
          }
      }
}

ただし、サプライヤエンティティから電子メールアドレスを取得する方法が必要です。

私は実用的な解決策を探していません(私はそれを断りませんが!)、CRM開発にまったく慣れていないので、このタスクを実行する方法のガイドラインにすぎません。

ありがとう、

Tysin

4

1 に答える 1

1

2011年が初めての場合は、SDKについて読むことをお勧めします。特に、カスタムワークフローアクティビティの開発を検討する必要があります。それは途中であなたを助けるべきである多くのサンプルを持っています。

私は持っていることをお勧めします:

  1. サプライヤを処理するカスタムワークフローアクティビティを呼び出すための単一のステップを持つマスターワークフロー。すべてのサプライヤを処理するときはいつでも、このワークフローを開始します。
  2. 最初の電子メールを送信するオンデマンドワークフロー
  3. フォローアップメールを送信するオンデマンドワークフロー
  4. 電話をスケジュールするオンデマンドワークフロー

私がこれを提案する理由は、管理と処理がより簡単なワークフローでデータの作成を維持することを意味します。たとえば、カスタムワークフローアクティビティを再コンパイルせずに電子メールメッセージを変更できます。

したがって、マスターカスタムワークフローアクティビティの最初のステップは、Crmにクエリを実行することです。まず、QueryExpressionをお勧めします。そうすれば、ロジックの基礎となるデータを取得できます。

次に、レコードに対してワークフローを開始し、電子メールと電話を送信するためのコードが必要です。ここにこの例があります。

次に、コードは次のようになります。

    QueryExpression query = new QueryExpression("supplier");
    query.ColumnSet = new ColumnSet("sendsalesrequest", "noreply", "nofollowupreply");

    EntityCollection entities = service.RetrieveMultiple(query);
    entities.Entities.ToList().ForEach(entity => 
        {
            if(entity["sendsalesrequest"] == "Yes")
            {
                StartWorkflow(entity.Id, "Send Initial E Mail Workflow Name");
            }
            //etc
        }

これはかなり高いレベルですが、うまくいけば正しい方向に進むはずです。

于 2012-09-26T21:43:52.373 に答える