関数定義式の作成に関する最良事例
以下の関数とウィジェットでは、マッシュアップでのカスタム JavaScript 定義式の記述がサポートされています。
• 定義式関数 - 評価結果は値です
• バリデータ関数 - 評価結果はブール値です
• グリッドウィジェット - グリッドセルの編集時にユーザー入力を評価します
開発目的のみでの TW.log 関数の使用
TW.log() 関数を使用して、マッシュアップ内の定義式に関連するデバッグ、エラー、警告、および情報メッセージをログに記録できます。ログメッセージは、ランタイムにマッシュアップログダイアログに表示されます。たとえば、以下のようになります。
• TW.log.debug('debug')
• TW.log.error('error')
• TW.log.warn('warn')
• TW.log.info('info')
多数の定義式ログ記録文が含まれているマッシュアップを開くと、マッシュアップのパフォーマンスに著しく影響します。マッシュアップで多数のログ文を使用している場合、それらを本番環境で使用しないことをお勧めします。マッシュアップの開発およびテスト中にログ文を使用することはできますが、マッシュアップを本番環境に展開する前に、これらをコメントに変換するか、コードから除去しなければなりません。
ランタイムデバッグコンソールの確認
定義式が含まれるマッシュアップを設計した後、ランタイムにデバッグ情報ダイアログボックスを確認します。この機能を使用して、マッシュアップの実行をトレースできます。これにより、設計または実装における循環バインドや無限ループなどのロジックの問題を特定できます。マッシュアップのデバッグ情報を表示するには、ランタイムツールバーの「デバッグ情報を表示/非表示」をクリックします。
JSON 入力の解析
定義式で JSON データを使用する場合、JSON.parse() メソッドを使用して文字列から JSON を解析および変換することは避けてください。JSON ベースタイプに直接設定されているパラメータ内で JSON オブジェクトにアクセスできます。
TW.setTimout 関数の使用
以前のバージョンの ThingWorx では、関数定義式で setTimeout はサポートされていませんでした。ThingWorx 9.6 以降では、TW.setTimeout 関数を含む定義式を 10 個まで同時に実行できます。各定義式関数で 1 つの setTimeout 関数を定義できます。定義式で setTimeout 関数の前後に追加されたコードは実行されません。1 つの関数に設定できるタイムアウトの最大値は 10 秒に制限されています。定義された値がこの制限を超えている場合、関数の値は自動的に 10 秒に設定され、ランタイムでマッシュアップログに TW.log.warn メッセージが表示されます。
TW.setTimeout(() => {
TW.log.info("Delayed for 1 second.")
}, "1000");
|
ランタイムで setTimeout 関数を含む定義式を実行するために、最大 10 個の Web Worker を使用できます。それ以上の定義式は、Worker が使用可能になるまでキューに入れられます。
|
TW.sessionStorage 関数の使用
window.sessionStorage オブジェクトに保存されている名前と値のペアは、ブラウザセッション中のみ使用できます。セキュリティで保護されている定義式は非同期に実行されるので、競合状態が発生する可能性があります。たとえば、ある定義式によってセッションストレージのプロパティが更新され、更新された値を取得する前に別の定義式が実行されることがあります。競合状態を減らし、別の定義式が実行を開始したときにセッションストレージの更新を取得できるようにするには、Changed イベントを使用して定義式を連鎖させる必要があります。
|
window.sessionStorage 変数は ThingWorx の GlobalSessionVariables に関連付けられていません。
|