180 - flowable-cdi流程bean管理

Posted 分享牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
了解更多文章可以关注微信公众号:

以上是关于180 - flowable-cdi流程bean管理的主要内容,如果未能解决你的问题,请参考以下文章

181 - flowable-cdi流程bean管理流程事件

181 - flowable-cdi流程bean管理流程事件

179 - 流程的部署与关联会话

179 - 流程的部署与关联会话

Java面试题集(151-180)

AzureDevops 项目委员会累积流程图是不是仅限于 180 天的报告?