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 开发的新手。

谢谢,

泰辛

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 回答