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