精雕细琢工作流的状态管理

2023-11-08 23:20

本文主要是介绍精雕细琢工作流的状态管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以有限状态机为原理的工作流引擎,就是通过工作流状态的改变来达到流程的流转,因此工作流系统中的各种状态概念显然很重要。

首先我们来看,工作流引擎在给业务流程建模的时候,将一个业务处理的场所定义成一个步骤节点,然后通过处理业务的时候,"提交业务处理结果"这样的动作来达到流程的流转。流程流转到哪个下一步骤,通过动作结果连线来导向。

工作流系统发生一次流转,工作流状态就会发生一次改变,即有限状态机中的状态升迁,流程实例从一种状态升迁到另一种状态是通过执行动作来完成的。

通常我们会理解发生一次流转,是从A步骤--》X步骤,但如果一次流转是 A步骤--》A步骤,原地踏步,好象没有发生流转,究竟发生没有发生流转呢?从工作流的状态概念来理解,一定是发生了流转。

工作流状态 = 当前步骤 +当前步骤的状态

工作流发生一次流转,使得流程状态发生一次升迁,当A步骤--》X步骤,步骤发生了变化,状态肯定升迁了。当A步骤--》A步骤,A步骤的状态一定是改变了,否则就没有意义了。A步骤--》A步骤也需要通过执行一个动作来完成,如果执行后,A步骤的状态也未发生改变,哪就不需要设计这个动作,可以通过只保存业务模块的业务数据来完成。

在一个工作流实例的生命周期内通常有一个或者多个活动的状态,单线运行的,就一个当前步骤+当前步骤的状态。当有并行节点的时候,就会有多个当前步骤+当步骤的状态。

步骤的状态,我们可以预设几种状态,步骤在进行中,等候处理中,完成,返回处理。 这几种状态和业务无关,纯粹只描述步骤的状态。
当A步骤--》A步骤 步骤的状态可以在这几个状态中改变。如当开始进入A步骤的时候,是进行中,当需要处理的事情太多,升迁到等候处理,当离开A步骤时,步骤的状态是完成,下一个步骤为进行中。因此我们在流程定义的时候,进入步骤的状态定义为进行中,离开定义为完成,便于我们更容易理解流程的流转,以实际的业务处理无关。


流程实例状态:创建,激活,挂起,终止,完成,这是工作流引擎中另外一个重要的概念,是描述流程实例的状态。
创建:流程实例刚创建的时候。
激活:流程正常流转时候的实例状态
挂起:当业务需要,暂停此业务的办理时,由管理员或者有权限的管理用户来执行挂起流程。当其它问题处理完毕,需要继续执行此流程的流转时候,可以恢复到激活,也可以直接就终止掉。
终止:当业务发生问题,或者异常的时候,有管理员或有权限的用户来直接终止掉此流程。终止后的流程不能再恢复成正常的继续流转。
完成:业务流程办理完毕,走到尽头了流程实例的状态。


当流程实例状态为挂起,流程实例就不能再发生流转了,同时,任务也不能继续执行,任务的状态也为挂起。等流程实例状态恢复后,任务才能继续执行。要知道在工作流系统中任务的完成,是由执行流程的动作来完成的,也即提交动作上挂接的业务模块来完成任务的。因此,工作流实例状态为挂起,任务也为挂起,工作流实例恢复后,任务也恢复到待执行,工作流实例终止后,任务也异常终止,工作流实例正常完成,实例关联的所有任务也正常完成了。


于细微之处体现成败,严谨这些工作流的状态管理彰显工作流软件产品的品质。

 

这篇关于精雕细琢工作流的状态管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373054

相关文章

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4