工作流系统之三十二 设计模式在工作流系统开发中的运用

python基础学习笔记——完结 文章目录1. python概述1.1 概述1.2 优缺点1.3 应用场景2. python解释器和集成环境的安装2.1. 编程语言分类2.2 基本环境搭建2.3 集成开发环境pycharm基本配置3. 基本语法3.1 python标准开发规范3.2 标准的输入输出3.3 变量与常量4. 数据类型4.1. 数值4.2 字符串4.3 列表4.4 元祖4.5 字典4.6 元组4.7 自定义类型4.8 查看数据类型type()函数5. 数据类型转换5.1类型转换表如下5.2 int函数5.3 float函数 阅读详情

GoF四人组一共介绍了23种面向对象的设置模式,为每一种特定的实现取了一个名字,根据模式的应用目的不同,将他们分为3类,创建型、结构性和行为型。
面向对象设计三原则:
优先使用组合
针对接口编程
为变化而设计

设计模式不是万能的,熟悉了这些模式,灵活运用它,并且不局限于设计模式,构架出适合自己的设计才是最重要的。

在工作流系统的开发中,后台的类是纯面向对象的方式实现的,因此少不了设计模式的运用:


单例模式:
读取数据库配置文件 fcconfig.xml
读取工作流相关的配置文件 fcworkflow.xml
读用户系统的配置文件 fcuser.xml

这种读取配置文件,返回多个属性值的,用单例模式,确保系统中只有一个实例在运行。

获取表的最大id号,用的是静态方法,因为只需要获取一个值。
静态方法和单例模式有区别:静态方法在系统运行后,就已经运行了,是一个方法,只有一个返回值。
单例模式是在需要获取这个流程实例的时候,才初始化这个类,返回的是一个类的实例。

 

工厂模式:
配置多数据库的支持;
配置流程的多种存储方式;
配置用户系统的多种实现方式
....
很多实现都能看到工厂模式的影子,大部分的实现都是采用 工厂模式+可配置的参数 来实现的。

 

外观模式,代理模式:
外观模式是在系统的封装好了功能前面再加一道入口门。在eworkflow中用户系统的对外提供统一的入口,有点类似外观模式。

 

代理模式:
资源的延迟访问。
为对象提供一个代理来控制对该对象的访问。

 

适配器模式:
在流程的表达式分析中,有用到适配器模式,系统提供了一套分析表达式的方法。也可以切换成其它的(用户自定义的)表达式分析器类。

 

装饰器模式:
比较常见的是在web请求后,加上拦截器或者是过滤器。

 

复合模式:
有多层次嵌套的上下级关系的节点,在实现的时候,采用了复合模式来达到一个递归的调用。就是在父层次的抽象类中,定义了节点有共性的属性。在子层次的类中,用一个集合来记录父层次类的实例个数,再通过遍历这个集合来达到递归出所有嵌套子节点的个数。

 

命令模式:
web请求的时候,所有的页面请求方式用命令模式来封装,达到统一的调用。

 

策略模式:
所有的节点的前置后置函数,都实现一个接口,接口提供一个方法,这个方法流程引擎中会调用。前置后置函数可以是一些业务函数。
所有的条件判断函数,也都是实现了一个统一的接口,接口提供一个判断方法,这个方法在流程引擎中会调用。 只要实现这个接口,用户可以自己写业务规则。

 

模版方法:这种在很多父层次的抽象类中,经常有实现。

 

观察者模式:在将自定义表单(eform)和eworkflow工作流的集成中,有类似使用观察者模式。在表单业务数据的提交后,产生事件,通知到工作流系统中,工作流系统接到通知后,将执行流程的动作提交,达到流程递进。

....

可能上面的归纳不是很准确,但是对接口编程,为变化而设计 这种思想贯穿了整个流程开发。还是那句话,设计模式不是万能的,能提炼出共性,符合使用设计模式的,使得复杂的处理更加简单了,就可以使用。

Agent应用实践之三十二 - 设计模式:Handoffs(交接) 本章通过讲解什么是Handoffs(交接)设计模式,然后通过AgentScope给大家演示该设计模式的实现。最后还分析了底层代码原理。这种设计模式在多Agent下非常有用,其实这个设计模式与Router路由设计模式有异曲同工之处。 阅读详情

相关推荐

Java设计模式在工作流管理系统中的应用研究

1979 年,美国著名建筑工程设计大师 ChristopherAlexander 在他的一本关于城市规划和建筑设计的著作 建筑的永恒之 道 中提出:每一个模式描述了一个在我们周围不断重复发生的 问题,以及该问题解决方案的核心,这样,就能多次地使用该方案 而不必做重复劳动 1987 年,WardCunningham 和 KentBeck 受 Christopher 的模式理论的启发, 决定采用模式思想发展出一个 有五个模式的语言来指导 Smalltalk 的新手, 他们的研究论文 UsingPatternLanguagesforObject-Orientedprograms 拉开了 软件工程领域设计模式研究的序幕 1995 年,EGamma R. Helm R.Johnson 和 J.Vlissides 在研究之后出版了 DesignPat terns-ElementsofReusableObject-OrientedSoftware 一书,标志 着软件工程领域的模式设计研究进入了空前的繁荣期, 设计模 式不断地被应用到软件工程的各个方面

21种工作流模式

1. 顺序(Sequence) 工作流中的各个活动在同一个进程中按顺序依次执行。 例子:在“发送货物”之后“发送单据”。 2. 平行拆分(Parallel Split) 工作流中从一个线程中的一个点拆分为在多个线程中平行执行的多个活动。 例子:活动“付款”激活了“发送货物”以及“通知顾客”的执行。 3. 同步(Synchronization) 工作流中的多个活动在一个

sz_bdqn的专栏 2122

手把手教你用VL822-QFN88设计一个支持PD快充的Type-C四口HUB(附原理图要点)

本文详细介绍了基于VL822-QFN88芯片设计支持PD快充的Type-C四口HUB的完整流程,包括芯片选型、系统架构设计、原理图要点、PCB布局及固件配置。特别适合硬件工程师和电子设计爱好者,帮助实现高速数据传输与快速充电的多端口扩展方案。

weixin_30832405的博客 516

Workflow设计模式

工作流系统的设计模式 1、复制模式(Copier Pattern) 通常是将单个数据处理模块中的数据,完整地复制到两个或更多的数据处理模块中,然后再由不同的数据处理模块进行处理。需要对同一个数据集采取多种不同的数据处理转换,我们就可以优先考虑采用复制模式。 2、过滤模式(Filter Pattern) 3、分离模式(Splitter Pattern) 想把数据分类为不同的类别来进行处理时,分离模...

JackLi31742的博客 1597

CTF实战:从ECDSA签名漏洞到flag获取

本文详细解析了ECDSA签名算法在CTF比赛中的实战应用,重点探讨了随机数重用和参数泄露等常见漏洞。通过PWNHUB六月赛的例题,展示了如何从签名数据中恢复私钥并获取flag,同时提供了防御措施和实战技巧,帮助参赛者提升解题能力。

weixin_42706667的博客 277

kettle信息发送钉钉

由于其他的作业比较多,想要在job中加入一个转化发送消息到钉钉,其他的配置说明直接获取系统的信息。这样也避免直接修改其他的转换和大量的工作量。 步骤: 1、新建一个转换 拉取获取系统信息、获取变量、JavaScript代码、获取access_token组件。 2、获取系统信息设置 拿到需要的信息,比如作业的读写更新删除行数,job的日志内容 这个日志内容同在作业执行页面下输出的日志,所以可以在执行作业时选择是详细日志、基本日志还是错误日志。 3、获取变量 获取变量主要是想要去拿到job的名称,文件名。按

Deng_7788的博客 1448

设计模式(一)工厂模式

技术组成ActivitijBPM5数据库持久层ORMMyBatis3Hibernate3持久化标准无JPA规范事务管理MyBatis机制/Spring事务控制Bitronix,基于JTA事务管理数据库连接方式Jdbc/DataSourceJdbc/DataSource支持数据库Oracle、SQL Server、MySQL等多数数据库Oracle、SQL Server、MySQL等多数数据库设计模式Command模式、观察者模式等内部服务通讯Service间通过API调用O基于Apache Mina异步通讯

lomtom's Blog 514

保姆级避坑指南:用Livox官方工具搞定Mid-360多雷达自动标定(附源码Bug修复)

本文详细解析了使用Livox官方工具进行Mid-360多雷达自动标定的全流程,包括环境搭建、工具链配置、关键Bug修复及数据采集最佳实践。重点解决了PointCloudMapper.cpp边界检查缺失和calibration.cpp点云显示问题,提供了实用的代码修复方案和标定质量评估指标,帮助开发者高效完成激光雷达标定任务。

weixin_29053695的博客 281

浅谈简单工作流设计——责任链模式配合策略与命令模式的实现

本文以项目中的一个工作流模块,演示责任链模式、策略模式、命令模式的组合实现! 流程简介 最近在做的一个项目,涉及到的是一个流程性质的需求。关于工程机械行业的服务流程:服务任务流程和备件发运流程。 项目之初,需求不是很清晰,算是演化模型吧。先出一个简单版本,然后根据用户的使用情况,再进一步探测新需求。所以也就是说这两个流程中的每一步暂时都不是固定的,而应该是可配置、可增减的。 目前暂定的...

tansitongba 890

CAPL编程入门:从零开始掌握汽车通信脚本语言

本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。

s1t2u3的博客 978

ptrade量化策略之ST股弱转强,回测年化115%

本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强

qq_29301281的博客 1785

OpenClaw 多智能体系统实践

OpenClaw 不应该只是一个简单的 AI 命令工具,而应该逐步演化成一个具备以下能力的本地智能体系统: - 有明确 Agent 分工; - 有项目级长期记忆; - 有 Agent 级独立记忆; - 有上下文裁剪机制; - 有成本控制策略; - 有 Gateway 服务; - 有本地工具调用能力; - 能和智能终端、MCP、桌面文件系统联动; - 能够长期服务于一个持续迭代的项目。

Maddie_Mo的博客 599

Android性能分析——hprof文件分析(一)

hprof  文件是 Java 堆转储文件(Heap Dump File)的标准格式,用于保存 Java 虚拟机(JVM)在某个时间点的内存快照。这种文件对于分析内存泄漏、内存使用情况和对象分配模式非常有用。

小旭的专栏 1879

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 269

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VKDoc 中文系列教程 2025.10 更新

龙哥盟 1262

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

1.2 Python随手简记之基础篇(二)

python随手简记

SSS465的博客 854

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

GPT-4o真实演进:系统级优化如何重塑AI落地效果

大语言模型已进入‘后版本号时代’,单纯关注参数量或命名迭代(如所谓GPT-5.5)正掩盖真正影响业务效果的技术本质。其核心演进逻辑正从模型架构单点突破,转向推理架构重构、上下文压缩算法、流式解码优化、函数调用可靠性增强及RAG语义协同等系统级协同。这些隐性优化不改变模型权重,却显著提升首字延迟(TTFT)、上下文有效利用率、多模态对齐精度与工具链稳定性,直接决定智能客服响应速度、法律合同分析准确率、教育APP交互自然度等关键场景表现。理解并落地这些工程细节,比追逐虚名更关乎AI项目成败。

anqiu4023的博客 402

面经相关题目

目录一、**Java面向对象有哪些特征,如何应用**二、HashMap原理是什么,在jdk1.7和1.8中有什么区别三、ArrayList和LinkedList有什么区别四、高并发中的集合有哪些问题五、jdk1.8的新特性有哪些一、接口的默认方法二、Lambda 表达式三、函数式接口四、方法与构造函数引用五、Lambda 作用域六、访问局部变量七、访问对象字段与静态变量八、访问接口的默认方法九、Date API十、Annotation 注解六、Java中重写和重载有哪些区别七、接口和抽象类有哪些区别一、抽象

zi2242975806的博客 2246

基于 HarmonyOS ArkTS API 24|MaxLines 限制单行标签文字行数,防止标签文字换行挤乱流式标签布局

鸿蒙HarmonyOS从架构设计之初就确立了声明式UI的开发范式。与传统的命令式UI开发不同,声明式UI要求开发者描述"界面应该是什么样子",而不是"如何一步步构建界面"。这种范式带来了诸多优势:代码更加简洁、可读性更强、状态与视图的同步由框架自动完成,开发者无需手动调用、等方法来更新界面。在ArkTS中,UI的构建是通过链式调用来完成的。每一个UI组件(如、、、等)都可以通过点号语法链式地设置属性。这种设计借鉴了现代UI框架的优秀实践,同时针对鸿蒙的分布式渲染引擎进行了底层优化,使得UI的构建过程既直观又

2401_89578244的博客 202

HarmonyOS 6糖画技艺FlexAlign.Center 表示在 Flex 容器的主轴方向上居中对齐,配合 Column 容器默认的垂直主轴方向,使得生肖字符精确地位于圆形的中心位置

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin421352的博客 150

工作流几种常用的模式

1、  没有任何分支和条件的(如下图) 该流程会按照A—B—C的顺序依次往下走。 2.带有分支的(如下图) 这种情况又可以分为如下几种情况:   (1):节点A的后驱并行,D的前驱异或聚合。 当节点A提交后,流程同时到达B,C,只要B或者C有一个人提交流程就流转到D(如下图)。 (2):节点A的后驱并行,D的前驱同步聚合。 当节点A提交后,流程同时到达B,c

FighterLiu的专栏 3536

Workflow设计模式指的什么?

写在前面 本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定大数据理论体系 解答 我们将多个不同的处理模块连接在一起,最后得出一个自己需要结果的有向无环图(Directed Acyclic Graph/DAG),称为一个工作流系统Workflow System。 1. 复制模式 2. 过滤模式 3. 分离模式 4. 合并模式 补充 复制模式(Copier Pattern) 复制模式

Shockang的博客 1万+
上一篇: 工作流系统之三十一 回退流的实现
下一篇: 工作流系统之三十三 撤回的实现
LikeLaura
博客等级 码龄19年 50粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值