Java 在 Oracle BPM 中的用武之地

        Oracle业务流程管理套件,全称为 Business Process Management  ( BPM ) Suite 提供了一个开发、管理基于业务流程的商业应用的集成环境。目前Oracle BPM 从建模、实施、运行时监控等方面对业务流程进行全面支持。Oracle BPM 建立在Oracle SOA之上,BPM在构建应用时,可以使用很多来自SOA Suite的组件,比如下面提到的 EJB Adapter 和 JMS Adapter 等等都来自于SOA Suite提供的JCA Adapters。

        作为一个Java 开发背景的程序员在最开始使用Oracle BPM开发套件时,总会情不自禁的想,这个功能我用Java会怎么怎么做。而且,Java实现有时确实能够弥补BPM提供的组件化封装所带来的局限性。这里把在BPM开发应用中能够与Java集成的方法进行收集、整理,以期对BPM开发人员,尤其是有Java背景的朋友有所帮助。

• Web Service

      由于BPM是基于SOA架构之上,所以调用Java最直接的方式就是通过将预调用的服务使用JAX-WS封装成Web service。从而通过Web Service 组件进行调用。

• Direct Binding service


 上面的Web service组件实现了BPM Composite调用Java的可能性。但反过来,如果把BPM Composite应用发布为Web service,Java也可以很轻松的调用BPM Composite应用。但Direct Binding Service 可以让Java通过RMI直接调用BPM Composite。对于Direct Service Binding允许外部客户端使用Direct Binding Invocation API 通过接收的JNDI参数与BPM Composite建立连接;对于Direct Reference Binding可以通过RMI发送SOA消息到外部客户应用。但前提是这个应用必须实现SOA Invocation API。关于Service 和Reference概念可以理解为一个输入,一个输出。可以类比Java的InputStream和OutputStream。

• JMS Adapter

Java Messaging Service 为分布式环境下的消息分发提供了一种松耦合、易于扩展的解决方案。很多Java应用使用JMS来达到系统间的集成。BPM Composite 就使用JMS Adapter 来达到与Java 世界的集成。通过JMS Adapter可以对消息队列或消息主题进行监听,从而产生一个BPM Composite实例, 或者将消息发布到特定的队列或主题,以触发潜在消费者的响应。

• EJB Adapter

该Adapter 提供了BPM Composite应用与EJB 的交互。在同一个或不同JVM上运行的EJB应用可以被Composite应用轻松调用。EJB和 BPM Composite应用之间的通信主要有两种方式。第一种就是RMI,使用基于Java接口的POJOs,这种方式无需定义WSDL 和 XSD;第二种方式是基于SDO (Service Data Object) ,这需要将EJB发布成web service的方式,有对应的WSDL 和 XSD。

• Socket Adapter

这个Adapter为BPM Composite应用通过TCP/IP 套接字与外面的世界进行网络通信提供了一个可行的解决方案。我们可以使用Socket adapter 创建一个客户端 socket或者服务器端socket,从而java及所有支持TCP/IP 套接字通信的应用进行交互。

• Spring Context Component

使用Spring Context Component 使得我们可以通过将Java的逻辑实现暴露为Spring Bean 的形式进行调用。使用该组件,我们无需将Java实现部署成一个单独的应用、或者JAX-WS web service,或者是EJB,从而达到良好的封装,可重用的效果。通过Spring Context Component包装好的Java应用可以通过 WSDL和XSD进行定义并访问。

• BPEL Embedded Java

可以通过Java Embedding Activity来嵌入Java 代码到BPEL中。这个功能的特点是它能访问BPEL 中的变量,包括读和写。 通过它可以发挥Java的强大功能,同时可以执行自定义的Java类和安装在SOA 服务器上的其他Java类库。 这种方式使的Java 和BPEL 藕合在了一起. 显然不时特别好的东西。所以, 一般用到它时,主要是为了进行一些简单直接的任务,如计算,或调用EJB 服务等。

• BPEL Custom Sensor

    BPEL Sensor 可以跟踪BPEL Process Instance中的活动、变量、和错误。Sensor收集到的信息可以被已关联的 Sensor Action 进行响应,进而将Sensor所发出的signal 定向到数据库、本地JMS队列、或者通过JMS Adapter 到达某个位于分布式环境中基于JMS的应用、或者是自定义的Java类。 如果是Java类的话,当被调用时,不能操作BPEL Process的变量和影响现有的工作流。

• Mediator Java Callout

   Java Callout机制使得使用自定义的Java类来处理流经Mediator的消息。自定义的Callout 类必须要实现oracle.tip.mediator.common.api.IjavaCallout 接口。

        除上述涉及到的技术点可以实现Java和 BPM Composite的交互外,我们还有其它一些选择,尽管这些在实际中用的不多。其中之一是通过Java定义自定义的Xpath函数。这样,在BPEL,Mediator,和所有的XPath 表达式编辑器中都可以访问;另一种方式就是使用Java实现自定义的JCA Adapter。 SOA Suite中现有的诸如File Adapter,JMS Adapter,和Database Adapter都是通过实现JCA 规范进行创建的。也就是说,我们可以通过实现JCA 规范来设计自己的 JCA Adapter。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值