如何不断检查CRM实体中的值并执行某些操作?

时间:2017-03-14 19:43:11

标签: dynamics-crm-2011 crm dynamics-crm-2013 dynamics-crm-online

我是CRM的新手。我试图在CRM中自动化流程。但不确定如何不断检查CRM实体行的价值并执行一些后期操作。

例如:考虑我们有一个CRM实体"帐户"它有一个名为"到期日期"那么如何检查帐户实体中所有记录的到期日期,如果日期是过去或今天的日期,则更改"帐户"对于满足条件的记录,字段状态为非活动状态。任何见解都会有所帮助。我们有什么办法可以使用CRM插件吗?如果是,如何检查帐户实体中的所有行是否有效期。

非常感谢任何帮助。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以设置工作流程来触发此操作:Set custom Workflow to run daily in CRM 2013

您还可以从Azure或Windows计算机运行计划任务:Azure Service Bus Topic subscribe from CRM plugin

您还可以使用批量删除流程在CRM中设置自己的计划程序:http://www.crmsoftwareblog.com/2012/08/using-the-bulk-deletion-process-to-schedule-recurring-workflows/

答案 1 :(得分:0)

您可以创建按需工作流,执行自定义工作流活动步骤,然后超时24小时。在24小时过后,工作流程可以将自己称为子工作流程(因此每天运行自定义步骤)。

自定义工作流活动看起来像这样:

var query = new QueryExpression { EntityName = "account", ColumnSet = new ColumnSet(false) };

query.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0);
query.Criteria.AddCondition("expiryDate", ConditionOperator.OnOrBefore, DateTime.Now);

var expiredAccounts = service.Retrieve(query);

foreach (var account in expiredAccounts.Entities) {
    var stateRequest = new SetStateRequest {
        EntityMoniker = account.ToEntityReference(),
        State = new OptionSetValue(1),
        Status = new OptionSetValue(1)
    };

    service.Execute(stateRequest);
}

或者,您可以创建一个在创建帐户时运行的工作流程。工作流程将等到帐户的到期日期,然后停用该帐户。此选项更简单,但会为CRM应用程序的异步服务带来更大的性能开销。