トリガーで時間を扱う
  • 31 Oct 2023
  • 1 読む分
  • 寄稿者

トリガーで時間を扱う


Article Summary

概要

業務の多くの場面で、2つの出来事の間の経過時間を確認することが必要になる。ここでは、その時間を見つける方法を説明する。

2つのタイムスタンプ間の経過時間をチェックすることは、どのようなプロセスにおいても重要な意味を持つことが多い。

2つのタイムスタンプは以下を決定する:

  • 指定された生産時間
  • バッチ実行からの経過時間
  • リアクターの洗浄からの経過時間

2つのDatetime間の時間にロジックを追加することは、データ収集だけでなくアプリのActionでも非常に強力です。

この機能の使用例をいくつか紹介します:

  • 検査間隔の確認
  • 指定された製品の運転からの経過時間を調べる
  • メンテナンススケジュールの確認
  • アプリで2点間の時間を検索する

このガイドでは、トリガー、テーブル、エクスプレッション・エディタを組み合わせて、アプリでこれらのシナリオを構築する方法を紹介します。

3つの例を取り上げます:

  1. アプリの2つの異なる部分のステップ間の時間を計算する
  2. 過去1週間に機械の検査が行われたかどうかのチェック
  3. アプリで最初にスキャンされたときに、作業オーダーの目標日付を設定する

知っておくと便利な間隔

1分:60秒

1時間3600秒

1日86,400秒

1週間604,800秒

1ヶ月(30日)2,592,000秒

1年31,557,600秒

例1:アプリの2つの部分間の時間を求める(本番時間)

この例では、アプリの1つの使用における2つのタイムスタンプの差を計算する方法を示します。

レベル中級

この例では、以下のことを理解している必要があります:

このプロセスの「開始」ポイントに、トリガーエディターで「Then」ステートメントを追加し、現在の日付と時刻を取得する。

Data Manipulation - Store - App Info - Current Date and Time- location:.

アプリ内のこの時間測定の希望する "End "ポイントで、現在の日時をキャプチャする別のトリガーを追加する**。**

時刻をキャプチャするだけでなく、2つのタイムスタンプの差を見つけるトリガーを追加し、変数に保存 することもできます。

この例では、ボタンが押されたときに両方の時間を取得していますが、ステップが閉じたり開いたりしたときや、デバイスが発火したときの時間を取得することも可能です。

時間差は、2つのタイムスタンプ間の合計秒数で"Interval "変数に格納される。

例2:検査間隔のチェック

レベル上級者向け

この例では、以下のことを理解する必要がある:

次の例では、アプリの目的は「機械検査」テーブルをチェックし、最後の検査がいつ行われたかを判断することです。さらに、検査が必要な頻度を超えている場合、アプリはユーザーに検査を完了するよう指示します。

テーブルのリンク

このアプリの最初のステップでは、アプリにテーブルレコードをロードする必要があります。そのため、テーブルがすでに存在している必要があります。テーブルは以下のようになります:

  • ID(テキスト)
  • 最終検査日(タイムスタンプ)
  • 検査頻度(間隔)

上記のように、このテーブルには、機械が前回検査された時刻と、各機械に必要な検査頻度の両方が含まれている。

さて、点検をチェックするために、このテーブルにアプリのレコード・プレースホルダーを与えなければなりません。アプリにテーブルのレコード・プレースホルダーを追加してください。次のような名前にするとよいでしょう:

変数を作成する:

適切なテーブルをアプリにリンクしたので、2つのタイムスタンプの差を格納する変数を作成する必要があります。Interval "データ型を作成することで、この操作が可能になる。アプリ・エディターのコンテキスト・ペインに移動し、appを選択する。

コンテキストペインで、シグマのシンボルを選択し、新しい変数を作成する。

変数ペインで、好きな名前で新しい変数を作成し、ドロップダウンメニューからタイプ "interval "を選択する。この変数は、操作される2つのタイムスタンプの引き算の結果を保持することに注意してください。

必ず "Add "を選択し、変数がリストに追加されたことを確認してから閉じる。

上の例では、この変数は "ResultantTime "と名付けられ、時刻の差を示す。この例では、最後の検査とアプリの現在時刻の間の時間を記録します。

テーブルレコードのロード

適切なテーブルレコードをチェックするには、正しいテーブルIDでテーブルをロードする必要があります。この例では、ドロップダウン・ウィジェットの値に基づいてレコードをロードします。

正しいテーブルレコードを適切にロードするためには、テキストがテーブルIDと正確に一致する必要があることに注意してください。

上記のフォーム・ステップでは、ユーザがどのマシンをチェックするかを選択できます。このフィールドに変数(この場合は MachineType)を追加して、結果にロジックを追加することが非常に重要です。

ロジックのチェック

いよいよチェックです!

このフォームが送信されると、アプリの現在時刻と、テーブルの前のタイムスタンプとの間の時刻をチェックする必要があります。

これを行うには、送信ボタンにいくつかの'カスタムアクション'トリガーを追加する必要があります。

まず、ボタンは正しいテーブルレコードをロードする必要があります:

**テーブルレコード - ロードレコード -**IDで:**Variable - MachineType -**into:検査

このテーブルは、特定のテーブルをロードするためにいくつかのアクションを作成するのではなく、フォームステップで選択されたマシンに基づいて動的にロードされます。

次に、サブミットボタンは、今と、ロードされたテーブルレコードのタイムスタンプの間の時間を検索します。同じトリガに、以下のようなものを追加します:

このステートメントは、テーブルの前のタイムスタンプから現在の時刻を引きます。このステートメントは、テーブルの前のタイムスタンプから現在の時間を引きます。そして、この時間差をIntervalデータ型として、最初に作成した変数に保存します。

新しいトリガーでは、2つのタイムスタンプの差によって、アプリへのアクションが決定されます。

例えば、現在と前回の検査との間の時間が必要な頻度より大きい場合、オペレータはマシンを検査する必要があります。そうでない場合、マシンはOKであり、アクションは必要ない。これは次のようになります:

IF

変数 - 結果時間 - > - テーブル記録 - 検査 - 検査頻度

その後

ステップに進む - 検査

ここで、チェックは、時間が長すぎる場合、検査を再度実行しなければならないことを保証する。

このアプリは検査のチェックと実行に使用されるため、そうでない場合、アプリは完了することができます。

このElse文は、同じトリガー内では、以下のようになります:

ELSE IF

アプリ - アプリのキャンセル

**メッセージを表示 - 静的な値 - テキスト -**メッセージ

テーブルの更新

検査が完了したら、検査が実行されたことを反映するためにテーブルレコードを更新する必要があります。これを行うには、検査ステップの終了時にトリガーを追加するのが最適です。こうすることで、検査が完全に終了してからレコードが更新されます。

このように、新しい時間を保存するトリガーを追加します:

データ操作]-[ストア]-[アプリ情報]-[現在の日時]-[テーブルレコード]-[検査]-[最後に検査した日時

例3- 作業オーダーの目標完了日の設定

ある作業オーダーが完了するまでに、10回の作業を通過しなければならないとする。

作業オーダーが10回の作業のうち最初の作業から始まる場合、顧客の期待に合うように「期限日」を作成する必要がある。例えば、最初の作業開始から1週間後を期限とします。

これをTulipで実現するには、1週間後の時刻を決定するために、現在の時刻にインターバルを追加する必要があります。

そして、その「期日」を「作業指示」テーブルに保存します。その方法は以下の通りです。

まず、1週間先の値をインターバルで保存する変数を作成する必要があります。

コンテキスト・ペインの変数ダイアログに行き、"next_7_days" という新しい変数を作成します。

そして、デフォルト値を604800秒に設定する。これは1週間の秒数です:

次に、現在の作業オーダーのレコード・プレースホルダーを作成し、その作業オーダーをアプリにロードします。

レコードがロードされたら、Expressionを使用して "Due Date "フィールドを設定します:

  • 「データ操作" "保存 "データ:データ操作" "保存" データ: "式" "アプリ情報-現在の日時 + 変数.next_7_days" 場所"テーブルレコード" "現在の作業オーダー" "期限日"

上記のトリガー文では、現在の日付と時刻に7日間を追加し、期日を作成しています。


お探しのものは見つかりましたか?

community.tulip.coに質問を投稿したり、他の人が同じような質問に直面していないか確認することもできます!


この記事は役に立ちましたか?