青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

E-State:企業級狀態機 - 來自ROOM的框架

E-State和工作流

我在前面的文章狀態機與工作流(State Machines and Workflow(WLDJ,卷3,第1)中討論過工作流和狀態機,它們是面向流程的應用程序的補充實現策略。 狀態技術是對許多業務流程中所采用的里程碑技術所做繼承的強大抽象。另一方面,工作流 - 這里特指BEA Weblogic IntegrationBusiness Process ModelerBPM)組件 - 提供了重要的企業級服務,例如外部系統集成、人員工作列表(worklist)和任務管理,事件和計時器,以及XML消息處理。在前面的文章中指出過,混合的狀態-工作流解決方案有以下幾個部分:

1.  狀態機框架,由以下部分構成:
-
狀態模型: 一套狀態和轉換,在XML文檔中表達。
- Actor
數據庫: 主角(actor)是指具有狀態的實體。Actor的狀態由狀態機保存在數據庫里。
-
狀態機引擎: 把事件插入Actor的狀態模型中,并相應地更新狀態。它還會在進入、退出狀態或者發生轉換時,調用用戶自定義動作類。
-
動作類: 用戶自定義的Java類,負責響應某種狀態的進入或退出,或者某個Actor在特定狀態模型下執行過濾形態。

2. BPM工作流:負責接收事件,然后把事件插入狀態機。

3. BPM工作流:設置計時器,在時間用盡的時候把超時事件插入狀態機。

4.  BPM工作流:某一狀態動作調用該工作流,給它分配一個工作列表任務或與外部系統交互。

E-State 是第一部分即狀態機框架的參考實現。本文來討論狀態機的體系結構。

E-State 體系結構

方法學

E-State的狀態模型基于實時面向對象建模(Real-time Object-Oriented Modeling ROOM) 的方法。ROOM 的狀態圖是層次結構的,也就是說每個狀態可以擁有子狀態。這個主意很簡單,效果卻異常強大。 從人類思維的角度來看,平面狀態模型無法進行擴展。當狀態和轉換的數量增長時,平面模型就會變得難于理解。而層次狀態模型則可以分部分考察,每一部分理解起來相對就變得簡單了。例如,考慮圖 1

clip_image001

在這個模型里,轉換 ab 會使狀態 a1 a2 變成狀態 b 而轉換ac 會使狀態從 a1 a2 變成 c。所有狀態的轉換toC 會使狀態變成c 在狀態 a1里的轉換 ba 會形成新的狀態 a。初始狀態是 b。狀態從 a1變為a2時,要經過轉換 a1a2,從 a2 變為a1時,要經過a2a1。轉換ca把狀態引到一個選擇點:如果最后的狀態是a1,就變成a1,否則就變成 a2

同樣的場景,用層次結構來表示,理解起來就容易多了,如圖2所示:

clip_image002

首先,超級狀態 a被細分為狀態a1 a2(圖2中的右圖);這樣整個系統的狀態圖(圖2中的左圖)變得更簡潔。從狀態的高最層來看,轉換ab ba只是在狀態a b之間轉換;但是在狀態 a里,可以看到 ba 指向子狀態 a1,而 ab則來源于a1 轉換ac a1 a2 開始,指向 c;轉換 ca c開始,指向 狀態a的最后一個子狀態。另外,轉換toC不象圖1中那樣,要從每個狀態來開始;來自最高層狀態的非擴展轉換點toC 的事件指向狀態 c,就可以表示需要的行為。

作為層次結構設計的成果之一,ROOM提供了二個強大的特性:組轉換和歷史恢復。所謂組轉換是指:針對指定狀態發生的轉換,不論指定狀態處在什么子狀態當中;轉換 ac 把狀態從 a 變為 c,不論狀態a的子狀態是a1還是 a2歷史恢復 就是變回指定狀態最近的子狀態;轉換 ca 把狀態 c 變回 a最近的子狀態.

可以選擇的方法還有UMLPetri-nets,它們都支持層次結構。

引擎

E-State的核心是一個無狀態的會話Enterprise JavaBean (EJB),它被稱為狀態機(StateMachine),如圖3中的陰影部分所示。

clip_image003

StateMachine EJB被配置成指向具體的狀態模型,使用XML文件來進行配置,配置文件中包含以下內容:

·一組狀態和一組轉換;

·唯一的命名空間,唯一命名空間有助于多重部署,稍后介紹。

·Java 動作回調類的名稱,狀態機處理事件時,調用回調類。

EJB把模型用于Actor。在ROOM方法中,Actor指的是一個活動對象,狀態模型最好地描述了這個對象的行為。

( ROOM里,活動對象擁有自己的控制線程,以及一組自己的入站、出站消息接口。E-StateActor的概念更嚴格) E-State里,Actor是擁有狀態的實體,例如一個保險索賠。在一個模型里,從一個狀態到另一個狀態的轉換,反映了Actor的狀態變化;例如,索賠可能處在等待狀態,激活狀態,或者空閑狀態。 E-State 有三個表負責跟蹤Actor的狀態,這三個表是 Actor(主角)、Actor_Property(主角屬性)和 Actor_State(主角狀態),還有對應的實體 EJB (ActorActorProperty,和 ActorState) 來表示這三個表,如圖3所示。StateMachine EJB 某種程度上可以看作這些實體EJB的一個層面(facade)。StateMachine EJBActor管理方法有: createActor()getCurrentState()getChildState() getActorProperty()getActorProperties() setActorProperty()

狀態機余下的方法 (startMachine() injectEvent()) 形成了狀態機引擎,驅動著Actor的狀態變化。實際上,startMachine()只是調用 injectEvent(),給它傳遞了一個特殊的初始化事件,由injectEvent()執行轉換操作,轉換操作的起點是模型中每個狀態的初始轉換點。所以, injectEvent() 方法是狀態機的核心,由它來驅動業務流程的動作前進。這個方法可以調用用戶自定義動作類,從而實現模型中所定義的狀態行動(StateAction)接口。動作類的功能是將重要的狀態機事件通知客戶,并向客戶請示邏輯決策。在表1里列出了動作類的方法。

動作類的方法

方法

動作

OnStateEnter

通知進入了一個狀態

OnStateExit

通知退出了一個狀態

OnTransitionExecute

通知執行了一個轉換。如果方法返回真,則允許該轉換發生,如果為假,則阻止轉換(在ROOM的概念里,稱為警衛(guard))

Choice

要執行選擇點決策的請求。返回值為真或假,控制著狀態模型里控制分支的流轉方向。

在保險索賠的例子里,動作類啟動工作流,執行與任務相關的工作或者清理工作,或者啟動計數器。在 WebLogic Integration 7.0里,由BPM API啟動工作流。在In WebLogic Integration 8.1里,則用Web服務調用工作流。

2里歸納了StateMachine EJB的方法。

2 StateMachine EJB的方法

方法

動作

CreateActor

Actor表中為StateMachine EJB代表的模型建立一個新記錄

GetCurrentState

取得StateMachine EJB代表的模型的Actor的當前葉子狀態

GetChildState

取得StateMachine EJB代表的模型的Actor的指定狀態的當前子狀態

GetActorProperty

取得StateMachine EJB代表的模型的Actor的指定屬性值

SetActorProperty

設置StateMachine EJB代表的模型的Actor的指定屬性值

GetActorProperties

取得StateMachine EJB代表的模型的Actor的名稱、類型和每個屬性的值

StartMachine

執行模型里的每個狀態的初始化轉換,啟動StateMachine EJB代表的模型的Actor的狀態模型

InjectEvent

把指定事件插入StateMachine EJB代表的模型的Actor的狀態模型里

在保險索賠的例子里,插入器(Injector)工作流調用狀態機的 injectEvent()方法。在WebLogic Integration 7.0里,工作流使用一個業務操作來調用這個方法,而在 WebLogic Integration 8.1,則用EJB控件來完成。

數據庫架構

4顯示了保持Actor持久狀態信息的表結構。.

clip_image004

在主表 Actor里,保存了特定 模型類型的Actor的當前狀態。當前狀態是指Actor目前所處的葉子狀態。這個表的主鍵由Actor的唯一標識符和它的模型命名空間組合而成的。一個Actor可能在多個 模型命名空間里具有狀態。特別的是,如果在不同的命名空間里存在著同一模型的二個版本,那么在每個命名空間里的Actor狀態都能在Actor表里表示。

Actor_State表捕捉特定命名空間里的特定Actor的復合狀態的活動子狀態。這個表僅供內部使用,狀態引擎用來來實現歷史恢復。在actoractor_state表之間存在著一對多的關系。

Actor_Property 表保存特定命名空間里的特定Actor的用戶自定義屬性。每個屬性都有一個名字(對于每個命名空間的每個Actor,名字必須是唯一的),一個類型,和一個值。這個表為客戶應用程序提供了方便,可以把一組數據與角色關聯;更常見的情況是,應用程序的數據保存在應用程序的數據存儲機制里。

部署

StateMachine EJB會為每個狀態模型部署一個不同的實例。每個實例的源代碼是相同的(相同的home remote接口,相同的實現),但是具體的配置不同。StateMachine EJB的部署描述符指定了唯一的JNDI(Java命名和目錄接口)名(客戶用這個名字來定位EJB),還有一個對模型XML文件的引用。例如,保險狀態模型的StateMachine EJB可能有一個 JNDI "state_insurance" ,并指向文件 "Insurance.xml"。要與這個模型交互,客戶應用程序可以用"state-insurance"這個JNDI名來訪問模型的EJB并調用EJB的方法。這個特殊的方法有著顯著的優勢:

·生命周期:要想準備好一個可供處理的新狀態模型,需要部署一個指定該模型的StateMachine EJB。要想取消這個模型,需要取消EJB的部署。要把變化交給模型,需要用修改過的模型文件重新部署EJB

·版本管理:如果現有的狀態模型有一個新的主版本,那么新版本可以部署成獨立的EJB,與以前的版本并存。

例如,state-insurance-1.1可以與state-insurance并存。

數據模型同樣支持版本管理。給定的Actor有多個模型的持久狀態,包括相同模型的不同版本,只有模型有不同的名稱。.

大多數業務流程要運行相當長的時候,所以應用程序升級的管理變得極富挑戰。有二個場景很難解決:

1.做了一個小補丁,但是有Actor正在用沒有打補丁的版本運行著。

2. 做了一個主要補丁,只有新Actor可用,舊的Actor仍然使用以前的版。.

E-State 是解決這些問題聰明的解決方案:

1.應用小補丁,意味著為模型重新部署現有EJBActor會在停止的地方重新開始,補丁同時發揮作用。.

2.應用主要補丁,意味著用一個獨立的命名空間部署新的EJB,而現在已經部署的EJB保持不變。模型彼此獨立,這樣老Actor用舊版本運行,新Actor用新版本運行。

結束語

E-State是由ROOM方法所啟發的一個企業級狀態機框架。它與BMP工作流集成在一起,提供了關鍵的集成服務,例如系統集成、事件、計時器、工作列表以及XML。這為開發面向流程的業務應用程序提供了強大的解決方案。E-State中包括:運行時引擎,狀態模型架構,持久性服務,用戶自定義動作類(在發生轉換時,在進入或退出狀態時,引擎會調用用戶自定義動作類。)動作類調用工作流來利用BPM服務;而工作流被事件觸發時,則調用引擎來觸發轉換。

參考資料 

·  Selic, Gullickson, and Ward. (1994). Real-Time Object-Oriented Modeling. Wiley.

posted on 2009-02-13 12:01 肥仔 閱讀(959) 評論(0)  編輯 收藏 引用 所屬分類: 狀態機 & 自動機 & 形式語言

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品视频网| 日韩午夜av在线| 亚洲国产高清一区二区三区| 欧美久久九九| 欧美精品尤物在线| 欧美三区视频| 国产精品露脸自拍| 国产午夜精品全部视频播放| 国产日本欧美一区二区| 韩国一区电影| 亚洲美女性视频| 亚洲视频一二区| 久久久国产精品亚洲一区| 免费不卡视频| 一区二区三区你懂的| 欧美一区二区三区久久精品茉莉花| 欧美亚洲综合在线| 欧美成人激情视频| 国产精品嫩草影院一区二区| 国语自产偷拍精品视频偷| 亚洲欧洲一区二区三区| 午夜精品久久久久久久99热浪潮| 久久国产一区二区| 亚洲国产高潮在线观看| 亚洲日产国产精品| 欧美亚洲一区二区在线| 欧美成人精品福利| 国产欧美日韩91| 亚洲精品国产精品国产自| 午夜日韩av| 亚洲国产欧美一区二区三区丁香婷| 亚洲激情偷拍| 欧美诱惑福利视频| 欧美日韩精品一本二本三本| 国产亚洲va综合人人澡精品| 亚洲经典在线| 久久久久久久一区二区| 91久久久久久久久| 久久久国产精品一区二区中文 | 亚洲欧洲99久久| 美女视频黄 久久| 亚洲一级免费视频| 欧美激情第六页| 在线观看亚洲视频啊啊啊啊| 亚洲综合成人在线| 亚洲美女av电影| 欧美电影免费观看高清| 国内欧美视频一区二区| 亚洲欧美精品一区| 亚洲理伦电影| 欧美啪啪一区| 91久久国产综合久久| 玖玖精品视频| 久久精品一区四区| 国产一区再线| 久久久久久久91| 欧美一区成人| 国产丝袜一区二区| 午夜在线一区| 亚洲在线成人精品| 国产情侣一区| 久久久久.com| 久久精品首页| 在线观看福利一区| 欧美国产在线视频| 欧美成人第一页| 日韩亚洲欧美一区| 亚洲日本理论电影| 欧美aⅴ99久久黑人专区| 亚洲国产精品一区二区三区| 久热精品视频在线| 欧美99久久| 亚洲视频在线免费观看| 99精品福利视频| 国产精品久久久久国产精品日日| 亚洲午夜免费视频| 亚洲一区二区久久| 国产午夜精品在线| 欧美国产日韩精品免费观看| 女同一区二区| 亚洲一区二区三区精品在线观看 | 欧美日韩一二三区| 亚洲免费一级电影| 亚洲欧美bt| 亚洲电影下载| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美午夜精品久久久久免费视 | 欧美精品一区二区精品网 | 久久综合网hezyo| 一区在线播放| 亚洲人成7777| 国产欧美日韩精品丝袜高跟鞋| 久久av红桃一区二区小说| 久久一日本道色综合久久| 亚洲毛片在线观看.| 一区二区欧美激情| 黑人极品videos精品欧美裸| 亚洲风情在线资源站| 国产精品成人观看视频免费| 久久国产福利国产秒拍| 欧美高清免费| 久久久福利视频| 欧美日韩免费区域视频在线观看| 欧美制服丝袜| 欧美日韩一区不卡| 欧美成人69| 国产一级一区二区| 9l视频自拍蝌蚪9l视频成人| 国产一区在线视频| 9久re热视频在线精品| 亚洲电影天堂av| 欧美亚洲日本一区| 夜夜狂射影院欧美极品| 久久亚洲精品网站| 欧美一区二区三区在线| 欧美日韩国产综合视频在线观看| 麻豆成人在线| 国产一区二区三区自拍| 在线综合亚洲| 亚洲天堂网在线观看| 美女黄色成人网| 久久亚洲综合色一区二区三区| 欧美日韩在线免费观看| 欧美国产精品中文字幕| 国内精品美女在线观看| 亚洲欧美成人一区二区三区| 一本色道久久综合精品竹菊| 久久综合一区二区三区| 鲁大师成人一区二区三区 | 国内成+人亚洲| 亚洲午夜在线观看视频在线| 亚洲国产二区| 久久久久综合一区二区三区| 欧美一区二区视频在线观看| 欧美午夜精品| 一区二区三区国产在线| 一本色道久久99精品综合| 免费成人高清| 欧美激情黄色片| 亚洲国产精品va在看黑人| 久久中文久久字幕| 欧美搞黄网站| 亚洲精品免费电影| 狼人社综合社区| 欧美va亚洲va国产综合| **性色生活片久久毛片| 老司机精品久久| 欧美国产日韩a欧美在线观看| 一色屋精品视频在线观看网站| 欧美一区二区三区日韩视频| 久久久国产91| 亚洲一区二三| 久久久久久一区| 午夜在线一区二区| 国产精品久久一区二区三区| 亚洲无线视频| 久久久综合免费视频| 红桃视频亚洲| 嫩模写真一区二区三区三州| 亚洲二区免费| 亚洲一区日韩在线| 国产日本亚洲高清| 久久久综合精品| 亚洲伦理一区| 久久精品在线观看| 亚洲激情综合| 国产精品露脸自拍| 久久免费高清视频| 99re6热只有精品免费观看| 亚洲在线一区二区三区| 国产在线麻豆精品观看| 欧美成人综合| 午夜精品亚洲| 欧美激情亚洲视频| 亚洲欧美在线另类| 亚洲第一在线视频| 国产精品免费视频观看| 快播亚洲色图| 亚洲自拍电影| 亚洲国产精品成人综合色在线婷婷| 一区二区三区回区在观看免费视频| 国产精品国产| 美女国产一区| 欧美一区二区黄| 亚洲精品久久在线| 久久九九久久九九| 中文高清一区| 亚洲高清中文字幕| 国产日产亚洲精品| 欧美日韩国产美女| 久久久久久亚洲精品不卡4k岛国| 亚洲精品欧美在线| 你懂的国产精品| 亚洲欧美中文字幕| 99热免费精品| 亚洲国产91色在线| 国产欧美日韩精品在线| 欧美成人午夜激情视频| 欧美一区二区三区电影在线观看| 亚洲人成7777|