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ì)算。工作流要解決的主要問(wèn)題是:為實(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、帶來(lái)的好處:
          業(yè)務(wù)與工作流完全集成,只需要找到工作流配置文件,以他為主線就能找到所有的業(yè)務(wù)。讓代碼的閱讀維護(hù)更方便。
          2、壞處:
          并不是最好的理念,仍然需要一次次的讀原來(lái)的代碼,復(fù)用性差,可剝離性差(比如我不想用工作流了),替換性差(比如我想從osworkflow到j(luò)bpm),侵入性高。跟現(xiàn)在大家說(shuō)的最多的soa沖突。
          3、適用環(huán)境
          小項(xiàng)目開發(fā),靈活,重寫難度不大

          二、業(yè)務(wù)單獨(dú)寫,工作流后加入進(jìn)去
          用非工作流的代碼實(shí)現(xiàn)所有的業(yè)務(wù),再用工作流編排
          1、帶來(lái)的好處:
          符合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ù)角色、分工和條件的不同決定信息傳遞路由

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

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


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

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

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

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

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

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


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

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

          主站蜘蛛池模板: 柘荣县| 肥西县| 习水县| 宜兰市| 方城县| 靖州| 沂源县| 通江县| 广汉市| 镇康县| 山丹县| 安多县| 镇安县| 凭祥市| 怀宁县| 阿拉善盟| 泗洪县| 本溪| 米易县| 双峰县| 绥棱县| 临洮县| 古田县| 昌都县| 穆棱市| 剑阁县| 阿瓦提县| 宁远县| 扶风县| 萝北县| 田阳县| 苍溪县| 秦安县| 广灵县| 兴城市| 张家口市| 苏尼特左旗| 临沂市| 高唐县| 凤阳县| 绥中县|