首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我们可以从JBPM的workitemhandler调用EJB吗?有没有人能给出一些参考网站或例子?

可以从JBPM的workitemhandler调用EJB。JBPM是一个开源的业务流程管理系统,它提供了一个可扩展的工作项处理器(workitem handler)机制,用于处理业务流程中的各种任务。

EJB(Enterprise JavaBeans)是Java平台的一种分布式应用程序组件模型,它提供了一种用于开发企业级应用程序的标准规范。EJB可以提供事务管理、持久化、安全性等功能,可以作为业务逻辑的组件被调用。

在JBPM的工作项处理器中,可以通过编写自定义的Java类来调用EJB。具体步骤如下:

  1. 创建一个实现了org.kie.api.runtime.process.WorkItemHandler接口的自定义类,用于处理工作项。
  2. 在自定义类中,通过EJB的方式调用需要的业务逻辑。
  3. 在JBPM的流程定义文件中,配置工作项处理器的类名和参数。

以下是一个示例代码:

代码语言:java
复制
import org.kie.api.runtime.process.WorkItem;
import org.kie.api.runtime.process.WorkItemHandler;
import javax.ejb.EJB;

public class MyWorkItemHandler implements WorkItemHandler {

    @EJB
    private MyEJB myEJB;

    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
        // 调用EJB的业务逻辑
        myEJB.doSomething();
        // 完成工作项
        manager.completeWorkItem(workItem.getId(), null);
    }

    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
        // 中止工作项
        manager.abortWorkItem(workItem.getId());
    }
}

需要注意的是,为了使EJB能够在JBPM的工作项处理器中被注入,需要在自定义类上使用@EJB注解进行标记。

关于JBPM和EJB的更多信息和示例,可以参考以下网站:

  1. JBPM官方网站:https://www.jbpm.org/
  2. EJB官方文档:https://javaee.github.io/javaee-spec/javadocs/javax/ejb/package-summary.html

希望以上信息对您有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Hibernate缓存配置

    一级缓存 Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用save(),update(),saveorupdate()等方法 及调用查询接口list,filter,iterate时,如session缓存中还不存在相应的对象,Hibernate会把该对象加入到一级缓存中, 当Session关闭的时候该Session所管理的一级缓存也会立即被清除 Hibernate的一级缓存是Session所内置的,不能被卸载,也不能进行任何配置 二级缓存配置: 1、首先要打开二级缓存,在hibernate.cfg.xml中添加如下配置: <property name="hibernate.cache.use_second_level_cache">true</property> 2、Hibernate的二级缓存使用第三方的缓存工具来实现,所以我们需要指定Hibernate使用哪个 缓存工具。如下配置指定Hibernate使用EhCache缓存工具。 <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> 3、Hibernate在默认情况下并不会对所有实体对象进行缓,所以,我们需要指定缓存哪些对象, 在实体对象的映射文件中(相应的<class>标签内部),添加如下配置: <cache usage="read-only"/> usage="read-only"是“只读”缓存策略。 注意,这个<cache>标签只能放在<class>标签的内部,而且必须处在<id>标签的前面!!! 这个<cache>标签放在哪些<class>标签下面,就说明会多这些类的对象进行缓存 4、对于第3步,有一个可选的方案是在hibernate.cfg.xml文件中指定哪些类的对象需要缓存, 而不需要使用<cache>标签来指定。如: 在hibernate.cfg.xml中添加如下配置: <class-cache class="com.bjsxt.hibernate.Classes" usage="read-only" /> 注意,这个<class-cache>标签必须放在<mapping>标签的后面!! Hibernate缓存配置 _____________________________________________________________________________________ Hibernate的缓存分为:   一级缓存:在Session级别的,在Session关闭的时候,一级缓存就失效了。   二级缓存:在SessionFactory级别的,它可以使用不同的缓存实现,如EhCache、JBossCache、OsCache等。 缓存的注释写法如下,加在Entity的java类上:   @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 缓存的方式有四种,分别为:   CacheConcurrencyStrategy.NONE   CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数据进行更新操作,会有异常;   CacheConcurrencyStrategy.READ_WRITE,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询;   CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不严格的读写模式则不会的缓存数据加锁;   CacheConcurrencyStrategy.TRANSACTIONAL,事务模式指缓存支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境。 另外还有如下注意事项:   1、查询缓存需要在Query的相应方法执行前加上这么一句:   query.setCacheable(true);   在使用Hibernate时,获得的query有setCacheable方法,可以设置使用缓存,但当使用JPA时,javax.persistence.Query并没有setCacheable方法,此时如果JPA的实现是Hibernate时,可以将其进行如下转化,再调用setCacheable方法(如果JPA的实现是其它ORMAP框架,就不知道怎么做了)。 if (query

    01

    作为Java架构师,我曾经一样迷惘想成为什么样的人,想要什么样的生活把自己当做一种商品,商品必然存在价值作为程序员,你首先要问自己一个问题:“我真的喜欢编程吗在编程的路上必须要有动力永远不要把自己的成

    记得有人说过一句话,大体意思是:现在计算机技术发展那么迅速,日新月异,那些学计算机技术的人,要不断学习才能不被淘汰,那些人的脑子是不是坏掉了,干嘛要让自己活的这么累?表示不解。不想时隔几年,我也进入了这个飞速发展的IT行业。大概是随着时间的推移,个人价值观也随之改变了吧! 初入这个行业的程序员是迷茫的,处在金字塔的最底端,拿可怜的薪水,无休止的加班,被“高薪”和“码农”的代名词交替映射着,亦步亦趋的行进着,什么职业规划都是飘渺的空虚的,月光族都是向钱看的。直到无意看到一篇针对程序员的文章,感觉收获颇丰

    07

    对大数据产生视觉疲劳?给你来点新鲜的

    经过了几年声嘶力竭的热炒,"大数据"这个议题对大家来说已经有一点审美疲劳了,但这也是最重要的时期,让我们能够看到大数据真正的价值所在。因为我们都知 道,大数据不是说的,而一定是做出来的。正如牛津大学教授维克托·迈尔·舍恩伯格《大数据》这本书里提到的,今天大数据在逐渐改变着我们的思维方式,我们 的生活方式,以及未来在这上面会有更多的创新,能够给我们带来革命的改变。 同时,麦肯锡研究院2011年的数据报告显示,互联网处于数据量飞速增长的阶段。而在互联网这个数字生态圈中,数据分析不再是商业的辅助手段,数据本身蕴

    06
    领券