機(jī)構(gòu)單位網(wǎng)站建設(shè)方案寧波網(wǎng)站推廣公司價(jià)格
文末附有完整項(xiàng)目代碼
在當(dāng)今科技飛速發(fā)展的時(shí)代,任務(wù)調(diào)度系統(tǒng)的重要性日益凸顯。本文將詳細(xì)介紹一個(gè)基于 SSH(Spring+Struts2+Hibernate)的任務(wù)調(diào)度系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
一、系統(tǒng)概述
本系統(tǒng)旨在改變傳統(tǒng)人工任務(wù)調(diào)度方式,通過(guò)計(jì)算機(jī)計(jì)算最佳人員分配和時(shí)間分配,繪制任務(wù)調(diào)度圖,實(shí)現(xiàn)任務(wù)的科學(xué)調(diào)度與團(tuán)隊(duì)協(xié)作。它采用 B/S 體系結(jié)構(gòu),主要使用 JAVA 語(yǔ)言,后臺(tái)數(shù)據(jù)庫(kù)為 MySQL。
二、系統(tǒng)設(shè)計(jì)
- 研究現(xiàn)狀及設(shè)計(jì)目標(biāo):傳統(tǒng)任務(wù)調(diào)度系統(tǒng)存在諸多問(wèn)題,如人工管理效率低、現(xiàn)有調(diào)度算法多以時(shí)間輪轉(zhuǎn)為主忽略縱向等。本系統(tǒng)采用 B/S 模式,具有可擴(kuò)展性強(qiáng)、分離度高的優(yōu)點(diǎn),且選用市場(chǎng)廣泛應(yīng)用的關(guān)系型數(shù)據(jù)庫(kù) MySQL。系統(tǒng)角色分為組長(zhǎng)和組員,各自具備不同功能。
- 關(guān)鍵問(wèn)題及分析:
- 任務(wù)調(diào)度:需在三個(gè)約束條件下使樹狀任務(wù)集組合而成的項(xiàng)目用時(shí)最短。通過(guò)構(gòu)建任務(wù)樹并分類,采用動(dòng)態(tài)關(guān)鍵路徑策略、最短用時(shí)策略和首次適應(yīng)調(diào)度策略來(lái)實(shí)現(xiàn)。
- 數(shù)據(jù)表間聯(lián)系:數(shù)據(jù)復(fù)雜,業(yè)務(wù)邏輯關(guān)系也較復(fù)雜,通過(guò)外鍵聯(lián)系保證業(yè)務(wù)操作穩(wěn)定,重視表間聯(lián)系以避免出現(xiàn) bug 或 error。
- 系統(tǒng)安全性:基于 B/S 模式,加入注冊(cè)和登錄模塊,根據(jù)不同用戶角色分配功能權(quán)限,使用 Spring 攔截器驗(yàn)證登錄狀態(tài),防止非法訪問(wèn)。
- 調(diào)度算法設(shè)計(jì):
- 按照約束構(gòu)造任務(wù)樹。
- 將可調(diào)度任務(wù)和準(zhǔn)可調(diào)度任務(wù)加入備選任務(wù)集,若為空則項(xiàng)目完成,否則根據(jù)動(dòng)態(tài)關(guān)鍵路徑策略選路徑長(zhǎng)度最長(zhǎng)的可調(diào)度任務(wù),若不唯一則選用時(shí)最短的。
- 應(yīng)用首次適應(yīng)調(diào)度算法調(diào)度所選任務(wù),從任務(wù)樹和備選任務(wù)集中刪除該任務(wù),重復(fù)此過(guò)程直至結(jié)束。
三、系統(tǒng)實(shí)現(xiàn)
- 公共模塊:系統(tǒng)采用 struts+hibernate+spring 開發(fā),采用 MVC 模式和分層思想,結(jié)構(gòu)分為表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)訪問(wèn)層。公共模塊包括公共配置文件,如 applicationContext-common.xml,其中配置了數(shù)據(jù)源、Hibernate 的 SessionFactory、事務(wù)管理器等,部分代碼如下:
xml
<?xml version="1.0" encoding="UTF-8"?>
<beans><!-- 啟用 spring 注解支持 --><context:annotation-config /><!-- 啟動(dòng) Spring 自動(dòng)掃描功能 --><context:component-scan base-package="com.fcq.schedule.job" /><!-- 配數(shù)據(jù)源 --><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&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><!-- 自動(dòng)創(chuàng)建數(shù)據(jù)表 --><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><!-- 配置事務(wù)管理器 (聲明式的事務(wù)) --><bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 配置事務(wù)通知屬性 --><tx:advice id="txadvice" transaction-manager="transactionManager"><!-- 定義事務(wù)傳播屬性 --><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><!-- 配置事務(wù)切面;那些類那些方法使用事務(wù) --><aop:config><!-- 只對(duì)業(yè)務(wù)邏輯層實(shí)施事務(wù) --><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。
四、數(shù)據(jù)庫(kù)設(shè)計(jì)
設(shè)計(jì)了包含用戶表(USER)、項(xiàng)目表(PROJECT)、項(xiàng)目任務(wù)表(JOB)、參與項(xiàng)目表(JOIN_PROJECTS)、任務(wù)關(guān)系表(JOB_CONNECTION)、消息表(MESSAGE)的 6 張表,以滿足系統(tǒng)需求。
五、總結(jié)
本任務(wù)調(diào)度系統(tǒng)具有良好的人機(jī)交互性,能提高工作效率,降低溝通成本,且開發(fā)運(yùn)行成本低,經(jīng)濟(jì)效益顯著。通過(guò)合理的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn),為項(xiàng)目組任務(wù)調(diào)度和團(tuán)隊(duì)協(xié)作提供了有力支持。希望本文能為大家在相關(guān)系統(tǒng)的開發(fā)中提供一些參考和幫助。
資源
?完整地址
?源碼地址