免费毛片网站/一级成人在线/91免费版黄色软件/亚洲丶国产丶欧美一区二区三区 - 网站一区

當前位置:首頁 > IT信息化 > 正文

Jboss Seam和JBPM在軟件項目管理系統(tǒng)中的應用研究

2018-12-13 來源:《電腦知識與技術(shù)》作者:東北師范大學 綦偉瑋 潘偉
      摘要:通過研究 J2EE 新應用框架──Jboss Seam,發(fā)現(xiàn) Jboss Seam 和 JBPM 工作流技術(shù)深度整合,初步實現(xiàn)了二者在實際軟件項目 中的應用。 首先介紹了什么是 JBPM,概述了什么是 Jboss Seam。 通過比較研究傳統(tǒng)軟件項目管理系統(tǒng)的不足,淺談并分析了 Jboss Seam 和 JBPM 在軟件項目管理系統(tǒng)中的應用優(yōu)勢。 目的在于將 JBPM 的優(yōu)勢應用到軟件開發(fā)的辦公自動化管理當中,結(jié)合項目管 理的特點,研究發(fā)現(xiàn)利用 JBPM 工作流引擎開發(fā)出的項目管理系統(tǒng),利于團隊合作和分工;在系統(tǒng)的開發(fā)過程中利用 JBPM 技術(shù),能 夠降低程序開發(fā)的復雜度、簡化代碼的編寫,提高開發(fā)效率。 
      關(guān)鍵詞:JBPM;Jboss seam;工作流;工作流管理;軟件項目管理
      軟件工程項目開發(fā)是當今社會各領(lǐng)域不可缺少的重要活動,已經(jīng)成為各領(lǐng)域信息化的基礎(chǔ)。 在計算機科學發(fā)展的幾十年的歷 史中,軟件學科獲得了空前的發(fā)展,并逐漸成為該領(lǐng)域的核心技術(shù)。 在經(jīng)歷了若干大型軟件項目的成功和失敗后,人們才逐漸意識 到軟件項目管理的獨特問題:失敗主要是由于使用的管理技術(shù)不當。 雖然目前好的管理不一定能使軟件工程成功,但不好的管理一 定會導致軟件工程的失敗—— —軟件使用的日期會大大拖后,成本也可能比預計的高出好幾倍,而且最終軟件很難維護。 為此,一個 好的軟件項目管理系統(tǒng)的誕生,也是勢在必行!
      近年來,工作流管理和業(yè)務流管理正在迅速成為企業(yè)獲得軟件敏捷性和適應性的重要方法。 Jboss JBPM 是一個面向流程的工 作流/BPM 框架和工具集。 它使業(yè)務分析人員能夠與軟件組件進行交互,有助于活的有效的業(yè)務解決方案。 把 Jboss JBPM 技術(shù)應用 到項目管理軟件中是相當可行的舉措。 為了提高項目開發(fā)效率我們將應用J2EE5.0 最新的輕量級框架Jboss Seam。 Seam 是一種企 業(yè)級 Java 的應用程序框架,它將 JSF 和 EJB3 的組件模型合二為一,消除了膠合代碼,使得開發(fā)者專注于業(yè)務問題。 最值得一提的 是,Seam 整合了一系列主要的其他開放源代碼框架, 例如 JBPM、Jboss Rules (又名 Drools)、Jboss Portal、JBoss Micro container 等等。 Seam 不僅能將它們“有機結(jié)合”起來,而且可以像整合JSF 和 EJB3 一樣強化原有的框架。
      1 JBPM 的新應用
      1.1 JBPM 介紹
      JBPM( Java Business Process Management)是一種基于 J2EE 的輕量級的、靈活可擴展的工作流管理系統(tǒng)。 JBPM 為設計及開發(fā)工 作流和業(yè)務流程管理系統(tǒng)提供了一個先進的平臺[1]。 JBPM 實現(xiàn)了流程邏輯與業(yè)務邏輯的分離,能夠可視化的進行業(yè)務流程的分析、 定義和業(yè)務單元的組裝,從而使應用開發(fā)人員更關(guān)注于業(yè)務邏輯的實現(xiàn),降低了復雜流程應用的開發(fā)難度。
      JBPM 定義了使用 JBoss 流程定義語言編寫的文件里面的流程定義。 JPDL 是一種面向圖形編程(GOP)的語言,它基于節(jié)點、轉(zhuǎn) 換和動作組成的模型。 在這種模型里面,節(jié)點是在流程定義過程中彼此相遇時執(zhí)行的命令。 轉(zhuǎn)換負責指導流程定義的執(zhí)行過程,而 動作在節(jié)點或者轉(zhuǎn)換事件發(fā)生時執(zhí)行特定邏輯。 
      1.2 Jboss Seam 概述
      Jboss Seam 是一個 Java EE5 框架。 它通過把 JSF 與 EJB3.0 組件合并在一起,從而為開發(fā)基于Web 的企業(yè)應用程序提供一個最 新的模式。 Seam 可以讓你把 EJB 組件直接綁定到 JSF 頁面 [2]。 Seam 能夠統(tǒng)一和集成現(xiàn)有的開源技術(shù)集成如 Facelets、Hibernate、 JBPM、Drools、Groovy、Java Port lets、BPM、AJAX、iText 和 Lucene。
圖 1 為基于 JBoss Seam 的 Web 應用程序框架。
      1.3 JBPM 和 Jboss Seam 的整合
      Jboss Seam 與 JBPM 工作流實現(xiàn)了無縫整合,在基于 Jboss Seam 來開發(fā)具有 工作流的功能時, 只需簡單的將 hibernate.cfg.xml 和 jbpm.cfg.xml 的文件配置一 下,在 WAR 的 components.xml 聲明使用流程定義的JPDL 流程定義文件就實現(xiàn) 了系統(tǒng)的整合。 工作流的核心工作分為二個部分,一為流程的定義,二為流程實 例與業(yè)務數(shù)據(jù)實例綁定。 之后以不同的角色實現(xiàn)流程的流轉(zhuǎn)即可[3]。

圖 2 JBPM 和不同角色接口
      Jboss Seam 通過 JBPM 對業(yè)務流程和規(guī)則的整合提供了極好的支持。 在 Jboss Seam 應用中,可以指定 UI 動作(例如按鈕點擊)來觸發(fā)業(yè)務流程。 只需要 通過 @CreateProcess 注釋來標記 UI 事件處理方法。 業(yè)務流程是不同的用戶以相 應順序來完成的一系列任務。 可以用 @BeginTask 和 @EndTask 標注任務的開始 和結(jié)束。 當前任務結(jié)束時,JBPM 引擎將自動把進程前移,進行下一個任務。 Seam 讓每個用戶可以查看他/她的當前任務列表以及完成任務的下一個動作。 這些任 務列表是基于當前登錄的用戶角色生成的, 并且通過用戶認證和授權(quán)的方式緊 密地整合到 Seam 安全框架中。 
      2 軟件項目管理系統(tǒng)
      軟件項目管理系統(tǒng)實際上就是利用高新的 IT 信息技術(shù)對軟件工程項目的 開發(fā)過程進行管理。它所涉及的范圍覆蓋了整個軟件工程過程。軟件項目管理是 為了使軟件項目能夠按照預定的成本、進度、質(zhì)量順利完成,而對人員(People)、產(chǎn)品(Product)、過程(Process)和項目(Project)進行分 析和管理的活動。 軟件項目管理的根本目的是為了讓軟件項目尤其是大型項目的整個軟件生命周期(從分析、設計、編碼到測試、維 護全過程)都能在管理者的控制之下,以預定成本按期,按質(zhì)的完成軟件交付用戶使用。 軟件項目管理系統(tǒng)恰好就是實現(xiàn)了軟件項 目管理的自動化或半自動化。
      3 傳統(tǒng)的軟件項目管理系統(tǒng)的不足 
      傳統(tǒng)的軟件項目管理系統(tǒng)由于本身的局限性,越來越不能滿足軟件項目管理發(fā)展,存在如下缺陷: 首先,傳統(tǒng)的項目管理系統(tǒng)基本上通過紙質(zhì)文檔來進行管理,不便于查找和了解項目的進展情況,也不便于對項目進行統(tǒng)計分 析、項目總結(jié)、項目成果利用等。 在項目規(guī)劃、項目進度跟蹤、資源分配和需求變更等方面都不能滿足實際項目開發(fā)的需要,以至于 項目進度難以控制,項目開發(fā)過程難以規(guī)范化。 其次、傳統(tǒng)的項目管理系統(tǒng)不能很好地解決資源沖突問題,特別是產(chǎn)品設計和軟件 開發(fā)等項目。 在項目管理過程中往往會有大量的動態(tài)信息產(chǎn)生,是一個動態(tài)離散時間系統(tǒng),不便于管理控制。 再次,傳統(tǒng)的項目管理 系統(tǒng)只能處理特定的開發(fā)流程。 當開發(fā)流程發(fā)生變化時,就必須修改系統(tǒng)的應用程序或重新開發(fā)新的應用程序,否則無法滿足項目 開發(fā)流程多樣化和需求的不確定性。
      4 Jboss Seam 和 JBPM 在軟件項目管理系統(tǒng)中的應用優(yōu)勢
      JBPM 作 為 J2EE 的一部分充分繼承了其跨平臺的,可移植的特點,Java 語言本身的擴展性有效地解決了重復開發(fā)和程序重構(gòu) 的問題,“編寫一次、隨處運行”大大減少了浪費。通過我們對 Jboss Seam 和 JBPM 技術(shù)的研究,再次發(fā)現(xiàn)利用二者能夠降低程序開發(fā) 的復雜度、簡化代碼的編寫,提高開發(fā)效率。 Jboss Seam 對 JBPM 的集成有一定的方便性,主要表現(xiàn)在三個方面:第一、 提供內(nèi)置對 象顯示任務列表給用戶;第二、 Jboss Seam 除新增 conversation 上下文外,還新增了 business_ process 上下文,這就是為工作流管理 提供的,應用程序可以將流程中涉及的相關(guān)狀態(tài)作為 JBPM 變量存儲于 business process 上下文,然后 Jboss Seam 可以持久化這些 JBPM 變量;第三、 提供方便的標簽開始一個流程,開始一個任務、結(jié)束一個任務。 當 JBPM 運行時,使用簡單強大的語言將在Sever 上輸入的任務流程打包在流程檔案中,可以很快的部署業(yè)務工作流程,并實時發(fā)布到 web 上,這樣 JBPM 就將工作流應用開發(fā)的便 利性和企業(yè)應用集成能力更好的集合起來。用戶可以實時監(jiān)控流程狀態(tài),對 軟件項目提供直觀有效的管理。 同時,Jboss Seam 和 JBPM 都是開源的,對 企業(yè)降低管理成本有著絕對的優(yōu)勢。
      5 實例研究
      假設一個軟件項目管理的常見操作,以實例的形式部署到JBPM 上,以 探討其應用價值。 
      實例:項目經(jīng)理看到《需求分析報告》的時候進行審核的過程,
      1) 流程定義
      流程圖如圖 3 所示。
圖 3 審核流程
 Jpdl 文件:
  
-
xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="urn: jbpm.org:jpdl-3.2 http://jbpm.org/xsd/jpdl-3.2.xsd">
 -  
 
-
 -
 
 
 -
 
 
 --> 
 
  
-
 
  
 
       2) 初始化 actor ids
      Jbpm 對流程中用戶的管理是通過actor id 和 group actor ids。 seam 內(nèi)置了一個部件Actor 來方便指定當前的actor ids.這個工作 一般在用戶登陸時完成。
 @In(create=true) Actor actor 
 Public String login(){
 … 
Actor.setId(user.getUserName());
 Actor.getGroupActorIds().addAll(user.getGroupNames());
 …}
      3) 啟動一個工作流
 @out(scope=ScopeType.BUSINESS_PROCESS,required=false)
 Long taskId; 
@Out(scope=ScopeType.BUSINESS_PROCESS,required=false)
 Float total;
@Out(value=“employee”,scope=ScopeType.BUSINESS_PROCESS,required=false)
 String employeeName@CreateProcess(definition="TaskManagement")
 public void submitTask() { 
try { 
completedTask = purchase(employee, currentTask);
 taskId = completedTask.getTaskId();
 total= completedTask.getNetAmount();
 employeerName= completedTask.getEmployee().getUserName();
 }}
      4) 任務分配 
      當開始一個工作流的時候,任務實例被創(chuàng)建,任務實例必須分配給一個用戶或用戶組,相應 seam 中分配任務有二種方式—分 配給用戶或用戶組,如: 
      分配給用戶:
 
 
      5) 開始任務
      Seam 提供了兩個標注開始任務:@StartTask 和 @BeginTask. 開始任務時開始一個 conversation 上下文, 能在其中訪問保存在 business process 上下文中的變量。
 @BeginTask
 public String viewTask() {
 Task = (Task) em.createQuery("select o fromTask t join fetch taskLines where t. taskId = :taskId")
 .setParameter("taskId",taskId)
 .getSingleResult();return "accept";
 } 
      6) 結(jié)束任務
      Seam 提供 @EndTask 標注結(jié)束任務,并指明下一步流程。 如:
 @EndTask(transition="approve")
 public String accept() { 
task.process();
 return "employee1";} 
      通過以上實例我們發(fā)現(xiàn)。將 Jboss Seam 和 JBPM 引入到軟件項目管理系統(tǒng)是可行,并且有著顯著的優(yōu)勢。實際操作也相對簡單。 對于一個軟件公司而言,即使是業(yè)務流程有改變,我們也只需要將新的流程通過可視化的設計定義,并部署到 Jboss JBPM 服務器上。一個新的工作流程就馬上可以開始。JBPM 提供了持久化的解決方案,通過將定義好的 “工作流程”存儲到數(shù)據(jù)庫當中,并提供對 外的接口,我們可以在這些基礎(chǔ)之上進行二次開發(fā)。 總之有了 Jboss Seam 和 JBPM 的完美結(jié)合,工作流的部署將變得格外省力和簡 單,容易操作,上手快,大大的提高了企業(yè)的工作效率。 
      6 結(jié)束語 
      我們采用 Jboss Seam 開發(fā)軟件,將會更好的利用JBPM 技術(shù),更快的提高軟件開發(fā)效率,而且基于 Jboss Seam 良好的封裝性,我 們開發(fā)出的軟件必然有良好的穩(wěn)定性,易于后期維護。 從而,我們將得到一個穩(wěn)定性較好的項目管理軟件,相信項目管理者利用這 個相對穩(wěn)定的管理軟件去開發(fā)和管理項目,在今后的工作中一定會事半功倍,大大提高軟件開發(fā)效率,進而提高企業(yè)利潤。 
      參考文獻:
      [1] 高艷蓉.用 Jboss JBPM 管理業(yè)務流程[J].計算機世界•技術(shù)與應用,2006(24). 
      [2] 范會聯(lián),張玉芳.基于 Jboss Seam 的 web 應用程序的設計[J].微計算機信息,2007,23(1).(本文于2009年發(fā)表于《電腦知識與技術(shù)》)
分享到:

免責聲明:
  1、項目管理信息化網(wǎng)發(fā)布的所有資訊與文章是出于為業(yè)界傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請瀏覽者僅作參考,并請自行核實相關(guān)內(nèi)容。
  2、本站部分內(nèi)容轉(zhuǎn)載于其他網(wǎng)站和媒體,版權(quán)歸原作者或原發(fā)布媒體所有。如文章涉及版權(quán)等問題,請聯(lián)系本站,我們將在兩個工作日內(nèi)進行刪除或修改處理。敬請諒解!

延伸閱讀:

more>

會議活動

more>

公開課

more>

PMO

Copyright ? 2021 項目管理信息化網(wǎng) 版權(quán)所有 京ICP備17062359號-9 如轉(zhuǎn)載本站文章,請注明原作者和原發(fā)布媒體

本著互聯(lián)網(wǎng)分享精神,本站部分內(nèi)容轉(zhuǎn)載于其他網(wǎng)站和媒體,如內(nèi)容涉及版權(quán)等問題,請聯(lián)系本站進行刪除或修改處理

客服電話:010-89506650 89504891 非工作時間可聯(lián)系:18701278071(微信) QQ在線:574888227

新聞與原創(chuàng)文章投稿:tougao#cpmta.com 客服郵箱:info#cpmta.com(請將#換成@)

我國唯一的項目管理信息化門戶網(wǎng)站,國內(nèi)項目管理軟件資訊服務提供商,隸屬卓橡公司

項目管理信息化微信公眾號

PMO大會微信公眾號