如何将 BookManager EJB 服务与 BPEL 流程集成?如果您使用的是 Integration Developer V6.0.1 或更早版本,则需要执行许多手动工作,其中包括为 EJB 方法参数 Java Bean 创建业务对象、创建匹配 EJB 接口的 WSDL 接口和创建 Java 桥接 SCA 组件。该流程非常耗时,并且容易出错,这将大大影响现有 Java 或 EJB 构件的重用。
幸运的是,使用 Integration Developer V6.0.2 中的高级工具支持,可以自动完成所有上述任务,这样可以更容易地使用 SCA 组件的任何 Java 或 EJB 服务。
让我们使用新的方法和工具支持来继续该示例。
-
首先在 BookManagerEJB 外创建 EJB 客户端项目通过选择 Window => Show views => Other... 打开 Navigator 视图,然后右键单击 BookManagerEJB 项目(图 5)。
-
返回到 Business Integration 视图,打开模块 BookOrderingProcess 的组装图。该图应该是空的。
-
打开 Navigator 视图,展开 BookManagerEJBClient 项目,选择 BookManager.java,然后将其拖放到空画布中(图 6)。
-
对话框会显示,询问要创建什么类型的组件。本例中为 Import with Stateless Session Bean Binding(图 7)。
-
单击 OK。再次询问您是否需要创建映射组件。单击 Yes(图 8)。
-
最后的步骤将询问您是否将 BookManagerEJBClient 项目作为 Java 依赖项添加到流程模块。单击 OK。(图 9)。
-
图 10 显示了完成拖放后的关系图。您有一个 Java 映射器组件和一个 EJB 导入组件。
正如您前面看到的,两个组件是自动生成并放入组装图的。还有一个 SCA POJO 组件,它是前面讨论的桥接/映射代码。它具有 W 类型的接口,但是它还具有连接到 EJB 导入组件的 J 类型引用。如果打开 Navigator 视图,则将看到基础构件(图 11)。
您现在可以完成 BPEL,并使用生成的构件来访问 EJB 服务(图 12)。(BPEL 开发的详细信息不在本文的讨论范围之内,所以这里仅列出主要步骤。)
-
在 BPEL 编辑器中打开 BookOrderProcess。在 Business Integration 视图中,找到 BookManager 接口,并将其拖放到引用的合作伙伴调色板。
-
创建两个变量:ArrayofBook 类型的
BookList和 String 类型的Category。 -
创建 AssignCategory,它可以将 OrderInput 目录属性映射到变量目录。
-
将 GetRecommendedBooks 节点更改为调用活动,并填充属性的详细信息。
-
请使用下面的代码作为指导在 DisplayBooks Java 代码片段中输入一些示例数据详细信息,并保存更改。
System.out.println("Get result from EJB services"); List books = BookList.getList("Book"); DataObject bookBO = (DataObject)books.get(0); System.out.println("Book Name: " + bookBO.getString("title")); System.out.println("Book Author: " + bookBO.getString("author")); -
返回到组装图,并将 BPEL 流程组件放在其中。在组装图中,从业务流程组件到桥接组件的 WSDL 接口建立连接。编辑器在 BusinessProcess 组件上创建匹配的 WSDL 引用,以完成桥接。Facade 映射组件不包括任何业务逻辑;它只支持 Java 接口和 WSDL 引用之间的连接。图 13 中的组装图显示了 BusinessProcess 组件通过桥接组件连接到 SLSBImport Java 导入。
