变量类型

根据流程中包含的业务数据的需要,您可以使用诸如“系统数据”Toolkit 之类的系统 Toolkit 提供的变量类型,也可以创建定制的业务对象。

系统 Toolkit 在 Business Automation Studio 中提供,以便您创建的每个 工作流程自动化 和 Toolkit 都可以访问公共系统数据。 系统 Toolkit 提供了以下类别的变量:

基本类型
基本类型允许您创建称为业务对象的定制变量类型。 有关所有基本类型的列表,请参阅下表。
系统类型
系统类型提供的是不能修改的变量类型。 有关所有系统类型的列表,请参阅 流程和服务流中的JavaScript API
该表提供有关在系统 Toolkit 中提供的基本类型业务对象的更多信息。
表 1. 提供的基本类型
基本类型 描述
String 允许将字母数字字符输入变量中
Integer 接受范围 -2147483648 到 2147483647 的无小数位的数字,例如 4520
Decimal 接受采用 IEEE 754 双精度的带小数位的数字,例如,45.320.13
Date 允许将日期和时间格式输入到变量中
Time 允许将日期格式作为时间输入到变量中。 用户输入时间;在将变量输入符号表之前,将其转换为日期。
Selection 允许您向用户提供可能的输入的列表,用户只能从中选择一个选项。 选择是不同值的列表;每个值都是一个字符串。 运行时,选择变量将以列表或单选按钮的形式显示在 coach 表单上。
Boolean 接受 truefalse 作为值。 运行时,布尔值作为复选框显示在 coach 表单上。
Structure 要使用结构类型,必须创建定制结构类型并定义其属性。 结构会对与同一主题相关的业务数据重新分组。 例如,Customer 结构可能包含诸如 lastNamefirstNamehomeNumberstreetAddress 等元素。

定制变量类型

使用业务对象定义定制变量类型。 如果系统 Toolkit 中提供的预定义业务对象没有代表您所需,那么您可以创建自己的业务对象。 如需了解系统数据工具包中提供的常规业务对象的更多信息,请参阅系统数据工具包

定制变量类型的验证
您可以针对使用简单类型定义的定制变量类型定义验证设置。 在以下情况下,将检查这些验证规则:
  • 将值分配给此类类型的流程或服务中的变量时,例如,当脚本将值分配给 tw.local 变量或将服务结果映射到 tw.local 变量的输出映射时,将验证该值。
整数和小数定制变量类型的验证
对于整数和小数业务对象定义,您可以定义最小值和最大值以指定范围。 例如,如果指定最小值 0 和最大值 100(全都包含),那么您将具有可用于变量的类型,其中用户指定不能为负或超过 100% 的百分比。

通过指定精度和小数位,您可以限制数字的小数和小数位。

在服务器配置的业务对象配置中指定必须如何解释验证设置。

表 2. 精度和小数位验证属性
属性 Type 缺省值 描述
precision-validation-on-server-enabled 布尔值

用于在设置变量时启用精度设置验证。

precision-validation-strip-trailing-zeros 布尔值

用于在验证精度之前除去小数点后面的零结尾。

precision-validation-type enum (equals, lessOrEquals) 等于

如果将此属性设置为 equal,那么变量值的精度必须等于在变量类型中指定的值。 如果将属性设置为 lessOrEquals,那么变量值的精度必须等于或小于在变量类型中指定的值。

scale-validation-strip-trailing-zeros 布尔值

用于在验证小数位之前除去小数点后面的零结尾。

scale-validation-type enum (equals, lessOrEquals) 等于

如果此属性设置为 equals,那么变量值的小数位必须等于在变量类型中指定的值。 如果将属性设置为 lessOrEquals,那么值的小数位必须等于或小于在变量类型中指定的值。

以下示例显示如何针对变量类型将精度值设置为 5 并将小数位值设置为 2。
如果将 precision-validation-on-server-enabled 属性设置为 true 但是保留所有其他设置为缺省值,那么以下值有效:
  • 123.45
以下值无效:
  • 1234.56(精度错误,6 而不是 5)
  • 12.34(精度错误,4 而不是 5)
  • 12.345(小数位错误,3 而不是 2)
  • 1234.1(小数位错误,1 而不是 2)

以下 JavaScript 表达式也会导致验证错误,因为运行时 JavaScript 会在分配值之前除去零结尾:

tw.local.variable = 123.40

以下 JavaScript 表达式不会导致验证错误,因为正确验证字符串,然后自动转换为数字以设置变量值:

tw.local.variable = "123.40"

要将精度和小数位设置用作 XML 模式等效项 totalDigitsfractionDigits,那么必须如下表中所示设置配置标记:
表 3. 精度和小数位验证设置等同于 totalDigits 和 fractionDigits XML 模式类
设置 Type
precision-validation-on-server-enabled
precision-validation-strip-trailing-zeros
precision-validation-type lessOrEquals
scale-validation-strip-trailing-zeros
scale-validation-type lessOrEquals
然后,先前样本中使用的相同变量类型将认为以下值有效:
  • 123.45
  • 12.34
  • 123.4
  • 123
以下值仍无效:
  • 1234.56(精度错误,6 而不是最大值 5)
  • 12.345(小数位错误,3 而不是最大值 2)

脚本中的数字计算

您可以使用 JavaScript 在流程或服务步骤中进行编程。 双精度用于存储变量的数字值。

在脚本中执行计算时,请注意可能到达此精度的限制。 例如,在添加 1000.06 + 0.01 时,从数学意义上讲,正确结果为 1000.07。 但是,如果在 JavaScript 中添加数字,那么结果为 1000.0699999999999。

如果需要以数学方式正确计算,请在 JavaScript 代码外部执行这些计算。 例如,您可以使用 BigDecimalBigInteger 类在 Java™ 程序中进行完全精确的计算。 如果必须在流程或服务变量中存储具有完整精度的结果,那么可以将数字格式化为字符串,并将“字符串”数据类型用于变量。

限制: 对于在 Workplace中可视的流程变量,不能将值 NaNInfinity 存储在数据库中。 如果您计算这样一个变量的值,请确保结果不是 NaNInfinity;否则,会将错误写入 SystemOut.log 文件。