[原创]工作流自适应引擎的设计思想(初步)

基于若依开发管理项目中引入工作流引擎activiti7,包含前后端(原创) 原项目中用到了工作流引擎,使用若依框架开发, 原二开使用项目:https://gitee.com/y_project/RuoYi-Vue 基于activiti7地址:https://gitee.com/smell2/ruoyi-vue-activiti 导入模块到原二开项目中 使用步骤 admin导入bpmn文件,或者绘制工作流,并激活。 post为普通员工进入我的审批可以查看所有审批(经销商角色) 数据会存入历史表和任务表 历史表展现全部任务数据,task会展示对应岗位的相应条数据 登录商管账号,进入 阅读详情

    

 

最近一段时间都在思考这样一个问题:如果我们想让一个工作流引擎能够妥善的处理由用户通过流程设计器设计出来的任意复杂(简单)的流程图,那么对这个工作 流引擎的结构设计就必须很灵活,因为如果仅仅依靠一个有限规模的类与方法集合体,我们不太容易很好的处理所有可能遇到的流程图,但是经过我在 JWFDv0.94-v0.96这几个版本的流程引擎设计过程中,我发现了一个潜在的,有可能比较好的解决上述问题的方法,现在我就描述一下这个方法的思 想,请大家来讨论

首先我简单的描述下JWFD的引擎设计的思路,

v0.94 的引擎是这样的结构:
  流程数据结构的SQL操作集合+自定义广度优先遍历控制器

v0.96 的引擎是这样的结构:
  流程数据结构的SQL操作集合(增强)+流程图拓扑结构算法(初级)+自定义图遍历控制器

我解释下为什么v0.94版本要用广度优先的图遍历控制器,因为广度优先对于流程图的遍历来讲可以先把并行的分支遍历完之后,再继续往深度方向上面遍历, 这样有利于对具有并行分支结构的流程图进行遍历,但是在实际的应用中,对于需要同步处理的并行流程图的并行分支的遍历仅仅靠广度优先算法是不够的,经过朋 友们的反馈和我在工作实践中遇到的情况,在v0.96版本中我把遍历控制器部分进行完全的重写。

由于v0.96版本引入了基于antlr的嵌入式的计算公式模块,导致流程引擎中出现了动态的K值问题(请参考博客文章 [原创]JWFD工作流引擎设计----节点匹配搜索算法 (用于初步解决条件异步汇聚问题) 补充 http://comsci.javaeye.com/blog/502102),为解决这个问题,我设计了匹配节点搜索算法,这个算法就是v0.96版 本引擎的流程图拓扑结构算法的来历,但是拓扑结构算法并不仅仅只包括匹配节点搜索这一种算法,我的想法是流程引擎中用于处理图的拓扑结构的算法类是一个算 法集合体,我们可以根据具体的应用和设计来对这个算法集合体进行灵活的增加和修改......

同样具有这样的灵活的特征的是在v0.94版本中出现的流程数据结构的SQL操作集合,由于流程图的数据库结构是变化的,我们随时会因为产品和应 用的需求不同而修改流程的数据结构,那么这个SQL操作集合也会同步的增加,修改。所以比较起v0.94版本,v0.96版本的这个SQL操作集合类就增 加了不少方法,(请参考 JWFD v0.96 工作流开发包 for eclipse org.jwfd.workflowDesigner.UItools.Database.mysql.FlowsSqlControlModule 下载地址 http://www.cnblogs.com/comsci/favorite/260690.html)

这样一来我们看到流程引擎的结构大至就分为三个模块,其中前两个模块(sql操作集合,拓扑算法集合)是模块化的,灵活的,可变动的(通过人工来 添加,修改,删除),但是第三个部分,也是最核心的部分-遍历控制器却是静态的,是非结构化的,我在v0.96的SAN算法中曾经尝试尽可能的把这个遍历 算法模块化,通过划分为若干个小的模块并且对这些模块进行组合来实现遍历算法模块的整体结构,但是这个尝试并不是很成功,因为我当时并没有找到一个对遍历 控制器可以完全模块化的办法,仅仅只是对遍历控制器中部分方法进行了封装,当然这也使遍历控制器的代码结构变得相对的简单和明了些

后来经过一段时间的思考,我发现一个方法,对于用户自定义的流程图的拓扑结构这一灵活的结构数据,我们是否可以采用被我称为"遍历识别流程图-自 动代码生成"的技术来让系统自动生成这个遍历控制器,这个技术的核心思路就是来自于上一段我描述的遍历控制器的整体结构的静态编程性与自定义流程图拓扑结 构的动态灵活性之间的矛盾,这个控制器是我们程序员通过键盘手工编写的,是静态的,非自动化的,而我们需要的是一种动态的,能够自适应用户自定义流程拓扑 的这样一个软控制器,这个软控制器如果能够由系统根据用户定义的流程图的拓扑结构来自动生成的话,那么困扰我们的流程运行控制的关键问题(当时这只是流程 运行控制的一个问题)就能够得到一定程度的解决,这个设想现在还处于非常初级的阶段,很多地方都不明确,也不具有立即可实现性,但是却是我认为解决灵活的 流程图运行控制问题的一个方向。。。。。

AdalFlow:自适应工作流引擎的设计原理与实战应用 工作流引擎是现代数据工程和自动化系统的核心组件,用于编排和管理复杂任务流程。传统静态工作流基于预定义的有向无环图(DAG)执行,其路径固定,难以应对运行时环境的变化。自适应工作流则通过引入上下文感知和动态决策环,实现了执行路径的实时调整。其技术价值在于能够根据数据特征、系统状态等运行时反馈进行智能决策,从而提升资源利用率和流程韧性。在应用场景上,它特别适用于需要动态资源调度、故障自愈的复杂数据处理管道和机器学习运维(MLOps)。本文以AdalFlow为例,深入解析了其基于策略引擎和弹性执行器的自适应架构, 阅读详情

相关推荐

全网最全面工作流引擎Flowable完整教程之基础篇

全网讲解最全面Flowable工作流引擎完整教程之基础篇

颓了呀的博客 9188

工作流引擎核心设计思路!

作者:vivo 互联网服务器团队- Cheng Wangrong一、业务背景营销自动化平台可以支持不同用户生命周期的活动旅程策略配置 ,根据用户触发的不同活动行为,进行差异化的营销触达方案。同时各种类型活动的具体执行过程中也有不同的业务处理流程(比如审批流程和业务流转)。业务流程复杂多样,需求变更频繁,项目开发过程中会有以下痛点:项目交付周期长:一个完整的业务流程需要从头...

架构文摘 5698

流程引擎设计思路

本文是最近在学习了解流程引擎的功能设计原理时,梳理出来的一些思路,只总结了一些大致框架和方向,细节设计待后续再完善。

qq_40664711的博客 2759

如何使用工作流引擎支持流程的动态调整与自适应

1.背景介绍 在现代企业中,流程自适应和动态调整是提高业务流程效率和优化资源分配的关键。工作流引擎作为流程管理和执行的核心技术,能够支持流程的动态调整和自适应。本文将从以下几个方面进行阐述: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数学模型公式详细讲解 具体最佳实践:代码实例和详细解释说明 实际应用场景 工具和资源推荐 总结:未来发展趋势与挑战 附录:常见问题与解答 1....

AI天才研究院 1291

手把手教你用光耦搭建安全隔离电路:从洗衣机控制板到PLC输入模块实战

本文通过洗衣机控制板驱动高压电机和PLC输入模块采集现场信号两个实战场景,手把手教你使用光耦搭建安全隔离电路。文章详细解析了电路架构、关键器件选型、参数计算、仿真验证及PCB布局避坑技巧,并对比了光耦与数字隔离器的适用场景,帮助电子工程师掌握这门保障系统稳定与安全的必备技能。

h6j7k8l9p0的博客 464

DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)

本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。

ik678901的博客 1140

开发一款适合自己的工作流引擎,该如何入手

首先需要定义流程模板,用于描述工作流程的结构和内容。常见的流程模板包括BPMN、流程图等,我们这里以BPMN为例。BPMN是一种业务流程建模和标准化的语言,可以有效地描述流程的结构和行为。每个流程包含多个节点(Activity)和连接(Sequence Flow),节点可分为开始节点、结束节点、任务节点、网关节点等。通过不同的节点和连接组合,可以形成复杂的流程结构。在开发流程引擎时,需要根据流程模板中定义的节点和连接,来执行对应的操作并推进流程。

BASK2312的博客 961

10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码)

本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。

weixin_29053577的博客 254

[原创] 如何在企业应用中使用嵌入式工作流引擎-1

前言        有关工作流的基本概念、标准等方面的文章和有关资源现在很容易获得,使用工作流管理系统(WFMS)或业务流程管理(BPM)对企业在商业上的意义与利益,已经无人不晓了。可是虽然很多人都说工作流技术将会成为IT架构的基础组成部分[1],当我们要在自己开发的企业级应用中使用工作流技术时,该如何设计实现呢?关于这个问题的文章很少。        本文针对想在企业级应用中使用工作流技

joindo的专栏 1878

B-Tree数据存储

SQLITE数据存储1. B-Tree的优势  在SQLite中数据库、表、索引都是通过B-Tree和B+Tree的形式进行存储的。如果采用传统的二叉树查找树、红黑树的查找深度一般为log2(N) \log{_2}(N)(其中N表示的是整个树的关键字的数目),在数据库中如果存储的资源过多,就会导致查找一个数据过程中出现较多的磁盘I/O操作,而过多的磁盘操作就会导致整个查找的效率较低,而基于二叉树的一

Promiscuous_youth的博客 1142

linux那些事之numa balance

numa balance numa balance是页迁移技术最重要也是最开始使用应用的技术,主要是为解决由于调度器进程在两个node迁移造成访问内存性能问题。 numba balance通过页迁移技术,将不在运行节点的内存迁移到所运行的节点上。对应numa balance要注意几点: 防止进程在两个节点之前来回切换造成频繁进行页迁移(ping pang现场)从而影响性能。numa balance本身就是为了提高性能,不能因为造成频繁页迁移而对性能进行一个反向优化。 多个线程分布在不同线程 访.

weixin_42730667的博客 3911

Tpflow:高效的PHP工作流引擎

Tpflow 是一款专为 PHP 开发者设计的工作流引擎,旨在帮助你快速构建复杂的业务流程管理系统。无论你是在处理企业级应用的审批流程,还是在管理大型项目的任务流转,Tpflow 都能为你提供一套高效、灵活的解决方案。这个工具的核心价值在于其流程设计的可视化和自动化。通过图形化界面,用户可以轻松拖拽各类流程节点,快速设计和部署工作流,而不必编写大量繁琐的代码。Tpflow 兼容最新的 PHP 8.1,并且支持多种工作流格式,让你的项目具备更强的可扩展性和易维护性。

brizer的博客 1680

【STM32 CubeMX】I2C中断方式与DMA方式

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)通信协议的实现可以采用中断方式或DMA(Direct Memory Access)方式。中断方式通过触发中断来处理数据传输,而DMA方式则利用直接内存访问技术来实现数据传输,减轻了CPU的负担。在选择I2C通信方式时,开发者需要根据具体的应用需求和性能要求来选择合适的方式。STM32 CubeMX提供了图形化配置工具,使得配置I2C通信方式变得更加便捷。

m0_62599305的博客 7749

[原创]工作流拓扑扫描器设计思想

   要实现一个自适应的动态流程引擎,一个前提是后台的流程引擎必须实时了解前端的流程图的动态变化,好像飞行中的导弹,因为目标随时在变化,所以需要一个雷达来跟踪运动的目标,基于这个思想,我打算设计一个能够在后台实时跟踪前端流程图动态变化的流程系统模块,暂时取名叫流程拓扑扫描器,原理其实很简单,按照一定的规则或者算法模型,对前端的流程图的拓扑结构的变化进行实时跟踪,流程图的拓扑结构的变动可以暂时简单的归结为流程图中的节点的数量变化,连接线的两端节点的改变,连接线的空间坐标的改变等,也就是说,一旦一个流程图在运行

comsci的专栏 1034

Unity-RetargetPro3-动画插件试用

一个名气大于实战的插件。

大话程序员 713

[系统安全] 十七.Windows PE病毒概念、分类及感染方式详解

作者前文介绍了PE文件格式,熟悉各种PE编辑查看工具,针对目标EXE程序新增对话框等;这篇文章将介绍Windows PE病毒, 包括PE病毒原理、分类及感染方式详解,并通过案例进行介绍。这些基础性知识不仅和系统安全相关,同样与我们身边的APP、常用软件及操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。本文参考了《软件安全》视频、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

杨秀璋的专栏 1万+

2023工作流引擎 java

2023年,工作流引擎在Java领域的应用愈发广泛。工作流引擎是一种用于管理和执行业务流程的软件工具,它可以帮助企业优化流程、提高效率和降低成本。在Java中,有许多成熟的工作流引擎框架可供选择,如Activiti、Camunda等。 工作流引擎的优势 工作流引擎能够将业务流程中的各个环节自动化,实现流程的高度可控和透明化...

weixin_29291863的博客 143

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

揭秘jbpm流程引擎内核设计思想及构架

原创 揭秘jbpm流程引擎内核设计思想及构架 收藏 揭秘jbpm流程引擎内核设计思想及构架 作者 胡长城(银狐999) 1 前言... 1 2 阅读本篇的基础准备... 2 2.1 概念的基础... 2 2.2 环境的基础... 2 3 什么是流程引擎内核?... 3 4 引擎内核所关注的四个主要问题... 4 4...

iteye_5797的博客 78

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[原创]JWFD工作流引擎设计--简单矩阵建模与应用(初步讨论)

暂时忽略工作流状态的问题,仅仅表示工作流的拓扑结构   为什么要搞这样的东东,jwfd v0.96版本中的引擎算法已经足以应付常见的工作流模型了,其它工作流系统的状态机模型也是比较不错的解决方案.因为在我设计0.96的引擎的时候,由于嵌入式代码模块和外部  数据(表单等)的加入,

comsci的专栏 3037

[原创]JWFD工作流引擎开发状况

JWFD工作流引擎开发状况 -  目前遇到的问题是在处理回退模式的时候,涉及到汇聚点的回退处理的问题   汇聚点回退遇到有下面两种情况需要分别处理1:从汇聚点本身回退到上一个节点 (在上图中该模式是指从4-1节点回退到3-1节点或者3-2节点)2:从汇聚点下一个节点回退到汇聚点本身(在上图中该模式是指从5节点回退到4-2节点)涉及到汇聚点的回退处理主要问

comsci的专栏 1767
上一篇: [转帖]流程图的跳转问题
下一篇: [原创]JWFD工作流引擎设计--节点匹配搜索算法(再讨论)
comsci
博客等级 码龄22年 412粉丝 397原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值