转载

从云中访问内部内容存储库

通过将孤立的内容存储库转换为可通过云访问的资产,企业可获得业务优势。本教程将介绍如何使用 Bluemix Secure Gateway 服务和 内容管理互操作性服务 (Content Management Interoperability Services, CMIS) 接口将 Bluemix 应用程序与内部部署的IBM Content Manager 实例相集成。

CMIS(受多个内容存储库供应商支持的一项开放标准)提供了创建、更新、检索和删除内容的 RESTful API。借助 Content Manager 中对 CMIS 规范 1.0.0 版的支持,解决方案开发人员可以构建调用 CMIS API 的自定义应用程序。

在本教程中,在 Bluemix 中创建一个应用程序,将一个 Secure Gateway 服务与该应用程序相关联,然后测试您的应用程序。首先来了解金融行业的一个简单需求:一家(虚构的)抵押贷款公司希望实现一个贷款查找服务应用程序,让用户能够快速、轻松地访问存储在后端 Content Manager 存储库内部的贷款信息。这样做的目的是让用户能够从桌面、平板电脑或智能电话 Web 浏览器检索贷款信息。

下图给出了该解决方案的各部分协同支持混合云集成的总体视图。一个 Content Manager 系统在内部运行,无法从互联网直接访问它。在内部安装了一个 Secure Gateway 客户端,它使得用户能够从云中发出 CMIS API 调用来与内部部署的 Content Manager 进行交互。Secure Gateway 客户端与为 Bluemix 应用程序提供支持的 Secure Gateway 服务相联系。

从云中访问内部内容存储库

点击查看大图

关闭 [x]

从云中访问内部内容存储库

备注:本教程给出的解决方案不适合具有不允许从外部访问内部系统的安全策略的组织。

启用此混合云集成后,它就会变成一个云平台,其他 Bluemix 服务或外部服务可从中无缝地访问企业防火墙背后的存储库内容。尽管数据存储在内部,但它没有对您的客户应用程序隐藏。您可以使用该设计作为参考,快速开发利用了 Bluemix 技术的类似的 Content Manager 解决方案。

阅读: 开始使用 Secure Gateway

阅读: 使用 Bluemix UI 创建一个 Secure Gateway

阅读: 扩大企业内容管理的应用范围

尽管数据存储在内部,但它们没有对您的客户应用程序隐藏。

完成您的应用程序的前提条件

  • 一个 Bluemix 帐户和一个 DevOps Services 帐户,二者都被链接到您的 IBM ID
  • 一个安装了 Docker 的 Windows PC
  • 一个 Content Manager 开发环境和对 Content Manager Version 8 实例的管理性访问权

第 1 步. 构建您自己的应用程序

首先分解示例项目,以便您拥有自己的包含必要源代码的 DevOps Services 项目:

  1. 单击 Get the code 按钮:

    获取代码

  2. 在 ayaung |hybrid4cm8 项目的概述页面中,单击 FORK PROJECT 按钮(如果尚未登录,请输入您的 DevOps Services 凭据进行登录)。
  3. 为新项目输入一个名称,选中 Make this a Bluemix Project 复选框,并选择一个组织和空间用于结算用途,然后单击 CREATE
  4. 按照项目的 README.md 文件中的部署说明进行操作。

应用程序被更新并部署到 Bluemix 后,登录到 Bluemix 并在仪表板中找到新部署的应用程序:

第 2 步. 将一个 Bluemix Secure Gateway 服务实例添加到您的应用程序

  1. 从目录中选择 Bluemix Secure Gateway 服务: 从云中访问内部内容存储库
  2. Add service 下,选择您的应用程序,然后单击 USE 将 Secure Gateway 服务添加到您应用程序中。
  3. 在创建网关之前,需要启动一个 Secure Gateway 客户端。使用 Docker 选项实现此目的。从 Windows 命令提示符运行以下命令,以便在您 Windows 系统上启动一个 Secure Gateway 客户端(其中 gateway_id

    是 Bluemix UI 中您的 Secure Gateway 服务的 ID):

    docker run -it bluemix/secure-gateway-client <em>gateway_id</em>

  4. 在 Windows 命令提示符上收到表明安全通道已建立的确认消息后,返回到 Bluemix UI 并单击 ADD DESTINATIONS
  5. 在 Create Destinations 页面中,项目符号 Connect It 已标记为 complete。 目标 (destination) 是与一个特定的内部部署资源的网关连接。主机名和端口号提供了从客户端直接访问该资源的途径。完成以下字段:
    • Destination name.(目标名称。)
    • Host name or IP address of your on-premises system.(您的内部部署系统的主机名或 IP 地址。)在本例中,主机名/IP 地址是一个 Content Manager 系统的 CMIS 服务器名称。
    • Port number of your on-premises system.(您的内部部署系统的端口号。)在本例中,端口号为 CMIS 服务器的端口号。
    • you want to secure access to the cloud or on-premises client.(您想如何安全访问云或内部部署客户端。 )默认情况下,选择 TCP(传输控制协议)。
  6. 单击 I'm done 完成配置。现在已显示 Secure Gateway 仪表板。

第 3 步. 启动您的 Content Manager 实例并启用 CMIS 服务器

  1. 如果内部部署的 Content Manager 未运行,则启动它。
  2. 如果 Content Manager 中的 CMIS 服务器未运行,则启动它。

您的 Web 应用程序现在已为测试做好准备。

第 4 步. 测试您的应用程序

  1. 打开 Bluemix 仪表板,单击与您的应用程序有关联的 URL,在浏览器中打开应用程序的主页: 从云中访问内部内容存储库

    点击查看大图

    关闭 [x]

    从云中访问内部内容存储库

  2. 在 Content Manager 系统管理客户端中,使用以下属性定义一个 LoanApplication 项类型:
    • LoanNumber :贷款的惟一标识符(使用 12-345-6000
    • Duration :贷款的持续月数(示例: 360
    • InterestRate :贷款利率(示例: 0.05
    • LoanAmount :贷款金额(示例: 300000
    • YearlyIncome :申请者的年收入(示例: 90000
    • CreditScore :申请者的信用评分(示例: 781
    • FirstName :申请者的名字(示例: John
    • LastName :申请者的姓氏(示例: Doe
    • EmailAddress :要通知的人员的电子邮件地址(可选)
  3. 创建该项后,使用贷款 ID 12-345-6000 在您的 Web 应用程序中执行查找。确认该应用程序返回了从内部部署的 Content Manager 存储库检索的信息: 从云中访问内部内容存储库

第 5 步. 深入剖析开发细节

这是如何发出 CMIS 调用和如何在 Node.js 应用程序中处理 CMIS 数据的详细解释。

如何发出 CMIS API 调用

编写一个异步函数来发出 CMIS 调用:

// cmis async function function getCMISDataAsync(queryStr, resultCallback) {             ...   ...      // compose a cmis query to get a LoanApplication object with the specified LoanNumber   var cmis_url = url + '/cmcmis/resources/%24x%21icmnlsdb/Query'    + '?q=select%20%2A%20from%20LoanApplication'    + '%20WHERE%20LoanNumber=%27' + queryStr + '%27';   ...   ...   // Create a request to CMIS   // set timeout to 1 minute (60000 ms)   request.get(          {         url : cmis_url,         timeout: 60000,         headers : {             "Authorization" : auth         }   }, callback ); 

在本例中,创建了一个 CMIS 查询,并将它发送到在内部运行的 CMIS 服务器。 url 是指向一个 IBM Secure Gateway 集成云的 URL,它对应于内部的物理 CMIS 服务器的目标 URL。 cmcmis 是一个 Content Manager 实例的 CMIS 服务器的上下文根。 icmnlsdb 是一个 CMIS 存储库的名称。查询字符串从 LoanApplication 项目类型中选择,其中 LoanNumber 等于指定的贷款编号。返回结果时,调用一个 callback

如何处理 CMIS 数据

调用回调函数后,该代码使用 xml2js 模块中的 parseString() 函数来将结果从 XML 格式转换为 JSON 格式。从概念上讲,CMIS 条目输入类似于来自 SQL 查询的行列表。

var callback = function(err, res, body) { console.log("callback is being called ...");  console.log("response = " + body);  // insert  parser.parseString(body, function(err, result) {    if (err) console.log("error found");     else {    doc = result;     console.log("result is captured");   ...   ...   var entries = doc["atom:feed"]["atom:entry"];    ... 

一个 CMIS 查询可拥有以下一个或多个属性:

  • cmis:propertyString
  • cmis:propertyDateTime
  • cmis:propertyDecimal
  • cmis:propertyInteger
  • cmis:propertyBoolean

这是一个如何从 CMIS 条目中检索 LastName 字符串属性的示例:

if (entries[0]["cmisra:object"][0]["cmis:properties"][0]     ["cmis:propertyString"][i]["$"]["localName"] == "LastName") {                  // retrieve the cmis:value for LastName               last_name = entries[0]["cmisra:object"][0]["cmis:properties"][0]                   ["cmis:propertyString"][i]["cmis:value"];             }

检索到需要的属性后,您可以构造一个 JSON 对象并将其返回到网页上进行显示:

var result = { "found": "true",  "loan_number": loan_number,  "loan_amount": loan_amount,  "first_name": first_name,  "last_name": last_name,  "yearly_income": yearly_income,  "credit_score": credit_score,  "duration": duration,  "interest_rate": interest_rate}; resultCallback(null, result); 

结束语

您学习了如何将 Bluemix Secure Gateway 服务和 CMIS 与 Content Manager 整合,开发一个使用 Node.js 编写的自定义应用程序。通过一个简单的贷款处理场景,您理解了如何为一个 Content Manager 存储库创建一个应用程序。借助 Bluemix 技术和 DevOps Services 工具,您可以为内部部署的 Content Manager Version 8 实例构建有用、多功能的解决方案。

BLUEMIX SERVICE USED IN THIS TUTORIAL: Secure Gateway 服务给您的 Bluemix 环境带来了混合集成功能。

相关主题: Node.js 安全性

正文到此结束
Loading...