这些注解提供声明式对话分界(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流程实例中发送一个流转信号。
分享到:
相关推荐
- `@Destroy`: 类似于`@Create`,当Seam上下文销毁时调用`@Destroy`标记的方法,常用于资源清理。 2. **JPA注解** - `@Entity`: 表示一个Java类映射到数据库表。这是JPA的基础注解,定义了一个实体类。 - `@...
- **用途**:允许一个Seam组件绑定多个上下文变量。 - **示例**: ```java @Name("userComponent") @Role(name="user", scope=ScopeType.SESSION) public class UserComponent { // 组件实现代码 } ``` - **...
Seam扩展了Java Servlet规范中的上下文模型,引入了对话上下文和业务流程上下文的概念。这些上下文扩展有助于更好地管理组件的状态。 ##### 5. 双向注射(Bijection) Seam使用Java 5的注解实现了双向注射机制。...
1. **Context(上下文)管理**:Seam 提供了一个灵活的上下文模型,允许开发者在不同层面上管理和访问对象。这包括请求上下文、会话上下文和应用上下文。请求上下文存储与HTTP请求相关的数据,会话上下文则跨多个...
##### Seam上下文层次 - **无状态上下文**:主要用于临时性的交互操作,不保留任何状态信息。 - **事件上下文**:处理特定事件,通常在事件触发时创建,事件处理完毕即销毁。 - **页面上下文**:对应Web页面的生命...
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
1. **Seam上下文**:介绍了Seam如何通过不同层次的上下文来管理应用的状态,包括无状态上下文、事件上下文、页面上下文、会话上下文、业务流程上下文、应用上下文等。 2. **组件类型**:详细列举了Seam支持的各种...
通过使用SeamTest,开发者可以避免手动配置测试环境,因为它能自动创建和管理Seam上下文,这大大减少了设置和维护测试用例的时间。 在源码层面,SeamTest提供了JUnit扩展,使得在JUnit测试类中可以直接使用Seam的...
这意味着组件可以根据当前的业务流程、用户会话或特定的上下文条件来提供服务。这种设计模式提高了代码的可重用性和灵活性,同时降低了组件之间的耦合度。 Seam中的组件系统基于CDI(Contexts and Dependency ...
- Weld为开发者提供了一套符合CDI规范的实现,允许开发者使用注解来处理依赖关系和上下文。 - 除了Weld,还有一些其他的CDI实现,如OpenWebBeans和Candi。 - 非开源实现包括商业服务器,如WebLogic和WebSphere。 ...
在本实例中,Seam将提供上下文管理和依赖注入功能,使代码更加模块化和易于管理。 **三、Java Persistence API (JPA)** JPA是Java平台上的ORM(Object-Relational Mapping)规范,用于在Java应用中处理数据库操作...
Seam扩展了CDI,增加了更多的上下文和事件支持,使得组件之间的协作更加灵活。 除了上述核心功能,Seam还提供了AOP(面向切面编程)支持、强大的国际化和本地化功能、安全管理以及测试工具等。其中,AOP使得开发者...
- **上下文环境**:Seam中的上下文提供了组件之间共享数据的机制,包括页面上下文、会话上下文等不同层次。 - **作用及应用场景**:通过合理的组件设计和上下文使用,开发者能够构建出结构清晰、易于维护的应用。 ...
#### 三、Seam上下文相关的组件模型 Seam框架的一个重要特点是其强大的上下文管理功能。这一部分将详细讨论Seam中的各种上下文以及它们如何协作以提供一致的应用程序体验。 ##### 3.1 上下文介绍 - **Stateless ...
Seam通过提供对Hibernate的无缝集成,使得开发者可以在不脱离Seam上下文的情况下方便地处理持久化操作。例如,Seam可以自动管理Hibernate的Session,提供事务控制,以及实现基于注解的实体管理和查询。 JavaServer ...
作为Hibernate的创造者Gavin King的作品,Seam在设计之初就考虑到了ORM的最佳实践,它在整个Web交互生命周期中管理持久上下文,避免了DTO等技术的使用,提高了代码的整洁性和可维护性。 总的来说,JBoss Seam是一个...
- **组件与上下文**:Seam中的组件是应用程序的基本构建单元,而上下文则是这些组件运行时的环境。理解这两者之间的关系是掌握Seam的关键之一。 - **Seam组件描述符**:为了更好地管理组件,Seam引入了一个组件描述...