2017.09.20Tips

マイクロフローを効率的にデバッグする方法

  • このエントリーをはてなブックマークに追加

このブログ記事では、マイクロフローにおいてバグを見つけやすくする方法について説明します。
例として、日付/時刻関数を用いたマイクロフローを紹介します。

 

この例では、ユーザーがタスクを完了するのにかかった時間の平均値を計算するマイクロフローを作成します。
(ユーザーがタスク管理アプリケーションを使用していると仮定します)
この平均時間は [Xmin Ysec] の形式で表示する必要があるとします。
ここで、Xは分、Yは秒の平均時間を表示する変数です。

 

構成

平均時間を2つの変数に分けて分と秒の時間が正しく表示されるようにする必要があります。
下の図は、これを処理するマイクロフローを示しています。

これは複雑なマイクロフローのようには見えないかもしれません。
ただし、最後のAction Activity(※1)は少し複雑で、正しく設定されていないと開発者の頭を悩ませる原因になりかねません。

※1では、以下の2つの処理でXとYを計算しています。

  1. タスクを完了するまでの平均時間を求め、計算結果の小数点以下を切り捨て分の値とする
  2. タスクを完了するまでの平均時間と1で計算した値で減算して、結果が秒の値になるようにする

これを実現するために、以下の2つのマイクロフロー関数を使用します。

  1. Round – 浮動小数点数を任意に指定された桁で四捨五入する
  2. Floor – 浮動小数点数の小数点以下を切り捨てる

下の図は、以上を踏まえて書かれたX(AverageTimeMinutesアトリビュート)とY(AveragetTimeSecondsアトリビュート)の定義のスクリーンショットです。

デバッグのヒント

上記の処理をデバッグしやすくするには、各計算を細分化してそれぞれ変数に格納するのがおすすめです。
この方法を使用すると、モデラーのデバッガで式のどの部分が正しくないかを簡単に検出できます。

デバッグする方法の例を以下に示します。

まずは、AverageTimeMinutesの計算処理(1-1)を別のAction Activityで行い、変数に格納します。

次に、AverageTimeSecondsの4つの計算(2-1~2-4)をそれぞれ別のAction Activityで計算します。

計算処理を細分化したMicroflowがこちらです。
最後のAction Activityで、各計算結果を格納した変数で処理をしています。
赤枠の処理を変数の値として分けることで、デバッガを使用してこれらが誤った値を計算していないかどうか簡単に確認できます。

 

最初のAction Activityにブレークポイントを設定して実行し、計算された値を確認します。
問題がなければ次のAction Activityに進み、もし想定外の値であればその処理に問題があるとわかります。

以下のURLは説明に使用しているマイクロフローを共有しているページです。ご覧ください。
https://modelshare.mendix.com/models/3b4c8931-e529-4e5e-8144-f0ec7eee55c2/debugging-date-time-functions

 

まとめ

いかがでしたでしょうか。

この方法を用いれば、間違いがどこにあるのかを正確かつ簡単に発見し、複雑な処理のどこから問題が発生するのか分からないという問題を減らすことができます。
参考になれば幸いです。

 

参考:

How to efficiently use Date/Time functions

  • このエントリーをはてなブックマークに追加

このエントリーにコメントする

必須項目は全て入力してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)