---
title: "在跨平台移动应用程序中处理数据"
date: "2015-07-09"
categories: 
  - "applications"
  - "data-integration"
  - "events"
tags: 
  - "mobile"
  - "mobile-development"
  - "mobiletogether"
  - "software-tools"
description: Altova MapForce 中的低代码工具，可以轻松地在跨平台应用程序中定义操作。
---
Status: #blog

Tags:  #mobile #mobile-development #mobiletogether #software-tools

Categories: [mobile-development](/blog/zh/category/mobile-development.md) | [data-integration](/blog/zh/category/data-integration.md) 
# 在跨平台移动应用程序中处理数据

Altova MobileTogether 能够帮助任何规模的企业设计和部署定制化的移动解决方案，这些解决方案可以在所有移动平台上运行。 本文是关于 MobileTogether 操作对话框的讨论的第二部分，它允许开发者[快速创建复杂的事件处理程序、控制流程和操作](https://www.altova.com/zh/mobiletogether/develop-apps-fast.html)，这些功能在 iOS®、Android™ 和 Windows 设备上以及基于 HTML5 的浏览器客户端上都能正常工作，而无需担心每个移动操作系统所特有的 API 或 SDK 的细节。

![世界人口](/blog/images/world-population1.jpg)
如果您错过了第一部分，请阅读[事件处理和控制流程的定义](/blog/zh/2015/06/defining-event-handling-and-control-flow-for-cross-platform-mobile-applications.md)，以便了解相关内容。 


这篇文章介绍了MobileTogether中的一些操作，这些操作可以处理数据，并且具有灵活性和强大的功能，能够加速构建基于数据的移动企业应用程序，从而为用户提供及时、实用的信息，尤其适合那些需要随时随地获取信息的忙碌用户。

![图片更新 1](/blog/images/image-update-11.png) <!--more--> 下图展示了一个名为“库存管理”的移动应用程序的介绍页面。该页面包含简短的描述，以及一个“更多”按钮，用户点击该按钮可以查看更详细的描述。

![一个跨平台移动应用程序中的按钮](https://lh3.googleusercontent.com/-22yFbM6VUIU/VZqc2ibPi1I/AAAAAAAACTI/MjWvYauR5CA/clip_image003%25255B3%25255D.jpg?imgmax=800 "A Button in a Cross-Platform Mobile App")

以下是在 MobileTogether 设计器操作对话框中，该按钮的操作定义：当用户点击该按钮时，一个“[更新节点(们)](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/index.html?mtdpagedesign_actions_update.htm)”操作会将固定值“true”插入到“ShowMore”节点中。

![Altova MobileTogether 中按钮的操作定义 ](https://lh3.googleusercontent.com/-M82HnIaVljo/VZqc3N305DI/AAAAAAAACTQ/Jv_2V2fijIg/clip_image004%25255B3%25255D.png?imgmax=800 "Definition of the Action of a Button in Altova MobileTogether")

带有详细定义的文本框具有一个可见性属性，该属性使用一个表达式来确定是否应该显示该文本框。

![控制按钮是否可见的属性](https://lh3.googleusercontent.com/-w4_VdBzO014/VZqc3T5WZ7I/AAAAAAAACTY/wVHdxSUyQto/clip_image005%25255B3%25255D.png?imgmax=800 "Visibility Property that Hides or Shows the Button")

一旦“ShowMore”的值变为“true”，扩展描述就会自动在移动设备上显示

![点击按钮后的显示结果](https://lh3.googleusercontent.com/-W_VE1PDTxu8/VZqc3_AvqYI/AAAAAAAACTg/DhCLXYMDtQs/clip_image007%25255B3%25255D.png?imgmax=800 "Resulting Display After the Button is Clicked")

“更多”按钮同时被隐藏，因为它的可见性属性包含一个表达式，该表达式会检查“显示更多”是否等于“false”。

这个简单的动作定义会生成一个按钮，该按钮可以在所有移动设备上正常工作，甚至可以在桌面工作站的浏览器窗口中运行。但是，“更新节点(们)”功能还可以做更多的事情！在我们的例子中，目标节点和数据负载都是固定的值。 目标、结果，或者两者都可以定义为 XPath 表达式，这些表达式可以引用其他数据元素、XPath 运算符、XQuery 函数、特殊的 MobileTogether 函数，甚至可以包含用户自定义函数。

开发人员只需点击任一 XPath 按钮，即可打开 [编辑 XPath 表达式对话框](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/index.html?mtdxpxqexfv_xpxq_editxpxqexp.htm) 用于创建和编辑表达式，该功能允许访问 XML 数据源的结构，提供 XPath/XQuery 3.1 操作符和函数的库，并提供辅助功能，以帮助构建有效的 XPath/XQuery 3.1 表达式。

一个简单的应用表达式的例子是，库存管理应用程序会记录运行日期，以便在下次启动时判断是否需要为新一个月初始化表格。这个“更新节点”操作使用了 XQuery 中的日期函数：

![根据简单表达式更新节点](https://lh3.googleusercontent.com/-wEMAirpLBRk/VZqc4foKqWI/AAAAAAAACTo/rBk8_8Dm0cQ/clip_image008%25255B3%25255D.png?imgmax=800 "Updating a Node Based on a Simple Expression")

请注意，无需针对特定平台进行API调用。MobileTogether中的一个表达式即可支持所有移动平台。

[插入节点(们)](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/mtdpagedesign_actions_update_insertnode.htm) 和 [追加节点(们)](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/mtdpagedesign_actions_update_appendnode.htm) 都是创建一个或多个新节点的动作，具体创建的节点由 XPath 表达式指定。 这两个动作的区别在于，"插入节点(们)" 会将节点插入到数据树中的指定位置，而 "追加节点(们)" 会将节点作为所选节点(们)的子节点进行添加。

![MobileTogether 提供的操作功能，可用于在跨平台移动应用中处理数据](https://lh3.googleusercontent.com/-0jRXHSPSeU4/VZqc4_S3l9I/AAAAAAAACTw/6dpTtn_owJI/clip_image009%25255B3%25255D.png?imgmax=800 "MobiltTogether Actions to Manipulate Data in Cross-Platform Mobile Apps")

“插入节点”和“追加节点”功能可以在运行时动态扩展数据集成模型，从而处理未知大小的数据集。例如，库存管理应用程序的核心是一个表格，用于描述构建各种产品所需的零件的状态。在实际应用中，产品物料清单经常会发生变化，因为产品经理可能会增加或删除产品变体，或者更换供应商。如果为特定数量的零件硬编码一个移动解决方案，将会非常低效。相反，开发人员只需定义描述单个零件的单个行的内容，并为每个元素提供默认值：

![为跨平台移动应用构建数据模型](https://lh3.googleusercontent.com/-6_I-e8qyg_c/VZqc5DOrGMI/AAAAAAAACT4/h8vberqwkVA/clip_image010%25255B3%25255D.png?imgmax=800 "Creating a Data Model for a Cross-Platform Mobile App")

当表格被初始化时，可以在“追加到节点”操作中进行配置 [循环动作](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/index.html?mtdpagedesign_actions_ifloop.htm) 可以添加任意数量的行。在库存管理解决方案中，PartNumbersCount 变量存储了唯一零件的数量，这个数量可以从数据库查询或外部主零件列表文件中读取。开发者甚至不需要知道确切的数量。

![使用循环来扩展数据模型](https://lh3.googleusercontent.com/-NmJbjXstrX8/VZqc5rwaGYI/AAAAAAAACUA/bVF1_D_yOF4/clip_image011%25255B3%25255D.png?imgmax=800 "Extend the Data Model Inside a Loop")

在上述定义中，新节点被定义为一个 XPath 表达式，用于从数据模型中选择一行数据。 "Append Node"（追加节点）功能会将引用的节点、其所有子节点以及所有子节点的元素、属性和内容都追加到目标位置。 新节点可以作为第一个子节点或最后一个子节点进行追加。

在 MobileTogether 内置的模拟器中运行正在开发的项目，可以让开发者在应用程序运行时查看数据。在上述循环完成所有迭代后，我们可以看到 PartNumbersCount 的值为 167，并且循环追加了正好 166 行新的数据，每一行的数据都与原始定义完全相同。

![移动应用程序的数据模型设计](https://lh3.googleusercontent.com/-r009GTY9ONo/VZqc6G01WhI/AAAAAAAACUI/rtVdGRFbhSc/clip_image012%25255B3%25255D.png?imgmax=800 "Constructed Data Model fo a Mobile App")

“插入节点”和“追加节点”功能也可以创建新的节点，这些节点可以直接作为 XML 构造体输入，例如：<MyElement-01 myatt="value">Element Content</MyElement-01>，或者它们可以通过 XQuery 计算生成的节点构造体来构建，例如：`element MyElement-01 {xs:string("元素内容")} attribute myatt{"值"}`

[重新加载](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/mtdpagedesign_actions_pgsrcs_reload.htm) 又是处理数据的强大功能。 “重新加载”操作可以应用于设计中包含的任何外部资源，包括数据库查询、外部数据文件、图表和图像。 “重新加载”功能提供了一个下拉列表，方便用户选择已配置的所有外部资源。 在“库存管理”应用程序中，"$ProductSalesMTD" 是一个 SQL 查询，用于从公司订单数据库中检索当前月以来，每种产品的销售数量。 系统会将产品与物料清单进行匹配，以计算每个零件的需求统计数据。

![适用于移动数据源和图表的 MobileTogether 重新加载操作](https://lh3.googleusercontent.com/-ZC1kX63Ve0o/VZqc6UKjc2I/AAAAAAAACUQ/68uozrMpIDo/clip_image013%25255B3%25255D.png?imgmax=800 "Reload Action for Mobile Data Sources and Charts in MobileTogether")

只需将多个刷新操作拖动到编辑区域，即可轻松刷新多个数据源。以下展示了库存管理系统中另一个按钮执行的操作的定义（部分展开）。在所有数据源都刷新完成后，最后一步会执行刷新操作，根据最新的数据重新绘制性能图表。

![使用“重新加载”操作来执行数据库查询](https://lh3.googleusercontent.com/-XRupqFTAaqc/VZqc67hsblI/AAAAAAAACUY/Wbv6elxt2ZY/clip_image014%25255B3%25255D.png?imgmax=800 "Applying the Reload Action to Execute Database Queries")

这张来自小型安卓平板电脑的截图显示了库存管理系统的一个数据表格和图表，该系统配置为管理子组件，而不是数百个独立的零件。如果任何组件的库存水平低于目标值，用户可以在右侧的列中输入数量，然后点击“提交订单”按钮，以授权向供应商下订单。

![一款跨平台移动库存管理应用程序，由MobileTogether开发](https://lh3.googleusercontent.com/-5QS5GlfMxDo/VZqc7UaB86I/AAAAAAAACUg/cGlTHKn11Vg/clip_image016%25255B3%25255D.jpg?imgmax=800 "A Cross-Platform Mobile Inventory Management App Created in MobileTogether")

在横向模式下，iPhone 显示的界面与此类似，用户可以通过滚动页面来查看所有数据。

![移动库存管理应用程序，手机屏幕显示](https://lh3.googleusercontent.com/-wsuRq0Ae4jE/VZqc7yk9x0I/AAAAAAAACUo/JoHEdivPiAY/clip_image018%25255B3%25255D.jpg?imgmax=800 "Mobile Inventory Management App Viewed on a Phone")

一系列短篇 [视频演示](https://www.altova.com/zh/mobiletogether/demos.html) 在Altova网站上发布的示例展示了使用MobileTogether Designer开发移动企业应用程序的便捷性。或者，您可以查看网页版的 [MobileTogether 设计器在线帮助文档](https://manual.altova.com/MobileTogether/mobiletogetherdesigner/mtdpagedesign_actions_update_insertnode.htm) 如需了解更多详细信息，请参考以下内容。

如需了解更多信息并免费下载 MobileTogether Designer，以创建您的第一个企业级移动解决方案，该解决方案支持 iOS®、Android™、Windows® Phone 8 以及 Windows 8，同时还支持基于 HTML5 的浏览器客户端，请访问：[**www.altova.com/mobiletogether**](https://www.altova.com/zh/mobiletogether)
