カスタムワークフローアクティビティステップを実行し、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アプリケーションの非同期サービスに対するパフォーマンスオーバーヘッドが大きくなります。