主题
面向服务的架构
比较:WLI 文件控件和 Oracle 文件适配器作者:Daniel Amadei 和 Heidi Buelow 面向 WLI 用户的 SOA 套件概要系列的这一部分将介绍与 WebLogic Integration 的文件控件功能相对应的 Oracle BPEL 流程管理器功能。2009 年 5 月发表
[ 第 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 目录并运行以下命令
ftpd.bat res/conf/ftpd-typical.xml
ftpd.sh res/conf/ftpd-typical.xml SOA 套件服务器已经配置为使用 FTP 客户端访问 FTP 服务器。让我们针对新的 FTP 服务器更新此配置。无论您使用 OC4J 还是 WebLogic 服务器,更新连接工厂的步骤都类似。
现在,我们将创建新的 BPEL 项目。在 JDeveloper 中,右键单击应用程序并选择 New Project。在 General/Projects 下,选择 BPEL Process Project 作为项目类型。输入 TransformXmlToRawDataAndWriteToFTP 作为流程名。选择 Empty BPEL Process 作为模板类型。选择 Finish。将创建项目。 将 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。 在向导的此页面上,设置 FTP JNDI 名称。这是在 SOA 套件服务器管理中配置的 FTP。接受默认值 eis/FTP/FTPAdapter 以使用您先前编辑的 FTP 设置。 选择 ASCII 作为文件类型,选择 Put 作为操作类型,然后选择 Next。输入您将向其中写入文件的目录。在此示例中,它必须是 FTP 服务器结构内的目录。输入正斜线 ( /) 将文件写入所提供的示例 FTP 服务器的默认位置。对于 File Naming Convention,输入 partnerStocks%SEQ%.csv_。保留其余的值为默认值并选择 Next。 使用 Browse 按钮打开示例文件目录中提供的示例 stocks.csv 文件。您将在窗口中看到文本。选择 Next。 选择 File contains multiple record instances 并选择 Next。 根据需要输入命名空间并输入 Stocks 作为多个记录的元素名,输入 Stock 作为单个记录元素名,然后选择 Next。 再选择三次 Next 接受格式规范的默认值,然后选择 Finish。 返回适配器向导,您将看到新创建的用于定义字符串数据的 xsd。选择 Next,然后选择 Finish。 在 partner link 对话框上,选择 OK。 我们将调用写入服务,并使用正确的消息类型创建所需变量。然后,我们将输入数据转换为输出数据,并已完成。 将 Invoke 拖到 Receive 正下方。将其关联到 FTPFileControl partnerlink,将打开 Invoke 对话框。 将 Invoke 命名为 Invoke_FTPFileControl,并选择 Input Variable 框右边的 Automatically Create Input Variable 按钮。 将变量名更改为 stocksCSV。选择 OK。选择 OK 设置调用属性。 现在,我们需要将从文件中读取的数据转换为输入到 FTP 服务所需的格式。 将 Transform 活动拖放到 Receive 和 Invoke 活动之间。将源设置为 stocksXML,将目标设置为 stocksCSV。输入转换文件名并选择 Create。 此时,字段名不同,您必须手动关联每个字段。关联这三个字段之后,将 Stocks 关联到 Stocks,将创建 for-each XSLT 结构,或手动添加它,以便结果如下图所示。选择 Save All。 您已完成了此用例的实现。 确认 FTP 服务器正在运行之后,您可以进行部署。此流程将轮询文件并等待文件显示。上一个用例中的输出文件 partnerStocks_1.xml 是此用例的输入文件,或者您可以使用示例目录中提供的 partnerStocks.xml。将文件移动或复制到此流程的输入目录中。将看到文件消失,然后检查 FTP 默认输出目录 \tmp\ftpserver-1.0.0-M3\res\home 以查看新的输出文件。查看此文件的内容。您还可以在 BPEL 控制台中查看审计跟踪。 此用例显示如何将文件中的数据从一种格式更改为另一种格式。您可以根据需要扩展 BPEL 流程以便通过其他方式操作数据。 您已经完成三个用例,它们显示了文件适配器功能的不同特性。如您所见,使用点击式声明编辑创建此功能十分简单。您可以读取和写入各种格式的文件,并根据需要在 BPEL 流程内转换数据。 要点和建议本文重点介绍了如何在 WLI 和 BPEL PM 中进行同步文件操作和数据转换。 下表列出了本文所介绍的内容,重点说明了如何分别在 WLI 和 BPEL PM 中实现每个特性。两种产品都提供了所需的功能。
有经验的 WLI 用户将发现,他们在 WLI 中使用的用于文件处理的所有功能在 Oracle BPEL PM 中都有提供。 Oracle BPEL 流程管理器的设计时提供了点击式声明样式用户界面,可让新用户迅速上手,快速、轻松地将他们带入 Oracle SOA 套件的世界。
|
||||||||||||||||||||||||||||||||||