python工作流引擎workflow.py_.Net 轻量级工作流引擎 WorkflowCore的使用(六)——工作流持久化与恢复...

WorkflowCore提供了几乎针对流行数据库的各种持久化方式,支持SqlServer、Sqlite等关系数据库,也支持MongoDb、Redis等非关系数据库。缺省使用的是在内存中保存流程数据,但在实际应用中,必须将流程数据持久化以保证系统的可靠性。当系统因为计划内或者意外原因出现异常后,正在执行的流程应该能够在断点处恢复并继续执行。我们改造一下第一部分的例子,增加持久化设置,并模拟流程中断和恢复过程。

首先,我们需要使用NuGet引入SqlServer持久化Provider:WorkflowCore.Persistence.SqlServer,当然也可以使用其它类型的数据存储。

然后,修改ConfigureServices,将services.AddWorkflow()修改为:

services.AddWorkflow(x => x.UseSqlServer(@"Server=.;Database=WorkflowCore;Trusted_Connection=True;", true, true));

最后修改一下执行代码,增加流程Id输入和恢复代码:

IServiceProvider serviceProvider = ConfigureServices();

var host = serviceProvider.GetService();

host.RegisterWorkflow>();

host.Start();

var initialData = new Dictionary();

Console.WriteLine("请输入需要恢复的流程编号,如执行新流程直接回车:");

string workflowId = Console.ReadLine();

if (string.IsNullOrEmpty(workflowId))

{

workflowId = host.StartWorkflow("HelloWithNameWorkflowDynamic", 1, initialData).Result;

Console.WriteLine(workflowId);

}

else

{

host.ResumeWorkflow(workflowId);

}

Console.WriteLine("输入名字");

string value = Console.ReadLine();

host.PublishEvent("MyEvent", workflowId, value);

下面,我们模拟中断-恢复过程。首先,运行程序,不输入流程id,直接按回车,会生成新的流程,并输出流程Id,拷贝这个流程ID,并退出程序:

图片.png

再次执行程序,输入或粘贴上一次生成的流程编号,可以继续执行流程:

图片.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值