内容


使用 WebSphere Cast Iron Cloud Integration 整合云应用程序

Comments

简介

云应用程序正逐渐流行起来,结果是许多公司最终处于一个公共云,私有云以及公司内部应用程序的混乱世界里。应用程序平台的灵活性为如何集成云解决方案与已有系统和应用程序带来了挑战。 本文会向您展示 IBM® WebSphere® Cast Iron Cloud Integration (简称为 WebSphere Cast Iron) 如何极大地简化了企业内部应用程序和云应用程序之间的整合。本文中的示例使用了一个 mySQL 数据库、Oracle® CRM on Demand 以及 WebSphere Cast Iron Cloud Integration V6 (在 V5 上也可以运行)。

关于 WebSphere Cast Iron Cloud Integration

WebSphere Cast Iron 使您可以简单且快速地将位于公共且/或私有云中的业务应用程序与公司内部的应用程序整合起来。WebSphere Cast Iron 的功能包括:

连通性
WebSphere Cast Iron 提供与各种不同类型端点的连通性,包括普通文件、数据库、消息系统和 web 服务,以及 SAP、Siebel、JD Edwards 和 Lotus Domino 等应用程序。
转换
WebSphere Cast Iron 支持协议和数据转换。
工作流
WebSphere Cast Iron 让您可以使用不同的工作流元素,例如 if 操作和循环。
管理
WebSphere Cast Iron 提供了强大的管理界面,例如易于使用的 Web Management Console。

定义整合的工作流被称为编排(orchestration), 而 orchestration 中的不同任务被称为 活动(activities)。为了实现快速整合,WebSphere Cast Iron 包含了一个开发工具 —— WebSphere Cast Iron Studio,您可以在开发机器上运行,或者将其作为云服务的一部分通过浏览器访问。该工具使得您可以通过拖拽来构建图形化的编排,这样不需要编码就可以实现配置。为了加快开发速度以及提高可重用性,WebSphere Cast Iron 为上百个不同的整合场景,提供了一个模板整合项目( TIP)在线存储库。创建一个项目后,您可以将其部署到以下任意一个设备上,这些设备 都提供了相同的功能:

WebSphere DataPower Cast Iron Appliance XH40
一个功能完备的物理设备。
WebSphere Cast Iron Hypervisor Edition
一个可以安装在已有虚拟化平台上的虚拟设备。
Cast Iron Cloud2
一个多用户共享的云服务,可以用来设计、运行并管理所有云中的应用程序。

更多 WebSphere Cast Iron 的信息,请参考文章最后的 参考资料

整合场景

您将使用 WebSphere Cast Iron 来同步两个端点之间的账户数据。数据来源于一个 Oracle MySQL 数据库,目标是 Oracle CRM on Demand。在 Oracle CRM on Demand 中会创建新的账户,并且更新已有的账户。同步会通过一个 HTTP 请求或者 WebSphere Cast Iron 调度器触发。端点配置存储在配置属性中,这样您可以稍后通过 Web 管理控制台来修改它们,而不用重新部署。

MySQL 数据库

账号数据储存在表 Accounts 的 MySQL 数据库 mysqldb 中。ACCOUNT_NAME 和 ACCOUNT_NUMBER 是主键并且类型均为 varchar()。 用于支付和运送的 country 字段包含一个两个字母的国家代码,例如 DE 表示德国,或者 US 表示美国。用于支付和运送的 state 字段包含一个两个字母的州代码,例如德国中的 01 或者美国中的 CA。更多关于数据库结构和示例账户的详细内容,请参考文章最后的 清单 2. 创建一个示例账户的 SQL 语句

模板存储库

WebSphere Cast Iron 提供了一个模板整合项目存储库,使得您可以重用已有资产,以及将您的资产与社区共享。查找所有模板看是否有合适的可供使用。下面的描述表明了如何使用 WebSphere Cast Iron Studio 来查找一个模板。如果您能够访问 Cast Iron Cloud2 服务,登录到 Cloud2,然后点击 Creat 来访问模板存储库,并且按照下面的指示,从步骤 4 开始进行操作。括号中标明了不同之处。

  1. 启动 WebSphere Cast Iron Studio 。
  2. 在输入面板上,点击 Find solutions 旁边的按钮(或者选择 Solutions => Search for TIPs)来访问模板存储库。输入您的身份信息以连接到存储库中。
  3. 点击 Filter 通过端点进行搜索。
  4. 选中一个目标端点 Oracle CRM on Demand 然后点击 Query(在 Cloud2 中点击 Search )。您会得到一个可用的模板整个项目列表:
    图 1. 获取用于 Oracle CRM on Demand 的模板列表
    获取用于 Oracle CRM on Demand 的模板列表
    获取用于 Oracle CRM on Demand 的模板列表
  5. 如您所见,没有可用于同步 MySQL 和 Oracle CRM on Demand 账户的模板整合项目。 但是您可以使用一个相似的模板整合项目。点击模板整合项目 T0120。它提供了一个在 Oracle EBS 和 Oracle CRM on Demand 之间的账户同步。正如您可能了解的一样,Oracle EBS 是一个基于数据库的系统,因此与我们现在面对的场景十分相近。
  6. 下载项目 T0120:点击 Download 并且要求指定项目的存储位置。(对于 Cloud2, 点击 Create a project based on this template 在浏览器窗口中启动 Studio )。
  7. 您会收到一个警告,提示项目基于旧版本的 Studio 创建。点击 Yes 并且 WebSphere Cast Iron Studio 会将项目自动迁移到 V6。

现在您已经基于模板创建了一个项目,接下来还需要对它进行调整。

模板向导

模板整合项目配置向导会自动启动,并且通过几个步骤引导您自定义项目。您需要配置您的端点配置文件并且调整账户映射。

  1. 简介面板会提供模板的描述和配置步骤:
    图 2. 模板 T0120 的简介面板
    模板 T0120 的简介面板
    模板 T0120 的简介面板

    阅读说明后点击 Next
  2. 在 Oracle EBS 11i DB 身份认证面板上,调整配置属性以适用于 MySQL 的安装:
    1. 点击字段 Oracle_DatabaseName 并将其重命名为 MySQL_DatabaseName。点击值字段并且根据您的环境进行调整。
    2. 同样,对其他四个配置属性进行调整 ( MySQL 的默认端口是 3306)。然后点击 Next
  3. 在连接到 Oracle EBS 11i DB 面板上,定义 MySQL 数据库:
    1. 将数据库类型修改为 MySQL
    2. 点击字段端口右侧的标记,将固定端口值 3306 替换为配置属性 MySQL_Port。同样对密码字段也进行替换。
    3. 检查您是否需要修改其他设置。您最终的设置应该如图 3 所示:
      图 3. MySQL 数据库配置面板
      MySQL 数据库配置面板
      MySQL 数据库配置面板

      检验设置:点击页面下部的 Test connection 。在测试过程中,WebSphere Cast Iron Studio 会连接到数据库并校验身份。您应该会收到一条信息 You've successfully connected to the endpoint
    4. 您已经完成了对数据库端点的重新配置。点击 Next
  4. 在 Oracle CRM on Demand 身份验证面板上,修改 CRM 的验证信息。Oracle 有一系列不同的 CRM OD pods,每个由三个字母表示 (这里是 apa )。 您可以通过查看 Oracle CRM on Demand 登录 URL 来获取您的 pod 名称。在这调整属性。
    1. 按照您的 pod 来修改配置属性 OracleCRMLoginHost 的值,(在模板中,该值被设置为 ausomxapa.crmondemand.com )。保留端口号为 443。
    2. 修改用户和密码的值,然后点击 Next
  5. 在连接到 Oracle CRM on Demand 面板上,如果需要可以修改其他详细配置。校验设置:点击 Test connection,然后点击 Next
    图 4. Oracle CRM on Demand 配置面板
    Oracle CRM on Demand 配置面板
    Oracle CRM on Demand 配置面板
  6. 在配置 CRM on Demand 账户 Web 服务面板上,您可以配置 Oracle CRM on Demand 提供的账户 Web 服务,包括像服务名、端口、登录机制以及位置等详细信息。将位置字段的值 https://secure-ausomxapa.crmondemand.com/Services/Integration 修改为您的 Oracle pod 名称。 您已经完成了对第二个端点的配置——点击 Next
  7. 在映射账户的面板上,查看一个EBS 账户和 Oracle CRM on Demand 账户之间的映射数据。正如您所见,映射包含许多链接。连接上的蓝色方块表示一个或多个用于数据转化的方法。幸运的是,映射已经完成了,您只需要对其进行修改:
    图 5. 账户映射
    账户映射
    账户映射
    1. 在映射中,元素 ExternalSystemID 为设置为元素 CUST_ACCOUNT_ID 的内容。要用另一种方式来定义 ExternalSystemID ,需要修改映射。例如,为了将 ExternalSystemID 定义为两个元素 ACCOUNT_NUMBER 和 ACCOUNT_NAME 的连接,按照以下步骤进行操作:
      1. 删除已有的到字段 ExternalSystemID 的映射。
      2. 点击 Back 按钮左侧的方法符号,显示函数面板。
      3. 将函数 Concatenate 拖拽到映射的中间。
      4. 创建一个从 ACCOUNT_NUMBER 到函数 Concatenate 的链接。
      5. 创建一个从 ACCOUNT_NAME 到方法 Concatenate 的链接。
      6. 创建一个从函数 ConcatenateExternalSystemID 的链接。
      7. 右键点击函数,并选择 Apply Function Gfunction 以完成映射。
    2. 映射通过查找一张名为 CountryLookup 的表,将两个字母的国家代码转换成较长的版本。向下滚动到函数面板,找到 CountryLookup 的定义。右键点击 Edit ,您会发现查找表只含有一个国家代码 US 的映射。为了将其他国家代码,例如 DE 和德国映射起来,可以使用您的国家映射来扩展查找表。
    3. 为了验证映射,点击 Test 并提供用于映射的测试数据。
    4. 最后点击 OK, 然后点击 Next ,继续完成向导。
    5. 您现在位于验证编排面板上。如果您的 MySQL 数据库有着与 EBS 数据库相似的表结构,并且接受 SQL 查询语句,您现在已经完成了配置,可以在 Studio 中将编排作为向导的一部分进行测试。但是在这里的示例程序中,表结构是不同的,并且您需要修改 SQL 查询语句。 因为在向导中没有设计这一步骤,所以您需要在向导外完成。因此点击 Next 继续向导。
  8. 在下一个面板上,您可以在运行时环境中成功测试后,发布编排。但是此时发布并没有任何用处,因此点击 Finish
  9. 现在您可以提供一个评级,点击 Close。您可以重新启动向导来提供评级。
  10. 用一个合适的名称来保存项目。

现在查看一下项目和编排,检查在向导中已经配置的选项。

编排

首先,查看一下项目。在项目的右上角,您可以看到例如编排,端点、转换以及 XML 模式等项目资产列表。查看一下端点列表。因为您将 EBS 数据库替换为 MySQL 数据库,所以右键点击端点,将数据库端点从 OracleEBS11iDB 重命名为 MySQLDB , 或者其他有意义的名称。

现在双击打开编排 SyncAccounts(如果尚未打开)并查看编排。最终的编排如文章最后的 图 11 所示。此处对编排的主要步骤做一个简短的描述:

  1. 触发器和数据库访问:有两种方式可以触发编排:
    • Receive Request 活动需要一个带有时间戳的 HTTP 请求。
    • Schedule Job 活动会定时触发任务。
    在事件发生之后调用 Execute Query 活动。该活动会向数据库发送一条查询,该查询会返回零个、一个或多个账户数据集合。 说明: 在下图中,活动的名称已经被重命名。您将在下一节中进行该操作。
    图 6. 触发器和数据库访问
    触发器和数据库访问
    触发器和数据库访问
  2. 登录到 Oracle CRM on Demand:编排会检查是否有任何更新,如果有,登录到 Oracle CRM on Demand。For each 循环提供了一个简单的方式,来逐个处理账户数据集:
    图 7. 登录到 Oracle CRM on Demand
    登录到 Oracle CRM on Demand
    登录到 Oracle CRM on Demand
  3. 更新 Oracle CRM on Demand 中的账户:在 For each 循环中,活动映射账户将 EBS 数据集与 Oracle CRM on Demand 数据集映射起来。这个映射是您在 图 5 中的模板整合项目向导中修改过的。然后使用 Web 服务活动 Upsert 账户,对一个账户数据集中的每个账户进行插入或者更新操作,从而修改 Oracle CRM on Demand 中的账户:
    图 8. 映射和 Upsert 账户
    映射和 Upsert 账户
    映射和 Upsert 账户
  4. 从 Oracle CRM on Demand 注销:当所有账户被插入或者更新后,编排会从 Oracle CRM on Demand 注销。

现在您已经更好地理解了编排的作用。在您测试编排之前,需要修改数据库查询语句。

修改 SQL 查询语句

EBS 数据库的数据结构与 MySQL 数据库中所使用的不同。您现在需要将原有的查询语句替换为适合您数据库的查询语句,然后修改与新结果集的映射:

  1. 在编排中,点击活动 Execute Query -- Get Modified EBS Accounts。在左下方有一个名为清单的部分,其中描述了所有需要配置活动的步骤。
  2. 点击步骤 Map outputs,然后查看一下映射关系。它定义了查询活动返回的数据,以及如何在储存在变量 EBS11iAccounts 前进行转换。现在不要修改这里的任何内容 —— 您会很快再回到输出映射关系。
  3. 点击 Summary 并修改活动名称为获取 MySQL 账户。
  4. 点击 Configure => Enter Query 来修改查询语句。
    1. 用来查询 EBS 的语句很复杂,并且会按照时间戳返回账户集合。对于在 mySQL 数据库上进行的初始化测试,您可以使用一个简单的查询语句,例如 SELECT * from accounts。如果您清楚数据库结构,点击 View columns
    2. 将参数最大行数从 50 修改为 1 ,这对于测试来说已经足够了。
    3. 点击 Validate query 在数据库中验证该查询语句。此外,它将更新查询语句返回的结果集结构。
  5. 跳过步骤映射输入,因为您在查询语句中没有任何输入变量。
  6. 点击 Map outputs。如您所见,映射左侧的值已经被更新为修改后的结果集。只保留了验证映射链接。添加一些映射链接:
    1. 创建一条从左侧的元素到右侧的元素的链接,这样 Studio 就可以使用与源和目标同样或者相似的名称来创建一个到所有元素的映射。
    2. 创建一个从元素 BILLINGPOSTALCODEBILLING_PC 的链接。对邮递区号进行同样的操作。
    3. 如果您处理来自 US 以外国家的账户,您需要做一些额外的事情。Oracle CRM on Demand 的州字段只接受像美国等指定国家的值。为了避免来自非美国国家的问题,删除从 BILLINGSTATEBILLING_STATE 的映射。为了不丢失美国账户的州信息,定义一个自定义的方法,基于国家返回一个有效的州值。
      1. 点击标签页 Functions 并且创建一个自定义的方法 MapStates 并且返回字符串类型。在参数中输入 InputState 和 InputCountry,二者都是字符串类型。在方法内容中输入:if (InputCountry == "US") {return InputState} return "";,这会对所有非美国的国家返回一个空字符串。点击 Compile 来验证方法,然后点击 Finish
      2. 将函数 MapStates 拖拽到输出映射的中间。
      3. 创建一个从 BILLINGSTATE 到函数 MapStates 的链接。
      4. 创建一个从 BILLINGCOUNTRY 到函数 MapStates 的链接。
      5. 将源链接到方法的顺序,对于映射很重要,因此双击函数 MapStates 来验证字段/参数映射。
      6. 创建一个从函数 MapStatesBILLING_STATE 的链接。
      7. 右键点击自定义方法并且选择 Apply Function Graph
      8. 重复步骤 2-7,建立从 SHIPPINGSTATESHIPPING_STATE 的映射。
    4. 与图 9 对比您的最终映射:
      图 9. 查询输出映射
      查询输出映射
      查询输出映射
  7. 现在您已经完成了对编排检查所有必须的修改,如果它依然有效:使用绿色复选标记,或者选择 Orchestration => Validate。然后保存编排。

在 WebSphere Cast Iron Studio 中测试编排

图 6 所示,有两种方式触发编排:

  • 接受请求活动需要一个包含时间戳的 HTTP 请求。要使用的 URL 是通过配置属性 HTTPURL 来定义的,并且值为 AccountsSync (见 Project => Configuration Properties)。
  • 调度任务活动会定时触发任务,现在是每天一次。 为了通过调度器来测试编排,点击 Schedule Job 活动并且将配置修改为 Once every 5 seconds

要在 WebSphere Cast Iron Studio 中测试编排,按照如下步骤:

  1. 登录到账户已经存在的 Oracle CRM on Demand 门户。
  2. 登录到 WebSphere Cast Iron Studio 的验证标签页,通过点击绿色箭头(或者您可以选择 Orchestration => Start Orchestration)来启动编排。在 Studio 中,编排会在一次执行后停止。
  3. 触发编排:
    1. 如果您使用调度器,那么编排会在一段时间后被自动触发。
    2. 为了发送一个 HTTP 请求,使用 WebSphere Cast Iron Studio 附带的 HTTP Post Utility (选择 Tools => HTTP Post Utility)。 输入 URL http://yourhost/AccountsSync 以及一个时间戳作为内容,例如 2011-01-13 14:00:00。然后点击 Submit 发送请求。
  4. 在WebSphere Cast Iron Studio 中,查看编排的执行流程。点开不同的活动部分,并通过点击变量来检查详细内容。将您的执行流程与下面这个流程进行比较:
    图 10. 编排执行流程
    编排执行流程
    编排执行流程

    对于每个编排活动,您会在映射前后,看到所有变量的输入和输出值。 这个级别的详细内容,可以简化对映射失败等问题的分析,以及检查编排是否如预期正常工作。
  5. 最终,切换到 Oracle CRM on Demand 页面并检查是否有更新产生。

在 WebSphere Cast Iron Studio 中成功测试编排后,您可以将其部署到运行环境。

部署编排到您的运行环境

您的运行环境可以是如下几种情况之一:

  • WebSphere DataPower Cast Iron Appliance XH40
  • WebSphere Cast Iron Hypervisor Edition
  • Cast Iron Cloud2

如果您正使用 Cast Iron Cloud2 并且您的 MySQL 数据库安装在防火墙之后,那么可以使用 Cast Iron Secure Connector 为数据库网络和 Cast Iron cloud 之间提供一个安全的连接。

结束语

本文向您演示了如何使用 WebSphere Cast Iron Cloud Integration,将一个 MySQL 数据库与 Oracle CRM on Demand 整合起来。预先定义的端点,以及上百个用于整合场景的不同模板,使得您可以不需要编写代码,也不需要研究不同端点的接口定义,就可以整合各个系统。本文阐述了 WebSphere Cast Iron Cloud Integration 如何在几天之内,使您不需要编程就可以整合公司内部应用程序和云应用程序。

代码清单

清单 1. 创建账户表的 SQL 语句
CREATE TABLE IF NOT EXISTS 'mysqldb'.'Accounts' (
	ACCOUNT_NAME 		varchar(80) NOT NULL,
	ACCOUNT_TYPE 		varchar(40),
	PARENTID 		varchar(18),
	BILLINGSTREET 		varchar(255),
	BILLINGCITY 		varchar(40),
	BILLINGSTATE 		varchar(20),
	BILLINGPOSTALCODE 	varchar(20),
	BILLINGCOUNTRY 		varchar(40),
	SHIPPINGSTREET 		varchar(255),
	SHIPPINGCITY 		varchar(40),
	SHIPPINGSTATE 		varchar(20),
	SHIPPINGPOSTALCODE 	varchar(20),
	SHIPPINGCOUNTRY 	varchar(40),
	PHONE 			varchar(40),
	FAX 			varchar(40),
	ACCOUNTNUMBER 		varchar(40) NOT NULL,
	WEBSITE 		varchar(255),
	SIC 			varchar(20),
	INDUSTRY 		varchar(80),
	ANNUALREVENUE 		integer,
	NUMBEROFEMPLOYEES 	integer,
	OWNERSHIP 		varchar(40),
	TICKERSYMBOL 		varchar(20),
	DESCRIPTION 		varchar(4000),
	RATING 			varchar(40),
	SITE 			varchar(80),
PRIMARY KEY ('ACCOUNT_NAME', 'ACCOUNTNUMBER') )
清单 2. 创建示例账户的 SQL 语句
INSERT INTO 'mysqldb'.'accounts' (
ACCOUNT_NAME,
BILLINGSTREET, BILLINGCITY, BILLINGSTATE, BILLINGPOSTALCODE, BILLINGCOUNTRY,
SHIPPINGSTREET, SHIPPINGCITY, SHIPPINGSTATE, SHIPPINGPOSTALCODE, SHIPPINGCOUNTRY,
PHONE, FAX, 
ACCOUNTNUMBER, WEBSITE)
VALUES (
'IBM Deutschland GmbH',
'Karl-Arold-Platz 1a', 'Duesseldorf', '05', '40474', 'DE',
'Karl-Arold-Platz 1a', 'Duesseldorf', '05', '40474', 'DE',
'+49-211-476-0', '+49-211-476-0', 
'LBH00007', 'www.ibm.com');

图 11. 编排 SyncAccounts

点击查看大图,然后再次点击展开。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=697080
ArticleTitle=使用 WebSphere Cast Iron Cloud Integration 整合云应用程序
publish-date=07042011