.NET 工作流: Slickflow开源工作流引擎快速入门之一: 简单序列流程代码编写示例
前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试。本文试图从一个最简单的流程来示例说明,如何快速了解引擎代码的编写。
版本: .NETCore 2.1
1. 创建流程图形
串行流程(Sequence)用于顺序流程的创建,节点按照前后顺序生成。
var pmb = ProcessModelBuilder.CreateProcess("BookSellerProcess", "BookSellerProcessCode"); var process = pmb.Start("Start") .Task("Package Books", "PB001") .Task("Deliver Books", "DB001") .End("End") .Store();
上述代码创建了一个简单的串行流程,有4个节点,开始节点,两个任务节点和结束节点。其中Store()方法用于数据库存储流程。流程图示例如下:
2. 流程启动和运行
流程的启动和运行是最为常用的两个API接口。
2.1 流程启动
启动需要处理的是流程实例的创建,还有开始节点和开始节点之后任务节点的创建,示例代码如下:
IWorkflowService wfService = new WorkflowService(); var wfResult = wfService.CreateRunner("10", "jack") .UseApp("BS-100", "Delivery-Books", "BS-100-LX") .UseProcess("BookSellerProcessCode") .Start();
流程记录列表:
2.2 流程运行
流程运行是由当前待办任务开始办理,并且运行到下一步的过程。在解析流程时,下一步可能有多个办理步骤,需要用户明确选择步骤列表(通常前端用户在弹出下一步步骤列表时候来指定),此处可以示例作为单步简单实例的运行。
IWorkflowService wfService = new WorkflowService(); var wfResult = wfService.CreateRunner("10", "jack") .UseApp("BS-100", "Delivery-Books", "BS-100-LX") .UseProcess("BookSellerProcessCode") .OnTask(id) //TaskID .NextStepInt("20", "Alice") .Run();
流程记录列表:
3 流程撤销和退回
3.1 流程撤销
如果用户在完成自己的待办任务,并且发出给下一步办理人时,发现有错误信息,需要撤销时,可以由自己发起,将当前流程撤销回来。撤销内部处理逻辑等同于退回处理,只不过发起人位置不同。代码示例如下:
IWorkflowService wfService = new WorkflowService(); var wfResult = wfService.CreateRunner("20", "Alice") .UseApp("BS-100", "Delivery-Books", "BS-100-LX") .UseProcess("BookSellerProcessCode") .OnTask(8027) //TaskID .Withdraw();
流程记录列表:
3.2 流程退回
流程退回是由当前待办任务的办理人发起,退回到流程的上一步。在解析流程时,上一步可能有多个办理步骤,需要用户明确选择步骤列表(通常前端用户在弹出上一步步骤列表时候来指定),PrevStepInt()方法用于针对只退回其中的一个办理步骤的简化处理。
IWorkflowService wfService = new WorkflowService(); var wfResult = wfService.CreateRunner("20", "Alice") .UseApp("BS-100", "Delivery-Books", "BS-100-LX") .UseProcess("BookSellerProcessCode") .PrevStepInt() .OnTask(8030) //TaskID .SendBack();
流程记录列表:
4. 辅助开发工具
1) Slickflow 流程设计器
http://demo.slickflow.com/sfd/
2) Slickflow Web测试工具
http://demo.slickflow.com/sfw2/
5. 开源项目地址
https://github.com/besley/Slickflow
6. 总结
1) 以上代码,可以帮助开发人员快速熟悉引擎组件的接口和简单或分支的实用功能,完整功能需要在企业版以上版本获取;
2) 辅助开发工具中的流程设计器以及Web测试工具,给用户直观的体验操作,而且也适合不同类型的业务用户;
3) 代码方式创建流程和测试流程方便开发人员快速学习和上手,是一种提升工作效率的高效方法。