.Net 轻量级工作流引擎 WorkflowCore的使用(十七)—— 使用Schedule执行定时任务

WorkflowCore 提供了定时执行后台任务的功能,使用Schedule可以定义异步执行的任务,在工作流的后台执行。示例代码如下:

using System;
using WorkflowCore.Interface;


namespace ZL.WorflowCoreDemo.ControlStructures
{
    public class ScheduleWorkflow : IWorkflow
    {
        public string Id => "ScheduleWorkflow";

        public int Version => 1;

        public void Build(IWorkflowBuilder builder)
        {
            builder
                .StartWith(context => Console.WriteLine("开始"))
                    .Schedule(data => TimeSpan.FromSeconds(5)).Do(schedule => schedule
                    .StartWith(context => Console.WriteLine("后台工作")))
                .Then(context => Console.WriteLine("前台工作"));
        }
    }
}

在上面的代码中,工作流开始后,定义了一个Schedule,这个任务在延时5秒后,启动一个后台流程。流程的执行代码如下:

           IServiceProvider serviceProvider = ConfigureServices();
            var host = serviceProvider.GetService();

            host.RegisterWorkflow();
            host.Start();

            
            var workflowId = host.StartWorkflow("ScheduleWorkflow", 1, null).Result;

            Console.ReadLine();
            host.Stop();

流程的执行代码与前面的例子基本类似,执行结果如下:


图片.png

执行时,前台任务完成5秒后,后台工作才执行。

相关代码可以从Github下载: https://github.com/zhenl/ZL.WorflowCoreDemo

你可能感兴趣的:(.Net 轻量级工作流引擎 WorkflowCore的使用(十七)—— 使用Schedule执行定时任务)