云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云数据库_哪个网站建设好_免费领

小七 141 0

云数据库_哪个网站建设好_免费领

在aBPM框架中有很多特性和功能,可以帮助快速实现定制场景,但在某些aBPM自定义方案中,在aBPM流程实例持久化或aBPM/BPM流程启动之前,需要使用JMS队列来存储触发消息。在以下博客中,大数据概念,您可以找到在aBPM方案中使用JMS队列的解决方案。

用例:

aBPM/BPM流程无法成功启动,e、 g.在异常或相关数据无法读取的情况下,大数据分析过程,aBPM/BPM流程可以持久化或启动。在这种情况下,初始启动触发器将被忽略或丢失,没有aBPM进程或BPM进程的跟踪,云发布,但默认跟踪中的日志条目除外。为了防止这种行为,可以将初始启动触发器存储到JMS队列中,并由消息驱动bean(message-driven bean,MDB)使用。

提示:在JMS上有很多技术背景help.sap.com帮助关于将SAP Netweaver内部的Java消息服务用作Java。请在继续此博客之前查看此参考资料。

aBPM解决方案环境:

此博客的aBPM szenario是一个"查询过程",将通过外部系统的web服务调用启动。此web服务的实现是从企业服务存储库(ESR)中创建的WSDL文件生成的无状态会话bean。

查询过程的技术实现是相关的先决条件(读取查询数据、持久化和启动aBPM过程,等)封装到"开始查询过程提供程序"(不是本博客的一部分)中,该程序返回一个布尔值(true/false)。如果应该获取查询的用户不在UME/user存储中,则为True,否则为false。如果为真,查询过程取消消息将触发第二个JMS队列。

解决方案:

在NWDS内部生成接收触发器以启动查询过程的web服务的无状态会话bean。这个EJB的典型实现可能是这样的:

在这个实现中,启动提供者可能会遇到异常,并且原始的触发器消息将丢失。为防止此问题,可以将JMS消息存储到JMS队列中。

有2个选项可以获取对JMS队列的引用:

选项1只能在EJB中使用一个JMS队列的情况下使用。在这个博客中,将使用两个JMS队列(1。存储初始启动触发器,2。在查询用户不存在的情况下存储进程取消触发器)。这就是在以下源代码中使用JNDI查找方法的原因:

如果启动查询进程提供程序中出现异常,将创建JMS映射消息并发送到InquiryPrcQueue。JMS映射消息包含开始查询过程提供程序的所有相关数据,返利app下载,以及用于分析的原始触发器消息的编组负载。

如果没有异常,并且用户不存在于用户存储区内,将创建另一条JMS映射消息并发送到InquiryPrcCancelQueue。此JMS消息包含用于取消BPM进程的所有相关数据(相关条件的值)。

使用map消息键中的常量只是以优雅的方式设置和获取map消息中的值。

下一步是通过MDB使用这些JMS消息。InquiryPrcQueue的MDB示例如下所示:

MDB的默认行为是JMS队列上的侦听器模式,用于接收JMS消息。在onMessage()操作中,接收到的消息将被使用,map消息的值将用于执行start inquiry process provider。如果成功,消息将自动删除/确认。在出现异常的情况下,将抛出一个运行时异常,以通知JMS服务器增加JMS消息的max delivery attempts计数器。MDB再次尝试在间隔后使用消息。如果达到最大传递尝试次数限制,则邮件将自动移动到错误队列中。否则同一消息同一错误将执行到判决日。

MDB的实现与web服务实现中的无状态会话bean"几乎"相同,以启动aBPM/BPM进程。唯一的区别是,在MDB工作期间,web服务实现在触发器消息的原始有效负载值上工作,而JMS消息值则在MDB工作期间工作图示:

ejb-j2ee-引擎.xml:

ejb-jar.xml文件:

jms-资源.xml(EAR DC的部署描述符):

在构建和部署之后,淘客程序,应该消除在aBPM/BPM进程被持久化或启动之前丢失aBPM/BPM进程的启动触发器消息的行为。