DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          好友之家

          最新評(píng)論

          理解osworkflow 工作流

          什么是工作流:
          就是工作流程的計(jì)算模型,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對(duì)其實(shí)施計(jì)算。工作流要解決的主要問題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。

          工作流的應(yīng)用場(chǎng)景:
          soa中的時(shí)序編排,oa系統(tǒng)中的審批流轉(zhuǎn)。大部分管理流程中都可以用到工作流。

          工作流與業(yè)務(wù)的關(guān)系
          一、業(yè)務(wù)集成到工作流中:一種常見的做法是把所有的業(yè)務(wù)集成到工作流中,如果有個(gè)業(yè)務(wù)就定義個(gè)function,然后放進(jìn)去。例如要生成spcode。
          1、帶來的好處:
          業(yè)務(wù)與工作流完全集成,只需要找到工作流配置文件,以他為主線就能找到所有的業(yè)務(wù)。讓代碼的閱讀維護(hù)更方便。
          2、壞處:
          并不是最好的理念,仍然需要一次次的讀原來的代碼,復(fù)用性差,可剝離性差(比如我不想用工作流了),替換性差(比如我想從osworkflow到j(luò)bpm),侵入性高。跟現(xiàn)在大家說的最多的soa沖突。
          3、適用環(huán)境
          小項(xiàng)目開發(fā),靈活,重寫難度不大

          二、業(yè)務(wù)單獨(dú)寫,工作流后加入進(jìn)去
          用非工作流的代碼實(shí)現(xiàn)所有的業(yè)務(wù),再用工作流編排
          1、帶來的好處:
          符合soa的原則,可以分組件,分服務(wù),分應(yīng)用,復(fù)用性好,一旦復(fù)用消耗小,并不需要了解內(nèi)部代碼。
          2、壞處:
          初期消耗大,業(yè)務(wù)劃分難度大,需要頻繁調(diào)整。
          3、適用環(huán)境
          越大型的項(xiàng)目越好,甚至可以在應(yīng)用之間組織。在電子系統(tǒng)集成中最有用。

          工作流引擎:
          字面意思理解,工作流引擎就是工作流核心元素解決方案。
          那工作流的核心是什么呢?
          有權(quán)限的操作者觸發(fā)流程在各種條件下的跳轉(zhuǎn)。
          關(guān)鍵的是權(quán)限,條件,跳轉(zhuǎn)。
          所以工作流引擎實(shí)現(xiàn)的就是:
          根據(jù)角色、分工和條件的不同決定信息傳遞路由

          使用工作流引擎帶來的便利:
          1、開發(fā)簡(jiǎn)化
          2、穩(wěn)定性
          3、易維護(hù)

          理解工作流:
          一句話:其實(shí)軟件設(shè)計(jì)上更多的是借鑒非軟件知識(shí),比如設(shè)計(jì)模式來源于建筑。哲學(xué)上也有大同理論。


          說了好久的工作流,知道它的好處,知道它的壞處,知道應(yīng)用場(chǎng)景,但工作流還是有點(diǎn)朦朧,想到設(shè)計(jì)工作流,理解工作流還是有點(diǎn)頭疼。特別是在大的場(chǎng)景,比如說我要實(shí)現(xiàn)任意方式定義的流程。聽到這個(gè)就頭大。那如何解決這個(gè)問題呢?

          越是這類問題,約容易從理論的高度來解決。那么我們來看osworkflow是基于什么實(shí)現(xiàn)的?有限狀態(tài)機(jī)。當(dāng)我們放到宏觀,我們要解決所有問題的時(shí)候會(huì)感覺很棘手,任意流程。但放到微觀呢。雖然我們最終是要解決整個(gè)的路由。但是我只要解決任意兩個(gè)step之間的路由。所有的路由就解決了。這也是數(shù)學(xué)上的歸納法。

          好了現(xiàn)在的問題已經(jīng)變成如何解決兩個(gè)step之間的路由了,從兩個(gè)step之間的路由,再次縮減到,我只需要知道一個(gè)step可以到什么地方,那我就知道是否兩個(gè)step之間存在路由。

          那放到一個(gè)step上是否就是有限狀態(tài)機(jī)了呢?沒錯(cuò)。
          step就是狀態(tài),action就是狀態(tài)轉(zhuǎn)換,但是osworkflow賦予了action太多的功能,變成了action中的result才是轉(zhuǎn)換,而action變成了轉(zhuǎn)換過程中一些列操作及轉(zhuǎn)換的集合。

          有限狀態(tài)機(jī):
          你熟悉他嗎,一定的,一定熟悉他,想想有多少程序是基于他實(shí)現(xiàn)的。比如rpg游戲中迷宮的任意路口,比如rpg游戲中的情節(jié)設(shè)定。如果你寫一個(gè)游戲引擎,你會(huì)發(fā)現(xiàn)fsm離你有多近。即使你不寫游戲引擎,你玩游戲嗎,在rpg中是否用筆通過一個(gè)個(gè)的點(diǎn)再現(xiàn)過迷宮地圖,是否通過一次次的通關(guān)找到各種隱藏情節(jié),這就是狀態(tài)機(jī)。

          osworkflow的設(shè)計(jì)工具:
          為什么osworkflow不提供設(shè)計(jì)工具呢,osworkflow開發(fā)者說,要靈活,這是程序員干的事情。但是uml本身也是程序員干的事情。再想想因?yàn)閛sworkflow基于有限狀態(tài)機(jī),而對(duì)于有限狀態(tài)機(jī)這種如果用uml表現(xiàn)出來是困難的。總會(huì)出一些難以控制的地方,再來看看jbpm,因?yàn)閖bpm是基于狀態(tài)圖的,來源于uml,所以更容易出設(shè)計(jì)工具。


          個(gè)人理解,大家交流

          posted on 2009-08-19 10:44 dreamstone 閱讀(1740) 評(píng)論(0)  編輯  收藏 所屬分類: 其它開源框架

          主站蜘蛛池模板: 平昌县| 德江县| 平远县| 荃湾区| 静宁县| 获嘉县| 迁西县| 梁平县| 古浪县| 满城县| 无棣县| 临潭县| 锡林郭勒盟| 彰化县| 太仆寺旗| 梁山县| 南城县| 灵璧县| 四平市| 嘉定区| 东光县| 商洛市| 高要市| 芦溪县| 鄂尔多斯市| 嘉定区| 高雄县| 靖安县| 洛隆县| 淮南市| 秦皇岛市| 永州市| 麻阳| 西丰县| 筠连县| 枣强县| 奉化市| 虞城县| 兴义市| 洪雅县| 永平县|