Flowable入门系列文章180 - flowable-cdi流程bean管理

1、从流程中引用Bean

Flowable-cdi使用自定义解析器将CDI bean展示给Flowable El。这使得可以从流程中引用bean:

<userTask id="authorizeBusinessTrip" name="Authorize Business Trip"
flowable:assignee="#{authorizingManager.account.username}" />

“授权管理器”可以是生产者方法提供的bean:

@Inject @ProcessVariable Object businessTripRequesterUsername;
@Produces
@Named
public Employee authorizingManager() {
TypedQuery<Employee> query = entityManager.createQuery("SELECT e FROM Employee e WHERE e.account.username='"
+ businessTripRequesterUsername + "'", Employee.class);
Employee employee = query.getSingleResult();
return employee.getManager();
}

我们可以使用相同的特性来使用flowable:expression=“myEjb.method()”-extension 在服务任务中调用EJB的业务方法。请注意,这需要-class @Named在MyEjb-class上。

2、使用@BusinessProcessScoped bean

使用flowable-cdi,bean的生命周期可以绑定到一个流程实例。为此,提供了一个自定义上下文实现,即BusinessProcessContext。

BusinessProcessScoped bean的实例作为流程变量存储在当前流程实例中。BusinessProcessScoped bean需要是钝化能力(例如Serializable)。以下是一个进程范围的bean的例子:

@Named
@BusinessProcessScoped
public class BusinessTripRequest implements Serializable {
private static final long serialVersionUID = 1L;
private String startDate;
private String endDate;
// ...
}

有时,我们希望在流程实例没有关联的情况下使用流程范围的bean,例如在启动流程之前。如果当前没有任何流程实例处于活动状态,则BusinessProcessScoped bean的实例将临时存储在本地范围内(即对话或请求,具体取决于上下文)。如果此范围稍后与业务流程实例关联,则将bean实例刷新为流程实例。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值