変数の型

プロセスに含まれるビジネス・データの要件に応じて、システム・データ・ツールキットなどのシステム・ツールキットで提供されている変数タイプを使用することも、カスタム・ビジネス・オブジェクトを作成することもできます。

システム・ツールキットは Business Automation Studio で提供されているため、作成する各 ワークフロー自動化 およびツールキットは、共通のシステム・データにアクセスできます。 システム・ツールキットには、以下の変数のカテゴリーが用意されています。

基本タイプ
基本タイプでは、ビジネス・オブジェクトというカスタム変数型を作成できます。 すべての基本タイプのリストについては、以下の表を参照してください。
システム型
システム・タイプは、変更できない組み込みの変数タイプです。 すべてのシステム・タイプのリストについては、 プロセスおよびサービス・フローにおけるJavaScript APIを参照してください。
以下の表に、システム・ツールキットに用意されている基本タイプ・ビジネス・オブジェクトの詳細を示します。
表 1. 用意されている基本タイプ
基本タイプ 説明
String 変数に英数字を入力できます。
Integer 小数位がなく、範囲が -2147483648 から 2147483647 までの数字 (4520 など) を入力できます。
Decimal IEEE 754 倍精度の小数位がある数字 (45.320.13 など) を入力できます。
Date 変数に日時の形式を入力できます。
Time 変数に時刻として日付形式を入力できます。 ユーザーが時刻を入力すると、その変数がシンボル・テーブルに入力される前に日付に変換されます。
Selection ユーザーが使用できる項目のリストを指定できます。ユーザーが選択できる項目は 1 つのみです。 選択項目は異なる値のリストであり、各値はストリングです。 Selection 変数は、実行時に Coach フォーム上にリストまたはラジオ・ボタンとして表示されます。
Boolean 値には true または false を指定できます。 ブール値は、実行時に Coach フォーム上にチェック・ボックスとして表示されます。
Structure Structure 型を使用する場合は、カスタム Structure 型を作成し、そのプロパティーを定義する必要があります。 構造は、同じサブジェクトに関連するビジネス・データを再グループ化します。 例えば、Customer 構造に、lastNamefirstNamehomeNumberstreetAddress などのエレメントを入れる場合があります。

カスタム変数タイプ

カスタム変数型は、ビジネス・オブジェクトを使用して定義されます。 システム・ツールキットで提供されている定義済みのビジネス・オブジェクトでニーズが満たされない場合は、独自のビジネス・オブジェクトを作成できます。 システムデータツールキットで提供されている一般的なビジネスオブジェクトの詳細については、「システムデータツールキット」 を参照してください。

カスタム変数型の検証
単純型定義を使用するカスタム変数型の検証設定を定義できます。 これらの検証ルールは、以下の状況で検査されます。
  • 例えば、スクリプトが tw.local 変数に値を割り当てる場合や、サービス結果が tw.local 変数にマップされる出力マッピングの場合など、そのようなタイプのプロセスまたはサービスの変数に値を割り当てると、値の妥当性検査が行われます。
整数カスタム変数型および 10 進数カスタム変数型の検証
整数および 10 進数のビジネス・オブジェクト定義の場合、最小値と最大値を定義して範囲を指定できます。 例えば、最小値に 0、最大値に 100 を指定 (最小値と最大値の両端の値を含む) した場合、負の値にも 100% を超える値にもできないパーセンテージをユーザーが指定する変数に使用可能な型が生成されます。

精度とスケールを指定することにより、10 進数および小数点以下の桁数を制限できます。

検証設定をサーバー構成のビジネス・オブジェクト構成にどのように解釈させる必要があるかを指定します。

表 2. 精度およびスケールの検証のプロパティー
プロパティ- タイプ デフォルト値 説明
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 (精度が正しくありません。5 ではなく 6 を指定します)
  • 12.34 (精度が正しくありません。5 ではなく 4 を指定します)
  • 12.345 (スケールが正しくありません。2 ではなく 3 を指定します)
  • 1234.1 (スケールが正しくありません。2 ではなく 1 を指定します)

以下の JavaScript 式も検証エラーが発生します。これは、JavaScript が実行時に後続ゼロを削除するのが、値を割り当てる前であるためです。

tw.local.variable = 123.40

以下の JavaScript 式は検証エラーが発生しません。これは、ストリングが正常に検証されてから、変数値を設定するための値に自動的に変換されるためです。

tw.local.variable = "123.40"

精度とスケールの設定を、それらの XML スキーマ相当物 (totalDigits および fractionDigits) として使用するには、以下の表に示すように構成フラグを設定する必要があります。
表 3. totalDigits スキーマ・クラスおよび fractionDigits XML スキーマ・クラスに相当する精度およびスケールの検証設定
この属性 タイプ
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 (精度が正しくありません。最大値に 5 ではなく 6 を指定します)
  • 12.345 (スケールが正しくありません。最大値に 2 ではなく 3 を指定します)

スクリプトの数値計算

JavaScript を使用して、プロセスまたはサービス・ステップ内でプログラムを作成できます。 倍精度は、変数の数値を保管するために使用されます。

スクリプトで計算を実行する際は、この精度に関係する可能性がある制限に注意してください。 例えば、1000.06 と 0.01 を加算する場合、数学的に正しい結果は 1000.07 です。 一方で、JavaScript で数値を加算する場合、結果は 1000.0699999999999 になります。

数学的に正しい計算を必要とする場合は、これらの計算を JavaScript コード外で実行してください。 例えば、BigDecimal クラスと BigInteger クラスを使用して、Java プログラムで完全な精度で計算を実行できます。 結果を完全な精度でプロセス変数またはサービス変数に格納する必要がある場合は、数値をストリングとしてフォーマット設定し、ご使用の変数でストリング・データ型を使用することができます。

制約事項: Workplaceに表示されるプロセス変数については、 NaN または Infinity の値をデータベースに保管することはできません。 そのような変数の値を計算する場合、結果が NaN または Infinity ではないことを確認してください。NaN または Infinity である場合、SystemOut.log ファイルにエラーが書き込まれます。