问题列表
- Java中如何实现一个工作流引擎?
- Bean的作用域有哪些?
- JVM中的锁机制是如何工作的?
- 三个方法分别被
synchronized
锁住,方法a
调用方法b
,b
能获取到a
的锁吗?会有什么问题? - SQL优化时,
EXPLAIN
中需要关注哪些关键点? - 什么是覆盖索引?
SELECT *
一定不会命中索引吗?SELECT *
和SELECT 全字段
在性能上有区别吗?- 什么是回表?它与索引有什么关系?
- 100万数据分给10个线程处理,如何实时获取每个线程的进度?
详细解答
1. Java中如何实现一个工作流引擎?
核心设计思想
- 流程定义与执行分离:通过XML/JSON定义节点与流转规则,运行时解析生成实例。
- 状态驱动模型:使用状态模式或有限状态机(FSM)管理流程状态。
- 持久化与扩展:保存实例数据到数据库,支持插件化扩展(如自定义节点)。
实现步骤
-
定义流程模型:
java">public class WorkflowDefinition {private String id;private Map<String, Node> nodes; // 节点集合 }
-
流程实例管理:
java">public