首页 文章 精选 留言 我的

精选列表

搜索[workflow],共828篇文章
优秀的个人博客,低调大师

.Net Core 工作流 WorkFlow 流程(会签与或签)

会签与或签 WikeFlow官网:http://www.wikesoft.com WikeFlow2.0帮助文档:http://wikeflowhelp.wikesoft.com/ 当一个节点的处理人有多人时,会签与或签的区别如下: 1、审批(会签)节点:任务节点必须所有人都处理完后,流程才会生成下一节点任务。 2、或签节点:任务节点只需其中一人处理后,流程就会生成下一节点任务。 5.1 会签处理 1、必须所有人都处理完后,流程才会生成下一步任务。 2、必须所有人都同意,流程才会执行“同意”;不管几人同意,只要有一人不同意,则流程执行驳回操作。 3、如果会签的下一步有多种选择时,执行“同意”操作的人必须选择相同的执行动作,选择同样的人,不然会出现流程走乱的情况。 会签时,如果审批通过或驳回选择的是不同的执行动作。会提示: 会签时,如果审批通过或驳回是同一个执行动作,但是选择的是不同的人,会提示: 有些会签操作要求不同的会签人看到不同的业务数据,针对这种情况,可以单独定义该节点的”待办路径“来处理数据权限。 关于会签时不同的人看到不同的业务数据,请查阅《如何设置业务数据权限》 5.2 或签处理 流程节点类型是“或签节点”,则说明该节点是或签节点,在处理该节点任务时,只需要一人处理,则该节点任务就算执行完,然后生成下一节点任务。

优秀的个人博客,低调大师

从 Quartz 到 Workflow:Apache DolphinScheduler 定时调度机制解析

定时任务调度是 Apache DolphinScheduler 实现工作流自动化运行的关键能力之一。在实际生产环境中,绝大多数数据处理、ETL 以及指标计算任务都依赖稳定可靠的定时调度机制。DolphinScheduler 并未自行实现底层时间调度器,而是基于成熟的 Quartz 分布式调度框架,在其之上构建了一套面向工作流的调度触发体系,从而兼顾稳定性、扩展性与工程可控性。 核心调度架构 调度系统采用 Quartz 分布式调度组件,主要负责定时任务的启停操作。从整体设计上看,DolphinScheduler 中的"定时调度"并不直接参与任务执行,而是充当一个时间驱动的触发器:在指定时间点创建工作流实例,并将执行控制权交由 Master 进行统一调度和编排。这种解耦设计,是理解 DolphinScheduler 调度机制的核心前提。 调度系统的整体工作方式 在系统架构层面,Quartz 负责解析 cron 表达式并在时间条件满足时触发调度任务。当触发发生后,Quartz 并不会直接调度 Worker 执行任务,而是调用 DolphinScheduler 中实现的 Quartz Job ------ ProcessScheduleTask。该类继承自 QuartzJobBean,是所有定时调度逻辑的统一入口。 ProcessScheduleTask 的职责并不是"执行工作流",而是完成一系列调度前置校验,并向工作流控制模块发起"调度触发请求"。真正的工作流实例创建、任务拆分与下发,均由 MasterServer 完成。这一设计保证了即使调度触发频繁,系统核心执行逻辑仍然集中在 Master 侧,避免调度层过度膨胀。 定时调度的执行链路 当 cron 表达式匹配当前时间时,Quartz 会触发对应的调度任务,系统内部的执行流程如下所示: 在这一过程中,ProcessScheduleTask.executeInternal() 方法是关键执行点。该方法会依次校验调度是否存在、是否处于 ONLINE 状态,以及所绑定的工作流定义是否已上线。只有当调度与工作流定义同时满足可执行条件时,系统才会继续构建调度触发参数并提交执行请求。 这一层层校验机制确保了调度系统的"安全失败"特性:即使存在脏数据、误操作或配置变更,调度也不会盲目触发执行。 Crontab 表达式定时任务配置 在 DolphinScheduler 中,Crontab 表达式是定时调度的核心配置项,用于描述工作流实例的触发时间规则。需要注意的是,这里的 Crontab 并非 Linux 系统级 crontab,而是 Quartz Cron 表达式,其解析与调度完全由 Quartz 框架负责。 Crontab 表达式的作用仅限于"定义何时触发调度 "。一旦表达式生效,Quartz 会在满足时间条件时回调 ProcessScheduleTask,后续流程便完全进入 DolphinScheduler 内部的工作流调度体系。因此,Cron 表达式本身并不感知工作流执行状态,也不直接控制任务运行逻辑。 在实际使用中,系统对 Crontab 的配置也施加了一定约束。例如,DolphinScheduler 不支持秒级调度,如果将 cron 表达式的秒位设置为 *,将导致每秒触发一次调度,这类配置会被视为非法或不被支持。此外,定时调度必须配置合理的起止时间,如果起止时间完全一致,调度在逻辑上将被视为无效。 但是,如果对于工作流的定时调度需要细化到秒级别,用户也可以在定时任务配置模块的 Crontab 表达式做限制,以满足自己的生产需求。可参考开发案例《Apache DolphinScheduler 限制秒级别的定时调度》。 定时调度的创建与生效过程 从用户视角来看,定时调度通常通过 Web UI 完成。在 DolphinScheduler 中,调度与工作流定义存在强依赖关系:只有处于 ONLINE 状态 的工作流,才允许创建并启用定时调度。 当用户完成调度配置后,新建的调度默认处于"下线"状态。只有在明确执行"定时上线"操作后,调度才会被注册到 Quartz 中并开始生效。这一设计有效避免了配置未完成或误操作导致的调度误触发。 调度生命周期与状态控制 DolphinScheduler 为定时调度引入了清晰的生命周期管理模型。 状态转换 创建定时 :初始状态为"下线" 7 定时上线 :点击"定时上线"按钮使定时生效 8 定时下线 :停止定时调度 9 可以看到,调度从创建开始,经历下线、上线、再次下线等状态变化,每一次状态切换都会同步影响 Quartz 中的调度注册情况。 代码实现细节 在 ProcessScheduleTask.executeInternal() 方法中,系统会: 检查调度是否存在且在线 验证绑定的工作流状态 构建调度触发请求 提交工作流执行请求 Quartz 仅对 ONLINE 状态的调度进行触发,这使得调度启停可以在不影响工作流定义本身的前提下灵活控制。 从实现角度看,调度生命周期的控制点集中在 ProcessScheduleTask 触发前的状态校验逻辑中,这也是调度安全性的关键保障之一。 补数机制与定时调度的关系 补数功能是 DolphinScheduler 调度体系中的重要扩展能力,系统支持历史数据补数,用于处理历史时间范围内的数据重算需求,包括: 串行补数:按时间范围依次执行 并行补数:同时执行多个日期的实例 依赖模式:触发下游依赖节点的补数 无论是串行补数、并行补数,还是基于依赖关系的补数,其本质都与定时调度一致:按照指定的逻辑时间创建工作流实例。 换言之,补数并不是一种"特殊执行模式",而是定时调度模型在历史时间维度上的延伸。这种统一的设计使得补数任务在执行、监控和失败处理方面,与普通定时调度保持高度一致。 Notes:设计取舍与工程含义 从整体来看,DolphinScheduler 的定时调度机制体现了明显的工程取舍。首先,系统选择 Quartz 作为底层调度引擎,而非自研时间轮或调度模块,显著降低了调度稳定性风险。其次,通过将 Quartz 的职责严格限制在"时间触发"层面,DolphinScheduler 避免了调度逻辑与工作流执行逻辑的耦合。 此外,调度执行过程中对状态与时间范围的多重校验,保证了系统在复杂生产环境下的可控性。时区支持的引入,则进一步提升了调度在多地域、多集群部署场景下的可用性。 总体而言,DolphinScheduler 的定时调度并非简单的 cron 包装,而是一套围绕工作流实例生命周期精心设计的触发体系。这也是其能够在大规模企业级场景中长期稳定运行的重要原因。

优秀的个人博客,低调大师

Workflow 驱动多 Agent 协作 从子流程拆解到人机决策闭环的工程实践

在 AI 应用落地的深水区,我们常常面临一个棘手的悖论:大模型赋予了系统无限的创造力,却也让流程控制变得难以捉摸。一个智能体可能因为陷入逻辑死循环而耗尽企业预算,一个自动化流程可能因为外部系统的微小延迟而彻底卡死。在传统的 BPM(业务流程管理)中,规则是刚性的;而在纯粹的 LLM 应用中,行为又是概率性的。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册