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

How to constantly check a value in CRM entity and perform some actions?

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

例如:假设我们有一个 CRM 实体 "account",它有一个名为 "expiry date" 的字段,那么如何检查帐户实体中所有记录的到期日期以及日期是否在过去或今天的日期将满足条件的记录的 "account" 字段状态更改为非活动状态。任何见解都会有所帮助。有什么办法可以使用 CRM 插件来做到这一点?如果是,如何检查帐户实体中所有行的到期日期。

如有任何帮助,我们将不胜感激。

提前致谢。

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

自定义工作流程 activity 看起来像这样:

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 应用程序的异步服务带来更大的性能开销。

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

您还可以 运行 来自 Azure 或 windows 机器的计划任务:

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