Java & MySQL 实现动态流程模板系统:节点绑定、并行/串行会签、回退、关联表单、审批进度统计
以下是一个简单的流程模板设计,支持节点动态绑定用户、节点并行串行会签、节点回退,关联业务表单,可以动态统计审批进度、生成审批流日志。\n\n流程模板表(process_template):\n\nCREATE TABLE process_template (\n id INT PRIMARY KEY AUTO_INCREMENT,\n name VARCHAR(50) NOT NULL,\n description VARCHAR(100),\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n\n流程节点表(process_node):\n\nCREATE TABLE process_node (\n id INT PRIMARY KEY AUTO_INCREMENT,\n template_id INT NOT NULL,\n name VARCHAR(50) NOT NULL,\n type ENUM('APPROVAL', 'SIGN', 'START', 'END') NOT NULL,\n parallel BOOLEAN DEFAULT FALSE,\n serial BOOLEAN DEFAULT FALSE,\n fallback BOOLEAN DEFAULT FALSE,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (template_id) REFERENCES process_template(id)\n);\n\n\n节点关联用户表(node_user):\n\nCREATE TABLE node_user (\n id INT PRIMARY KEY AUTO_INCREMENT,\n node_id INT NOT NULL,\n user_id INT NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (node_id) REFERENCES process_node(id),\n FOREIGN KEY (user_id) REFERENCES users(id)\n);\n\n\n审批流表(approval_flow):\n\nCREATE TABLE approval_flow (\n id INT PRIMARY KEY AUTO_INCREMENT,\n template_id INT NOT NULL,\n business_id INT NOT NULL,\n current_node_id INT NOT NULL,\n status ENUM('PENDING', 'APPROVED', 'REJECTED') NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (template_id) REFERENCES process_template(id),\n FOREIGN KEY (business_id) REFERENCES business_forms(id),\n FOREIGN KEY (current_node_id) REFERENCES process_node(id)\n);\n\n\n审批流日志表(approval_flow_log):\n\nCREATE TABLE approval_flow_log (\n id INT PRIMARY KEY AUTO_INCREMENT,\n flow_id INT NOT NULL,\n node_id INT NOT NULL,\n user_id INT NOT NULL,\n action ENUM('APPROVE', 'REJECT', 'FALLBACK') NOT NULL,\n comment TEXT,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (flow_id) REFERENCES approval_flow(id),\n FOREIGN KEY (node_id) REFERENCES process_node(id),\n FOREIGN KEY (user_id) REFERENCES users(id)\n);\n\n\n以上是数据库表的设计,接下来是Java伪代码实现。\n\n流程模板对象:\njava\npublic class ProcessTemplate {\n private int id;\n private String name;\n private String description;\n private List<ProcessNode> nodes;\n // getters and setters\n}\n\npublic class ProcessNode {\n private int id;\n private int templateId;\n private String name;\n private NodeType type;\n private boolean parallel;\n private boolean serial;\n private boolean fallback;\n private List<User> users;\n // getters and setters\n}\n\npublic enum NodeType {\n APPROVAL,\n SIGN,\n START,\n END\n}\n\npublic class User {\n private int id;\n private String name;\n // getters and setters\n}\n\n\n审批流对象:\njava\npublic class ApprovalFlow {\n private int id;\n private int templateId;\n private int businessId;\n private int currentNodeId;\n private ApprovalStatus status;\n private List<ApprovalFlowLog> logs;\n // getters and setters\n}\n\npublic enum ApprovalStatus {\n PENDING,\n APPROVED,\n REJECTED\n}\n\npublic class ApprovalFlowLog {\n private int id;\n private int flowId;\n private int nodeId;\n private int userId;\n private ApprovalAction action;\n private String comment;\n // getters and setters\n}\n\npublic enum ApprovalAction {\n APPROVE,\n REJECT,\n FALLBACK\n}\n\n\n以上是一个简单的流程模板设计,支持节点动态绑定用户、节点并行串行会签、节点回退,关联业务表单,可以动态统计审批进度、生成审批流日志。具体的业务逻辑和实现细节需要根据实际需求进行进一步开发。
原文地址: https://www.cveoy.top/t/topic/pFxN 著作权归作者所有。请勿转载和采集!