這些注解提供聲明式對(duì)話分界(declarative conversation demarcation)。它們?cè)赟eam組件方法中使用,通常是動(dòng)作監(jiān)聽(tīng)器方法(Action Listener Method)。
每個(gè)Web請(qǐng)求有一個(gè)對(duì)話上下文和它關(guān)聯(lián)。這些對(duì)話的大多數(shù)在請(qǐng)求結(jié)束時(shí)結(jié)束。如果你想要一個(gè)對(duì)話跨越多個(gè)請(qǐng)求,你必須通過(guò)調(diào)用標(biāo)志為 @Begin
的方法來(lái)“提升”當(dāng)然的對(duì)話為一個(gè)長(zhǎng)期運(yùn)行的對(duì)話(long-running conversation)。
@Begin
-
@Begin
當(dāng)此方法無(wú)異常的返回一個(gè)非空結(jié)果時(shí),一個(gè)長(zhǎng)期運(yùn)行的對(duì)話開(kāi)始。
@Begin(join=true)
若已經(jīng)處于長(zhǎng)期運(yùn)行對(duì)話中,簡(jiǎn)單的延續(xù)此對(duì)話上下文。
@Begin(nested=true)
若已經(jīng)處于長(zhǎng)期運(yùn)行對(duì)話中,一個(gè)新的被 嵌套(nested) 對(duì)話上下文開(kāi)始。 該被嵌套的對(duì)話在遇到下一個(gè) @End
時(shí)結(jié)束,并且外部上下文將恢復(fù)。在同一個(gè)外部對(duì)話中同時(shí)嵌套多個(gè)對(duì)話是完全合法的。
@Begin(pageflow="process definition name")
指定該對(duì)話的頁(yè)面流(pageflow)的jBPM進(jìn)程定義名。
@Begin(flushMode=FlushModeType.MANUAL)
指定任何Seam管理的持久上下文的flush模式。flushMode=FlushModeType.MANUAL
支持 原子對(duì)話(atomic conversations),這里所有寫(xiě)操作在會(huì)話上下文進(jìn)入隊(duì)列,直到顯式調(diào)用 flush()
(調(diào)用通常發(fā)生在對(duì)話結(jié)束時(shí))。
-
join
— 定義當(dāng)長(zhǎng)期對(duì)話已經(jīng)存在時(shí)的行為。 若是true
,傳播上下文。若為 false
,拋出一個(gè)異常。 默認(rèn)為false
。當(dāng)指定 nested=true
時(shí),將忽略該設(shè)置。
-
nested
—當(dāng)長(zhǎng)期對(duì)話已經(jīng)存在時(shí),一個(gè)嵌套對(duì)話應(yīng)該建立。
-
flushMode
— 設(shè)置任何在此會(huì)話期間創(chuàng)建的,被Seam管理的Hibernate Session或JPA持久上下文的flush模式。
-
pageflow
— 由 org.jboss.seam.bpm.jbpm.pageflowDefinitions
部署的一個(gè)jBPM處理的進(jìn)程定義名。
@End
-
@End
當(dāng)這個(gè)方法無(wú)異常的返回一個(gè)非空輸出時(shí),長(zhǎng)期對(duì)話結(jié)束。
@StartTask
-
@StartTask
"開(kāi)始"一個(gè)jBPM任務(wù)。當(dāng)此方法無(wú)異常的返回一個(gè)非空輸出時(shí),長(zhǎng)期運(yùn)行對(duì)話開(kāi)始。此對(duì)話同在某個(gè)request具名參數(shù)中被指定的jBMP任務(wù)
相關(guān)聯(lián)。 在該會(huì)話上下文中,還定義了一個(gè)業(yè)務(wù)流程上下文(business process context),用作任務(wù)實(shí)例的業(yè)務(wù)流程實(shí)例。
jBPM的 TaskInstance
在request context中以 taskInstance
的名字作為變量出現(xiàn)。 jPBM的 ProcessInstance
在request context中以 processInstance
的名字作為變量出現(xiàn)。(當(dāng)然,這些對(duì)象也可用于通過(guò) @In
注入。)
-
taskIdParameter
— 保存有task id的request參數(shù)的名字。 默認(rèn)為"taskId"
,同時(shí)也是Seam taskList
JSF component使用的默認(rèn)值。
-
flushMode
— 設(shè)置任何在此對(duì)話期間創(chuàng)建的,被Seam管理的Hibernate Session或JPA持久上下文的flush模式。
@BeginTask
-
@BeginTask
恢復(fù)一個(gè)未完成的jBMP任務(wù)。當(dāng)此方法無(wú)異常的返回一個(gè)非空值時(shí),長(zhǎng)時(shí)間運(yùn)行的對(duì)話開(kāi)始。此對(duì)話同在某個(gè)request參數(shù)中指定的jBMP任務(wù)
相關(guān)聯(lián)。 在該對(duì)話上下文中,還定義了一個(gè)業(yè)務(wù)流程上下文(business process context),用作任務(wù)實(shí)例的業(yè)務(wù)流程實(shí)例。
jBPM的 org.jbpm.taskmgmt.exe.TaskInstance
在request context中以 taskInstance
的名字作為變量出現(xiàn)。 jBPM的 org.jbpm.graph.exe.ProcessInstance
在request context中以 processInstance
的名字作為變量出現(xiàn)。
-
taskIdParameter
— 保存有task id的request參數(shù)的名字。 默認(rèn)為"taskId"
,同時(shí)也是Seam taskList
JSF component使用的默認(rèn)值。
-
flushMode
— 設(shè)置任何在此會(huì)話期間創(chuàng)建的,被Seam管理的Hibernate Session或JPA持久上下文的flush模式。
@EndTask
-
@EndTask
"結(jié)束"一個(gè)jBPM任務(wù)。當(dāng)此方法無(wú)異常返回一個(gè)非空輸出時(shí),結(jié)束長(zhǎng)時(shí)間運(yùn)行的會(huì)話。觸發(fā)一個(gè)jBMP 流轉(zhuǎn)(transition)。 若沒(méi)有調(diào)用 transition
內(nèi)置組件的 Transition.setName()
方法,實(shí)際被觸發(fā)的將是默認(rèn)的transition。
@EndTask(transition="transitionName")
觸發(fā)給定jBPM流轉(zhuǎn)。
-
transition
— 當(dāng)任務(wù)結(jié)束時(shí)觸發(fā)的jBPM流轉(zhuǎn)名。默認(rèn)為默認(rèn)的流轉(zhuǎn)transition。
-
beforeRedirect
— 默認(rèn)情況下,若有重定向,直到所有的重定向結(jié)束后,會(huì)話才會(huì)被真正destory。 設(shè)置 beforeRedirect=true
指定該會(huì)話應(yīng)在當(dāng)前request結(jié)束時(shí)就結(jié)束,并且在一個(gè)新的臨時(shí)會(huì)話上下文中處理重定向。
@CreateProcess
-
@CreateProcess(definition="process definition name")
當(dāng)方法無(wú)異常返回一個(gè)非空輸出時(shí),建立一個(gè)新的jBPM流程實(shí)例。 ProcessInstance
對(duì)象在上下文中以 processInstance
的名字作為一個(gè)變量出現(xiàn)。
@ResumeProcess
-
@ResumeProcess(processIdParameter="processId")
當(dāng)方法無(wú)異常返回一個(gè)非空輸出時(shí),重新進(jìn)入一個(gè)已存的jBPM 流程實(shí)例的context。ProcessInstance
對(duì)象在上下文中以 processInstance
的名字作為一個(gè)變量出現(xiàn)。
@Transition
-
@Transition("cancel")
當(dāng)此方法返回一個(gè)非空結(jié)果時(shí),向在當(dāng)前jBPM流程實(shí)例中發(fā)送一個(gè)流轉(zhuǎn)信號(hào)。