BPEL 面向 WLI 用户的 SOA 套件概要

比较:WLI 文件控件和 Oracle 文件适配器

作者:Daniel Amadei 和 Heidi Buelow

面向 WLI 用户的 SOA 套件概要系列的这一部分将介绍与 WebLogic Integration 的文件控件功能相对应的 Oracle BPEL 流程管理器功能。

2009 年 5 月发表

本文相关下载:
 Oracle SOA 套件

[ 第 1 页] [ 第 2 页] [ 第 3 页] [ 第 4 页]

在 BPEL 中使用 FTP 接收 XML、转换为 CSV 并写入文件

在这最后一个用例中,我们将读取文件,然后以逗号分隔值 (csv) 格式写入数据。此时,我们将显示如何轮询目录中的文件(如果您愿意,可以改为使用与第一个用例中相同的方法读取文件,以便与第三个 WLI 用例更密切地保持一致)。我们通过轮询文件并让读取服务启动 BPEL 流程来启动流程。然后,我们使用 FTP 适配器并将数据设置为 csv 格式来写入文件。

您必须配置 FTP 服务器以用于此项目。要设置本地 FTP,请从示例文件的文件夹中获得 ftpserver-1.0.0-M3.zip 文件并解压缩到 /tmp 中。

接下来,确保将 JAVA_HOME 环境变量设置为 Java JDK 的本地安装。

要从 Windows 中的命令提示符或 Unix 中的 shell 启动 FTP 服务器,请转到 /tmp/ftpserver-1.0.0-M3/bin 目录并运行以下命令

  • 在 Windows 中
ftpd.bat res/conf/ftpd-typical.xml
  • 在 Linux 中
ftpd.sh res/conf/ftpd-typical.xml

SOA 套件服务器已经配置为使用 FTP 客户端访问 FTP 服务器。让我们针对新的 FTP 服务器更新此配置。无论您使用 OC4J 还是 WebLogic 服务器,更新连接工厂的步骤都类似。

  • OC4J 服务器:打开应用服务器控制台,地址为 http://localhost:8888/em,将 localhost 替换为在其中部署了您的服务的服务器的名称(如果此服务器不是您的本地计算机)。使用用户名 oc4jadmin 以及您的配置口令登录。选择 home -> applications -> default -> FTP adapter -> Connection Factories -> eis/DB/FTPAdapter,针对此配置更新属性。对于 host,输入运行 FTP 服务器的计算机的主机名或 IP 地址(如果 SOA 套件和 FTP 服务器在同一计算机上,则您可以使用 localhost)。将 password 域设置为 admin,然后转到第 2 页,将 username 设置为 admin。选择 Apply
  • WebLogic 服务器:打开服务器控制台,地址为 http://localhost:7001/console,将 localhost:7001 替换为 WebLogic 服务器的名称和端口(如果不同)。在左侧导航栏上,选择 Deployments。选择 FTPAdapter -> Configuration -> Outbound Connection Pools。选择 javax.resource.cci.ConnectionFactory 右边的加号 ( +) 将其展开,可以看到 eis/Ftp/FtpAdapter 已列出。选择 eis/Ftp/FtpAdapter 更新属性。对于 host,输入运行 FTP 服务器的计算机的主机名或 IP 地址(如果 SOA 套件和 FTP 服务器在同一计算机上,则您可以使用 localhost)。将 password 域设置为 admin,将 username 设置为 admin。选择 Save

现在,我们将创建新的 BPEL 项目。在 JDeveloper 中,右键单击应用程序并选择 New Project。在 General/Projects 下,选择 BPEL Process Project 作为项目类型。输入 TransformXmlToRawDataAndWriteToFTP 作为流程名。选择 Empty BPEL Process 作为模板类型。选择 Finish。将创建项目。

bpel_03_read2.png

Receive 活动拖到 Drop Activity Here 框。当此活动处于正确位置时,它将以黄色高亮显示。通过将左箭头拖到 readPartnerSchema partnerlink,将 receive 活动关联到此 partnerlink。将打开 receive properties 对话框。将自动填充 partnerlink 和操作。输入 Receive_Stocks 作为名称并选择 Auto-Create Variable 按钮。在 Create Variable 对话框中,将变量名更改为 stocksXML,然后选择 OK。在 Receive 对话框中,选中 Create Instance 复选框,然后选择 OK

现在,创建用于写入 csv 文件的服务。我们将使用 FTP 写入文件。

将 FTP 适配器拖到 BPEL 设计屏幕右侧的 Services 窗格。将打开向导。选择 Next 进入第 1 步。输入 FTPFileControl 作为服务名并选择 Next

bpel_03_ftp1.png

在向导的此页面上,设置 FTP JNDI 名称。这是在 SOA 套件服务器管理中配置的 FTP。接受默认值 eis/FTP/FTPAdapter 以使用您先前编辑的 FTP 设置。

bpel_03_ftp2.png

选择 ASCII 作为文件类型,选择 Put 作为操作类型,然后选择 Next。输入您将向其中写入文件的目录。在此示例中,它必须是 FTP 服务器结构内的目录。输入正斜线 ( /) 将文件写入所提供的示例 FTP 服务器的默认位置。对于 File Naming Convention,输入 partnerStocks%SEQ%.csv_。保留其余的值为默认值并选择 Next

bpel_03_ftp3.png

现在,我们将设置输出格式。选择 Define Schema For Native Format 按钮启动原生格式构建器向导。在第 1 步中,选择 Create new native format 和 Delimited 单选按钮,然后选择 Next

使用 Browse 按钮打开示例文件目录中提供的示例 stocks.csv 文件。您将在窗口中看到文本。选择 Next

v

选择 File contains multiple record instances 并选择 Next

bpel_03_write4.png

根据需要输入命名空间并输入 Stocks 作为多个记录的元素名,输入 Stock 作为单个记录元素名,然后选择 Next

bpel_03_write5.png

再选择三次 Next 接受格式规范的默认值,然后选择 Finish

bpel_03_write6.png

bpel_03_write7.png

bpel_03_write8.png

返回适配器向导,您将看到新创建的用于定义字符串数据的 xsd。选择 Next,然后选择 Finish

bpel_03_write9.png

在 partner link 对话框上,选择 OK

v

我们将调用写入服务,并使用正确的消息类型创建所需变量。然后,我们将输入数据转换为输出数据,并已完成。

Invoke 拖到 Receive 正下方。将其关联到 FTPFileControl partnerlink,将打开 Invoke 对话框。

bpel_03_invoke3.png

将 Invoke 命名为 Invoke_FTPFileControl,并选择 Input Variable 框右边的 Automatically Create Input Variable 按钮。

将变量名更改为 stocksCSV。选择 OK。选择 OK 设置调用属性。

bpel_03_invoke4.png

现在,我们需要将从文件中读取的数据转换为输入到 FTP 服务所需的格式。

Transform 活动拖放到 ReceiveInvoke 活动之间。将源设置为 stocksXML,将目标设置为 stocksCSV。输入转换文件名并选择 Create

bpel_03_transform00.png

此时,字段名不同,您必须手动关联每个字段。关联这三个字段之后,将 Stocks 关联到 Stocks,将创建 for-each XSLT 结构,或手动添加它,以便结果如下图所示。选择 Save All

bpel_03_transform1_small.png

您已完成了此用例的实现。

确认 FTP 服务器正在运行之后,您可以进行部署。此流程将轮询文件并等待文件显示。上一个用例中的输出文件 partnerStocks_1.xml 是此用例的输入文件,或者您可以使用示例目录中提供的 partnerStocks.xml。将文件移动或复制到此流程的输入目录中。将看到文件消失,然后检查 FTP 默认输出目录 \tmp\ftpserver-1.0.0-M3\res\home 以查看新的输出文件。查看此文件的内容。您还可以在 BPEL 控制台中查看审计跟踪。

bpel_03_outputfile.png

此用例显示如何将文件中的数据从一种格式更改为另一种格式。您可以根据需要扩展 BPEL 流程以便通过其他方式操作数据。

您已经完成三个用例,它们显示了文件适配器功能的不同特性。如您所见,使用点击式声明编辑创建此功能十分简单。您可以读取和写入各种格式的文件,并根据需要在 BPEL 流程内转换数据。

要点和建议

本文重点介绍了如何在 WLI 和 BPEL PM 中进行同步文件操作和数据转换。

下表列出了本文所介绍的内容,重点说明了如何分别在 WLI 和 BPEL PM 中实现每个特性。两种产品都提供了所需的功能。

特性 如何在 WLI 中实现? 如何在 BPEL 中实现?
同步文件读取 文件控件 文件适配器
同步文件写入 文件控件 文件适配器
异步文件读取(轮询) 通过事件生成(在另一篇文章中采用)实现 文件适配器
FTP 支持 文件控件 FTP 适配器
同步文件操作:复制、删除以及重命名 文件控件 文件适配器
XML 支持 使用 XMLBeans 原生 XML
具格式设置的内容支持 使用 MFL 文件适配器

有经验的 WLI 用户将发现,他们在 WLI 中使用的用于文件处理的所有功能在 Oracle BPEL PM 中都有提供。

Oracle BPEL 流程管理器的设计时提供了点击式声明样式用户界面,可让新用户迅速上手,快速、轻松地将他们带入 Oracle SOA 套件的世界。

[第 1 页] [ 第 2 页] [ 第 3 页] [ 第 4 页]

关于作者
Daniel Amadei Daniel Amadei 任职高级顾问,专攻 SOA 和集成技术。他近年来一直使用 SOA,并从 1999 年开始就使用 Java 技术。在认证资格方面,他是 BEA 认证 SOA 架构师和 Sun 认证企业架构师 (SCEA)。
Heidi Buelow Heidi Buelow 是主管 SOA 技术的 Oracle 产品经理。十多年来,她一直从事用于业务流程管理系统的中间件的开发工作。