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

版本: .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. ajax数据交互

    目录 一.ORM查询优化 1-1. only与defer 1-2. select_related与prefatch_related 二.MTV与MVC模型 三.choices参数 四.AJAX 4-1 ...

  2. 《Java基础知识》Java变量作用域

    对于在作用域里定义的变量,作用域同时决定了它的“可见性”以及“存在时间”.在JAVA里,作用域是由花括号的位置决定的.JAVA用一对大括号作为语句块的范围,称为作用域,在作用域里定义的变量,只有在该作 ...

  3. 在Docker中跑Hadoop与镜像制作

      重复造轮子,这里使用重新打包生成一个基于Docker的Hadoop镜像:   Hadoop集群依赖的软件分别为:jdk.ssh等,所以只要这两项还有Hadoop相关打包进镜像中去即可: 配置文件准 ...

  4. 服务器端Mysql常用操作

    原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/f7463513-5 ...

  5. Logstash组件详解(input、codec、filter、output)

    logstash组件详解 logstash的概念及特点. 概念:logstash是一个数据采集.加工处理以及传输(输出)的工具. 特点: - 所有类型的数据集中处理 - 不同模式和格式数据的正常化 - ...

  6. NetCore MemoryCache使用

    引用类库 1.Install-Package Microsoft.Extensions.Caching.Memory MemoryCacheOptions 缓存配置 1.ExpirationScanF ...

  7. JS---part5 课程介绍 & part4 复习

    part5 课程介绍 另一个定时器 第一个定时器的小案例----练习 封装动画函数----------匀速的动画函数,过渡到=======>缓动的动画函数 简单的轮播图 左右焦点的轮播图 无缝连 ...

  8. WFS服务查询方法

    基于Geoserver发布的wfs服务,实现空间和属性信息的查询.wfs包含getFeature操作,用来检索要素信息,支持返回gml格式的地理要素表达. WFS的getFeature操作需要提供的参 ...

  9. Cesium专栏-Billboard加载Gif图片

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

  10. Android 共享参数 SharedPreferences

    完成共享参数的读写 public class SharedPreference { private Context context; public SharedPreference(Context c ...