国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用Spring來創建一個簡單的工作流引擎

2019-11-17 06:05:22
字體:
來源:轉載
供稿:網友

  原文地址:    http://www.javaworld.com/javaworld/jw-04-2005/jw-0411-sPRing.Html
  中文地址:    http://www.matrix.org.cn/resource/article/43/43785_Spring.html

  摘要

  spring是支持控制反轉編程機制的一個相對新的框架。本文把spring作為簡單工作流引擎,將它用在了更加通用的地方。在對工作流簡單介紹之后,將要介紹在基本工作流場景中基于Spring的工作流API的使用。

  許多J2EE應用程序要求在一個和主機分離的上下文中執行處理過程。在許多情況下,這些后臺的進程執行多個任務,一些任務依靠于以前任務的狀態。由于這些處理任務之間存在相互依靠的關系,使用一套基于過程的方法調用經常不能滿足要求。開發人員能夠利用Spring來輕易地將后臺進程分離成活動的集合。Spring容器連接這些活動,并將它們組織成簡單的工作流。

  在本文中,簡單工作流被定義成不需要用戶干預,以一定順序執行的任意活動的集合。然而,我們并不建議將這種方式代替存在的工作流框架。在一些場景中,需要更多的用戶交互,例如基于用戶輸入而進行的轉向,連接或傳輸,這時,比較好的方法是配用一個單獨的開源或者商業的工作流引擎。一個開源項目已經成功地將更復雜的工作流設計集成到spring中。

  假如你手上的工作流任務是簡單的,那么,與功能完備的獨立工作流框架相比,簡單工作流的策略就會變得有意義,非凡地,假如已經使用了spring,這種快速實現可以保證時間不會變得更加漫長。此外,考慮到spring輕量級的控制反轉容器的特點,spring在資源負載上減少了資源負載。

  這篇文章簡短地從編程主題的角度介紹工作流。通過使用工作流的概念,spring被用來作為驅動工作流引擎的框架。然后,討論了生產部署選項。現在,讓我們從工作流的設計模式和相關背景信息來介紹簡單工作流的思想吧。


簡單工作流
  工作流模型是一個早在70年代就有人開始研究的主題,許多開發者都試圖創建工作流模型規范。W.H.M. van der Aalst等人寫了《工作流模型》白皮書(2003年7月),它成功地提煉出一組設計模式,這些設計模式準確地將大多數通用的工作流場景建模。當中,最普通的工作流模式是順序模式 (Sequence pattern)。順序工作流模式滿足了簡單工作流的設計原則,并且由一組順序執行的活動組成。

  UML(統一建模語言)活動圖通常被用來作為一個機制對工作流建模。圖1顯示了一個基本的使用標準UML活動圖對順序工作流過程的建模過程。

使用Spring來創建一個簡單的工作流引擎

圖 1順序工作流模式

  順序工作流是一個在J2EE中流行的標準工作流模式。J2EE應用程序在后臺線程中,通常需要一些順序發生的事件或者異步事件。圖2中的活動圖描述了一個簡單的工作流,用來通知感愛好的旅行者,他們感愛好的目的地的機票價格已經下降的事件。

使用Spring來創建一個簡單的工作流引擎

圖 2.機票價格下降的簡單工作流

  圖1中的航線工作流負責創建和發送動態的email通知。過程中的每一步表示了一個活動(activity)。在工作流處于活動之前,一些額外事件必須發生。在這個例子中,事件是飛行路線費率的減少。

  讓我們來簡要的看一下航線工作流的業務邏輯。假如第一個活動找不到對費率減少通知感愛好的用戶,那么整個工作流就被取消。假如發現了感愛好的用戶,那么接下來的活動繼續執行。隨后,一個XSL(擴展樣式表)轉換生成消息內容,之后,記錄審計信息 (audit information)。最后,工作流試圖通過SMTP服務器發送這個消息。假如這個任務沒有錯誤地完成,便在日志中記錄成功的信息,進程結束。但是,假如在和SMTP服務器通訊時發生了錯誤,一個非凡的錯誤處理例程將要治理這些錯誤。錯誤處理代碼將會試著去重新發送消息。

  考慮這個航線的例子,一個明顯的問題是:你怎么樣有效地將順序處理過程分解為單獨的活動?這個問題被spring巧妙的處理了。下面,讓我們快速地討論spring的反轉控制框架。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 利辛县| 资兴市| 永善县| 渑池县| 金溪县| 鄂州市| 周至县| 大连市| 大同市| 元朗区| 涪陵区| 余江县| 罗城| 全椒县| 深水埗区| 宜春市| 迭部县| 行唐县| 沙河市| 义乌市| 会宁县| 京山县| 蕲春县| 滨州市| 尤溪县| 兴国县| 定陶县| 辽宁省| 博兴县| 和政县| 孟州市| 富蕴县| 鹤庆县| 鄂尔多斯市| 宁阳县| 民勤县| 邻水| 揭东县| 凉山| 红河县| 沾化县|