《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Activiti5柔性工作流的售后信息平臺(tái)
基于Activiti5柔性工作流的售后信息平臺(tái)
2016年微型機(jī)與應(yīng)用第16期
陳路路,周鳳
貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025
摘要: 隨著當(dāng)前信息技術(shù)突飛猛進(jìn)的發(fā)展,各行各業(yè)對(duì)于辦公效率都有了更高的要求,尤其是在一些財(cái)政審批、貸款辦理等這些流程較多的行業(yè),工作流技術(shù)成了其業(yè)務(wù)辦理不可或缺的一部分。傳統(tǒng)的工作流框架只支持事先設(shè)定的、循環(huán)的業(yè)務(wù)流程,對(duì)于一些動(dòng)態(tài)變化和復(fù)雜的業(yè)務(wù)顯得捉襟見肘。該設(shè)計(jì)采用Activiti5和Struts2+Spring3+Hibernate4 3種輕量級(jí)框的整合,添加柔性表單,并且引入角色的權(quán)限機(jī)制來提高訪問的安全性。該設(shè)計(jì)不僅能方便不同部門的協(xié)同工作,而且能滿足動(dòng)態(tài)流程的變化,提高辦公效率。
Abstract:
Key words :

  陳路路,周鳳
 ?。ㄙF州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025)

       摘要:隨著當(dāng)前信息技術(shù)突飛猛進(jìn)的發(fā)展,各行各業(yè)對(duì)于辦公效率都有了更高的要求,尤其是在一些財(cái)政審批、貸款辦理等這些流程較多的行業(yè),工作流技術(shù)成了其業(yè)務(wù)辦理不可或缺的一部分。傳統(tǒng)的工作流框架只支持事先設(shè)定的、循環(huán)的業(yè)務(wù)流程,對(duì)于一些動(dòng)態(tài)變化和復(fù)雜的業(yè)務(wù)顯得捉襟見肘。該設(shè)計(jì)采用Activiti5Struts2+Spring3+Hibernate4 3種輕量級(jí)框的整合,添加柔性表單,并且引入角色的權(quán)限機(jī)制來提高訪問的安全性。該設(shè)計(jì)不僅能方便不同部門的協(xié)同工作,而且能滿足動(dòng)態(tài)流程的變化,提高辦公效率。
  關(guān)鍵詞:Activiti5;柔性表單;工作流;Struts2+Spring3+Hibernate4  

0引言
  為進(jìn)一步增強(qiáng)和完善該公司的售后服務(wù)質(zhì)量及用戶體驗(yàn),使售后服務(wù)管理流程化、規(guī)劃化,進(jìn)一步提升公司的市場(chǎng)競(jìng)爭(zhēng)力,滿足實(shí)際項(xiàng)目的需要,開發(fā)本系統(tǒng),實(shí)現(xiàn)售后管理業(yè)務(wù)的規(guī)范化、信息化。該設(shè)計(jì)是對(duì)車輛混燃系統(tǒng)的一套售后服務(wù)系統(tǒng)。伴隨公司業(yè)務(wù)的擴(kuò)大,人工的管理和服務(wù)消耗了大量的物力、財(cái)力,而且對(duì)于一些設(shè)備安裝等流程化問題,工作人員稍有疏忽,就會(huì)出錯(cuò),實(shí)時(shí)性很差,不能跟蹤和監(jiān)控,降低客戶的滿意度,因此,在公司業(yè)務(wù)需要下,開發(fā)和設(shè)計(jì)一套流程化的、滿足動(dòng)態(tài)業(yè)務(wù)的、可隨時(shí)監(jiān)控的售后信息平臺(tái)。該平臺(tái)的開發(fā)采用S2SH輕量級(jí)開發(fā)框架[13],敏捷開發(fā),代碼復(fù)用率高,便于移植、擴(kuò)展和后期的維護(hù);采用MVC的設(shè)計(jì)模式[4],降低Model、View和Control之間的耦合度,使其分離開來,極大削弱其相互之間的依賴,減少了工作量和降低開發(fā)難度。在S2SH輕量級(jí)框架的基礎(chǔ)上,整合Activiti5框架,采用其核心ProcessEngine類調(diào)用TaskService、RepositoryService、RuntimeService、 HistoryService 等組件,然后對(duì)流程定義、啟動(dòng)和刪除以及流程任務(wù)和歷史的流程管理等進(jìn)行管理,另外增加柔性表單設(shè)計(jì),動(dòng)態(tài)地響應(yīng)流程的變化,來滿足實(shí)際項(xiàng)目的需求。該系統(tǒng)還增加了角色管理,該系統(tǒng)有管理員、普通職員、技術(shù)主管3個(gè)主要角色,根據(jù)不同的角色,分配不同的權(quán)限,這樣保證了系統(tǒng)的高效性和安全性。
1主要相關(guān)技術(shù)簡(jiǎn)介
  1.1柔性工作流技術(shù)

  柔性,顧名思義就是在外界條件改變或者外力沖擊的情況下,自身有一定的張力和適應(yīng)力,從而保持自己原有特性的一種能力。柔性工作流管理系統(tǒng)就是當(dāng)系統(tǒng)的流程或者系統(tǒng)的某些功能模塊發(fā)生變化時(shí),僅僅對(duì)相應(yīng)的流程定義或者相關(guān)參數(shù)和規(guī)則進(jìn)行調(diào)節(jié)即可,而系統(tǒng)本身的業(yè)務(wù)邏輯代碼不需要大的改動(dòng),這種柔性的實(shí)現(xiàn)原理主要是靠代碼邏輯的低耦合、高內(nèi)聚來實(shí)現(xiàn)的。系統(tǒng)的功能設(shè)計(jì)很大程度上決定系統(tǒng)的柔性限度,在柔性管理系統(tǒng)中最重要的一方面就是要設(shè)計(jì)出統(tǒng)一通用的算法以及相關(guān)的業(yè)務(wù)邏輯,這樣能夠使系統(tǒng)在不同的環(huán)境下實(shí)現(xiàn)真正的柔性適應(yīng)。該設(shè)計(jì)采用柔性化的工作流管理系統(tǒng),可以避免二次開發(fā)帶來的成本開銷,減少不必要的人力和物力。
  1.2S2SH輕量級(jí)框架
  S2SH框架是當(dāng)前開發(fā)者首選的框架之一,其便捷的開發(fā)、極高的松散性、較短的開發(fā)周期等優(yōu)點(diǎn)成為開發(fā)人員首選的一種開發(fā)框架。該系統(tǒng)采用Struts2+Spring3+Hibernate4這3種技術(shù)整合的開發(fā)框架[5]。其中,Struts2是在Struts1和WebWork的基礎(chǔ)上出現(xiàn)的一種輕量級(jí)框架。該系統(tǒng)采用Struts2的原因在于它是表示層框架,通過struts2.xml配置文件可以讓框架結(jié)構(gòu)一目了然,方便開發(fā)人員縮短開發(fā)周期。另外一個(gè)優(yōu)勢(shì)在于,其特有的核心過濾器和攔截器可以對(duì)一些非法的操作進(jìn)行過濾和攔截,通過攔截器后才可以進(jìn)入控制層進(jìn)行下一步的操作,提供面向抽象類編程,還提供對(duì)于接口類的開發(fā)。Spring3是整個(gè)S2SH框架中核心地位,一方面是它可以與Struts2進(jìn)行向上整合,與Hibernate4進(jìn)行向下整合;另一方面它可以解決軟件耦合性差和復(fù)用性弱的問題,將系統(tǒng)進(jìn)行分層設(shè)計(jì)。該框架中,最引人注目的就是控制反轉(zhuǎn)( Inversion of Control, IOC)和面向切片編程(Aspect-Oriented Programming, AOP)這兩個(gè)功能,前者是將對(duì)象的創(chuàng)建交給外部容器,系統(tǒng)中所用到的組件都可以綁定到配置文件中,通過配置文件和核心類庫來完成容器的各種操作;后者面向切面編程,主要是由JDK Proxy以及Ciglib來完成切面工作,AOP模塊被直接嵌入到了框架,只需要在Spring的核心配置文件中配置相應(yīng)文件,然后通過調(diào)用AOP接口即可完成AOP需求的任務(wù)。最后一種整合框架是Hibernate4,它是一種對(duì)象關(guān)系映射框架,早期的編程人員采用的都是JDBC,采用這種方式進(jìn)行開發(fā)代碼顯得臃腫,復(fù)用性太差。而Hibernate4則只需要對(duì)JDBC進(jìn)行一次編寫,就能完成任何地方都能進(jìn)行引用的效果,并且使用Hibernate4框架可以很容易生成數(shù)據(jù)庫表,在SQL語句的書寫上,省去了很多不必要的操作,只需要書寫HQL就可以操作數(shù)據(jù)庫。
2Activiti5與S2SH框架整合的系統(tǒng)結(jié)構(gòu)
  2.1系統(tǒng)的整體架構(gòu)圖

  該設(shè)計(jì)采用的結(jié)構(gòu)是B/S結(jié)構(gòu),選取Eclipse IDE開發(fā)平臺(tái),運(yùn)用Struts2+Spring3+Hibernate4組合的Web框架,采用jQuery等開發(fā)技術(shù),有表現(xiàn)層、業(yè)務(wù)邏輯層、持久層等。在業(yè)務(wù)邏輯層中整合Activiti5引擎[67]。另外采用MVC設(shè)計(jì)模式,使層與層之間的耦合度降低,增強(qiáng)代碼的復(fù)用性,便于開發(fā)人員對(duì)后期功能的擴(kuò)展和維護(hù)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
  

圖像 001.png

  2.2該系統(tǒng)設(shè)計(jì)的原理
  該系統(tǒng)采用的是3層架構(gòu)[8],即表現(xiàn)層、邏輯層、持久層。表現(xiàn)層采用的主要技術(shù)有BootStrap、JSP和Jquery,當(dāng)用戶向Web應(yīng)用器提交一個(gè)請(qǐng)求時(shí),這個(gè)請(qǐng)求可以是觸發(fā)一個(gè)事件或者提交一個(gè)表單,請(qǐng)求參數(shù)會(huì)通過HTTP協(xié)議提交到Web服務(wù)器,Struts2的攔截器經(jīng)過過濾后,通過訪問ActionService類中對(duì)應(yīng)的Action,由其Struts.xml 中的映射進(jìn)而調(diào)用相應(yīng)的JSP等。在業(yè)務(wù)邏輯層,Activiti工作流引擎則由Spring管理,因?yàn)锳ctiviti工作流底層框架是基于Spring和ibatis的,其中Activiti引擎[9]可以解析基于BPMN2.0繪制的流程圖,進(jìn)而對(duì)流程進(jìn)行管理。Activiti中的Activiti Designer是一個(gè)Eclipse插件,允許在IDE環(huán)境內(nèi)用BPMN2.0建立流程模型,這方便了設(shè)計(jì)人員和開發(fā)人員的溝通,使他們不用進(jìn)行面對(duì)面的交流就可以使開發(fā)人員進(jìn)行編程和代碼設(shè)計(jì)。持久層的Hibernate與Spring集成時(shí),在Spring的配置文件中只需要配置Hibernate需要的資源即可,例如一些DataSource的配置等,將Hibernate框架與系統(tǒng)集成起來完成對(duì)數(shù)據(jù)的操作。整個(gè)系統(tǒng)的實(shí)現(xiàn)是由這幾種框架整合集成來的,這樣可以充分利用各個(gè)框架自身的優(yōu)勢(shì),相互補(bǔ)充,避免了單獨(dú)使用的不便。
3該售后業(yè)務(wù)平臺(tái)的實(shí)現(xiàn)
  3.1數(shù)據(jù)庫初始化

  數(shù)據(jù)庫初始化代碼如下。
  /**使用代碼創(chuàng)建工作流需要的23張表*/
  @Test
  public void createTable(){
  ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();//連接數(shù)據(jù)庫的配置
  processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
  processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/itcast0711activiti?useUnicode=true&characterEncoding=utf8");
  processEngineConfiguration.setJdbcUsername("root");
  processEngineConfiguration.setJdbcPassword("111");
  processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
  //工作流的核心對(duì)象,ProcessEnginee對(duì)象
  ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
  System.out.println("processEngine:"+processEngine);
  }
  在Activiti5中,創(chuàng)建核心的流程引擎對(duì)象時(shí)會(huì)自動(dòng)建表。如果程序正常執(zhí)行,MySQL會(huì)自動(dòng)建庫,然后創(chuàng)建23張表。
  3.2工作流程圖設(shè)計(jì)
  該設(shè)計(jì)的流程圖是用Activiti5 Modeler工具來制作的,業(yè)務(wù)流程以圖形化的方式呈現(xiàn)出來,這樣方便開發(fā)人員使用,從而避免業(yè)務(wù)人員和開發(fā)人員由于地理上的局限而帶來的難以溝通的問題。該流程圖有開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn),這是流程圖繪制過程中必不可缺少的,另外還有任務(wù)節(jié)點(diǎn)和排他網(wǎng)關(guān),當(dāng)流程執(zhí)行到排他網(wǎng)關(guān)時(shí),流程引擎會(huì)自動(dòng)檢索網(wǎng)關(guān)出口,從上到下檢索,如果發(fā)現(xiàn)第一條決策結(jié)果為true或者沒有設(shè)置條件的(默認(rèn)為成立),則流出。圖2所示為本系統(tǒng)中某任務(wù)的流程圖。
 

圖像 002.png

4結(jié)論
  該設(shè)計(jì)主要以Activiti5工作流引擎為核心,集成了Struts2、Spring3、Hibernate4這幾種輕量級(jí)框架的最新版本,添加了安全訪問機(jī)制,提高了系統(tǒng)的訪問安全性。另外采用MVC的設(shè)計(jì)模式,使模型、視圖、控制器這三者徹底分離開來,降低了視圖層、業(yè)務(wù)層和數(shù)據(jù)層的耦合性,使它們的松散性增強(qiáng),極大方便了開發(fā)人員的開發(fā)。除此之外還增加了柔性表單,可以讓工作流管理系統(tǒng)有一點(diǎn)的柔性,這樣可以在業(yè)務(wù)流程改變或者功能模塊改變的時(shí)候,不需要對(duì)業(yè)務(wù)代碼進(jìn)行大的改動(dòng),只需要修改流程定義或者流程參數(shù)或規(guī)則即可。該設(shè)計(jì)的可擴(kuò)展性和復(fù)用性提升了工作流管理系統(tǒng)的性能,進(jìn)一步提升了公司信息化水平。
  參考文獻(xiàn)
 ?。?] 李剛.輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)[M].北京: 電子工業(yè)出版社,2011.
  [2] 張耀民.SSH框架在Web項(xiàng)目開發(fā)中的構(gòu)建和應(yīng)用實(shí)踐[J].微型機(jī)與應(yīng)用,2013,32(15):1821.
 ?。?] 范新燦,趙明.基于Struts + Hibernate + Spring的輕量級(jí)架構(gòu)開發(fā)應(yīng)用研究[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2010(1):176 179.
 ?。?] 唐永瑞,張達(dá)敏.基于Ajax與MVC模式的信息系統(tǒng)的研究與設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(2):128131.
 ?。?] 王學(xué)偉.基于S2SH2和Fireflow工作流的辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢科技大學(xué),2011.
 ?。?] 王虎. 基于jBPM的計(jì)量管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2010.
 ?。?]  賈松浩,楊彩,劉軍. 基于S2SH框架的個(gè)性化實(shí)驗(yàn)室管理系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2014,33(8):232235.
 ?。?] 葛揚(yáng)瑛. 基于JavaEE和工作流的項(xiàng)目申報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.
 ?。?] 曹偉. 面向辦公自動(dòng)化的工作流引擎研究和設(shè)計(jì)[D].南京:南京理工大學(xué),2013.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。