Skip to content

1.4 Recurring process

Marjan Nikolovski edited this page Apr 13, 2021 · 3 revisions

Purpose

The recurring process represents a business process that need to be executed on a certain schedule.

The recurring process contains 1 layer:

  • Sync

How to use

public class MyRecurringProcess : RecurringProcess<VoidResult>
{
    public override RecurrencePatternConfiguration Profile => new DailyRecurrencePatternConfiguration(1).At(8, 0);

    /// <summary>
    /// Sync process
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    public override VoidResult Sync()
    {
        return Ok();
    }
}

Configuration

  • VoidResult, MethodResult or ListResult out generic argument
  • Critical attribute
  • RecurrencePatternConfiguration
    • TimePartRecurrencePatternConfiguration
    • DailyRecurrencePatternConfiguration
    • WeeklyRecurrencePatternConfiguration
    • WorkdayRecurrencePatternConfiguration
    • WeekendRecurrencePatternConfiguration
    • MonthlyRecurrencePatternConfiguration
    • MonthlyNamedRecurrencePatternConfiguration

Examples

public class SendPromotionalEmails : RecurringProcess<VoidResult>
{
    [Import] private IUserRepository UserRepository { get; set; }

    public override RecurrencePatternConfiguration Profile => new DailyRecurrencePatternConfiguration(1).At(8, 0);

    /// <summary>
    /// Sync process
    /// </summary>
    /// <param name="user"></param>
    /// <returns></returns>
    public override VoidResult Sync()
    {
        var users = UserRepository.GetAll();
        for(var user in users)
        {
            var result = Continue<SendPromotionalEmail>().With(user.Email);
            if(result.IsFaulted) return Fail(result);
        }
    }
}
Clone this wiki locally