当前位置: 首页 > article >正文

基于 SSH 的任务调度系统

文末附有完整项目代码


在当今科技飞速发展的时代,任务调度系统的重要性日益凸显。本文将详细介绍一个基于 SSH(Spring+Struts2+Hibernate)的任务调度系统的设计与实现。

一、系统概述

本系统旨在改变传统人工任务调度方式,通过计算机计算最佳人员分配和时间分配,绘制任务调度图,实现任务的科学调度与团队协作。它采用 B/S 体系结构,主要使用 JAVA 语言,后台数据库为 MySQL。

二、系统设计

  1. 研究现状及设计目标:传统任务调度系统存在诸多问题,如人工管理效率低、现有调度算法多以时间轮转为主忽略纵向等。本系统采用 B/S 模式,具有可扩展性强、分离度高的优点,且选用市场广泛应用的关系型数据库 MySQL。系统角色分为组长和组员,各自具备不同功能。
  2. 关键问题及分析
    • 任务调度:需在三个约束条件下使树状任务集组合而成的项目用时最短。通过构建任务树并分类,采用动态关键路径策略、最短用时策略和首次适应调度策略来实现。
    • 数据表间联系:数据复杂,业务逻辑关系也较复杂,通过外键联系保证业务操作稳定,重视表间联系以避免出现 bug 或 error。
    • 系统安全性:基于 B/S 模式,加入注册和登录模块,根据不同用户角色分配功能权限,使用 Spring 拦截器验证登录状态,防止非法访问。
  3. 调度算法设计
    • 按照约束构造任务树。
    • 将可调度任务和准可调度任务加入备选任务集,若为空则项目完成,否则根据动态关键路径策略选路径长度最长的可调度任务,若不唯一则选用时最短的。
    • 应用首次适应调度算法调度所选任务,从任务树和备选任务集中删除该任务,重复此过程直至结束。

三、系统实现

  1. 公共模块:系统采用 struts+hibernate+spring 开发,采用 MVC 模式和分层思想,结构分为表现层、业务层和数据访问层。公共模块包括公共配置文件,如 applicationContext-common.xml,其中配置了数据源、Hibernate 的 SessionFactory、事务管理器等,部分代码如下:

xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <!-- 启用 spring 注解支持 -->
    <context:annotation-config />
    <!-- 启动 Spring 自动扫描功能 -->
    <context:component-scan base-package="com.fcq.schedule.job" />
    <!-- 配数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/generation_design?characterEncoding=utf8&amp;useSSL=true" />
        <property name="user" value="root" />
        <property name="password" value="123456" />
        <property name="maxPoolSize" value="80" />
        <property name="minPoolSize" value="1" />
        <property name="initialPoolSize" value="1" />
        <property name="maxIdleTime" value="20" />
    </bean>
    <!-- 定义 Hibernate 的 SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="show_sql">true</prop>
                <prop key="hibernate.jdbc.batch_size">20</prop>
                <!-- 自动创建数据表 -->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
        <!-- 使用配置文件 -->
        <property name="mappingLocations">
            <list>
                <value>classpath:com/fcq/schedule/job/po/*.hbm.xml</value>
            </list>
        </property>
    </bean>
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 配置事务管理器 (声明式的事务) -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <!-- 配置事务通知属性 -->
    <tx:advice id="txadvice" transaction-manager="transactionManager">
        <!-- 定义事务传播属性 -->
        <tx:attributes>
            <tx:method name="get*" read-only="false" propagation="REQUIRED" />
            <tx:method name="find*" read-only="false" propagation="REQUIRED" />
            <tx:method name="save*" read-only="false" propagation="REQUIRED" />
            <tx:method name="reg*" read-only="false" propagation="REQUIRED" />
            <tx:method name="modify*" read-only="false" propagation="REQUIRED" />
            <tx:method name="remove*" read-only="false" propagation="REQUIRED" />
            <tx:method name="*" propagation="REQUIRED" read-only="true" />
        </tx:attributes>
    </tx:advice>
    <!-- 配置事务切面;那些类那些方法使用事务 -->
    <aop:config>
        <!-- 只对业务逻辑层实施事务 -->
        <aop:pointcut id="allManagerMethod" expression="execution(* com.fcq.schedule.job.service..*.*(..))" />
        <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txadvice" />
    </aop:config>
</beans>

还包括 applicationContext-beans.xml,用于 Spring 管理 Struts2 的 Action。

四、数据库设计

设计了包含用户表(USER)、项目表(PROJECT)、项目任务表(JOB)、参与项目表(JOIN_PROJECTS)、任务关系表(JOB_CONNECTION)、消息表(MESSAGE)的 6 张表,以满足系统需求。

五、总结

本任务调度系统具有良好的人机交互性,能提高工作效率,降低沟通成本,且开发运行成本低,经济效益显著。通过合理的系统设计和实现,为项目组任务调度和团队协作提供了有力支持。希望本文能为大家在相关系统的开发中提供一些参考和帮助。

资源

 完整地址

 源码地址


http://www.kler.cn/a/501500.html

相关文章:

  • HOW - Form 表单确认校验两种模式(以 Modal 场景为例)
  • 贪心算法笔记
  • ubuntu官方软件包网站 字体设置
  • 关于使用FastGPT 摸索的QA
  • Realsense相机驱动安装及其ROS通讯配置——机器人抓取系统系列文章(四)
  • MIUI显示/隐藏5G开关的方法,信号弱时开启手机Wifi通话方法
  • 高可用技术:构筑数字世界的稳固根基
  • 26_Redis RDB持久化
  • Excel如何制作轮班表
  • Centos9 + Docker 安装 MySQL8.4.0 + 定时备份数据库到本地
  • 代码的形状:重构的方向
  • Java中Map常用遍历方式以及性能对比
  • node.js中实现token的生成与验证
  • Qt6快速安装方法
  • 【深度学习基础】用深度学习做数据预测的大体流程
  • 【MySQL学习笔记】MySQL的索引
  • SQL美化器优化
  • 鸿蒙路由通信(路由跳转/参数传递)
  • 搭建prometheus+grafana监控系统抓取Linux主机系统资源数据
  • 《框架程序设计》复习题解析-2
  • docker 自建rustdesk服务器测试
  • 51单片机和STM32集成蓝牙模块实用指南
  • 多个表单使用相同的 ref 和 rules,表单验证规则不生效
  • 前端开发:Web前端和HTML
  • Flutter 3.x 版本升级实战:让老项目焕发新生
  • 深入理解 Spring MVC 中的 @ModelAttribute 注解