前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试。本文试图从一个最简单的流程来示例说明,如何快速了解引擎代码的编写。

版本: .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) 代码方式创建流程和测试流程方便开发人员快速学习和上手,是一种提升工作效率的高效方法。

Slickflow.NET 开源工作流引擎快速入门之一: 简单序列流程代码编写示例的更多相关文章

  1. Slickflow.NET 开源工作流引擎快速入门之三: 简单或分支流程代码编写示例

    前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从请假流程,或分支模式来快速了解引擎代码的编写. 1. 创建或分支流程图形 或分支流程是常见的 ...

  2. Slickflow.Graph 开源工作流引擎快速入门之四: 图形编码建模工具使用手册

    前言: 业务人员绘制流程时,通常使用图形GUI界面交互操作来完成,然而对于需要频繁操作或者管理较多流程的系统管理用户,就需要一款辅助工具,来帮助他们快速完成流程的创建和编辑更新.Slickflow.G ...

  3. Slickflow.NET 开源工作流引擎快速入门之二: 简单并行分支流程代码编写示例

    前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从一个最简单的并行分支流程来示例说明,如何快速了解引擎代码的编写. 版本:.NET Core2 ...

  4. Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合

    前言:  流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...

  5. Slickflow.NET 开源工作流引擎高级开发(二) -- 流程快速测试增值服务工具介绍

    前言:流程是由若干个任务节点组成,流转过程就是从一个节点转移到下一个节点,通常需要不断切换用户身份来完成流程的测试,这样使得测试效率比较低下,本文从实战出发,介绍常见的两种快速测试方法,用于提升流程测 ...

  6. Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍

    1. 工作流术语图示                                              图1 流程图形的BPMN图形元素表示 1) 流程模型定义说明流程(Process):是企 ...

  7. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务模块的交互

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  8. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  9. RoadFlowCore工作流引擎快速入门

    RoadFlow新建一个流程分为以下几步: 1.建表 在数据库建一张自己的业务表(根据你自己的业务需要确定表字段,如请假流程就有,请假人.请假时间.请假天数等字段),数据表必须要有一个主键,主键类型是 ...

随机推荐

  1. Java内存模型之原子性问题

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 前言 之前的文章中讲到,JMM是内存模型规范在Java语 ...

  2. [ASP.NET Core 3框架揭秘] 配置[6]:多样化的配置源[上篇]

    .NET Core采用的这个全新的配置模型的一个主要的特点就是对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源.如果采用物理文件作为配置源,我们可以选择 ...

  3. 「SAP技术」为正常库存管理的物料做成本中心采购会是什么结果?

    SAP 为正常库存管理的物料做成本中心采购会是什么结果? 这种采购可以正常进行,收货后SAP会更新采购订单里指定的费用类科目,而库存数量和库存价值都不会增加. 1, 如下物料号,是正常做库存管理的物料 ...

  4. adb 获取平台号

    获取 Android 的 PLATFORM_VERSION :adb shell getprop ro.build.version.release获取 Android 的 APP_PACKAGE 和 ...

  5. Shell(七):文件包含

    和其他语言一样,Shell 也可以包含外部脚本(类似python中import的功能).这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filenam ...

  6. Centos7脚本一键优化

    我把优化centos7的脚本分享给大家,建议刚安装完服务器的朋友执行如下优化脚本 [root@test2 yum.repos.d]# cat centos7.sh #!/bin/bash #autho ...

  7. Java对象导论

    Java对象导论 1.1 抽象过程 万物皆对象. 程序是对象的集合(即:类),他们通过发送消息(调用方法)来告知彼此要做的. 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合) ...

  8. C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式

    上篇写了MFC界面搭建,这篇就写实现计算.涉及到数据结构,对新手很不友好. 虽然是MFC程序,但是能灵活地分离后台代码,自行构建控制台程序. 上篇文章链接:C++做四则运算的MFC计算器(一)MFC界 ...

  9. WPF 3D球及进阶玩法

    在WPF中3D球的构建算法请参考: https://www.cnblogs.com/lonelyxmas/p/9844951.html 好玩以及值得借鉴的Demo:   (CSDN下载需要积分,避免你 ...

  10. iOS中UICollectionView添加头视图

    参考链接:https://www.jianshu.com/p/ef57199bf34a 找了一堆的博客,写的都少了很重要的一步. //引入头部视图 -(UICollectionReusableView ...