一、 概念
相对PageFlow(页面流)由同一用户与系统之间的一系列交互完成一项任务不同,Business Process Management(工作流)的范围更宽,它包含一系列相关任务,这些任务一般由不同人在不同时间完成。
Seam对jbpm的集成的方便性我认为表现在三个方面:
1. 提供内置对象显示任务列表给用户;
2. 前文曾提到seam除新增conversation上下文外,还新增了business_ process上下文,这就是为工作流管理提供的,应用程序可以将流程中涉及的相关状态作为jbpm变量存储于business process上下文,然后seam可以持久化这些jbpm变量;
3. 提供方便的标签开始一个流程,开始一个任务、结束一个任务。
二、 用法
下面我还是用一个示例讲述工作流的用法,这个示例是一个客户订单审批的例子:客户在网上提交一个订单后,开始订单审批流程;经理查看任务列表,接收订单,查看订单明细信息,根据情况批准或不批准此订单。
1. 流程定义
流程图:
(见附件)
Jpdl文件:
(见附件)
<process-definition name="订单管理"></process-definition>
2. 初始化actor ids
Jbpm对流程中用户的管理是通过actor id和group actor ids.为此seam内置了一个部件Actor来方便指定当前的actor ids.这个工作一般在用户登陆时完成。
@In(create=true) Actor actor
…
Public String login(){
…
Actor.setId(user.getUserName());
Actor.getGroupActorIds().addAll(user.getGroupNames());
…
}
3. 启动一个工作流
@out(scope=ScopeType.BUSINESS_PROCESS,required=false)
Long orderId;
@Out(scope=ScopeType.BUSINESS_PROCESS,required=false)
Float amount;
@Out(value=”customer”,scope=ScopeType.BUSINESS_PROCESS,required=false)
String customerName;
@CreateProcess(definition="OrderManagement")
public void submitOrder() {
try {
completedOrder = purchase(customer, currentOrder);
orderId = completedOrder.getOrderId();
amount = completedOrder.getNetAmount();
customerName = completedOrder.getCustomer().getUserName();
} catch (InsufficientQuantityException e) {
…
} catch (Throwable t) {
…
}
}
4. 任务分配
当开始一个工作流的时候,任务实例被创建,任务实例必须分配给一个用户或用户组,相应seam中分配任务有二种方式—分配给用户或用户组,如:
分配给用户:
<task description="ship order" name="ship"></task>(见附件)
<assignment actor-id="#{ shipperAssignment.actorId}"></assignment>
分配给用户组:
<task description="Ship order" name="ship"></task>(见附件)
<assignment pooled-actors="#{shipperAssignment.pooledActors}"></assignment>
5. 任务列表
有两个内置的seam部件方便显示任务列表—一个是显示分配给组用户的任务,一个是显示分配给当前用户的指定类型的任务。
显示分配给当前用户的指定类型的任务示例如下:
<h:datatable var="task" value="#{taskInstanceListForType['ship']}">
(见附件)<h:column> </h:column>
</h:datatable>
显示分配给当前用户所属组的任务示例如下:
<h:datatable var="task" value="#{pooledTaskInstanceList}">(见附件)<h:column> </h:column>
<h:column>
<s:link value="Assign" action="#{pooledTask.assignToCurrentActor}" taskinstance="#{task}" linkstyle="button">
</h:column>
</h:datatable>
6. 开始任务
Seam提供了两个标注开始任务:@StartTask和@BeginTask.开始任务时开始一个conversation上下文,能在其中访问保存在business process上下文中的变量。
@BeginTask
public String viewTask() {
order = (Order) em.createQuery("select o from Order o join fetch o.orderLines where o.orderId = :orderId")
.setParameter("orderId", orderId)
.getSingleResult();
return "accept";
}
7. 结束任务
Seam提供@EndTask标注结束任务,并指明下一步流程。如:
@EndTask(transition="approve")
public String accept() {
order.process();
return "admin";
}
8. 系统配置
和配置pageflow类似,seam在component.xml文件中配置JBPM.
<component class="org.jboss.seam.core.Jbpm">(见附件) </component>
- 大小: 15.5 KB
- 大小: 247.8 KB
分享到:
相关推荐
- **待办事项示例**(Seam and jBPM: the todo list example):这个示例结合了Seam和jBPM(Java Business Process Management),演示了如何将工作流集成到Seam应用中。具体包括任务的创建、分配和完成等操作。 - *...
- **理解代码**:这部分介绍了如何结合Seam框架和jBPM(Java Business Process Management)来实现待办事项列表的应用场景。 - **工作原理**:详细解释了业务流程管理在Seam框架中的集成方式。 ##### 5. ...
Java EE 框架..................................................................................................................................................................................1 ...
Seam 是一个全面的 Java EE 开发框架,简化了企业级应用的开发过程。它将多种技术,如 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 EJB,融合在一起,为开发者提供了一个统一的平台。在 Open Eye 中,...
2. **bpm**:Business Process Management (BPM) 文件夹可能包含Seam与工作流和业务流程管理相关的示例代码。Seam支持使用JBoss jBPM进行流程建模和执行,这使得开发者可以方便地创建和管理业务流程。 3. **page...
结合了Seam和jBPM(Java Business Process Management),实现了一个待办事项管理应用,展示了如何集成工作流引擎。 1. **代码理解**:重点介绍了如何定义业务流程,并将其与Seam组件关联起来。 2. **工作原理**:...
1. 流程管理:Seam支持BPM(Business Process Management),可以用来定义和执行复杂的业务流程。 2. 国际化与本地化:Seam提供了便捷的国际化支持,方便应用适应不同地区的用户需求。 3. 模板技术:Seam可以与...
它集成了许多技术,如JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0、Java Business Integration (JBI) 和Business Process Management (BPM) 等,旨在简化开发过程并提高...
JBPM(JBoss Business Process Management)是一款开源的工作流和业务流程管理系统。它允许开发者设计、执行和监控业务流程。JBPM提供了图形化的流程建模工具,支持BPMN2标准,使得非技术人员也能理解流程。在"Seam...
- **定义与概念**:业务流程管理(Business Process Management, BPM)是一种用于模型化、自动化和优化业务流程的方法。它旨在通过标准化和改善流程来提高效率并减少错误。 - **BPM在IT中的作用**:BPM工具,如jBPM,...
在Java企业级应用开发中,业务流程管理(Business Process Management,BPM)扮演着重要角色,而Jbpm是一个开源的BPM框架,它提供了流程定义、执行、监控和优化等一系列功能。在使用Jbpm进行开发时,确保正确配置和...
jBPM是一个开源的、纯Java的、轻量级的商业流程管理(Business Process Management, BPM)工作流引擎。它支持多种可执行流程语言,并且可以在任何JavaEE应用服务器或简单的配置了JDBC的JVM环境中运行。jBPM的核心...
JBPM(java Business Process Management)是一个基于JavaEE的轻量级工作流管理系统,旨在支持企业级的流程定义、部署、执行和管理。作为JBoss的一个子项目,它与其他优秀开源项目如Seam、Drools和Hibernate紧密集成...