将 Business Events 与 WBM 集成

Latha Sivakumar, 顾问软件工程师, IBM

引言

本系列的第 1 部分向您介绍了整个系列中使用的交易系统场景。在第 2 部分中,您构建并测试了该交易系统应用程序。本文使用第 2 部分中介绍的交易系统场景,第 2 部分介绍了定义和部署交易系统场景构件的详细步骤。为了理解本文,您应该阅读并完成第 1 部分和第 2 部分中的各个步骤。

在本文中,您将了解如何生成从 WebSphere Business Events(以下称为 Business Events)推送到公共事件基础结构(Common Event Infrastructure,CEI)服务器的操作事件,CEI 服务器会将事件分发到 WebSphere Business Monitor (Monitor)。您还将了解如何从 Business Events 导出事件模式,用于创建在 Monitor 服务器上部署的监视模型,以便分析事件数据,并在 Monitor 仪表板上显示。

WebSphere Business Monitor 概述

WebSphere Business Monitor 是业务活动监视(Business-Activity Monitoring,BAM)软件,只要业务应用程序能从其活动生成公共基础事件(Common Base Event,CBE),就几乎能够监视在任何地方运行的业务应用程序。这些应用程序必须能够生成一系列事件(其中封装业务数据),并将其转发到公共事件基础结构 (CEI)。CEI 是用于广泛的业务、系统和网络事件的创建、传输、持久和分发的一致方法的 IBM 实现,以公共基础事件为基础。Monitor 使用 CEI 从应用程序接收事件。转发到 Monitor 的内容和格式将决定客户创建监视模型和监视有意义的业务数据的方便程度。

要从 Business Events 监视事件,您必须使用 WebSphere Business Monitor Development Toolkit 创建一个监视模型。监视模型是一个 XML 文档,描述如何从传入事件收集业务数据,按相同实体对其进行分组,并提供上下文。另外还描述度量和关键性能指标(key performance indicator,KPI)、其对传入事件的依赖关系、保证业务操作的条件以及报告此类条件并触发业务操作的出站事件。

模型还可以设置数据的结构,并将其持久保存以用于维度分析或确定趋势。您可以使用带标注的关系图对数据进行可视化。

创建监视模型并在 Monitor 服务器上部署后,就会按照监视模型逻辑中的定义开始处理来自 WebSphere Business Events 之类的事件。有关将事件转发到 Monitor 的事件源的更多信息,请参见 Business Activity Monitoring with WebSphere Business Monitor V6.1。第 1 章提供了 CEI 的概述,CEI 是一项可嵌入技术,为 WebSphere Business Monitor 提供基本事件管理服务。

安装和配置 Business Events 和 Monitor

本文随附的示例使用安装了 Business Events V6.1 的 Windows 2003 系统开发和测试。Business Events V6.1 还安装了 WebSphere Application Server (Application Server) V6.1.0.15。CEI 服务器嵌入在 Application Server 中。有关启用 CEI 的操作说明,请参见 Application Server V6.1.1 信息中心

Monitor 安装在另一个 Windows XP 系统上,Monitor 服务器配置为从 Business Events 安装上启用的远程 CEI 服务器接收 CEI 事件。为此,您需要安装跨单元文件、创建远程服务集成总线并在本地和远程总线之间创建链接。为了支持 Application Server V6.1 上的远程 CEI 服务器,需要跨单元文件。Business Events 生成的事件分发到远程 CEI 服务器,并由 Monitor model 进行处理。

为了设置到远程 CEI 系统的跨单元配置,请按照 Monitor 信息中心中的 WebSphere Application Server 6.1 上的远程 CEI 主题中所述操作。

您还可以在单个系统上安装 Business Events 和 Monitor,然后让二者在相同 Java™ Virtual Machine (JVM) 中运行。通过这样,就无需使用远程 CEI 配置。要在相同服务器上安装 Business Events V6.1 和 Monitor V6.1.2,请遵循以下步骤:

  1. 安装 Business Events V6.1、Application Server V6.1.0.15 和 DB2® 9.5。
  2. 如果使用的是 Application Server V6.1.2,请将 Application Server V6.1.0.15 升级到 Application Server V6.1.0.17。
  3. 安装 Monitor V6.1.2 生产版。
  4. 使用 Profile Management Tool 对在 Business Events 安装期间使用 Business Monitor 模板创建的配置文件进行扩充。
  5. 确保 Monitor Toolkit 安装在与 Monitor 服务器相同的级别,以便使用本文提供的监视模型。

注意:CEI 服务器在 Business Monitor 安装期间已启用,无需单独启用。

有关更多安装信息,请参见 Business Events V6.1 信息中心的“安装和操作指南”以及 Monitor V6.1 信息中心的安装 WebSphere Business Monitor 主题。

集成场景

正如本系列前面部分中所述,此场景基于一个交易系统,其中使用 Business Events 应用程序处理买入和卖出事件。在交易系统场景中,Business Events 接收 Sell 和 Buy 事件,这两个事件都具有描述客户、股票、交易发生的日期和时间、股份数额和价格的属性。定义了策略来监测这些事件中的模式。当相同客户在 Buy 事件后一小时内针对相同股票发生 Sell 事件时,将生成一个 SellAfterBuy 操作。此操作将推送到接触点,在本例中此接触点为 Monitor。如果一个客户一天内针对相同或不同股票执行了三次买入后卖出,则会生成一个 SpeculativeCustomer 操作,并推送到接触点 Monitor。这些操作是从 Business Events 到 Monitor 的出站事件。嵌入式消息队列连接器将提供从 Business Events 到 CEI 服务器的连接(CEI 服务器将事件分发到 Monitor),将正确配置的 Action 数据包发送到指定的 CEI JMS 队列。图 1 显示了使用消息队列连接器建立的从 Business Events 到 Monitor 的连接。


图 1. 嵌入式消息队列连接器
嵌入式消息队列连接器

Monitor 捕获传入公共基础事件中的业务相关数据,如股票 ID、数量和价格,并将变量转换为度量或 KPI 值。它可以显示度量一周内出现的 SellAfterBuy 数量的 KPI,而且可以在此类活动超过设置的阈值时发出警报。SellAfterBuy KPI 可以针对某个国家的不同地区设置,可以采用不同的格式在这些地区的仪表板上显示,可以在超过阈值时发送警报,警告出现了可疑的交易模式。

本文中提供了交易系统应用程序的示例项目,其中已经定义了接触点、事件、操作、中间对象和消息队列连接器。您将了解如何定义此项目,以将操作事件发送到 Monitor。





回页首


导入示例项目

将示例项目 tradesystem.xml 保存到硬盘驱动器上相应的文件夹。完成以下步骤。如果您需要关于工具导航方面的帮助,请参见 Business Events 信息中心

  1. 打开 Design Data 工具。
  2. 选择 File => Open Project,如图 2 中所示。

    图 2. 导入示例项目
    导入示例项目

  3. 单击 Browse,选择示例项目,并单击 Open

Design Data 中现在打开了示例 Trade System 项目。





回页首


定义操作

导入了 tradesystem.xml 项目文件后,将会看到 Touchpoint 窗格中填充了一系列条目。将转发到 Monitor 的 Business Events 操作在此 Touchpoints 窗格中定义。

要查看这些操作的定义方式,请进行以下操作:

  1. 右键单击 Sell After Buy 并选择 Action Properties

    图 3. 修改操作属性
    修改操作属性

  2. 选择 Connection 选项卡,并单击 Message Queue Connection,如图 4 中所示。

    图 4. 消息队列连接
    BE

  3. 单击 Configure
  4. 公共事件基础结构 (CEI) 支持在不使用发送 API 的情况下将恰当格式化的 CBE XML 直接放置到输入队列上。通过这样,任何基于 Application Server 的应用程序(如 Business Events)都可以方便地将事件路由到 CEI 队列。为了让此操作生成 CBE XML(将转发到 CEI),您需要在 Message Queue Action Connection 对话框中指定以下信息,如图 5 中所示:
    • FormatCBE (WBM)
    • Queue TypeJMS Queue
    • Queue Namejms/cei/EventQueue
    • Message TypeCREATE_EVENTS_NOTIFICATION_V2_0
    然后单击 Provider 按钮。

    图 5. 消息队列操作配置
    BE

  5. 在 Provider 对话框中,输入下面的信息,如图 6 所示:
    • Context Factory Class:com.ibm.websphere.naming.WsnInitialContextFactory
    • URLiiop://:。要获得端口值,请打开 Application Server 管理控制台,并找到 CEI 服务器 Application Server 引导端口地址。对于本示例,其 URL 为 iiop://localhost:2809。
    • Factory Namejms/cei/EventQueueConnectionFactory
    • Username:如果 JMS 需要用户 ID 和密码,则请输入有效用户名。
    • Password:如果 JMS 需要用户 ID 和密码,则请输入与此用户名关联的密码


    图 6. 提供者配置
    BE

  6. 对 Speculative Customer 操作重复这些步骤。





回页首


导出操作的模式

当操作转发到 CEI 服务器时,Monitor 可以对其进行处理。不过,您必须首先在 Monitor 服务器上创建和部署监视模型。要创建监视模型,首先需要从 Business Events 导出 Sell After BuySpeculative Customer 操作的模式。

注意:本文的下载部分提供了含导出模式的示例监视模型。可以使用以下步骤导出其他模式,以便包括到监视模型中。在本文中,我们将不会详细说明创建监视模型的所有步骤。有关此主题的更多信息,请参见 Monitor 信息中心

要导出模式,请完成以下步骤:

  1. 打开示例交易系统项目。
  2. 在 Touchpoint 窗格中,右键单击 Sell After Buy 并选择 Action Properties
  3. 选择 Action 选项卡,如图 7 中所示,并单击 Export packets and schemas,然后选择 CBE Payload Schema

    图 7. 导出 SellAfterBuy 模式
    导出 SellAfterBuy 模式

  4. 输入此模式的目标命名空间的主机部分,如图 8 中所示,然后单击 OK。此值必须与 Business Events 系统名称匹配。否则会导致模式中生成的目标命名空间与生成的 CBE XML 中指定的命名空间不匹配。

    图 8. 指定目标命名空间
    指定目标命名空间

  5. 保存 SellAfterBuy.xsd 文件。
  6. 另外,请导入 CBE Example,以供稍后参考。重复步骤 3 和步骤 4,并在步骤 3 中选择 CBE Example。清单 1 显示了此示例。请注意目标命名空间以粗体显示。


清单 1. SellAfterBuy 操作的 CBE 示例

Sell After Buy2.2LATHAZ2008-06-18T03:38:13Z
	Test values from WebSphere Business Events:Design Data
      Sell After Buyaction
          String_CustomerIDString_StockID2008-06-18T03:38:13Z9.99.9String_Key





回页首


将监视模型导入 Monitor Toolkit

本文下载部分提供了带示例监视模型的项目交换文件 TradeSystemPI.zip。安装 Monitor Toolkit(必须与 Monitor 服务位于相同级别)之后,将项目文件导入 Monitor Model 编辑器。有关更多信息,请参见 Monitor 信息中心的导入共享项目

  1. 启动 WebSphere Integration Developer 或 Rational Application Developer,并指定新工作空间,例如:c:\TradeSystem。
  2. 打开 Business Monitoring 透视图。
  3. 要导入提供的项目交换文件 TradeSystemPI.zip,请选择 File=> Import => ther =>Project Interchange File。浏览到 TradeSystemPI.zip 文件,并单击 Finish,如图 9 中所示。

    图 9. 导入项目交换文件
    导入项目交换文件

  4. 在 Project Explorer 窗格中展开 TradeSystem 项目,以查看监视模型的组成部分。





回页首


定义事件

打开 TradeSysten 项目,并检查导入的模式事件。有两个特定于 Business Events 的模式:

  • WBEEvent.xsd 描述 Business Events 操作的静态内容,每个操作都一样。此 xsd 文件是静态文件,不是从 Business Events 导入的。
  • SellAfterBuy.xsd:使用 Monitor 能够理解的格式描述 SellAfterBuy 操作。这是动态内容,经常称为业务有效负载 (business payload)

这两个模式定义一起定义了通过公共基础事件的 xs:any Slot 的 Business Events 操作。

注意:SellAfterBuy.xsd 从 Business Events 导出,此模式中指定的目标命名空间可能与您的 Business Events 系统名称不匹配。您需要按照以下步骤修改模式模型中的 SellAfterBuy 模式文件(如清单 2 中所示),使其与您的 Business Events 系统名称匹配。

  1. 在 Monitor Model 编辑器中打开 SellAfterBuy.xsd。将主机名 LATHAZ 的所有匹配项替换为您的 Business Events 系统主机名。
  2. 在 SellAfterBuy.xsd 中,将 LATHAZ 的所有匹配项替换为您的 Business Events 主机名。要确定 targetNamespace 值,请参见导出操作的模式中的步骤 8。


清单 2. SellAfterBuy 模式文件






回页首


监视上下文

Sales_MC 监视上下文定义将从 SellAfterBuy 入站事件收集的、关于股票销售的所有相关数据。

监视上下文中定义的入站事件是 SellAfterBuy。定义了两个事件部分。一个部分称为 EventInfo,描述静态事件信息的类型,另一个部分称为 TradeOutArray,描述动态业务有效负载的类型。

在系统中传递的业务数据确定事件中的动态内容。此信息由 WebSphere Integration Developer 中可用的用户定义 XSD 确定类型。只有特定的事件能够包含此信息,经常被称为业务有效负载。从应用程序生成监视模型时,这些事件在 Monitor Model 编辑器中显示为带旗帜的包图标,而不能承载业务信息的事件则显示为旗帜图标。

当入站事件基于承载业务有效负载的事件时,将在监视模型的入站事件中创建描述业务有效负载类型的事件部分。清单 3 显示摘自监视模型的代码片段,定义了入站事件部分、筛选条件和相关性表达式。


清单 3. 监视模型定义示例

Filter Condition: 
/* This expression accesses the name in the event-info 
within the CBE*/
SellAfterBuy/My_Event_Part/wbe:name = 'Sell After Buy'.  

Correlation Expression: 
/* This expression accesses  then Key in the Trade-Out 
element within the CBE */
StockIDKey = TradeEvent/My_Event_Part2/tns:Trade-Out/tns:Key



有关将项目文件导入 Monitor Model 编辑器和在 Monitor 服务器上创建、部署监视模型的更多信息,请参见 InstalliMonitor 信息中心。所提供的模型具有订阅到 SellAfterBuy 事件的单个监视上下文。另外还定义了一个跟踪过去 7 天 SellafterBuyEvent 数量的一个 KPI。您可以根据需要对所提供的模型进行增强。





回页首


生成监视模型 EAR 文件

完成以下步骤,以从提供的项目交换文件生成监视模型 EAR 文件。

注意:您可以使用本文的下载部分提供的 EAR 文件,而无需自己生成。

  1. 在 Project Explorer 中右键单击 TradeSystem.mm,并选择 Generate Monitor J2EE Projects,如图 10 中所示。

    图 10. Generate Monitor J2EE Projects
    Generate Monitor J2EE Projects

  2. 在 Generate Monitor J2EE Projects 对话框中单击 Finish,如图 11 中所示,并等待生成完成。

    图 11. 生成 EAR 文件
    生成 EAR 文件

  3. 要导出监视 EAR 文件,请在 Project Explorer 中右键单击 TradeSystem.mm,并选择 Export => J2EE => EAR,然后单击 Next
  4. 选择 EAR 应用程序和 EAR 文件的目的地,如图 12 中所示,然后单击 Finish

    图 12. 指定关于 EAR 文件的信息
    指定关于 EAR 文件的信息

现在您已准备好在 Monitor 服务器上部署 EAR 文件。





回页首


在 Monitor 服务器上部署监视模型

部署 EAR 文件之前,确保 Monitor 服务器在运行,然后启动 Monitor 服务器的管理控制台。

  1. 从 Application Server 管理控制台选择 Applications => Monitor Models。所显示的表格中将列出当前安装的所有监视模型。
  2. 单击 Install
  3. 指定要安装的 EAR 文件的位置,如图 13 中所示。

    图 13. 在服务器上部署 EAR 文件
    在服务器上部署 EAR 文件

  4. 选择 Show me all installation options and parameters 并单击 Next
  5. 在 Preparing for the Application Installation 页上单击 Next

    如果显示应用程序安全警告,请单击 Continue。此警告仅用于提供相关信息。

  6. 将显示 Install New Application 页。

    注意:如果您配置了远程 CEI 服务器,则必须修改 CEI 选项,以显示远程主机名、RMI 端口和安全设置。请参见 Monitor 信息中心的选择监视模型 CEI 选项

  7. 完成了所需的任何 CEI 修改后,请单击 Summary,验证所有信息都是正确的,如图 14 中所示。

    图 14. 验证部署信息
    验证部署信息

  8. 如果要查看模型安装信息,请单击 Review changes before saving or discarding;或者如果要保存模型,请单击 Save directly to the master configuration
  9. 选择 Applications => Monitor Models。进行检查,以确保 TradeSystem 模型状态为已启动,应该为绿色。如果不是,请等待数秒,或单击 Status 列上的刷新图标进行刷新。

有关在 Monitor 服务器上部署监视模型的更多信息,请参见 Monitor 信息中心的使用修改的设置安装监视模型

完成了部署模型的所有步骤,并将其保存到 Application Server 主配置后,需要验证此模型是否已经成功安装。为此,请在 Application Server 管理控制台中单击 Applications => Monitor Models,确保模型应用程序在运行。





回页首


在仪表板上显示实例和 KPI 视图

要打开仪表板,请将 Web 浏览器指向 http://localhost:9080/BusinessSpace。您系统上的端口号可能会不一样。

使用 BusinessSpace 仪表板导入本文提供的仪表板 TradeSystem.data,以便查看 KPI and Instances 视图。

要导入仪表板,请完成以下步骤:

  1. 转到 BusinessSpace Space Browser,如图 15 中所示,并单击 Import Space

    图 15. 导入仪表板
    导入仪表板

  2. 浏览到包含要导入的文件的文件夹,如图 16 中所示,选择包含要导入的仪表板的数据文件 TradeSystem.data。

    图 16. 导入 Tradespace.data
    图 16. 导入 Tradespace.data

  3. 单击 OK。会创建一个新的仪表板。仪表板的导入者(在本例中就是您自己)拥有导入的仪表板。

您现在可以看到 Instances 视图和 KPI Gauge。

示例模型并不会涉及所有可用监视功能,但可以使用更多的监视上下文、警报和报告对模型进行扩展。

您现在必须生成一些事件,以在仪表板中查看数据。





回页首


部署您的配置和准备测试

要部署配置,以准备进行测试,请完成以下步骤:

  1. 要部署您的 Business Events 更改,请在 Design Data 工具中选择 Tools => Repositories,如图 17 中所示。

    图 17. 打开存储库
    打开存储库

  2. 在 Repository 窗口中,从 Project 窗格的构件列表中选择一个元素,然后按下 Ctrl+A 选择全部,并单击 Add in。所有元素(包括您的更改)都会添加到存储库。
  3. 停止 Business Events 运行时,以便从存储库检索最新的配置信息。
  4. 打开 Application Server 管理控制台并登录。
  5. 从左列中选择 Enterprise Applications。您将看到 Business Events 运行时的当前状态,如图 18 中所示。绿色应用程序状态指示应用程序在运行。

    图 18. Business Events 运行时
    Business Events 运行时

  6. 请选中 WBERuntimeEar 并单击 Stop
  7. 在运行时停止之后,状态将变成红色,请再次选中 WBERuntimeEar 并单击 Start。运行时应该很快显示绿色应用程序状态,指示已经启动。

现在我们已经准备好,可以对示例应用程序测试了。





回页首


测试您的配置

为了将操作转发到 Monitor,您需要将示例事件数据包导出到 c:\wbetmp\testdata 目标。如果要跳过导出示例事件数据包的步骤,还可以使用提供的示例 aEvent_Buy.xml 和 bEvent_Sell.xml

  1. 在 Touchpoints 窗格中右键单击 Buy 事件,选择 Event Properties,如图 19 中所示。

    图 19. 选择 Buy 事件属性
    选择 Buy 事件属性

  2. 在 Event Buy Properties 对话框中,选择 Event 选项卡。
  3. 单击 Export packets and schemas,然后选择 WBE Events Packet Example,如图 20 中所示。

    图 20. 导出 Buy 事件示例
    导出 Buy 事件示例

  4. 将 aEvent_Buy.xml 文件保存到 c:\wbetmp\testdata 目录,并将其重命名为 aEvent_Buy.xml
  5. 重复这些步骤,以保存示例 Sell 事件(在 DirectorData 中位于 Buy 事件之下)。将 Sell 示例保存到 c:\wbetmp\testdata 目录,并将其重命名为 bEvent_Sell.xml
  6. 执行示例项目时,确保所生成的所有 Buy 事件使用前缀“a”进行保存(例如,aEvent_Buy.xml),而所有 Sell 事件都有“b”前缀(例如,bEvent_Sell.xml)。示例项目已配置为根据文件的前缀区分传入的 Buy 和 Sell 事件。这样,用户可以交错事件处理的顺序,确保某些事件在其他事件之前处理。

    在 Buy 事件后一个小时内相同的客户触发了相同的股票的 Sell 事件,则将生成 SellAfterBuy 操作。因此,我们需要首先生成 Buy 事件,然后生成 Sell 事件。

  7. 保存 Buy 事件文件,并在 xml 编辑器中将其打开,以检查事件有效负载的结构。清单 4 显示了 Buy 事件 XML 文件。
  8. 确保文件最后没有嵌入空格。


清单 4. Buy 事件 XML 文件

String_CustomerIDString_StockID2008-05-24T14:07:10Z9.99.9LATHAZ2008-05-24T14:07:10ZTest values from WebSphere Business Events:Design Data

  1. 编辑所有的事件文件,并将事件中的 date 字段更改为当前日期。否则监视模型将不会计算过去 7 天内的值。
  2. 要启动连接器,请转到 \director\bin 目录,例如:C:\<wbe install>\director\bin,并运行 connectors.bat。

    这将启动连接器,打开显示启动信息的命令窗口,并扫描您已创建并保存到 Business Events 事件目录的事件文件。在命令行窗口中,您将能够看到您的事件被连接器处理。

  3. 将 aEvent_Buy.xml 从 c:\wbetmp\testdata 复制到 c:\wbetmp。稍等一会,以便对事件进行处理。您可以在连接器命令窗口中进行查看。
  4. 将 bEvent_Sell.xml 从 c:\wbetmp\testdata 复制到 c:\wbetmp。稍等一会,以便对事件进行处理。您可以在连接器命令窗口中进行查看。
  5. Buy 和 Sell 事件组合将生成 SellAfterBuy Action 事件,如图 21 中所示。

    图 21. 连接器
    连接器

  6. 进行以下操作,以确保处理没有问题:
    • 进行检查,确保创建并保存在 c:\wbetemp\ event 目录中的事件已删除。
    • 检查 Application Server 日志。
    • 检查 Connector 日志,位于 C:\\director\logs filename WBERuntime.connectors.log。





回页首


在 Monitor 仪表板和数据库中查看数据

打开 BusinessSpace 仪表板。您应该能够在 Instance 视图中看到一个实例。

您还能够在 KPI 视图中看到数据(鼠标悬停在 KPI 上时)。量规指示器应该指示一个 SellAfterBuy 实例,如图 22 中所示。
图 22. 包含 KPI 的 Monitor 仪表板
包含 KPI 的 Monitor 仪表板

您还应该能够在数据库中查看数据。使用 DB2 Control Center 等工具查看数据。查看监视数据库(缺省名称为 MONITOR)中的数据。打开表 MCT_SALES_MC_20080809010432。此表中应该包含一个反映 Monitor接收到的 SellAfterBuyAction 事件的记录,如图 23 中所示。


图 23. Monitor 数据库中的数据
Monitor 数据库中的数据




回页首


总结

在本文中,您详细了解了将事件从 WebSphere Business Events 转发到 WebSphere Business Monitor 所需的以下步骤。

  1. 通过使用 WebSphere Business Events Design Data 工具进行以下工作:
    • 创建具有操作的应用程序。
    • 配置这些操作,使其转发到 Monitor(接触点)。
    • 将所定义操作的模式导出到文件系统。
  2. 将操作模式导入到 Monitor Model Toolkit 编辑器中,以创建监视模型。
  3. 使用 WebSphere Application Server 管理控制台部署监视模型。
  4. 启动 Business Events 连接器进程,以开始将生成的操作转发到 Monitor。
  5. 在仪表板中查看 Monitor 所接收并处理的操作。

通过 Business Events 和 Monitor 的集成,您可以利用 Monitor 提供的业务数据分析和报告功能,使用 Monitor Action Manager 组件提供的 KPI 和通知服务。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-610866/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14789789/viewspace-610866/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值