日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

jbpm 異常處理與安全問(wèn)題

 duduwolf 2005-08-06

下面來(lái)學(xué)習(xí)jbpm的高級(jí)話題部分(包括異常處理、安全、運(yùn)行jbpm測(cè)試?yán)樱?/SPAN>

高級(jí)話題--異常處理

Jbpmjava 編程語(yǔ)言增加了狀態(tài)管理。Jbpm的座右銘是:“做一件事就把它做好”。因此我們不想重復(fù)那些已經(jīng)在java語(yǔ)言自身定義好的觀念思想。下面部分解釋jbpm成功的部分:重用javatry—catch,而不是在jpdl中重復(fù)這一點(diǎn)部分。

當(dāng)一個(gè)process archive被部署以后,在jbpm中就產(chǎn)生了一個(gè)定義(definition)。這時(shí),這個(gè)定義就是有效的(經(jīng)過(guò)驗(yàn)證的)。這個(gè)驗(yàn)證的作用就是確保節(jié)點(diǎn)與變遷之間已經(jīng)進(jìn)行合適連接。這個(gè)檢驗(yàn)過(guò)程將會(huì)做到保證沒有異常能夠在一個(gè)token從一個(gè)節(jié)點(diǎn)到另外一個(gè)節(jié)點(diǎn)(通過(guò)變遷)時(shí)候發(fā)生。

錯(cuò)誤只能在delegation classes中產(chǎn)生。所以我們需要做的就是把實(shí)現(xiàn)delegation的進(jìn)行錯(cuò)誤處理。Delegation方法沒有聲明拋出異常(這就指導(dǎo)開發(fā)者需要強(qiáng)制執(zhí)行)。例如,當(dāng)你在action-handler中發(fā)送一個(gè)email并且失敗了,在java代碼的catch中決定需要做什么操作。例如把錯(cuò)誤消息放到一個(gè)消息隊(duì)列中,寫入文件或者(turn on a flash light)。最后部分就是delegation配置??梢栽?/SPAN>processdefition.xml中的一個(gè)有用的基礎(chǔ)上配置delegation。這種配置方法也可以用在配置錯(cuò)誤處理上。這種配置在delegation實(shí)現(xiàn)上面進(jìn)行指定。所以它依賴于delegation實(shí)現(xiàn)中的錯(cuò)誤處理配置提供出來(lái)的能力。

安全:

身份認(rèn)證是安全的一部分,決定誰(shuí)來(lái)執(zhí)行代碼。認(rèn)證這部分功能是在jbpm核心服務(wù)之外的。它應(yīng)該是jbpm部署的環(huán)境中的一部分:例如web應(yīng)用或者一個(gè)j2ee容器。在jbpm的所有api中,運(yùn)行代碼的人員或者系統(tǒng)由一個(gè)actorid來(lái)表示(java.lang.string)。jbpm需要知道誰(shuí)來(lái)運(yùn)行代碼有兩個(gè)原因:

1、  所有方法中聲明的執(zhí)行服務(wù),jbpm出于日志的目的想知道是誰(shuí)在運(yùn)行代碼。調(diào)用logs將會(huì)回憶起誰(shuí)做了什么操作。當(dāng)然,如果loging對(duì)你來(lái)說(shuō)不是重要的,你可以強(qiáng)迫提供一個(gè)值來(lái)代替actorid參數(shù)。

2、  如果jbpm配置參數(shù)“jbpm.check.actor”設(shè)置為true,方法ExecutionService.endOfState,將會(huì)驗(yàn)證執(zhí)行方法的actor是不是與安排狀態(tài)的actor為同一個(gè)。

授權(quán)是使某人具備執(zhí)行代碼的安全部分。在僅有的一種情形,jbpm能夠被配置成檢驗(yàn)actor是否允許執(zhí)行方法:當(dāng)調(diào)用ExecutionService.endOfState。

針對(duì)其他授權(quán)需求??梢允褂孟旅鎯煞N機(jī)制:

1、              ActionHandlers: ActionHandler’s 能夠拋出org.jbpm.AuthorizationException‘s。當(dāng)發(fā)生這種情況。事務(wù)將會(huì)回滾并且ExecutionService客戶端得到AuthorizationException(這是一個(gè)ExecutionException)。舉個(gè)例子。使用這種機(jī)制能用來(lái)在一個(gè)過(guò)程實(shí)例開始時(shí)候指定一個(gè)ActionHandler. 這個(gè)action handler能夠檢驗(yàn)這個(gè)actor是否能夠啟動(dòng)一個(gè)過(guò)程。如果不能,那么actionhandler能夠拋出一個(gè)org.jbpm.AuthorizationException.

2、             Decorator模式:decorator模式(Gof)能夠用來(lái)做授權(quán)的更復(fù)雜情形。意思是:部署時(shí),jbpm的執(zhí)行服務(wù)被包裝在另外一個(gè)服務(wù)當(dāng)中,用delegation來(lái)調(diào)用jbpm,但是需要預(yù)先考慮授權(quán)代碼。

 

運(yùn)行jbpm tests(對(duì)測(cè)試不懂)

對(duì)于運(yùn)行單元測(cè)試和coverage測(cè)試,同樣在jbpm.home下面執(zhí)行安裝任務(wù):‘a(chǎn)nt install.ant.libs‘ 。目標(biāo)文件講會(huì)拷貝到你的ant_homelib目錄的lib/junit/junit-3.8.1.jar and lib/clover/clover.jar。

如果你是使用eclipse,在eclipse變量中設(shè)置ant-home,使用jbpm2 eclipse projectclasspath。

Jbpm.home目錄下執(zhí)行:‘a(chǎn)nt clean test view.test‘。windows下一個(gè)瀏覽器將會(huì)彈出并顯示出測(cè)試結(jié)果。在其他系統(tǒng),到${jbpm.home}/target/test-reports/index.html這里用瀏覽器打開即可。

Jbpm.home目錄下執(zhí)行:‘a(chǎn)nt clean test.coverage‘。然后,執(zhí)行‘a(chǎn)nt view.coverage‘查看僅僅coverage測(cè)試結(jié)果,或者運(yùn)行‘a(chǎn)nt view‘查看測(cè)試結(jié)果和coverage測(cè)試結(jié)果。需要注意的是對(duì)于coverage測(cè)試結(jié)果你需要執(zhí)行separate ant targets.對(duì)于在一次執(zhí)行當(dāng)中合并target是不可能的。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多