C#工作流WorkflowCore学习:Hello World
为什么需要工作流?在之前博文.Net依赖注入技术学习:基本模型中,有提到这个世界的基本构型是纵向分层和横向组合,而工作流模型在纵向上比源码级别提升了一个层次,它的基本操作单元是步骤;在横向上通过一些规则,可以使步骤灵活组合。实现了更高层次抽象的简洁性和表达力的平衡。
本文介绍了.Net体系比较优秀的开源工作流WorkflowCore,github地址:https://github.com/danielgerlag/workflow-core。
教程参考:https://workflow-core.readthedocs.io/en/latest/
下面定义了2个步骤:HelloWorld和GoodbyeWorld

public class HelloWorld : StepBody { public override ExecutionResult Run(IStepExecutionContext context) { Console.WriteLine("Hello world"); return ExecutionResult.Next(); } }

public class GoodbyeWorld : StepBody { private ILogger _logger; public GoodbyeWorld(ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger<GoodbyeWorld>(); } public override ExecutionResult Run(IStepExecutionContext context) { Console.WriteLine("Goodbye world"); _logger.LogInformation("Hi there!"); return ExecutionResult.Next(); } }
然后定义一个工作流:

public class HelloWorldWorkflow : IWorkflow { public void Build(IWorkflowBuilder<object> builder) { builder .StartWith<HelloWorld>() .Then<GoodbyeWorld>(); } public string Id => "HelloWorld"; public int Version => 1; }
最后启动工作流:

public class Program { public static void Main(string[] args) { IServiceProvider serviceProvider = ConfigureServices(); //start the workflow host var host = serviceProvider.GetService<IWorkflowHost>(); host.RegisterWorkflow<HelloWorldWorkflow>(); host.Start(); host.StartWorkflow("HelloWorld"); Console.ReadLine(); host.Stop(); } private static IServiceProvider ConfigureServices() { //setup dependency injection IServiceCollection services = new ServiceCollection(); services.AddLogging(); services.AddWorkflow(); //services.AddWorkflow(x => x.UseMongoDB(@"mongodb://localhost:27017", "workflow")); services.AddTransient<GoodbyeWorld>(); var serviceProvider = services.BuildServiceProvider(); return serviceProvider; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人